Found by driving the merged app against the live repo (Playwright Electron). Five real issues the fixture-backed demo never exposed:
Empty-state gaps (the repo has no open issues after we closed the backlog):
Focus rendered blank — scheduleFocus returns a FocusView with empty slots, not undefined, so the if (!focus) guard never fired. Now shows the Nothing to pour EmptyState.
Standup calm nag rendered #0 · steeping 0d · blocks chrome and was clickable (would open issue #0). Now a plain reassurance pill.
Static mocks the de-mock sweep missed (these screens didn't import fixtures.js, so they were skipped):
Settings was ~80% mock — fake Sync card (webhook :48731, poll fallback, 500 issues), fake dual-model router, unwired Rituals. Replaced with honest/live content: real reconcile description, the actual probed model from model.status() (google/gemma-4-26b-a4b-qat), dropped Rituals + the duplicate Forget button.
Settings said "Not connected" while connected — config:get returned only saved config, so a .env.local connection read null. Now falls back to the resolved connection's public view (Settings + rail host now show christian/commitea / gitea.stephenmann.io).
Capture braindump was pre-filled with fake example text; now starts empty.
All verified visually against live christian/commitea (Reginald on a local gemma model). desktop tsc clean.
Found by driving the merged app against the live repo (Playwright Electron). Five real issues the fixture-backed demo never exposed:
**Empty-state gaps** (the repo has no open issues after we closed the backlog):
- **Focus rendered blank** — `scheduleFocus` returns a `FocusView` with empty slots, not `undefined`, so the `if (!focus)` guard never fired. Now shows the **Nothing to pour** EmptyState.
- **Standup calm nag** rendered `#0 · steeping 0d · blocks` chrome and was clickable (would open issue #0). Now a plain reassurance pill.
**Static mocks the de-mock sweep missed** (these screens didn't import `fixtures.js`, so they were skipped):
- **Settings was ~80% mock** — fake Sync card (webhook `:48731`, poll fallback, `500 issues`), fake dual-model router, unwired Rituals. Replaced with honest/live content: real reconcile description, the actual probed model from `model.status()` (`google/gemma-4-26b-a4b-qat`), dropped Rituals + the duplicate Forget button.
- **Settings said "Not connected"** while connected — `config:get` returned only *saved* config, so a `.env.local` connection read null. Now falls back to the resolved connection's public view (Settings + rail host now show `christian/commitea` / `gitea.stephenmann.io`).
- **Capture braindump was pre-filled** with fake example text; now starts empty.
All verified visually against live `christian/commitea` (Reginald on a local gemma model). desktop `tsc` clean.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
christian
added 1 commit 2026-07-10 19:57:45 +00:00
Poking at the live app (a real repo with no open issues) surfaced two empty-state gaps:
- Focus (Morning service) rendered a bare header — no cards, no empty state —
because scheduleFocus returns a FocusView with empty now/next/later rather than
undefined, so the `if (!focus)` guard never fired. Guard on 'no now/next/later'
too → shows the 'Nothing to pour' EmptyState.
- Standup's calm sentinel nag (id 0) still rendered '#0 · steeping 0d · blocks'
chrome and was a click target (would try to open issue #0). Render the calm
case as a plain reassurance pill, no chrome, not clickable.
Both verified against the live christian/commitea repo (all issues closed → no
open work). desktop tsc clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
christian
added 1 commit 2026-07-10 20:10:01 +00:00
More static mocks found by poking the live app:
- Settings was ~80% mock: a fake Sync card (webhook endpoint :48731, poll
fallback, 'last reconcile 3.2s · 500 issues'), a fake dual-model 'router'
(gemma-4b/qwen-72b with hardcoded URLs), and an unwired Rituals card. Replaced
with honest/live content: the Sync card now describes the real on-demand
reconcile + stale-cache model; the Model card shows the actual probed model
from model.status(); dropped Rituals and the duplicate 'Forget' button.
- Settings showed 'Not connected' while the app was clearly connected: config:get
returned only the *saved* config, so a .env.local/env connection read as null.
It now falls back to a public view of the resolved connection — Settings and
the rail host label reflect the real christian/commitea connection.
- Capture braindump was pre-filled with a fake example ('auth is flaky…'); now
starts empty with just the placeholder.
Verified live: Settings shows christian/commitea connected + google/gemma-4-26b
reachable; Capture empty; a live Reginald chat turn runs the agent loop.
desktop tsc clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
christian
changed title from Fix blank Focus + calm-standup nag chrome (found dogfooding) to Dogfooding fixes: empty-state gaps + Settings/Capture mocks the sweep missed2026-07-10 20:10:22 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Found by driving the merged app against the live repo (Playwright Electron). Five real issues the fixture-backed demo never exposed:
Empty-state gaps (the repo has no open issues after we closed the backlog):
scheduleFocusreturns aFocusViewwith empty slots, notundefined, so theif (!focus)guard never fired. Now shows the Nothing to pour EmptyState.#0 · steeping 0d · blockschrome and was clickable (would open issue #0). Now a plain reassurance pill.Static mocks the de-mock sweep missed (these screens didn't import
fixtures.js, so they were skipped)::48731, poll fallback,500 issues), fake dual-model router, unwired Rituals. Replaced with honest/live content: real reconcile description, the actual probed model frommodel.status()(google/gemma-4-26b-a4b-qat), dropped Rituals + the duplicate Forget button.config:getreturned only saved config, so a.env.localconnection read null. Now falls back to the resolved connection's public view (Settings + rail host now showchristian/commitea/gitea.stephenmann.io).All verified visually against live
christian/commitea(Reginald on a local gemma model). desktoptscclean.🤖 Generated with Claude Code
More static mocks found by poking the live app: - Settings was ~80% mock: a fake Sync card (webhook endpoint :48731, poll fallback, 'last reconcile 3.2s · 500 issues'), a fake dual-model 'router' (gemma-4b/qwen-72b with hardcoded URLs), and an unwired Rituals card. Replaced with honest/live content: the Sync card now describes the real on-demand reconcile + stale-cache model; the Model card shows the actual probed model from model.status(); dropped Rituals and the duplicate 'Forget' button. - Settings showed 'Not connected' while the app was clearly connected: config:get returned only the *saved* config, so a .env.local/env connection read as null. It now falls back to a public view of the resolved connection — Settings and the rail host label reflect the real christian/commitea connection. - Capture braindump was pre-filled with a fake example ('auth is flaky…'); now starts empty with just the placeholder. Verified live: Settings shows christian/commitea connected + google/gemma-4-26b reachable; Capture empty; a live Reginald chat turn runs the agent loop. desktop tsc clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>Fix blank Focus + calm-standup nag chrome (found dogfooding)to Dogfooding fixes: empty-state gaps + Settings/Capture mocks the sweep missed