Repository navigation
Releases: xinyao27/jevonian
Releases · xinyao27/jevonian
Release list
v0.7.2
What's changed
Added
- Time-window schedules. A task can run different models at different times of day, for example cheaper models during an off-peak discount. The config holds a time zone and named daily windows; a task lists its own models for a window. The first window that contains the current time wins, and a window whose end is before its start runs past midnight. Time zone data is embedded, so a Windows host needs no system copy.
- Schedule card on Models & Routing. Shows which window is active, when it changes next, and which models each task runs under each window. Edit schedule sets the time zone and the windows; Customize on a task has Models by time. The card refreshes every minute and warns about overlap or a window an earlier one hides completely. Windows reorder by drag or with the up and down buttons.
- Quick-start guides for Claude Code, OpenCode and PI Agent.
Changed
thinking_budgetis clamped whenmax_completion_tokensis constrained, so an over-large budget no longer fails the request.
Fixed
- Windows could not start. The ledger SQLite URL was invalid for
C:\...paths. - Claude login returned HTTP 400.
context_managementmade every Sonnet and Opus request fail through theclaude-subscriptionprovider. - Dashboard file types no longer come from the Windows registry.
- A model that only a window listed kept its per-provider order.
- The schedule reported the wrong next change when a later window was hidden.
- Automatic tasks showed the wrong models while a window was active.
JEVONIAN_PORTwas ignored before the first config file existed.
v0.7.1
What's changed
Fixed
- Devin keeps its prompt cache across turns. The Devin egress stopped sending the routing session id, so every turn looked like a new conversation and Devin reset its cache (hit rate fell from ~93% to ~30%). The session id now rides the Connect-RPC request again.
- Antigravity reports its cache reads. The Gemini fold dropped
cachedContentTokenCount, so Antigravity logged zero cache reads on every turn. It now surfaces asprompt_tokens_details.cached_tokenson both the streaming and non-streaming paths. - Cache coverage is no longer understated. The Connect-RPC hosts changed their usage convention at the Go engine cutover; every row was still labeled exclusive, so the dashboard divided by the wrong denominator. Each row's convention is now derived from the translator that produced it, and a per-startup reconcile labels legacy rows and corrects rows the cutover mislabeled. Devin's reported coverage rises from 70.5% to 91.1%.
- Non-streaming Anthropic clients see cache reads. Folding a Chat completion back into a Messages reply reported an inclusive
input_tokensand dropped the cached share; it now splits uncached input fromcache_read_input_tokens, matching the streaming path. - Active status pill uses the default text color.
v0.7.0
What's changed
- Rebuilt web UI on Cloudflare Kumo. Overview, logs, providers, routing, keys, and activity now share one component set and one type scale.
- Agent tool turns no longer fail over to chatgpt-web. That provider has no tool channel and rejects any request with
toolswith HTTP 400. Routing withholds it whenever a turn carries tools, and records atoolsskip note. - Collapsed sidebar fixes. Icons center correctly, and the hover bar sits on the pane edge instead of painting a line across the icon column.
- Sidebar stays in the viewport. The app shell is pinned to
h-svhwith internal scrolling. - Usage heatmap fills its card. Cells scale across the full width, and month labels render in full.
v0.6.6
v0.6.5
What's changed
- Overview dashboard rebuild with usage, models, and cost cards
- Provider logos in routing and provider lists
- Provider usage cards show connected sources; list rows are more compact
- Logs request detail opens in a Sheet
- Responses sampling params (
temperature/top_p) no longer leak upstream; client 400s stay honest
v0.6.4
What's changed
Added
- Prompt cache coverage in the Logs view: each row shows the share of input tokens served from the prompt cache, and the activity chart reports the same ratio for the window.
Changed
- Logs filters moved into a dropdown beside the search box, so the table gets the full page width. The funnel button shows a count when filters are active.
Fixed
- Logs table columns no longer overlap; columns clip to the available width.
Full changelog: https://github.com/xinyao27/jevonian/blob/main/CHANGELOG.md
v0.6.3
v0.6.2
v0.6.1
What's changed
- macOS LaunchAgent heals after the Node→Go cutover. Missing or same-package
dist/cli.mjsentries are rewritten onto the Go binary by any CLI command,restart, orupdate. jevonian updatefails closed when the native binary cannot be re-downloaded after an npm wipe.status/doctorshow the LaunchAgent binary path and warn when it is missing or has no pid.- Logs list latency without TTFT (detail view still has first-token timing).
Upgrading from 0.5.x / 0.6.0
npm i -g jevonian@latest(orjevonian update) after npm publish- Run any
jevoniancommand (orjevonian restart) - If 0.6.0 still refuses takeover:
jevonian stop --uninstall && jevonian start
v0.6.0
What's changed
Changed
- Jevonian is now a native Go binary. The router, CLI, and dashboard server were rewritten from TypeScript to Go. Every command, flag, config key, HTTP endpoint, and ledger field works as before. Startup is faster:
jevonian doctortakes ~0.16s instead of ~0.57s. - The npm package is now a small launcher.
npm i -g jevonianinstallsbin/jevonian.js, which downloads the platform binary from this release and verifies its SHA-256 againstchecksums.txt. No router code runs in Node. - The dashboard is embedded in the binary and served at
/— no separate web files needed. - The ledger is now SQLite. On first start the binary imports the existing
ledger.jsonlintoledger.sqliteand moves on. - Provider quirks live in each provider's adapter. The attempt loop no longer type-switches on providers, so adding a provider doesn't edit the loop.
Fixed
- A quota error inside a folded Responses stream fails over again —
response.failedwith a quota or rate limit moves the turn to the next provider; other failures return 502 instead of 200. jevonian updatekeeps the background service working — an npm update now re-downloads the binary before the service restarts.- The Freebuff waiting room no longer marks the account as spent — it waits out the host-supplied delay instead.
- Error messages no longer break inside a character — truncation happens at character boundaries, so non-ASCII text stays readable.
- A mistyped command suggests the closest match —
jevonian docter→ "Did you meanjevonian doctor?".
Upgrading
An existing background service still runs the old Node build. Run jevonian stop --uninstall, then jevonian start, so the LaunchAgent runs the new binary.