From 8d32735f59fb5e300843a720bde33c21c00a1333 Mon Sep 17 00:00:00 2001 From: minhn4 Date: Mon, 20 Jul 2026 11:43:21 +0700 Subject: [PATCH 1/6] fix(tui): show sidebar hint while session is busy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The hidden-sidebar hint (ctrl+b N todos) from #69 only rendered in the footer Switch's idle fallback arm, so it vanished for the whole duration of a running turn — exactly when todos are being created. Render props.hint in the busy arm too, after the esc-interrupt text (retry keeps its error row uncluttered), and give the hint box paddingRight so it never abuts the right-side directory label on narrow terminals. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 8 ++++++++ DIVERGENCES.md | 1 + packages/tui/src/component/prompt/index.tsx | 1 + packages/tui/src/routes/session/index.tsx | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa582283d2..a61b26bbb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ file is the human-readable summary of what changed and why. ## Unreleased +### Sidebar + +- **Hidden-sidebar hint shows while busy** — the `ctrl+b N todos` hint from + [#69](https://github.com/quickbeard/codev-code/pull/69) now also renders while + a turn is running (next to `esc interrupt`), not just when the session is + idle — todos created mid-turn are visible immediately. It still yields to the + retry error row. + ## 1.17.18-2 ### App lifecycle diff --git a/DIVERGENCES.md b/DIVERGENCES.md index cd082304e8..58665fbc3e 100644 --- a/DIVERGENCES.md +++ b/DIVERGENCES.md @@ -114,6 +114,7 @@ from the squash message first, or use a plain merge. | `packages/tui/src/component/dialog-provider.tsx` | The "Other" custom-provider option routes into the fork-only `runCustomProviderFlow` (component/dialog-custom-provider.tsx, new file) — id → API key → optional base URL → model discovery via `/v1/models` → `provider.` block PATCHed into global codev.json (key stays in auth.json) — instead of upstream's credential-only `ApiMethod`; the local `promptCustomProviderID` helper moved into that flow (upstream's "only stores a credential" description no longer holds). `ApiMethod`'s `custom` prop is now unreferenced but left in place. | An empty base URL keeps upstream's credential-only behavior; with one, the provider is usable without hand-editing codev.json. The configure gate's "Custom provider" option shares the same flow. | Keep our `onSelect` + import and the helper deletion; take upstream's changes to `ApiMethod`/other methods (the flow only wraps the entry point). | | `packages/tui/src/component/prompt/index.tsx` | Gated the prompt footer's model/provider indicator on `useConnected()` (the shared "a real provider is configured" predicate) | Don't advertise the free hosted Zen default (e.g. "Big Pickle · OpenCode Zen") in the footer while nothing is configured — same rationale and predicate as `app.tsx`'s startup gate and the provider/model filters. A configured gateway/real provider, or a deliberately-authenticated opencode/opencode-go, still shows its model. | Keep the extra `Show` condition; take upstream's surrounding changes. | | `packages/tui/src/component/prompt/index.tsx` | Added a `directoryLabel` memo (abbreviated cwd, `:branch` suffix when known, middle-truncated; last path segment + branch in text color, parent path muted, matching the sidebar footer) rendered as the first item of the prompt footer's right-side group, left of the editor open-file label. The memo delegates to `directoryFooterLabel(...)` and the render goes through a `