镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

feat(messages): add a compact message density - #2547

Merged
dlesl merged 3 commits into
block:mainfrom
dlesl:davidleslie/message-density
Nov 5, 2026
Merged

dlesl merged 3 commits into
block:mainfrom
dlesl:davidleslie/message-density

Conversation

@dlesl

@dlesl dlesl commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Conversations have a lot of whitespace for people who want to scan many messages at once. This adds a Message density choice under Settings → Appearance → Conversations, with Default and Compact.

Default is unchanged.

Compact shows conversations as a flat list:

  • Everyone's messages are left-aligned on the panel, with no bubble surface and no own-message tint.
  • The avatar sits beside the byline that starts each group, rather than at the end of the group.
  • Reactions and reply summaries line up with the message text. Reply summaries drop the connector and their spare control padding.
  • Groups start an even 12px apart in channels and threads, and a group's own rows stay 2px apart.
  • Conversations, the composer and the human typing indicator use the full available width instead of the 52rem measure.
  • The end-of-history spacer is smaller, while still clearing the floating typing label.

Text size stays with Interface size. Density only changes layout.

How it works

  • Storage: density is device-local appearance, like Interface size and Vibe level. createAppearance restores, saves and syncs it across windows, and offers the same "wasn't saved" retry.
  • Root attribute: the service applies density as data-message-density on the root element. public/appearance-init.js sets the same attribute before paint, so a timeline is never measured at the wrong density.
  • CSS: the Compact rules in Messages.module.css are scoped with :where(html[data-message-density="compact"]). Each override keeps the specificity of the default rule it follows.
  • React: useMessageDensity() reads the applied attribute through one shared observer. MessageRow uses it for the two choices CSS can't make: which row of a group renders the avatar, and turning off viewer alignment and own-bubble state.
  • Agents: the device settings catalog exposes density as conversations.message_density (default or compact), so agents can read and change it the same way as the other Appearance settings.
  • Agent response previews: when an agent is still working after its own message, Compact keeps the preview's avatar as an accessible label only, so the group shows a single avatar.
  • Help guide: docs/buzz-help.md describes the setting.

🤖 Generated with Claude Code

@dlesl

dlesl commented Nov 5, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-05T01:12:21.034981Z 0d5b2f6 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0d5b2f62bf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

dlesl and others added 2 commits November 5, 2026 12:58
Adds Settings → Appearance → Message density with Default and Compact.
Default keeps today's bubbles. Compact shows conversations as a flat,
left-aligned list across the full width: no bubble surface, the avatar
beside the byline that starts each group, reactions and reply summaries
aligned with the prose, an even 12px rhythm between groups, and a
full-width composer.

The choice is device-local appearance like Interface size: the
appearance service persists and syncs it, and the pre-paint script
applies it as a root attribute so a timeline never renders at the wrong
density. MessageRow reads the applied density to move the group avatar
and to leave own rows unaligned and unpainted; CSS owns the rest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: David Leslie <davidleslie@squareup.com>
A compact list puts a group's avatar on its first row, but an agent
response preview that continues its author's group still drew its own,
so a working agent showed a second avatar beside a byline-less row.
Keep that avatar's label for assistive technology and hide it visually;
Default keeps the preview's end-of-group avatar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: David Leslie <davidleslie@squareup.com>
@dlesl
dlesl force-pushed the davidleslie/message-density branch from 0d5b2f6 to c8ff33a Compare November 5, 2026 02:02
@dlesl
dlesl marked this pull request as ready for review November 5, 2026 02:02
@dlesl
dlesl requested a review from a team as a code owner November 5, 2026 02:02
@AdamDonna

Copy link
Copy Markdown

Screen shots are available in the buzz thread. Go take a look

@joahg joahg left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Read the density service, pre-paint init, MessageRow and agent-preview changes. Default path is unchanged and the earlier Codex P2 on stacked preview avatars is fixed. The branch has merge conflicts to resolve before landing.

@dlesl
dlesl merged commit fd1ed7c into block:main Nov 5, 2026
43 checks passed
@dlesl
dlesl deleted the davidleslie/message-density branch November 5, 2026 21:28
wpfleger96 added a commit that referenced this pull request Nov 5, 2026
…-service

* origin/main:
  fix(sidebar): highlight collapsed sections with unread channels (#2539)
  perf(threads): isolate thread rows inside the scroller (#2462)
  perf(messages): skip the glass on closed message action bars (#2461)
  perf(threads): measure long-thread scrolling in browsers and the macOS app (#2460)
  docs(threads): set scrolling requirements and targets for long threads (#2459)
  fix(composer): seed required recipients in saved briefs (#2667)
  fix: preserve agent activity ownership and remove Solo composer gap (#2613)
  feat(agents): open agent card links in Create agent (#2662)
  Align Bestie messaging with the shared conversation workspace (#2614)
  feat(messages): add a compact message density (#2547)
  fix(dialog): limit footer click-through to the gradient gutter (#2545)
  fix(channels): put the huddle launcher after the other header tools (#2660)
  feat(drafts-sent): bundle Drafts & sent for everyone (#2644)
  feat(identity): one Builderlab sign-in, the native NIP-FI session (#2576)
  fix(agents): let people dismiss connection setup cards (#2631)
  AIDA-2425: Preserve links beside pasted images (#2520)
  feat(activity): show reactions to your messages in Activity (#2638)

# Conflicts:
#	docs/identity.md
#	src-tauri/src/federated_identity/agent/mod.rs
#	src-tauri/src/federated_identity/mod.rs
#	src-tauri/src/federated_identity/tests.rs
#	src/bundled/codex/runtime.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants