Skip to content

fix(desktop): startup flash, titlebar overlap, clickable file cards#146

Open
oratis wants to merge 3 commits into
mainfrom
fix/desktop-ui-feedback
Open

fix(desktop): startup flash, titlebar overlap, clickable file cards#146
oratis wants to merge 3 commits into
mainfrom
fix/desktop-ui-feedback

Conversation

@oratis
Copy link
Copy Markdown
Owner

@oratis oratis commented Jun 1, 2026

Three issues from live tauri:dev review:

  1. Startup B&W "cat" flash — in dev, Vite injects index.css via JS, so the first paint was unstyled and the BrandMark <svg> (no explicit size, fill=currentColor) ballooned to a full-size black silhouette on white. Added render-blocking critical CSS to index.html (dark surface + pinned .mark box) so the first paint matches the app — no flash.
  2. Transparent titlebar overlapped content (sidebar brand / chat-header pills / inspector head were clipped). Added a 30px top inset on .app-shell so all columns clear the macOS traffic-light/title region. Chat text stays selectable (no shell-wide app-region: drag); the native title strip stays draggable.
  3. File outputs get a clickable card. ToolCard gains an onOpen affordance; the Repl passes it for any tool with a file_path (Read/Write/Edit), wired App → renderScreen → ReplScreen → fp.open. Clicking loads the file into the right-side preview panel (the §3.11 panel from feat(desktop): right-side file panel — Source/Diff/History + tabs + resize (#11) #145).

Typecheck + desktop build green.

🤖 Generated with Claude Code

oratis and others added 3 commits June 2, 2026 01:17
…cards

Three issues from live tauri:dev review:

1. Startup B&W "cat" flash — in dev, Vite injects index.css via JS, so the
   first paint was unstyled and the BrandMark <svg> (no explicit size,
   fill=currentColor) ballooned to a full-size black silhouette on white.
   Add render-blocking critical CSS to index.html (dark surface + pinned
   .mark box) so the first paint matches the app — no flash.

2. Transparent titlebar overlapped content (sidebar brand / chat-header pills
   / inspector head clipped). Add a 30px top inset on .app-shell so all
   columns clear the macOS traffic-light/title region (box-sizing is global
   border-box; the native title strip stays OS-draggable; no app-region drag
   so chat text stays selectable).

3. File outputs now get a clickable card. ToolCard gains an `onOpen`
   affordance; Repl passes it for any tool with a `file_path` (Read/Write/
   Edit), wired through App → renderScreen → ReplScreen to fp.open — clicking
   loads the file into the right-side preview panel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
When DeepSeek emits a Write/Edit/Read call with no arguments (typically
output-token truncation on a large file before the args stream), the tool
returned a cryptic "missing file_path". Now it explains the likely cause
(ran out of output tokens — raise Effort / smaller file) or lists the keys
that did arrive, which both helps the user and gives the model a usable hint.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sidebar sessions showed raw ids and had no management actions.

- Titles: title a brand-new session from its first user message
  (mac-agent sessionSetTitle) so the sidebar shows a human label immediately
  instead of the id; the Rust read-time derive remains the fallback.
- Archive / Delete: new session_delete + session_archive Rust commands
  (archive moves the .jsonl into sessions/archived/, excluded from the list;
  delete removes it — both guarded against path-traversal ids) + tauri-api
  wrappers. Sidebar rows reveal 🗄/🗑 on hover (delete confirms); removing the
  active session resets the chat via a new onSessionRemoved callback.
- Freshness: the sidebar now polls (8s) + reloads on active-session change so
  titles and new sessions surface without a remount.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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