Releases: jellologic/swisscode
Release list
v2.1.10
Fixes 'Make system active' in the web UI reporting a switch that never happened: switchSubscriptionAccount now passes adoptLive:false (same doctrine as the CLI switch in 2.1.9), so a dead vault credential surfaces as a re-login warning naming the live login instead of adopting the stranger and toasting success. Adds a setOAuthOverride test seam plus a regression test (fails pre-fix with a false switched:true, passes with the fix). Full suites green (651 tests), typecheck clean.
2.1.9
File-swap switch refuses stranger adoption (adoptLive:false on the switch path) so a dead vault credential surfaces as re-login-needed instead of a false success; dead-switch failures name the live login with recovery steps; successful switches warn about still-running sessions.
2.1.8
Version badge in the web UI plus fully-automatic self-update (off / notify-only / auto via /settings), with the built web UI now shipping inside the npm artifact.
2.1.7
Subscription switch verification: the web UI and swisscode accounts use now prove a switch landed (email identity) instead of assuming it, and report a revert when a running Claude Code session writes back the previous account. Proxy rotation: on/off flag, reset-soonest/least-used strategies, and poll interval across CLI flags, status, and settings.
2.1.6
Same tree as 2.1.4/2.1.5 (their tarballs never served on the npm CDN). First release through the trusted publisher: pushing this tag runs test, build, typecheck, then publishes the CLI to npm.
2.1.5
Republish of 2.1.4 (its tarball never served on the npm CDN, so installs 404'd). Contents identical: Bun 1.4+ support alongside Node 22/24/26, bun:sqlite traffic-store fallback, CI node 22/24/26 + Bun job.
2.1.4
Bun 1.4+ support alongside Node 22/24/26.
- Queryable traffic store falls back to bun:sqlite when node:sqlite is absent (proxy report works under Bun)
- Suites green on Node 22, 24, 26 and on Bun 1.4 (537 pass, 1 Bun-skipped abort test)
- CI now runs node 22/24/26 plus a Bun job; README documents runtimes and the one known Bun gap (client-abort propagation)
v2.1.3
Meta provider
Store Meta API keys once, reference them from profiles, with a key-gated live model catalog in the pickers.
swisscode web console
swisscode web serves a local console: profiles, accounts, providers, proxy traffic inspection, settings, help.
Model-routes overhaul
Profile form consolidates the backend question into one Default backend picker plus a Model overrides table (Match | Destination | Upstream): API-live match suggestions, friendly backend labels, an always-on effective-mapping summary with duplicate never-fires styling, and a preview dialog. swisscode show renders the same sentences.
Proxy log/report
swisscode proxy log tails the redacted traffic firehose; proxy report rolls up requests, errors, latency and token spend by profile, route, or day, with failover suggestions.
Install: npm i -g swisscode@2.1.3 (Node 22+)
v2.1.1 — multi-account Claude Code launcher with rate-limit failover proxy
swisscode v2 is a full rewrite of the 0.6.x line: a launcher and account manager for Claude Code built around a subscription vault, a localhost failover proxy, and a web UI.
Install
npm i -g swisscodeRequires Node.js 22+ and an installed claude binary.
Highlights
- Subscription vault — snapshot multiple Claude Pro / Max logins, see live 5-hour and 7-day usage per account, switch with one command
- Failover proxy (
swisscode proxy run,127.0.0.1:8123) — fails over to the next account on 429/529, refreshes once and retries on 401, records redacted traffic - Traffic inspector — conversation threads, tool calls, and token usage per turn in the web UI
- OpenRouter + custom providers — stored API keys, model catalog, declarative HTTPS test endpoints, no code
- Profiles — one named profile binds agent, provider, model, and account;
swisscode <profile>launches - Self-contained binary — zero runtime dependencies, works offline after install
Notes
- v2 does not migrate 0.6.x configuration automatically, and does not yet include per-directory bindings, the
doctorpreflight, or the Kilo / OpenCode agents. - See the README's Coming from 0.6.x section for details.
v0.6.0 — the four-concept model, made legible
A user logged in a subscription, typed swisscode <account-name>, and watched the name go to Claude Code as a prompt. This release is the fix for the confusion behind that — the account model now explains itself, and the traps that used to fail silently are caught.
Highlights
- Setups —
agentProfilesis renamed tosetups(schema v4). Only the concept nobody types was renamed;profiles— whatswisscode <name>launches — keeps its name. Existing configs migrate on first read and aconfig.v3.bak.jsonis written.config agentsstill works as a deprecated alias. - No more orphan accounts —
config accounts loginnow creates a launchable profile alongside the account, so a fresh login is immediately usable.--no-profileopts out; the doctor grows anaccounts reachablecheck. - The wizard learned subscriptions — picking Anthropic in
swisscode config <name>asks how the account pays: a subscription kept separate, the login you already use, or an API key. Subscription users no longer have to assemble it by hand. - Duplicate-subscription guard — two accounts that are secretly one login (a fresh
CLAUDE_CONFIG_DIRstarts cloned from your current one) are flagged in the listing, the doctor, and the web UI, so ausageprofile can't count one quota twice. - A positional that names an account or setup is refused instead of being sent to the agent as a prompt.
- The concept map — provider / account / setup / profile — now appears in the README,
config help, and a collapsible panel in the web UI.
Compatibility
Schema v4 migrates v1/v2/v3 on first read (backup written). No config edits required.
Published with SLSA build provenance. 806 tests green.