feat: bring the Flutter client to desktop-grade polish#126
Conversation
…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.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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
left a comment
There was a problem hiding this comment.
CI is green, but five UI/state regressions block merge:
conversation_pane.dart:167-169: inbox selection directly awaitsselectSession; route through the shell's guarded selection path so failures surface.developer_surfaces.dart:267-273: external/Quick Open reads update content without synchronizingselectedFilePath, leaving Files at “Source unavailable.”transcript_markdown.dart:63-70: the selectable branch still returnsMarkdownBody(selectable: false); wrap it inSelectionAreato preserve transcript copy/select.t4_theme.dart:448-453: unconditional 28×28 icon buttons violate 44px mobile touch targets; make density platform-adaptive.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.
|
Implemented all five requested interaction repairs and rebased the complete contribution onto current main in #131. Please close this superseded branch. |
|
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. |
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.Testing
flutter analyzeclean;flutter testpasses (apps/flutter)pnpm build:demo) and verified the wide 1568px web render: main conversation, context panel with review diff, inbox flyout, command palette shortcutst4-hostand verified the compact layout end to endNot 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.