Skip to content

feat: bring the Flutter client to desktop-grade polish#126

Closed
wolfiesch wants to merge 8 commits into
mainfrom
codex/ui-polish-sprint
Closed

feat: bring the Flutter client to desktop-grade polish#126
wolfiesch wants to merge 8 commits into
mainfrom
codex/ui-polish-sprint

Conversation

@wolfiesch

Copy link
Copy Markdown
Collaborator

Summary

UI polish pass moving the Flutter client toward the layout and density of leading desktop agent apps. Builds on the demo source-of-truth change (3b8c023), which this branch includes.

  • Theme: platform-adaptive compact density, 13px desktop type scale, themed menus/inputs/buttons/tooltips, quiet focus treatment
  • Transcript: centered 760px column shared with the composer, visible role labels removed (screen-reader semantics kept), markdown stylesheet with styled tables and inline code, syntax-highlighted fenced code blocks with copy buttons, completed tool runs collapsed into worked-steps groups with edited-file chips and a Review handoff, hover message copy
  • Composer: single rounded container with embedded attach, read-only permissions pill, thinking/model pills (Fast and Compact fold into the model menu), circular send button
  • Rail: host status chip with connect/disconnect/manage menu, single-line session tiles with status dots and hover actions, uppercase project group headers, full-title tooltips
  • Shell: collapsible right context panel (session info, review diff, files, activity), global shortcuts (mod+K/N/shift+F/,/J/I/1-9/Esc), mod+shift+P command palette, wide-mode inbox as an anchored flyout, inline approval cards for the selected session
  • Developer surfaces: Activity/Files/Review/Terminal/Preview tab bodies extracted into embeddable panel widgets; the tabbed takeover delegates to them unchanged
  • Demo: seeded with a realistic inert session (markdown, tool cards, approvals, usage, file workspace with matching review diff); epoch-zero usage timestamps guarded

Testing

  • flutter analyze clean; flutter test passes (apps/flutter)
  • Rebuilt the public demo (pnpm build:demo) and verified the wide 1568px web render: main conversation, context panel with review diff, inbox flyout, command palette shortcuts
  • Ran the macOS debug shell in demo mode with the bundled t4-host and verified the compact layout end to end

Not covered here: a wide-window native macOS pass and workspace-level pnpm check/pnpm test (the diff is Flutter-only); no native platform files changed, so packaging checks were not run.

…de blocks

- platform-adaptive compact density and 13px desktop type scale
- themed menus, quiet inputs, compact buttons, tooltip timing
- new TranscriptMarkdown/CodeBlock widgets with re_highlight syntax highlighting
- guard epoch-zero usage timestamps; session title tooltips
Realistic inert demo: markdown transcript with tables and highlighted
code, tool cards, second project group with working and archived
sessions, populated inbox and agent activity, static usage report,
file workspace with a seeded review diff. Review header now matches
the seeded quick_open.dart diff. All actions stay local and disabled.
Rail header condenses to a wordmark plus a host status chip whose menu
holds the status line, manage hosts, and connect or disconnect actions.
Session rows become single-line with status dots, a working spinner,
hover-revealed actions on desktop, and full-title tooltips. Project
group headers restyle to uppercase labels.
Extract Activity, Files, Review, Terminal, and Preview tab bodies into
embeddable panel widgets with a controlled-or-uncontrolled state
pattern; the tabbed developer takeover now delegates to them
unchanged. Extract InboxFlyoutContent for anchored popover use and add
InlineApprovalCard for transcript embedding. Add the collapsible
right-docked ContextPanel container.
Transcript: centered 760px column shared with the composer, visible
role labels removed (semantics kept), TranscriptMarkdown rendering,
completed tool runs collapse into worked-steps groups with edited-file
chips and a review handoff, hover message copy, and inline approval
cards for the selected session. Composer: single rounded container
with embedded attach, read-only permissions pill, thinking and model
pills (fast and compact fold into the model menu), and a circular
send button. Shell: global shortcuts, command palette, context panel
sections for review, files, and activity, and a wide-mode anchored
inbox flyout.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

The release consistency check forbids cache: pnpm anywhere in
deploy-site.yml so the no-install release-defer path never saves a
cache. The demo job inherited the cached setup-node step; it installs
with a frozen lockfile either way.

@riverpilot riverpilot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI is green, but five UI/state regressions block merge:

  1. conversation_pane.dart:167-169: inbox selection directly awaits selectSession; route through the shell's guarded selection path so failures surface.
  2. developer_surfaces.dart:267-273: external/Quick Open reads update content without synchronizing selectedFilePath, leaving Files at “Source unavailable.”
  3. transcript_markdown.dart:63-70: the selectable branch still returns MarkdownBody(selectable: false); wrap it in SelectionArea to preserve transcript copy/select.
  4. t4_theme.dart:448-453: unconditional 28×28 icon buttons violate 44px mobile touch targets; make density platform-adaptive.
  5. adaptive_session_shell.dart:839-841: compact controls toggle _showContextPanel, but compact layout never reads it or mounts the panel; present a sheet/drawer or remove the dead control.

Add focused behavior tests, rebase current main, and coordinate the main.dart/README/package overlap with #128 before rerunning CI.

@riverpilot

Copy link
Copy Markdown
Contributor

Implemented all five requested interaction repairs and rebased the complete contribution onto current main in #131. Please close this superseded branch.

@iarbpairs

Copy link
Copy Markdown
Collaborator

Closing as superseded by #131, which carries the complete Flutter polish contribution plus the requested guarded selection, file synchronization, transcript selection, touch-target, and compact context-panel repairs.

@iarbpairs iarbpairs closed this Jul 21, 2026
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.

3 participants