Skip to content

🎨 style: refine sidebar with letter tiles and quieter status strip#77

Merged
vaayne merged 1 commit intomainfrom
redesign/sidebar-refined
Apr 18, 2026
Merged

🎨 style: refine sidebar with letter tiles and quieter status strip#77
vaayne merged 1 commit intomainfrom
redesign/sidebar-refined

Conversation

@vaayne
Copy link
Copy Markdown
Owner

@vaayne vaayne commented Apr 18, 2026

Summary

Implements the V1 "Polish pass" variant from the Mori Sidebar Refined design exploration. Three coordinated changes refine the sidebar without a structural rewrite.

  • Quieter status strip — dots + counts for waiting/running with a right-aligned tree count, replacing the heavier Attention/Running chip chrome
  • Project letter avatars — 18×18 rounded-square tiles with deterministic duotone palette (keyed off the project UUID) make projects scannable by color, not text
  • Selected-row emphasis — 2pt left accent bar inset 6pt top/bottom, plus a left-anchored gradient fade instead of a flat tinted block, so the selection has presence without feeling boxed in

New token: MoriTokens.ProjectPalette (7-pair duotone set) with a SwiftUI.Color(hex:) helper. New leaf view: ProjectLetterTile.

Localized strings (waiting, running, trees) added to both en.lproj and zh-Hans.lproj.

Test plan

  • mise run test — all package tests pass
  • swift build -c release --product Mori — clean release build (Swift 6 strict concurrency)
  • CI=1 bash scripts/bundle.sh — bundles without error
  • ./Mori.app/Contents/MacOS/Mori — launches and stays running
  • Visual check in light + dark Ghostty themes
  • Visual check with multiple projects (palette distribution)
  • Visual check with selected / running / waiting / error worktrees

🤖 Generated with Claude Code

Implements the V1 polish pass from the Mori Sidebar Refined design:
quiet indicator strip with right-aligned tree count, deterministic
per-project letter avatars for faster scanning, and a left accent
bar plus soft gradient on the selected worktree row.

Assisted-by: claude-code:claude-opus-4-7
Copy link
Copy Markdown

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

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: 6b2928c1a5

ℹ️ 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".

)
HStack(spacing: MoriTokens.Spacing.xl) {
summaryIndicator(
text: "\(attentionCount) \(String.localized("waiting"))",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Split error states out of waiting indicator

The new strip labels attentionCount as waiting, but attentionCount still includes both .waitingForInput and .error windows (see the existing attentionCount predicate in this file). In any workspace with errored agents, the sidebar now reports them as “waiting” (e.g., one error and zero waiting shows 1 waiting), which is misleading operational status and can hide failures from users scanning the sidebar.

Useful? React with 👍 / 👎.

@vaayne vaayne merged commit 58cd84d into main Apr 18, 2026
5 checks passed
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.

1 participant