feat: redesign sidebar folders and de-clutter the sessions sidebar - #1211
Conversation
Design Review (Fable 5) — 🟡 CONCERNSAdvisory design-level review of Design-Verdict: CONCERNS Sound redesign, but the changed folder API contract ships without its spec update, and the color allowlist now lives in three hand-synced copies. Watch
Suggestions
[DESIGN-REVIEWED] 62aef41 |
GPT 5.6 Review — ✅ no blocking findingsGPT 5.6 completed its review of This comment is updated in place on each push. Review detailsFINDING -- website/src/pages/ChatSidebar.tsx:1943 -- expanded empty folders still render the added False positive or not applicable? A repository writer can comment: |
Arbiter — ✅ no blocking findingsArbiter found no unresolved long-term items that require action before merging Second-order review for Review detailsI've reviewed both files. Assessing each sub-threshold finding against the two blocking tests (one-way door, concrete harm):
Arbiter-Verdict: PASS No sub-threshold finding meets the long-term-impact bar. Suggested follow-ups (open as issues — non-blocking)
[ARBITER-REVIEWED] 9fdf251 False positive or not applicable? A repository writer can comment: For a broader accepted-risk deferral, apply |
UX Review (Fable 5) — 🟡 CONCERNSAdvisory UX-level review of UX-Verdict: CONCERNS Existing users' hand-picked folder emojis silently vanish on upgrade with no notice and no way back — otherwise a clean, real de-clutter. Watch
Suggestions
[UX-REVIEWED] 62aef41 |
Opus 5 Review — ✅ no blocking findingsReviewed Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
f16fcf0 to
6abdc7b
Compare
|
Dispositions for findings on f16fcf0 (superseded by 6abdc7b):
|
6abdc7b to
52f59db
Compare
52f59db to
e10cfc7
Compare
|
Dispositions for findings on 6abdc7b (superseded by e10cfc7):
|
e10cfc7 to
13d740e
Compare
9fdf251 to
7f145ef
Compare
7f145ef to
3b41f94
Compare
|
Dispositions for findings on 3b41f94 (superseded by rebase):
|
3b41f94 to
c830e80
Compare
c830e80 to
342afd8
Compare
|
Dispositions for findings on c830e80 (superseded by 342afd8):
|
|
Dispositions for findings on 342afd8 (superseded by 110de64):
|
|
Dispositions for findings raised on 110de64 (current head e63cdcd):
|
Sidebar cleanup: - Remove the standalone "New chat in folder" row (list + board view); the folder header's hover + button already covers it - Remove the inline "Show all older sessions" buttons (flat view + root lane); the Older Sessions footer is the single affordance - Prune the orphaned i18n keys from all 11 catalogs Folder glyph and colors: - A folder's identity mark is a user-picked palette color: 12 hues shared with the Artifacts page's folder palette - The glyph renders lucide Folder/FolderOpen tinted by that color: stroke pulled toward text-strong so linework keeps rail-icon contrast on every theme, closed-state body washed with the color over the theme surface (the open shape stays stroke-only: its flap overlaps the body, so a fill would paint the overlap solid) - Emoji badge overlay removed; uncolored folders read as plain muted rail icons - Config modal: always-visible compact swatch row with a leading "no color" cell, plus a live glyph preview that click-toggles the open/closed state - Backend: color field on create and PATCH, allowlist-validated (machine-readable code on rejection); empty string clears Folder icon removal: - Folders no longer carry an icon: the emoji badge system and its LLM auto-generation are gone (create, PATCH, and boot paths), and stale stored icon values are simply ignored - Artifact-library folders are untouched and keep the shared emoji generator Sidebar behavior fixes ride along: truncation-era guard on the Older Sessions boundary, non-list folders.json tolerated at boot, and a color-only edit arming the modal's dismiss guard.
Open PR relationship auditThis is a consolidated, point-in-time code-level audit note. It compares complete merge-base diffs and current/merged code; it does not treat a shared topic as duplication or partial coverage as completion. Relationship findings
No PR, Issue, label, branch, or review state was changed by the relationship-note portion of this audit. |
Problem
The sessions sidebar had accumulated clutter and the folder rows looked flat:
Why it matters
The sidebar is the highest-traffic surface in the dashboard. Redundant rows push real sessions below the fold, and folders that lose their identity marker when open make scanning a folder-heavy sidebar slower. Emoji badges also broke theme cohesion (the rest of the app is lucide-based, per the repo's own icon convention).
Fix (symptoms → root cause → change)
Redundant rows — straight removals: the inline new-chat row (list + board view) and both inline "Show all older sessions" buttons, plus their orphaned i18n keys across all 11 catalogs.
Folder colors replace icons — a folder's identity mark is a user-picked palette color (12 hues, shared with the Artifacts page folder palette). The glyph renders lucide
Folder/FolderOpentinted by that color: stroke pulled towardtext-strongviacolor-mixso linework keeps rail-icon contrast on every theme, and the closed body washed with the color over the theme surface. The open shape stays stroke-only —FolderOpen's flap overlaps its body, so any fill would paint the overlap as a solid slab. Uncolored folders read as plain muted rail icons. Thecolor-mixtemplates live in a name-excluded plumbing module (folderColorPaint.ts, same boundary idiom as*.prompt.ts) soFolderGlyph.tsxstays fully covered by the i18n literal gate.The folder settings modal shows a compact always-visible swatch row (leading "no color" cell clears back to default) plus a live preview: the real sidebar
FolderGlyph, tinted from the draft as swatches are clicked, with a click-to-toggle open/closed state. Backend:coloraccepted on create and PATCH with an allowlist (empty string clears; invalid values 400 with a machine-readablecolor_invalidcode).Folder icon system removed — with color as the identity mark, chat folders no longer carry an icon at all. The emoji badge pipeline is gone end to end: no icon field on create or PATCH, no LLM icon generation anywhere in the chat-folder lifecycle, and no boot-time migration. Stale
iconvalues in existingfolders.jsonfiles are simply ignored. Artifact-library folders are a separate system and keep their emoji icons and shared generator, untouched.Tests
color_invalid, empty string clears), create acceptsdefault_agent, corrupt-folders.jsonboot tolerance, and the retained artifact-path emoji generator suite (redaction, single-grapheme validation).flake8/mypyclean.i18n:checkagainst base.Manual verification
Verified live against an isolated pod built from this branch: colored folders render distinct hues (light theme included), open/close swaps
Folder/FolderOpencleanly with the wash dropping on open, swatch pick and no-color clear reflect instantly in the modal's live preview, and uncolored folders match the rail-icon weight.Screenshots
Before
Screen.Recording.2026-08-02.at.12.38.10.PM.mov
After
Screen.Recording.2026-08-05.at.12.52.36.AM.mov