Releases: jaysonventura/claude-dev-team
Release list
v1.57.0
v1.56.0
v1.55.0 — menu bar reads usage from the CLI status line (no oauth/usage fetch)
Menu bar drops its own subscription-% fetch — 429s killed at the root
The macOS menu bar no longer calls /api/oauth/usage itself. That token-shared burst across clients (the app launch fetch, the status line, every cdt-menubar status) was the sole cause of the recurring 429 rate limited state — the v1.54.0 cadence/jitter/launch-guard work only tamed it.
It is now a pure reader of ~/.claude/.cdt-usage.json, the cache the CLI status line already fills from Claude Code's native rate_limits payload. No network call and no Keychain read anywhere in the app — the strongest form of the read-only-credentials principle.
Changed
- Deleted
SubscriptionAPI.swift+Keychain.swiftand all the backoff/heartbeat/in-flight/rate-limit/token-fingerprint machinery inUsageStore.swift(~280 → ~115 lines). A 30s timer re-reads the local cache;refreshNow()/ wake-from-sleep just re-read. - The badge still shows session % over weekly %; the dropdown now shows Usage → Session / Weekly. Dropped (endpoint/Keychain-only) the plan label
Max 5x, weekly-Sonnet %, reset countdowns, and the 429 retry note. - Staleness, not errors: a reading older than 30 min is grayed with an "as of" time; an empty cache prompts
cdt-config statusline on(the status line is now the sole writer of session/weekly %). cdt-menubar statusis cache-only (no--live/--fresh).
Notes
- Enable the CDT status line (
cdt-config statusline on) so the menu bar has data to read. - After
/plugin update, runcdt-menubar build(or it auto-updates next session) to get the v1.55.0 app. A notarized DMG is a separate signed step (menubar/release.sh).
🤖 Generated with Claude Code
v1.54.0 — gentle menu-bar polling + cache-first status (stop usage 429s)
Stops the menu bar's /api/oauth/usage 429 (`rate limited`) state while keeping the subscription % on screen. The 429s came from event-driven bursts across multiple clients (the app's launch fetch, the status line, every cdt-menubar status), not the steady heartbeat — so this coalesces/defers those calls.
Changed
- Cadence 5→10 min + 0–60s jitter — the % moves slowly, so no real freshness lost; jitter stops clients syncing into a burst.
- Launch guard — defer the first live fetch on launch when the on-disk cache is already fresh (relaunching can't burst the endpoint).
- Cache-first
cdt-menubar status— reuses the menu bar's fresh reading ((cached, as of …)), only fetches live when stale/missing or--live/--fresh; a live fetch is persisted socdt-budget/ the nextstatusget it for free. - New
UsageCache.swiftcentralizes cache read/write/freshness (shared poll-interval constant + atomic write that won't clobber the status line's writer); pure freshness math unit-tested. - 429 back-off unchanged; monitor stays read-only on credentials (no OAuth minting). Independent security PASS + code-review APPROVE; 46 tests green.
Full diff: #27
v1.53.0 — Obsidian read-back recall (bidirectional)
The Obsidian bridge is now bidirectional. CDT syncs its vault into Obsidian and reads back: at task start cdt-recall ranks your Obsidian vault (your curated notes + synced CDT content) with a dependency-free BM25 ranker and surfaces the most relevant notes alongside the vault's own lessons — so Obsidian knowledge actively informs CDT's work. New cdt-obsidian recall <query> (self-gating, fail-open) + cdt-config obsidian-recall-root <path>. Pure stdlib, no embeddings. TDD'd + wired into CI. Full notes in CHANGELOG.
v1.52.1 — doctor reports Obsidian auto-use state
Patch: cdt-doctor now reports the Obsidian sync's effective state — a path-enabled vault (v1.52.0 auto-use) showed as off; it now shows ON (auto) → <vault>, matching cdt-obsidian status and cdt-config show. Display-only; no behavior change. Full notes in CHANGELOG.
v1.52.0 — premium design · account swap · Obsidian bridge
Three features, built via a multi-agent workflow and shipped through PR #24 (CI green; security review on the credential path = risk none).
Premium-design mandate
frontend-engineer / mobile-engineer now require ui-ux-pro-max on every UI task (frontend also web-design-guidelines + frontend-design; mobile also Apple HIG / Material). Generic AI aesthetics = non-negotiable rejection bar.
Menu-bar account swap (cswap-delegated)
New Accounts section in the menu bar: per-account 5h/7d usage, switch (with confirm), Switch-Best, post-switch refresh. All credential writes delegated to the cswap CLI — the menu bar never writes the Keychain. Requires cswap 0.14+ (--list --json); degrades to an install hint otherwise.
CDT vault → Obsidian bridge
cdt-obsidian CLI + session-end auto-sync exports ~/.claude/vault to an Obsidian vault as linked markdown (frontmatter + [[wikilinks]] + index). Auto-use: cdt-config obsidian-vault <path> auto-enables it; obsidian off overrides; off by default until a path is set. /cdt:obsidian for manual sync.
Upgrade: /plugin update (re-cache), then rebuild the menu bar app for the swap UI. Full notes in CHANGELOG.
v1.51.1
Patch on top of v1.51.0 — no runtime change, CI/repo hygiene only.
Fixed
scripts/e2e.shstatus-line assertion now matches the new plain-text line (… <N>% weekly) — v1.51.0 changed the format but the test still checked the oldwksegment, turning CI red.- Untracked accidentally-committed
hooks/__pycache__/*.pycand added a Python.gitignorerule.
v1.51.0 is the substantive release (builders→Opus, worktrees + dynamic workflows on by default, plain-text status line, emoji removed). See CHANGELOG.md.
v1.51.0
Changed
- Engineering builders + technical-writer run on Opus — reverting the v1.50.0 Sonnet pin. The seven builders (
backend,frontend,mobile,data,devops,qa,diagrams) andtechnical-writerare now pinnedmodel: opusfor production-grade output. Combined with the judgment/review panel and the Bug Council ×5 (already Opus), every substantive agent is now Opus — onlyfast-opsruns Haiku.lint-agents.shenforces this Opus floor (the Sonnet tier set was removed). - Worktrees + dynamic workflows are on by default.
autonomy=auto,CDT_TEAMS=on,CDT_SCALE=on— the orchestrator runs parallel git-worktree sessions and dynamic-workflow fan-out freely. The only governor left is a weekly-budget safety valve (ASK near the rate-limit ceiling). Effort stays xhigh — never max. - Status line is minimal, plain text:
CDT on · <model> · <N>% session · <N>% weekly(added current-session %; removed effort/context/duration/running-agents/phase). - Removed all custom emoji from CLI/terminal output (status line, per-agent dispatch/finish lines, running-agents);
cdt_emoji.pyreduced to the role-name helper.
Full changelog: CHANGELOG.md
v1.50.0
Model routing — role-based, deterministic, and lint-enforced
Routing was inherited from the session model (default Opus), so every implementation engineer, QA, docs, diagrams, and the Bug Council silently ran on Opus. This pins each agent to the right tier so cost savings are the default without dropping review/diagnosis quality.
- Sonnet (pinned):
backend-/frontend-/mobile-/data-/devops-engineer,qa-engineer,diagrams,technical-writer.data-/devops-engineerare hybrid — destructive/irreversible migration or infra change escalates to Opus + the mandatory security-veto. - Opus (pinned): review panel (
product-manager,architect,ui-ux-engineer,code-reviewer,security-reviewer) + the gated Bug Council ×5 (was inherit). - Haiku:
fast-opsonly (unchanged). lint-agents.shnow enforces all three tiers — CI fails if a tier silently regresses.- Escalation policy documented (README +
orchestrationskill): per-dispatchmodel: opusoverride on architecture / security / prod-deploy / destructive-infra-DB / complex-root-cause / release-blocker / repeated-test-failure / unclear-requirements triggers, andFULL:lifts builders to Opus.
Gates: lint-agents.sh PASS · validate.sh PASS (CI green on #20).
Full diff: #20