UI polish 6/12 — Streaming playback + consolidating agent-activity window - #18
Merged
Conversation
… buttery scroll Elevate the live-answer experience (unit #6 of the UI polish batch): - Consolidating "thoughts" window: tool calls + agent activity collapse into ONE compact, collapsible surface per turn (live current step + count, expandable to the full step list). Auto-collapses on done into a one-line summary ("N steps · M files · 1.4s"), re-expandable. Security .evt.block chips stay loud and are never folded into the collapse. - rAF-batched stick-to-bottom scroll: many per-token calls coalesce into a single scrollTop write (no layout thrash); releases the instant the user scrolls up. - HUD: cold-start "Warming up…" phase before the first token, smooth phase crossfade, eased streaming pulse, clean done-state check pop. Idempotent finish. - Softer eased streaming caret with a faint glow (no hard blink). All motion is transform/opacity (GPU-friendly) and neutralised under prefers-reduced-motion. Zero new deps. tsc clean, bundles, 193 harness tests green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
# Conflicts: # desktop/renderer/styles.css
mlcyclops
added a commit
that referenced
this pull request
Jun 22, 2026
…ile (#44 alert #18) readEditorFile did statSync(path) then readFileSync(path) — a check-then-use race (the path can be swapped between the stat and the read). Switched to a descriptor- bound read: openSync once, fstatSync(fd) for isFile/size/mtime, readSync from the same fd. The fd binds the inode we actually read, so there is no path re-resolution. Also hardened saveEditorFile's conflict check the same way: dropped existsSync(path) + readFileSync(path) for a direct read where ENOENT == "new file, no conflict". This mirrors loadExportText's TOCTOU-safe discipline (ADR-0025). All 12 editor tests + desktop suite (258) green; conflict/overwrite behavior unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
mlcyclops
added a commit
that referenced
this pull request
Jun 22, 2026
fix(editor): resolve CodeQL js/file-system-race TOCTOU in readEditorFile (alert #18)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the Apple-level UI/UX polish batch. Independent, region-scoped slice (
polish/streaming-playback) so it merges on its own.Gate per worker:
desktop tsc --noEmit+bun build desktop/renderer/app.ts --target=browser+bun test harness(green) +/code-review.🤖 Generated with Claude Code