feat(tui): add Config tab and surface daemon staleness on the Dashboard - #189
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011L7s33UCjpQkreXW7amAw2
|
Warning Review limit reached
More reviews will be available in 51 minutes and 7 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughA new "Config" tab is added to the TUI, backed by new state types ( ChangesTUI Config Tab + Dashboard Stuck State
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/commands/tui/app.ts`:
- Around line 663-668: The global help shortcut range in the help overlay needs
to be updated to account for the newly added Config tab. Locate the "Global
keys" section in the help text (around the area mentioned in the comment) and
find where it currently states the tab range as "1 – 5". Change this to "1 – 6"
to accurately reflect all available tabs including the new Config tab that was
added.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 6419b8b7-1da2-4919-b8f4-1e8fdd78034c
📒 Files selected for processing (9)
CLAUDE.mdREADME.mddocs/commands.mdsrc/commands/tui/__tests__/config-tab.test.tssrc/commands/tui/app.tssrc/commands/tui/state.tssrc/commands/tui/tabs/config.tssrc/commands/tui/tabs/dashboard.tssrc/config/schema.ts
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011L7s33UCjpQkreXW7amAw2
Why
The TUI was sold as "the fastest way in" but couldn't change a single setting — toggling an agent or tuning the daemon meant hand-editing
agentsync.tomlin the vault. And the daemon health it showed didn't surface the last-sync/stuck signals PR #188 added. This makes the UI configurable (the headline ask) and surfaces the reliability work.Sixth and final PR in the series (follows #184, #185, #186, #187, #188).
What
agents.*,sync.*,claudePlugins.*, andsecurity.*with↑↓to move,spaceto toggle a boolean,←→to cycle an enum (secretScan) or adjust a number (debounceMs, ±50 clamped). Every write goes through the sameperformConfigSetcore asagentsync config set(reconcile + commit + push) — no forked logic, honoring the "TUI reuses command logic" invariant. The tab also lists the recipients who can decrypt the vault read-only (surfacingkey list).Scope note
This PR delivers the explicit "make the UI configurable" requirement plus the daemon-health surfacing and the recipient list. The in-TUI init wizard and Machines per-artifact diff/selective-copy are larger interactive-input features (free-text modals, a new diff surface) and are left as clear follow-ups; the Dashboard already points to
agentsync initfor first-run, and the Machines tab's whole-namespace copy is unchanged.Review fixes (caught in senior review)
The first cut guarded the un-init case with a
stat, butloadVaultConfigOrExitalsoprocess.exits on a v1/unsupported vault — which would have killed the entire TUI. Replaced with apeekVaultVersioncheck that throws a catchable error (rendered as a tab error state), which also makes the edit path unreachable on a bad vault. Plus: a concurrency guard so two rapid edits can't race the git working tree;DaemonStatusSchematimestamps tightened to ISOdatetime()so a malformed value can't render "NaN ago"; enum cycle handles an out-of-options current value.Tests
config-tab.test.ts(11): navigation + bounds, read-only no-op, lower-bound number clamp, load (rows + recipients + kinds), error-not-crash on un-init vault, and edits persisting throughperformConfigSet(toggle boolean, cycle enum both directions, adjust number). Full suite: 976 pass / 0 fail.CI note
bun testexits non-zero on the per-file coverage floor; CI treats 0-fail as success.🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Documentation