Features
- render markdown and math as typography
Fixes
- stop burning 60fps full frames on an animation nobody can see
- land the key-to-paint metric its call site already depends on
- drop a pinned-todos override committed without its implementation
- don't let an animation frame swallow a keystroke's redraw
- restore interleave_images, dropped by the typing-backoff commit
- correct iTerm2 inline-image sequence (cell height + tmux passthrough)
- base the typing backoff on keystrokes, not provider output
- resolve multi-word skill names in slash invocations (fixes #619) (#628)
- carry image attachments through soft interrupts (fixes #623) (#627)
- bound time-to-first-byte so a blackholed request can't hang forever (fixes #620) (#626)
- don't touch shell rc files when install dir is already on PATH (#625)
Performance
- record key-to-paint on every paint path and expose it
- let the decorative animation step aside while the user types
- stop relative cache ages from faking model-catalog changes
- stop per-frame auth lookups from blocking on credential probes
- skip duplicate remote model-catalog snapshots in the client
Other changes
- release: v0.62.0
- test(tui): harnesses that separate app response from screen update
- session: attribute and de-spam bulk session-load bursts
- desktop2: align keyboard shortcuts with web/browser conventions
- desktop2: let a flick actually coast, and gate it at browser range
- test(tui): report the run loop round-trip instead of a fake arrival time
- desktop2: measure scroll feel instead of guessing at it
- test(tui): add a screen-level repro for typed characters flickering
- todo: stop a late score climb from clearing the quality gate
- todo: state the closed-feedback-loop score in one clause
- todo: trim the closed-feedback-loop description
- desktop2: make Super+HJKL actually move in the overview
- build: fail closed when the Linux compat build produces nothing or lies about its commit
- todo: rename hill-climbability to closed feedback loop
- Disable iTerm2 inline images by default (opt in with JCODE_ITERM2_IMAGES=1)
- desktop2: space the hero against the donut's worst-case ink
- desktop2: fix scrolling feel — 3 lines per wheel notch, honour the gesture phase
- tui: make Shift+Enter actually work instead of only offering a fallback
- iOS: UX polish (graph-modeled) + production readiness (#522)
- tui: add a keymap-independent multi-line input fallback
- style: rustfmt server_events.rs after catalog-snapshot change
- test(tui): guard that detailed routes still land after a names-only catalog
- release: v0.61.2
- refactor(server): extract the catalog dedup key into its own module
Full changelog: v0.61.1...v0.62.0
Platform availability
- Linux x86_64: available
- Linux aarch64: available
- macOS Apple Silicon: available
- macOS Intel: available
- Windows x86_64: available
- Windows ARM64: available
- FreeBSD x86_64: available