feat(ui): make the sidebar session-first and minimal#100386
Conversation
|
Final landed proof for the rebuilt sidebar branch:
Behavior fixes in the landed tree:
Blacksmith Testbox-through-Crabbox
Source-blind Chromium validation passed desktop customization/persistence/reset/collapse plus settled tablet drawer behavior. Fresh autoreview of the combined production diff reported no accepted/actionable findings. Proof boundary: browser E2E uses the deterministic mocked Gateway; no live provider or credential behavior changed. |
|
Codex review: needs maintainer review before merge. Reviewed July 5, 2026, 9:05 PM ET / 01:05 UTC. Summary PR surface: Source -160, Tests +40, Docs 0. Total -120 across 18 files. Reproducibility: not applicable. this is a UI feature PR rather than a standalone bug report. The relevant behavior is covered by source inspection plus the added mocked-Gateway browser E2E cases. Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Land the current branch after maintainer acceptance of the sidebar default/preference change and completion of exact-head checks, with release-note context kept in the PR body rather than CHANGELOG.md. Do we have a high-confidence way to reproduce the issue? Not applicable; this is a UI feature PR rather than a standalone bug report. The relevant behavior is covered by source inspection plus the added mocked-Gateway browser E2E cases. Is this the best way to solve the issue? Yes, with maintainer acceptance of the product/default change. The implementation centralizes the pinned-session cap in AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 5a31666a06e5. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source -160, Tests +40, Docs 0. Total -120 across 18 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (6 earlier review cycles)
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1de14e875f
ℹ️ 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".
| target: message.channel_id | ||
| ? { channelId: message.channel_id } | ||
| : { conversationId: message.direct_conversation_id }, |
There was a problem hiding this comment.
Post ClickClack activity rows into the source thread
When agentActivity is enabled for a ClickClack account and the inbound message is a thread reply (message.parent_message_id is set), the final response is still delivered with threadId: message.thread_root_id, but the activity publisher is targeted only with the channel id here. createActivityMessage then posts to /api/channels/{channelId}/messages, so streamed commentary/tool rows escape the thread as new top-level channel messages while the final answer stays in-thread. Please carry the thread root into the activity client and post activity rows as thread replies for threaded turns.
Useful? React with 👍 / 👎.
1de14e8 to
445b5ae
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 445b5ae666
ℹ️ 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".
| ${chatRows.length === 0 | ||
| ? this.renderChatFallback() |
There was a problem hiding this comment.
Avoid rendering Chat fallback when pins already cover chats
When every visible session is pinned (for example the current/only chat is pinned), chatRows is empty while pinnedRows already contains the real session. This branch then renders the generic Chat fallback as an additional active row under Chats, so the sidebar shows two active chat entries and a non-session link that can drop the session-specific URL. Gate the fallback on there being no active/pinned session, not just no unpinned rows.
Useful? React with 👍 / 👎.
…mpact icon footer, no brand header
…inned-cap invariant
6b59f92 to
447fb40
Compare
|
Merged via squash.
|
Related: #100287
What Problem This Solves
The customizable sidebar from #100296 still carried chrome that competed with the conversation: a duplicate brand header, a boxed recent-session section, three default-pinned destinations, and a vertically labeled utility footer. Pinned sessions also shared the nine-row budget with ordinary recents, so common pin counts displaced recent sessions and larger pin sets could disappear.
Why This Change Was Made
This makes the sidebar session-first. It starts with New session, separates Pinned from Sessions, keeps every pin plus nine ordinary recent sessions, and leaves only Overview pinned by default. More and the customization menu keep every destination reachable. Settings, Docs, pairing, theme, and connection status move into one compact footer row; the redundant recent-session collapse preference and brand header are removed.
The original branch was rebuilt on current
main, retaining the useful follow-up while dropping thousands of unrelated lines that had already landed or drifted in from main. Review also fixed pinned-only active-session duplication, reused the existing localized Sessions label, and removed stale generated localization and changelog churn.User Impact
The default sidebar now presents New session, pinned sessions, recent sessions, All sessions, Overview, More, and a one-line utility footer. Custom route pins still persist and reset correctly; desktop rail mode and the tablet drawer remain operable. The focused change removes 120 more lines than it adds across 18 files.
Evidence
tbx_01kwtc46g34k4337c0menqft96: 29 focused unit/settings tests, 3 mocked-Gateway browser E2Es, UI typecheck, and the 20-locale consistency check passed.pnpm check:changedacross the core production, core tests, and docs lanes.gpt-5.5) of the exact rebased branch reported no accepted/actionable findings.