Skip to content

v2.24.0

Choose a tag to compare

@JackUait JackUait released this 20 Jul 17:02
· 350 commits to main since this release

Features

  • Drop the branch title from the compact-view heading
  • Subscription panes show the model's REAL context usage
  • Pager can no longer die before paint — recover guards + torture net
  • Remove the Account row — logins live in the subscription modal
  • Branch name moves to the header's left; footer keeps push/pull counts
  • GPT tiers remap — fable=sol, opus=terra; new ChatGPT configs start on sol
  • Tint file rows with their section title's color
  • Real 7d/5h usage bars for subscription backends
  • One shared interface — logins fold into the subscription modal
  • Logins section inside the subscription modal
  • Identity-kind glyph on the account pill
  • Mutual avoidance between login and subscription hues
  • Per-subscription identity colors
  • Move the subscription off the header onto the account pill
  • Remove the subscription switcher from the main page
  • Add Moonshot Kimi subscription provider
  • Show active subscription on the account pill
  • Stamp launch subscription + show pill for subscriptions
  • Switch Claude subscription from the account popup
  • Subscription rows in the Switch agent popup
  • Wire Codex login client
  • Add ChatGPT sign-in action
  • Track ChatGPT login state
  • Expose ChatGPT auth flow
  • Inject sound preview capability
  • Manage subscription profile lifecycle
  • Edit and activate subscription profiles
  • Render subscription settings overlay
  • Open subscription management modal
  • Initialize provider profiles
  • Launch with ChatGPT subscription
  • Serve local Anthropic API
  • Preserve Claude tool turns
  • Translate Codex response streams
  • Translate Anthropic requests
  • Add Codex app-server client
  • Expose OpenAI GPT subscription
  • Add ChatGPT auth provider
  • Dress the clean-tree wisp like the splash ghost
  • Draw a mascot placeholder for a clean tree
  • Supervise silent native TUI
  • Add native attention observer
  • Remove the Projects folder setting
  • Folder browser adds the project immediately on choose
  • Add-project opens folder-browser overlay modal
  • Floating folder-browser card rendering
  • DirBrowserModel directory navigation core
  • Filter private OSC 9 notifications
  • Inline add-worktree button on zero-worktree project rows
  • Polish the add-project form
  • Surface the GitHub-URL option in the add-project form
  • Add projects by pasting a GitHub repo URL
  • Ingest usage history at startup
  • Make local journal history authoritative
  • Persist mirrored append-only history
  • Add checksummed usage history replay
  • Create random-name worktree with one key
  • Activate native renderer
  • Preserve session controls
  • Expose native command
  • Preserve discard workflow
  • Keep refresh off input loop
  • Load snapshots asynchronously
  • Parse git records safely
  • Add indexed snapshots
  • Observe attention protocol
  • Publish semantic attention
  • Reduce semantic events
  • Monitor background jobs
  • Track semantic attention
  • Consume semantic state
  • Fence launch generations
  • Add state protocol
  • Label image size deltas KB/MB (MB above 1024 KB)
  • Show image files' byte-size change, not +0/-0 line counts
  • Paint every full-screen view on a pitch-black canvas
  • Open the About card as a centered overlay modal
  • Show the installed wisp-deck version in the About card
  • Show pending update under the wordmark with a U/click Update button
  • [ Open in Preview ] button opens the image in the macOS Preview app
  • Real-pixel image previews via kitty graphics
  • Fit image previews to the popup box on any aspect ratio
  • Preview images in the diff popup instead of a binary diff

Bug Fixes

  • Don't demand the capability boundary of pre-2.23.1 releases
  • Context overflow is 'prompt is too long', never a retryable 502
  • ContextCompaction is a lifecycle item, not a Codex-owned tool
  • Merge mixed final user content instead of 400-wedging the session
  • Itoa panicked on counts ≥ 10000, killing the popup for big files
  • Recover replayed tool continuations from history instead of 400
  • Don't expire live tool turns mid-run; stale continuations are 400
  • Fall back to WISP_DECK_PLAN for the subscription pill
  • Move ChatGPT sign-in into actions
  • Suppress unavailable connector warning
  • Disable Claude connectors for ChatGPT
  • Sanitize tmux client marker
  • Require host-effect boundary
  • Use token-only Claude auth
  • Route shell through guarded owner
  • Preserve Skill continuation
  • Accept inline system messages
  • Add non-redacted test sentinel
  • Make login recovery automatic
  • Add global test boundary
  • Reap browser opener
  • Login signed-out ChatGPT users
  • Harden preview boundary
  • Wire interactive sound previews
  • Navigate subscription submenus
  • Make sound cycling silent
  • Highlight focused subscription
  • Make subscription back clickable
  • Return to subscription list
  • Show standard profile actions
  • Navigate profile actions
  • Keep profile actions inline
  • Enter subscription details with right arrow
  • Prune stale Codex identities
  • Constrain identity file paths
  • Keep restore identity current
  • Complete subscription modal navigation
  • Harden subscription modal interactions
  • Avoid zsh path rebinding
  • Wire per-session restore identity
  • Snapshot active tool identity
  • Fail closed into resume picker
  • Persist durable session identity
  • Preserve GPT pricing rates
  • Recognize storm launches by the build stamp; publish queue before the marker
  • Builder pre-acquires the pop lock so storm launches cannot starve it
  • Kill the stuck single-pane tab, wrong-tab restores, and pre-attach stalls
  • Put the clean-tree wisp to sleep
  • Shrink and mute the clean-tree mascot
  • Reveal completed session layout
  • Restore status-line execution
  • Retire legacy plugins in zsh
  • Preserve attach exit status
  • Close observer attempt context
  • Make Wisp sole agent sound owner
  • Filter terminal notifications
  • Disable lifecycle hooks
  • Disable launch hooks
  • Restore hover and status styling
  • Disable app-server notifier
  • Disable external notifier commands
  • Preserve rejected terminal controls
  • Consume notifications before terminal
  • Disable native notification sound
  • Preserve one-hour cache writes
  • Stop refresh blink
  • Read sound preference in Go, not bash
  • Make Off a playback boundary
  • File list no longer freezes with many files — kill the O(N²) hover repaint and the per-file forks
  • Harden passive attention
  • Bound recovery reads
  • Harden semantic attention
  • Hydrate semantic state
  • Emit pane format tab
  • Preserve lock exclusion
  • Harden runtime lifecycle
  • Expose in-memory identity
  • Reject stale dedupe writes
  • Remove worktrees off the UI event loop so deletes never freeze the interface
  • Purge zsh-special variable names; guard the whole class
  • Stop image size delta showing ±0 under the zsh pane
  • Stop a mid-session tool change from steering future launches
  • Close the last two jobs that could print into the AI tool's UI
  • Close the other half of the channel into the AI tool's UI
  • Stop background jobs painting stderr into the AI tool's UI
  • Dim the overlay backdrop under the app's real renderer
  • Stop random gibberish during image load — transmit via kitty file medium
  • Stop background jobs writing to the AI tool's terminal
  • Repair a broken install instead of declaring it up to date
  • Stop the opencode switch test depending on a locally installed claude
  • Stop the reap race printing into the AI tool's input box
  • Never let a bad download replace a working install
  • Don't fatal the zsh ledger loop opening an image preview

Refactoring

  • Centralize host effects
  • Retire appended subscription panel
  • Share notification filter
  • Extract overlayCard compositor from overlayAbout

Other Changes

  • Perf(ledger): open files off input loop
  • Perf(diff): show popup before input loads
  • Perf(ledger): virtualize native rendering
  • Perf(ledger): bound interaction work
  • Perf(launch): stop probing npx for OpenCode before the picker paints
  • Perf(image-preview): cut hi-res first paint from ~750ms to ~50ms without quality loss