Repository navigation
Back/forward buttons and trackpad swipe between threads, an opt-in usage limits strip, and double-click to select inline code - #1756
Conversation
Word selection stops at - and /, so double-clicking `migration-gate` selected only "migration". The inline code element now selects all its children on dblclick; drag, single and triple click are untouched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1755) Settings -> Display gets "Show usage limits in thread" (off by default, same localStorage uiPrefs pattern as the other Display toggles). When on, a quiet strip above the composer shows one row per limit window the thread's provider reports plus a Context row, each read as percent LEFT so a longer bar means more room. Rows turn amber at 20% left or less and red at 10% or less; a provider that can't report limits collapses to a single "Limits · Unavailable" row with its message as the tooltip. Reuses the quota dialog's own loader and QUOTA_CLOCK_MS cadence (no new polling) and the header's already-computed context ring, so there is no new backend work. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Back/forward sidebar buttons need to know up front whether a step would land anywhere, without actually stepping. canStep wraps stepThread's existing lookup so App can disable them correctly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
accumulateSwipe turns a run of wheel events into a single back/forward commit past a 120px threshold, resetting after a 150ms gap so one gesture only ever fires once. hasHorizontalScrollAncestor lets the caller skip swipes starting inside a horizontally scrolling element (code blocks, diff panes) so they keep their own scroll. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reuses the existing goHistory/stepThread stack (#1506) that already backs the keyboard shortcuts and mouse side buttons: - Sidebar header gets Back/Forward icon buttons next to the collapse button, each disabled with nowhere to go, tooltips showing the matching chord ("Back (⌘[)" / "Forward (⌘])"). - canGoBack/canGoForward are recomputed off a tick counter bumped whenever the history ref moves, since the stack itself intentionally stays out of React state. - A two-finger horizontal wheel swipe over the thread pane commits one step past a 120px threshold (src/swipeNav.ts), skipped over anything that scrolls horizontally itself (code blocks, diffs). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ithout a reading (#1755) Each providerLimits call reads keychains and hits every provider's usage API uncached; the dialog's 30s clock only ticks its countdowns. A window with a NaN usedPercent no longer draws as a red 0% left. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1752) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e940e59f13
ℹ️ 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".
| {showUsageLimitsStrip ? ( | ||
| <UsageLimitsStrip | ||
| loadLimits={loadProviderLimits} | ||
| activeProvider={thread.provider} |
There was a problem hiding this comment.
Select usage limits with the full provider instance reference
For a thread using a named provider instance, such as claude:work, this passes only claude, so the strip displays the default account's limits instead of the account running the thread. electron/providerUsage.js returns named-instance usage under inst.ref, and UsageLimitsStrip selects its row by exact provider equality. Pass threadProviderRef(thread) here so users with separate provider logins see the correct account's remaining quota.
Useful? React with 👍 / 👎.
Three small quality-of-life changes for moving around threads and keeping an eye on limits.
Back and forward buttons, plus trackpad swipe (#1752)
Usage limits strip (#1755), opt-in
Double-click selects a whole inline code span (#1754)
migration-gatein chat now selects all of it, not just "migration". Drag, single click and triple click are unchanged.Checks
npm run typecheck: cleannpm run test:renderer: 3304 pass, 0 failnpx vite build: succeedsCloses #1752, closes #1754, closes #1755.
🤖 Generated with Claude Code