Skip to content

New white/green UI: batch-status perf, tab-scoped workflow buttons, auto-refresh, reshot README screenshots - #25

Merged
AusafMo merged 8 commits into
mainfrom
codex/match-ui-to-github
Aug 2, 2026
Merged

New white/green UI: batch-status perf, tab-scoped workflow buttons, auto-refresh, reshot README screenshots#25
AusafMo merged 8 commits into
mainfrom
codex/match-ui-to-github

Conversation

@AusafMo

@AusafMo AusafMo commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Rebased the new ui to match git work onto current main (v0.4.1) and extended it with a UI redesign, a launch-perf fix, workflow-tab fixes, auto-refresh, and fresh README screenshots.

What's in here

perf(status): batch live+head reads — kills the UI launch stall
engine.status() (and the UI's /api/state on launch) did 2 sequential DB round-trips per record — a per-record N+1. On a remote store, ~50 records × 2 × RTT stalled the UI ~20s. Added optional batch get_records/get_heads to the adapter Protocol (Mongo + Postgres), routed status() through a feature-detected batch path with a per-record fallback. Measured on the demo DB: 249 → 28 DB round-trips for 50 records, identical StatusRow output.

fix(ui): scope branch/PR workflow buttons to their tabs
Compare / New branch / Commit draft now show only on the Branches screen; Prepare PR / Merge PR only on Pull requests. Clicking one navigates to that tab's workspace first, then opens the action. Records/Activity stay uncluttered.

style(ui): true-white light theme, green-only accent, aligned controls
Light mode is now GitHub-white (was paper/cream); dark diff surface goes neutral-dark. Dropped the blue accent everywhere (bookmark/brand/avatar/tab-underline/focus/selection go neutral ink); a single restrained GitHub green stays for primary actions and semantic commit/branch dots. Unified top-bar control sizing (ENV/BRANCH selects, Refresh, theme toggle all 32px / 6px radius).

feat(ui): auto-refresh on focus, tab-visible, and a 15s poll
The UI only fetched on load/manual Refresh, so out-of-band drift/branches/PRs didn't appear without a reload. Added softRefresh() driven by window focus, visibilitychange, and a 15s interval — skipping while a modal or impact/LLM panel is open so it never interrupts a read.

docs: reshoot README screenshots on the new UI
Replaced the 3 hero images (diff, whole-system impact, scoped impact) with white-UI captures using real Gemini narration on the synthetic support fixture, and added 2 new views (Branches, an open pull request). The demo's [connections] now enables --llm narration out of the box (synthetic data only).

Verification

  • Full suite: 158 passed, 2 skipped; ruff clean.
  • Batch path verified byte-identical to the per-record fallback against a live Mongo demo (50 records, drift intact).
  • UI driven end-to-end in a browser: both themes, all tabs, New-branch modal, diff + impact (incl. scoped LLM narration), and auto-refresh (branch count updated 3→4 with no reload).

No secrets are committed (the Gemini key used for narration lived only in the server's runtime env).

AusafMo added 8 commits August 2, 2026 09:20
engine.status() (and the UI's /api/state on launch) fetched every record with
two sequential adapter round-trips (get_record + get_head). On a remote store
that is R*2 network round-trips; ~50 records at ~80ms RTT stalls the UI ~20s.

Add optional batch get_records/get_heads to the adapter Protocol, implement them
for Mongo and Postgres (one query per collection), and route status() through a
feature-detected batch path with a per-record fallback so any adapter still works.
Measured on the demo DB: 249 -> 28 DB round-trips for 50 records (identical
StatusRow output, verified against the per-record path).
The Compare/New branch/Commit draft/Prepare PR/Merge PR buttons sat in the global
top bar on every tab. Now branch buttons show only on the Branches screen and PR
buttons only on the Pull requests screen; clicking one first navigates to that
tab's workspace, then opens the action. Records/Activity stay uncluttered.
… controls

- Light mode is now GitHub-white (#fff canvas, #f6f8fa chrome) instead of the
  paper/cream palette; dark diff surface goes neutral-dark to match the app.
- Drop the blue accent everywhere: bookmark/brand/avatar/tab-underline/focus/
  selection cues go neutral (ink). A single restrained GitHub green stays for
  primary actions (Create/Adopt/Commit 'go' buttons) and semantic commit/branch dots.
- Unify top-bar control sizing: ENV/BRANCH selects, Refresh, and the theme
  toggle all share one 32px height + 6px radius and center on a single row.
Replace the three README screenshots (diff, whole-system impact, scoped impact)
with captures of the redesigned white/green UI. The impact shots use real
Gemini narration on the synthetic support fixture.

Enable the demo's LLM narration out of the box: set [connections].ai_provider
to gemini and opt the refund_resolution change + its scoped policy/eval/rollout
records into share_with_ai (demo data is synthetic and safe).
The UI only fetched state on load and manual Refresh, so drift/branches/PRs
created out-of-band (in a terminal or another tab) didn't appear until you
reloaded. Add softRefresh() — reload state but keep the current tab/record —
and drive it from window focus, visibilitychange, and a 15s interval. Skips
while a modal is open or a diff/impact panel is on screen so it never wipes an
in-progress read or an LLM narration result.
Capture the new white/green UI's Branches workspace (default + draft branches,
one with an open PR) and an open cfgit pull request reviewing a policy-rule
change with a line-aligned diff. Reference both in the README hero block.
CI installs the mcp extra unpinned (mcp>=1.0). mcp 2.0.0 (released after main
last passed) removed mcp.server.fastmcp, which cfg/mcp/server.py imports, so all
5 MCP tests hard-failed at collection. Cap the extra at mcp>=1.0,<2 until the
server is ported to the 2.x API, and switch the test guard to
importorskip('mcp.server.fastmcp') so a future relocation skips instead of fails.
@AusafMo

AusafMo commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

The mcp>=1.0,<2 pin here is the interim fix for the mcp 2.0 FastMCP removal. Full port to the 2.x MCPServer API is tracked in #26 (incl. OpenTelemetry tracing + stateless mode as the worthwhile wins).

@AusafMo
AusafMo merged commit 8a9f64b into main Aug 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant