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

fix(messages): soften quote styling and tighten spacing - #1098

Merged
kalvinnchau merged 3 commits into
mainfrom
tulsi/quotestyling
Oct 14, 2026
Merged

kalvinnchau merged 3 commits into
mainfrom
tulsi/quotestyling

Conversation

@tulsi-builder

@tulsi-builder tulsi-builder commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Overview

Category: fix
User Impact: Quoted messages now have a softer, rounded bar that fits their content, with text that matches regular messages.

Problem: Sent quotes had a hairline bar extending well beyond a short quote because paragraph margins added unnecessary vertical space. Quote text was also dimmer than ordinary message text.

Solution: Use a light, rounded 3px bar, trim only the first/last child margins, and inherit the normal message text color. Multi-paragraph spacing and semantic Markdown remain unchanged; the shared sent-message renderer covers channels, threads, and agent messages.

Changes

File changes

src/features/messages/Messages.module.css
Keep quote styling with the existing message owner. A decorative pseudo-element paints rounded ends in the reserved border lane, using existing semantic border colors; direct child margin trimming removes excess bar height without flattening internal spacing.

tests/browser/quote-styling.spec.mjs
Exercise the existing actual composer → sent MessageRow fixture, including quote toolbar formatting, wrapped/multiple paragraphs, nested quotes, and quoted lists. Check bar geometry, theme colors, normal text color, and preserved paragraph spacing at 390/800/1440px in Chromium and WebKit.

Reproduction Steps

  1. Open a channel and type a short message. Use Formatting → Quote, then send.
  2. Confirm the bar is light gray, 3px wide, rounded, and closely fitted to the text. Quote text should match ordinary message text.
  3. Try a wrapped or multi-paragraph quote with a nested quote/list. Internal paragraph gaps should remain, without extra padding before the first or after the last block.
  4. Repeat in a thread, in both themes, and at narrow/wide widths. The localhost browser run is diagnostic; shipped/native acceptance uses BUZZ_DEV_VIEWER= bin/just desktop with an agreed test identity.

Screenshots / Demo

Synthetic before/after screenshots were inspected locally in light and dark mode. The uncropped real-workspace image was removed from this description after review because it exposed internal sidebar names; no real-workspace screenshot is embedded. A one-line quote measured 58.75px before → 26.75px after at the default text size. Local interactive preview: http://localhost:1455 (author's machine only).

Review and Validation

  • Rebased onto origin/main at 897caf356; original feature head was a76b69c40; forced-colors follow-up head is d46d56920.
  • Wes review ran as three independent read-only passes: derivation/consistency and boundary/lifecycle found no production blockers. Test-honesty feedback suggested checking all four radii instead of only the top-left radius. The author explicitly declined that suggestion and the optional explanatory CSS comment; no fixes were applied.
  • Root lint and TypeScript passed before rebase; rebased commit passed required pre-commit/pre-push hooks, including type/related tests and design guards. Biome changed-file checks and git diff --check pass.
  • On the rebased change: 94 MessageMarkdown Vitest tests and 2 quote browser journeys (Chromium + WebKit) pass. The original styling fails the regression journey; final screenshots were inspected after rebase.
  • design:typecheck, design:check, design:test (161 tests / 25 files), and design:build passed for the unchanged feature diff before rebase; pre-push reran design types/guards at the rebased head.
  • Browser cases: +1 per engine, 0 removed. Real pseudo-element paint/geometry, wrapping, and computed theme colors require a browser; no new fixture or whole-app startup matrix was added. Each context is isolated; only stateless source serving is shared.
  • Both PR commits include Signed-off-by. Hosted CI and DCO passed at a76b69c40; the new head is being checked separately.

Deferred: Native/packaged and Windows High Contrast acceptance, final human confirmation, and hosted CI at the follow-up head. No full just scan was run. The author returned this PR to review after the fix; native/human validation is not attested by buzz-review-completed.

Wes/Carl review follow-up

  • Fixed the Windows High Contrast regression: under forced-colors: active, the rounded bar uses system CanvasText rather than being forced to the Canvas background. Normal theme paint and quote geometry are unchanged.
  • Added a Chromium-only assertion to the existing browser journey (WebKit cannot emulate forced colors). It confirms forced-colors mode is active and both rendered quote bars match the system text color. Fail-then-pass: without the CSS fix the assertion reports expected rgb(0, 0, 0), received rgb(255, 255, 255); after the fix the complete file passes in both engines. No additional browser cases were added or removed.
  • At d46d56920: changed-file Biome, design guards, both quote journeys, and pre-commit/pre-push hooks passed. Independent follow-up review rated the fix 9/10 with no blockers.
  • Removed the uncropped sidebar image from the PR description and refreshed the status/validation notes. An existing uploaded attachment may remain accessible via its original URL; removing the embed does not delete the GitHub asset.

CI integration follow-up

  • Merged current main (7bfcca353) into the PR without rewriting prior commits. New head: 9bbf18f83. The PR diff against main remains only the quote CSS and its browser regression test.
  • The previous JavaScript failure was the Sessions placement retry regression, already fixed on main by fix(sessions): restore placement retry in retained conversations #1099. This update includes that fix rather than changing unrelated Sessions code in this PR.
  • At 9bbf18f83, the Sessions loading file and MessageMarkdown file pass (101 Vitest tests). The full quote and window-chrome browser files pass in both engines (4 journeys). Pre-push checks pass; every PR commit has Signed-off-by. Fresh hosted CI is running.
  • Previous WebKit shard 9 exceeded its 15-minute job limit and also had a window-chrome fixture navigation timeout. The quote journey was in shard 7 and passed there and all 20 repeated engine checks. Local window-chrome passes do not establish that hosted timing issues are fixed; fresh CI remains the evidence gate.

Signed-off-by: tulsi <tulsi@block.xyz>
@tulsi-builder
tulsi-builder marked this pull request as ready for review October 14, 2026 17:37
@tulsi-builder
tulsi-builder requested a review from a team as a code owner October 14, 2026 17:37

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Carl, an automated reviewer, commenting via Wes's GitHub account.

Verdict: changes requested. The spacing and text-colour changes look right and CI is green at a76b69c. One accessibility regression is inline: in Windows forced-colours mode the new quote bar disappears.

To merge: make the bar visible under forced-colors: active (the inline thread has a one-rule fix).

PR media (not blocking): the embedded screenshot shows the author's real sidebar, including internal channel and DM names. Please crop it or replace it with a synthetic workspace. Parts of the description are also out of date (it says the PR is a draft and that no screenshots were uploaded).

@tulsi-builder
tulsi-builder marked this pull request as draft October 14, 2026 18:12
Signed-off-by: tulsi <tulsi@block.xyz>
@tulsi-builder
tulsi-builder marked this pull request as ready for review October 14, 2026 18:13

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🤖 Hobbes, AI agent, approving at Kalvin’s request. No actionable code findings at 9bbf18f from the completed independent reviews. Chromium/WebKit quote journeys passed, with additional layout probes; the previously reported forced-colors regression is fixed and covered by Chromium emulation. Current hosted CI is successful (Windows native validation skipped). Native Windows High Contrast remains unverified. The previously noted uploaded-image cleanup remains a separate non-blocking follow-up.

@kalvinnchau
kalvinnchau merged commit 9c90857 into main Oct 14, 2026
33 checks passed
@kalvinnchau
kalvinnchau deleted the tulsi/quotestyling branch October 14, 2026 22:13

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Star Lord, automated source review via Wes’s account, following the requested final-head review.

No actionable code findings; no changes requested. Source-review assessment: 9/10. The quote styling stays with the existing message renderer, trims only outer child margins, and preserves interior paragraph spacing. The earlier forced-colors finding is addressed with CanvasText and a Chromium regression assertion.

Reviewed head 9bbf18f83a471183dd1524e8718153ad6a68ed39 against base 7bfcca353f525d36d423eb72fc33e2c5cd20e96b; the PR was already merged when this review began. Inspected both changed files, renderer/fixture callers, design guidance, PR description, and commit messages.

Validation: source review only; no local tests or app execution. The current head’s CI required check and Chromium/WebKit browser shards succeeded; Windows native validation was skipped. Native Windows High Contrast and enlarged-text visual acceptance remain unverified. The previously reported removed image asset remains a separate cleanup follow-up: the current description has no image embed, but deletion of the original upload was not verified.

johnmatthewtennant added a commit that referenced this pull request Oct 15, 2026
…-drag

* origin/main: (34 commits)
  fix(channels): resolve template agents from ready inventory (#922)
  [buzz-app] Fit uploaded videos to the relay's 4K envelope and name video rejections (#1129)
  feat(github): reveal the PR comment a link points at (#947)
  fix(messages): stop WebKit freeze from muted composer video previews (#1143)
  test(browser): fix route-unroute and virtua-hold webkit flakes (#1149)
  test(browser): let dnd-kit see its first resize before text shrinks (#1150)
  fix(previews): keep a hovered preview through scroll anchoring (#1138)
  Unify owned agent profile panels (#1083)
  feat(agents): import old Buzz teams from the Teams tab (#985)
  Mark Me chats as personal in the session description for remote agents (#1058)
  feat(messages): optional way to open buzz message links in a thread tab (#1113)
  Distinguish thread originals and tighten conversation spacing (#929)
  fix(buzz-mcp): page channel reads past the relay limit (#1131)
  fix(inbox): show a session's top-level timeline as one conversation (#1094)
  feat: reorder sidebar groups by dragging their headers (#1118)
  fix(avatars): request the cached relay thumbnail at every avatar site (#1054)
  fix(messages): soften quote styling and tighten spacing (#1098)
  fix(emoji): shrink and raise inline custom emoji (#1097)
  fix: follow host theme in media review chrome (#1117)
  Highlight an already-open thread tab when reopening it (#1050)
  ...

Signed-off-by: John Tennant <jtennant@block.xyz>
Co-authored-by: Claude Worker <f425b86c3b780d43f8d9cf1802429d04dd985bf92eac44fca9468b5ad3887c5e@buzz.block.builderlab.xyz>

# Conflicts:
#	src/features/channel-navigation/ChannelSidebarDnd.tsx
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