Skip to content

fix(desktop): outline the selected community - #4969

Merged
tellaho merged 3 commits into
mainfrom
tho/selected-community-outline
Aug 5, 2026
Merged

fix(desktop): outline the selected community#4969
tellaho merged 3 commits into
mainfrom
tho/selected-community-outline

Conversation

@tellaho

@tellaho tellaho commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Category: improvement
User Impact: Selected communities now use a clear offset outline without tinting or covering their icon.

Problem: The selected community state replaced the icon surface with an accent fill, obscuring image icons and changing the tile's content treatment. Hover also changed the fill, text color, shape, and opacity, making navigation states visually jumpy.

Solution: Preserve each community tile's neutral surface and content while using a primary CSS outline for selection and a lighter outline for hover. The transparent outline offset leaves the space around image edges unpainted, and adjusted spacing prevents neighboring outlines from colliding.

Screen Recording 2026-08-05 at 3 23 32 PM
File changes

desktop/src/features/sidebar/ui/CommunityRail.tsx
Replaces selected and hover fills with offset outlines, keeps icon presentation stable across states, and adjusts rail and tooltip spacing for the new outline geometry.

desktop/tests/e2e/community-rail.spec.ts
Covers the shared active/inactive surface, radius, text color, opacity, and outline behavior, including hover invariants.

Reproduction steps

  1. Run the desktop app with two or more communities.
  2. Give the active community an image icon.
  3. Confirm the active icon keeps its original image and receives a 2px primary outline with a transparent 2px gap.
  4. Hover another community and confirm only a lighter outline appears; its fill, text color, opacity, and corner radius remain unchanged.
  5. Switch communities and confirm the outline follows the active community.

Screenshots

Full desktop context

Selected community outline in the desktop app

- Replace selected and hover fills with primary outlines while preserving icon background, text color, opacity, and radius across states.
- Keep transparent outline geometry at rest for smooth color transitions and add spacing so adjacent outlines do not overlap.
- Increase community rail tooltip clearance and cover active, inactive, and hover presentation invariants in Playwright.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho marked this pull request as ready for review August 5, 2026 22:06
@tellaho
tellaho requested a review from a team as a code owner August 5, 2026 22:06
tellaho added 2 commits August 5, 2026 15:12
Restore the subdued loading treatment for inactive communities without changing the new outline-based selected and hover states.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Do not dim community icons while background unread observation initializes; reserve opacity changes for explicit drag feedback.

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho enabled auto-merge (squash) August 5, 2026 22:27

@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.

Reviewed on Wes Billman’s behalf at c0024ccc1e426bd3920ca9e941a72c3a0b9fc334. No blocking findings.

The selected and hover states now vary only the outline while keeping opacity, background, radius, and foreground stable. The implementation is narrowly scoped, and the added community-rail E2E assertions explicitly cover full opacity plus unchanged tile appearance across selected/hover states.

CI is green except Desktop Core, which was still running when I submitted this review.

@tellaho
tellaho merged commit 005fe54 into main Aug 5, 2026
26 checks passed
@tellaho
tellaho deleted the tho/selected-community-outline branch August 5, 2026 22:44
sandro-sq added a commit that referenced this pull request Aug 5, 2026
* origin/main: (32 commits)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  fix(buzz-agent): scope handoff cap per turn, not per session lifetime (#4805)
  Fix mobile message timeline bounce (#4862)
  Polish mobile bottom sheets and profile cards (#4911)
  Fix media attachment actions (#4849)
  fix(desktop): remove join API token control (#4897)
  ...

Signed-off-by: Alessandro Joabar <sandro@squareup.com>
wpfleger96 pushed a commit that referenced this pull request Aug 5, 2026
…-agents-nav

* origin/main:
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  fix(buzz-agent): scope handoff cap per turn, not per session lifetime (#4805)
  Fix mobile message timeline bounce (#4862)
  Polish mobile bottom sheets and profile cards (#4911)
  Fix media attachment actions (#4849)
  fix(desktop): remove join API token control (#4897)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
tellaho added a commit that referenced this pull request Aug 5, 2026
…-pairing

* origin/main:
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)

Signed-off-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
brow pushed a commit that referenced this pull request Aug 6, 2026
…rebase-wt

* origin/main: (29 commits)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  fix(buzz-agent): scope handoff cap per turn, not per session lifetime (#4805)
  Fix mobile message timeline bounce (#4862)
  Polish mobile bottom sheets and profile cards (#4911)
  Fix media attachment actions (#4849)
  fix(desktop): remove join API token control (#4897)
  ...

Co-authored-by: Tom Brow <tomb@block.xyz>
Signed-off-by: Tom Brow <tomb@block.xyz>

# Conflicts:
#	desktop/src-tauri/src/commands/agents.rs
#	desktop/src-tauri/src/commands/agents_deploy.rs
#	desktop/src-tauri/src/managed_agents/env_vars.rs
tlongwell-block pushed a commit that referenced this pull request Aug 6, 2026
Brings main (a7ea86c) into the PR branch as a merge commit — no rebase,
no force — so the PR's merge ref is rebuilt against current main.

Merged clean: no conflicts, and the resulting tree is byte-identical to
`git merge-tree --write-tree` (fe05a2b).
No manual conflict resolution was performed, so no observer-batching
production or test byte changed in this commit.

Note on CI: this merge does not by itself turn the board green. The two
red Desktop Smoke shard-3 cases are main-branch defects that this branch
inherits through the merge, both root-caused and reproduced on main at
a7ea86c (which cannot contain this PR):

  - inbox-edit.spec.ts:233 expects the composer aria-label "Attach image",
    renamed to "Attach file" on main by d42d60d (#4304); the spec was
    added afterwards by eb6a375 (#2198), so the rename could not have
    updated it. Deterministic: 3/3 red on main in CI, 2/2 reproduced
    locally, 5/5 green with the one-word fix.
  - messaging.spec.ts:606 asserts a single day divider, but the e2e bridge
    seeds #general at now-120s and now-60s; within ~2 minutes of local
    midnight those straddle two calendar days and the non-.first() locator
    trips strict mode. Reproduced on main with page.clock.install pinned to
    00:01:28Z (2 dividers) versus 12:00:00Z (1 divider).

Both fixes belong in their own PR against main, not here.

* origin/main:
  fix(desktop): enable the content security policy (#4614)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)

Co-authored-by: Sami <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@buzz.block.builderlab.xyz>
Signed-off-by: Sami <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@buzz.block.builderlab.xyz>
bradseiler added a commit that referenced this pull request Aug 6, 2026
…igration

* origin/main: (95 commits)
  fix(desktop): virtualize channel member lists (#4991)
  fix(desktop): enforce owner-only access in internal builds (#4053)
  test(desktop): match attachment button label (#4993)
  fix(acp): pace observer telemetry at 1/s with per-channel batch envelopes (#4917)
  fix(desktop): enable the content security policy (#4614)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  ...

Signed-off-by: Brad Seiler <seiler@squareup.com>
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.

2 participants