Skip to content

Releases: 1jehuang/jcode

v0.64.2

Choose a tag to compare

@github-actions github-actions released this 30 Jul 08:47

Idle animation off for everyone

Highlights

  • The decorative idle animation is now turned off for all users, including existing configs, via a one-time migration; re-enable it anytime with display.idle_animation = true

Improvements

  • Ctrl+R reverse history search now behaves readline-style
  • H1/H2 markdown headings render visually larger via underline

Fixes

  • Desktop: messages typed mid-turn are queued instead of being dropped with 'already processing'

Full changelog: v0.64.1...v0.64.2

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

v0.64.1

Choose a tag to compare

@github-actions github-actions released this 30 Jul 06:45

View clear moves to Ctrl+L

Highlights

  • The view-only clear now lives on Ctrl+L (terminal-style) instead of Cmd+K, which collided with Cmd+J/K prompt navigation on macOS

Improvements

  • Ctrl+L and /cls keep queued messages as well as context; only the rendered transcript is wiped
  • While a diagram or diff pane is available, Ctrl+L still focuses the pane as before

Full changelog: v0.64.0...v0.64.1

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

v0.64.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 05:31

View-only clear and cross-session prompt history

Highlights

  • Cmd+K (or /cls) clears the chat view while the model keeps its full context, unlike /clear which starts a fresh session
  • Ctrl+R opens a reverse search over your prompt history across all sessions

Improvements

  • /cls and /clear-view are listed in /help and command suggestions, and Cmd+Shift+K stays reserved for line scrolling

Full changelog: v0.63.0...v0.64.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

v0.63.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 03:46

Features

  • hot-reload keybindings when config.toml changes
  • disable idle animation by default
  • score visual variety and neighbour contrast from the renderer
  • model palette harmony as a renderer-derived graph
  • add [features] auto_poke to set the auto-poke default (fixes #664)
  • add [features] auto_poke to set the auto-poke default (fixes #664)
  • surface colors in the config template and /config summary
  • generate a whole harmonious palette from one seed color
  • make every color configurable and add palette harmony scoring
  • render markdown and math as typography

Fixes

  • commit refresh_pinned_todos_if_needed the tick handlers already call
  • gate the test-only scroll_bench::run behind cfg(test)
  • repair master after a merge orphaned the skill invocation module
  • isolate auth state in the mixed-catalog model picker test
  • repair a header auth test that could never pass
  • stop burning 60fps full frames on an animation nobody can see
  • serialize gateway env tests against the shared test-env lock
  • apply the corrected palette/theme pass order on master too
  • don't luminance-flip the colors a user chose on light terminals
  • remove the last render-path panic in harmony scoring
  • make palette repair converge, and keep semantic colors meaningful
  • make generated palettes colorblind-safe and hue-coherent
  • 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

Performance

  • take the terminal theme query off the spawn critical path
  • record key-to-paint on every paint path and expose it
  • let the decorative animation step aside while the user types

Documentation

  • mark why the interleave path must take the staged images
  • document color configuration and harmony scoring

Other changes

  • chore: rebaseline size and swallowed-error ratchets after the pinned-todos tests landed
  • chore(tui): allow pinned_todos_payload_ref to be unused outside tests until its renderer lands
  • test(tui): commit the pinned-todos payload tests that exercise pinned_todos_payload_ref
  • Skip source auto-update quietly when local commits diverge from upstream
  • release: v0.63.0
  • chore: rebaseline size/panic/swallowed-error ratchets after intentional growth
  • chore(tui): allow the pinned-todos state fields to be unread until their renderer lands
  • test(tui): guard that every interleave send carries the staged images
  • test(tui): pin the perf tier in the redraw-policy tests so they cannot flake
  • style(desktop2): rustfmt render.rs and tests/delivery.rs
  • desktop2: commit the frame_meter and scroll_profile modules main.rs already references
  • Reframe discovery listings as editor's picks in the TUI
  • Resolve run_shell merge conflict and fix stale test constructors
  • test(tui): make the animated-row copy test able to fail, and restore its diagnostic
  • refactor(tui-style): move the measured criteria into their own module
  • test(tui-style): freeze the hand-tuned default palette
  • refactor(tui): extract the idle-animation repaint policy out of run_shell
  • style(tui): rustfmt the import and condition reflow CI was failing on
  • test(scripts): record host load so a polluted latency measurement is identifiable
  • test(tui): serialize the /colors config tests against the shared env lock
  • desktop2: clamp overview navigation at edges instead of wrapping
  • chore: remove legacy jcode-desktop crate and its plumbing
  • desktop2: show sent versus acknowledged for user messages
  • desktop2: stop remapped super+hjkl from flickering the overview
  • refactor(config): move color tests into their own file for the size ratchet
  • desktop2: show edits as diff cards in the transcript
  • desktop2: honor reasoning display modes, with 'current' showing only the live paragraph
  • desktop2: show the client version in the footnote on an empty page
  • desktop2: boot-up reveal, a donut growing out of black into the window
  • test(config): verify configured colors survive a real config file round trip
  • desktop2: draw the session strip as nested rectangles instead of labelled bars
  • test(tui-style): verify 'every color is configurable' instead of asserting it
  • desktop2: remove top-right path/RAM readout from chrome row
  • chore: baseline the two intentional swallowed-error patterns in palette.rs
  • refactor(tui-style): split generation out of harmony, and stop panicking on the render path
  • test(tui): drive /colors through the real App and dispatch table
  • test(tui): prove configured colors reach a real rendered frame
  • test(tui-style): calibrate harmony scoring against real terminal palettes
  • ios: polish UI chrome, banners, bubbles, and code blocks
  • 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

Full changelog: v0.62.1...v0.63.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

v0.62.1

Choose a tag to compare

@github-actions github-actions released this 30 Jul 01:05

Performance

  • cut the decorative animation's cost on a real session

Other changes

  • release: v0.62.1
  • chore(scripts): watch a release run to completion instead of assuming a pushed tag shipped

Full changelog: v0.62.0...v0.62.1

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

v0.62.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 00:20

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

v0.61.1

Choose a tag to compare

@github-actions github-actions released this 28 Jul 05:39

A responsive input line while turns stream

Highlights

  • Typing in the input line stays smooth while a turn is streaming: buffered keystrokes are coalesced into one frame and user input now beats server events to the loop

Improvements

  • Remote-mode clients drain bursts of buffered terminal input (fast typing, key repeat, scroll wheels) into a single render, matching the local loop
  • Both interactive loops poll terminal input ahead of timers and server/bus chatter, so heavy streaming can no longer starve keystrokes
  • Header rebuilds no longer probe credential files on the render thread, removing periodic 40ms+ input stalls
  • The desktop2 preview keeps evolving: a niri-style session overview on Super, a live RAM readout, pinned live tool cards, display-paced animations, and lower per-window memory

Fixes

  • Separator spacing is preserved after LaTeX symbol commands in rendered markdown

Full changelog: v0.61.0...v0.61.1

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

v0.61.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 10:47

Remote sessions, a destructive-command gate, and a faster desktop preview

Highlights

  • /remote is a new front door for reaching a running session from another machine over the WebSocket gateway
  • Destructive shell commands like recursive deletes now pause for an explicit reflection step before running, closing several bypass routes found in review
  • The desktop preview gained selectable transcript text, an Alt spatial session overview, live reasoning and tool-intent streaming, and much smoother scrolling

Improvements

  • Quality-gate reminders about open todos now arrive once at the end of a turn instead of nagging after every write
  • Interactive model switching works across providers instead of failing when the target model lives on a different provider
  • Reasoning effort options are shown for OpenAI-compatible routes that support them, and token usage is reported for their chat streams
  • Failing OpenAI-compatible model-catalog refreshes back off instead of retrying hot, and each named provider keeps its own model cache
  • A stall watchdog logs long silent hangs during active work so they can be diagnosed
  • The slash-command registry was cleaned up: /keys no longer collides, missing aliases were restored, and help gaps were filled

Fixes

  • Streaming responses no longer lose data when server-sent events split across chunk boundaries
  • A turn that stops expecting a tool call but delivers none now recovers instead of stranding the session
  • Pressing Enter immediately after pasting no longer sends the message prematurely
  • /clear also clears the side panel
  • Copilot retries transient 5xx token-exchange failures and sends the Sonnet reasoning effort correctly
  • Configured context windows are honored instead of being overridden by a GPT fallback
  • MCP servers started for a session now run in that session's working directory
  • agentgrep respects the file field when scoping grep and find
  • Session restore no longer hard-pins the Claude/OpenAI OAuth route, and a failed OpenRouter switch preserves the previous profile
  • Anthropic requests that would end on an assistant turn get a continuation turn instead of erroring
  • A dead terminal no longer mislabels a live session as crashed, and terminal state is restored safely on exit
  • Rendered LaTeX math recovers after its image cache is evicted
  • Quoted shell arguments are preserved on Windows, and the desktop build no longer breaks on Windows over Unix-only IPC

Full changelog: v0.60.0...v0.61.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

v0.60.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 21:38

Discovery repair and desktop preview polish

Highlights

  • Tool discovery works again for users whose config was frozen while discovery shipped opt-in, so discover_tools is registered instead of staying silently unavailable
  • The desktop preview shows which provider and model is answering, and greets an empty session with an animated halftone donut and rotating composer hints

Improvements

  • Discovery gained a financial-data category for market, pricing, and company-data tools
  • Keybinding hints show βŒ₯ instead of Alt on macOS
  • The desktop preview lays its text out on a consistent vertical rhythm that holds up at any window size
  • A hand-written discovery opt-out is still respected, and saving your config no longer bakes today's defaults into it

Fixes

  • Idle animations no longer drag the terminal UI into unnecessary full redraws

Full changelog: v0.59.0...v0.60.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

v0.58.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 03:17

Max-effort reasoning streams, model context limits, and the /model picker

Highlights

  • OpenAI max-effort reasoning turns no longer time out mid-thought: requests ask for reasoning summaries and the idle budget scales with reasoning effort
  • The /model picker shows pretty model names and matches queries like "opus 4.8" against them
  • New and unrecognized models no longer silently fall back to a 200K context window

Improvements

  • Streaming idle and websocket completion budgets scale with reasoning effort (high 2x, xhigh 3x, max 4x) so long silent thinks are not mistaken for dead connections
  • The client-side stall guard budgets against the largest effort-scaled server timeout, so the server's visible error always fires first
  • Update failure messages collapse to one short line instead of a wall of text
  • Update checks back off from GitHub API rate limits instead of retrying in a loop
  • Spawned swarm workers fail loudly when they cannot use their requested model

Fixes

  • Config-declared models survive a live catalog refresh
  • Named profiles that point elsewhere are treated as user-declared rather than built-in
  • Antigravity self-heals the missing thought_signature dead-end instead of getting stuck
  • A home-directory subscribe no longer clobbers the working directory of a project session
  • Kimi ids with an explicit -256k suffix resolve to 256K instead of the family default
  • JCODE_TOOL_CALL_DETAILS now invalidates the cached config when it changes
  • Fuzzy matching no longer rejects late matches because of the positional penalty

Full changelog: v0.57.0...v0.58.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