feat(desktop): full-panel thread view mode + brand identity variant layer - #6073
Open
asatire1 wants to merge 2 commits into
Open
feat(desktop): full-panel thread view mode + brand identity variant layer#6073asatire1 wants to merge 2 commits into
asatire1 wants to merge 2 commits into
Conversation
Add a third thread view mode, "full": the open thread replaces the channel timeline in the main column while the channel sidebar stays visible on the left. The timeline stays mounted (hidden) so its scroll position and composer state survive closing the thread. - Full is the new default; the header toggle cycles full -> split -> focus and Settings offers the same three-way choice. - The layout toggle is only offered when a two-pane layout is actually available; narrow viewports keep single-panel behavior. - Reading position is preserved across mode switches via the existing top-visible-row anchor; e2e spec re-captures the anchor per hop since centering walks it up a few rows per switch. Verified: 9/9 view-mode unit tests, thread e2e specs 3/3 (incl. narrow toggle gating and cross-mode scroll anchoring), biome clean. Signed-off-by: asatire1 <236048262+asatire1@users.noreply.github.com>
Exploration layer for giving Buzz its own face: a variant re-asserts its signature theme vars after every theme/accent application (hooked at the applyAccentColor exit points) and stamps data-identity on <html> so the companion CSS can restyle agent rows, type, and geometry. MessageRow articles carry data-author-kind (agent/human) for the agent signature. Variants: stock (default, untouched), honey (amber brand + teal agent signature), dual (indigo/cyan human-agent duality), mono (dev-tool green/violet). Ships inert: stock stays the default and the variant is selected via localStorage (buzz-identity-variant) until the settings appearance panel lands. Verified: 4 distinct variant screenshots, biome clean, px-text guard clean, e2e build OK. Signed-off-by: asatire1 <236048262+asatire1@users.noreply.github.com>
themiguelamador
suggested changes
Aug 16, 2026
themiguelamador
left a comment
There was a problem hiding this comment.
I found three correctness/quality-gate issues and fixed them in Complear/buzz:review/pr-6073-fix (f34d9631d):
[P1]ChannelPane.tsxgrew past the repository's hard file-size ratchet (1,016 lines versus the 1,000-line ceiling), sopnpm check:file-sizesfailed. I kept the same full-panel behavior while folding the new state into the existing layout variables and nativehiddenhandling; the file is back at the allowed ceiling.[P2]full-thread-shot.spec.tsemitted mock messages immediately after navigation, before the E2E bridge had necessarily installed__BUZZ_E2E_EMIT_MOCK_MESSAGE__. The focused smoke run reproduced this asFailed to seed thread root. The spec now polls for the emitter before seeding.[P3]the mono identity selector used[data-testid^="channel-"], which also matchedchannel-drop-zoneand every other channel test hook. That made the entire conversation pane inherit JetBrains Mono, despite the documented scope being names and channel labels. It now targets sidebar menu buttons carrying a channel ID.
Verification on the fix commit:
- full desktop unit suite: 4,194 passed
- focused Playwright smoke specs: 3 passed
- TypeScript typecheck passed
- Biome passed on all touched files
check:file-sizesandcheck:px-textpassed- E2E build passed
- exploratory browser check confirmed an unsent channel draft survives opening/closing full-thread mode, and the corrected mono variant leaves the channel pane/controls in Inter while channel labels use JetBrains Mono
Please incorporate the fix commit (or equivalent changes) before merging.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two related changes from the app-identity thread (buzz://message?channel=19dd4184-366f-48a2-8c60-444f755f598a&id=279c1f84355d5c1cc1019ba9ca4119448eeec72f58b3496f48e07580713bb545):
Full-panel thread view mode — a third thread view mode where the open thread replaces the channel timeline in the main column while the channel sidebar stays visible on the left. The timeline stays mounted (hidden), so scroll position and composer state survive closing the thread.
Brand identity variant layer — a variant layer on top of the theme engine:
applyIdentityVariantre-asserts a variant's signature vars after every theme/accent application and stampsdata-identityon<html>;MessageRowarticles carrydata-author-kind(agent/human) for the agent visual signature. Variants:stock(default, untouched),honey,dual,mono.localStorage["buzz-identity-variant"]until a settings appearance panel lands.How to verify
node --import ./test-loader.mjs --experimental-strip-types --test "src/features/channels/**/*.test.mjs"— 9/9 view-mode unit tests pass.pnpm build:e2e && pnpm exec playwright test --project=smoke tests/e2e/thread-focus-mode.spec.ts tests/e2e/full-thread-shot.spec.ts— 3/3 pass (mode cycle, cross-mode scroll anchoring, narrow-viewport toggle gating, full-mode screenshot).pnpm exec biome checkon touched files — clean.Not in this PR
identity-variants.ts).