Skip to content

v0.6.0

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Nov 06:27
47433ed

0.6.0 (2026-11-04)

⚠ BREAKING CHANGES

  • update-channel: DEPRECATED_UPDATE_CHANNELS and DeprecatedUpdateChannel are
    removed. The legacy 'stable'->'current' and 'develop'->'next' alias
    resolution no longer exists: a persisted or submitted 'stable' channel is
    now rejected (previously silently resolved to 'current'), and a persisted
    'develop' channel now resolves to the new real 'develop' channel instead of
    'next'. Deprecation window elapsed at v0.5.3 per RC-era deprecation notice.
  • update-channel: DEPRECATED_UPDATE_CHANNELS and DeprecatedUpdateChannel are
    removed. The legacy 'stable'→'current' and 'develop'→'next' alias
    resolution no longer exists: a persisted or submitted 'stable' channel is
    now rejected (previously silently resolved to 'current'), and a persisted
    'develop' channel now resolves to the new real 'develop' channel instead of
    'next'. Deprecation window elapsed at v0.5.3 per RC-era deprecation notice.

Features

  • cli: add --json to router list (ROUT-324) (87110bc)
  • dashboard: mount Router Test tab in router layout (ff61515)
  • dashboard: resizable and collapsible Playground Debug panel (ROUT-438) (58bd286)
  • dashboard: session, end-user and tag filters on Usage page, session/end-user/tags in record detail (ROUT-280) (b532f01)
  • dashboard: show current version under sign-out in sidebar (5b3ec38)
  • integrations: route coding-agents router with semantic-intent, performance, cheapest and context policies (ROUT-517) (5c6869b)
  • models: expose model timeout in API, CLI and dashboard (3bcf957)
  • notifications: remove optional secrets of an existing channel (ROUT-398) (fa5c906)
  • provider: honour connection endpoint on azure/bedrock/vertex and add official provider mocks (ROUT-401) (e9b6c25)
  • service,cli,dashboard: configure per-router notification channel override (ROUT-335) (ee99458)
  • uat: add checked-in uat-runner skill for real-environment UAT (76e3216)
  • update-channel: add real develop channel, retire deprecated aliases (1f97ef5)
  • update-channel: add real develop channel, retire deprecated aliases (9958735)
  • update: make stable a permanent update channel with its own release pointer (ROUT-551) (8246ce9)

Bug Fixes

  • api: PUT /api/settings keeps prometheusAuthToken when masked marker is echoed (ROUT-279) (d2405f9)
  • api: warn on router models missing from the registry (ROUT-276) (50a54eb)
  • audit: honour audit list --limit and include whole day for date-only --to (8220816)
  • build: resolve @routerly/* from the worktree's own packages (ab419dd)
  • build: run worktree module link before build and typecheck (ROUT-417) (2bee07a)
  • ci: add ESLint 9 flat config so npm run lint runs (41c8faa)
  • ci: deploy docs on develop pushes (next channel) (5ea5e59)
  • cli: coding-agents setup script no longer aborts without DEEPSEEK_API_KEY (ROUT-524) (350734b)
  • cli: describe per-model prompt as routing guidance, not system prompt hint (d15475f)
  • cli: exempt 2fa/verify from permission pre-check so 2FA login works (ROUT-380) (801671b)
  • cli: keep savings report cache cost finite when model has no input price (ROUT-293) (5323141)
  • cli: leave model prices unset when no price flag is given (ROUT-468) (68655b9)
  • cli: model add --connection accepts label or id, explicit not-found error (ROUT-325) (4f3ca50)
  • cli: model discover table no longer crashes on entries without modalities (ROUT-493) (086016a)
  • cli: notification channel edit applies --username and clears targets (ROUT-334) (9668711)
  • cli: print ApiError messages from router subcommands (ROUT-407) (fa59a8e)
  • cli: print validation details in API errors (ROUT-373) (a97ba74)
  • cli: proceed when the permission status check is forbidden (ROUT-345) (dc00807)
  • cli: read sessions wrapper and firstSeen in report sessions (25e161c)
  • cli: read uptimeSeconds in service status (d0bebf0)
  • cli: reject non-integer usage retention values in service configure (397726e)
  • cli: resolve report --router by name or ID and error on unknown router (ROUT-526) (9a6bae9)
  • cli: reuse formatUptime in service status (2281898)
  • cli: save rotated refresh token in auth refresh (a1359a3)
  • cli: send flat prices and keep limits in model add/edit (3dc97e8)
  • cli: show - instead of crashing/$undefined for missing costs (c327a1f)
  • cli: support webhook type in notification channel add (ROUT-333) (e941269)
  • cli: use select prompt type instead of list for inquirer 13 (dba0ae6)
  • dashboard,cli: say external channels without events are silent (ROUT-337) (f275379)
  • dashboard,service,cli: security tab load failure, usage null totals, catalog repo scheme (ROUT-442) (b79fc79)
  • dashboard: add errorsAndBlocked plural keys to all locales (ROUT-513) (8445e36)
  • dashboard: allow round timeout values in model form (step=1) (0fe2c83)
  • dashboard: announce permission fixes made outside the dashboard (ROUT-375) (fbd7c9e)
  • dashboard: apply instance default language after login and mirror sidebar in rtl (68c4903)
  • dashboard: apply instance default language right after login (32d27bf)
  • dashboard: check session before protected layout fires API calls (ROUT-372) (41936a8)
  • dashboard: clear stale permission error after Fix now (ROUT-375) (538cb17)
  • dashboard: contain wide content inside the page body on phones (1921d8f)
  • dashboard: copy buttons work over plain HTTP via writeToClipboard (ROUT-272) (6e757f6)
  • dashboard: correct claude.ai sessionKey instructions (Chrome/Firefox, sk-ant-sid prefix), all locales (ROUT-289) (6551f70)
  • dashboard: define info and warning banner tokens for dark and light themes (ROUT-404) (9e2f4ce)
  • dashboard: disable Security and Provider Catalog writes without settings:write (ROUT-342) (a8119b0)
  • dashboard: disable Settings General write controls without settings:write (ROUT-371) (040a66e)
  • dashboard: do not poll permission status without settings:read (ROUT-369) (3e918df)
  • dashboard: fall back when crypto.randomUUID is unavailable over plain HTTP (1ca4d30)
  • dashboard: fit Models Health table in 1280px viewport (ROUT-464) (43547d4)
  • dashboard: gate notification channel create page on notification:write (ROUT-396) (5e07623)
  • dashboard: gate Roles, General Save and Overview models call on permissions (ROUT-349) (bbd203a)
  • dashboard: hide Fix now in permission modal without settings:write (ROUT-391) (22f7867)
  • dashboard: hide integrations empty state on load error and Add button without settings:write (ROUT-330) (c07a9b6)
  • dashboard: hide notification channel list for users without notification:write (ROUT-338) (7e9928a)
  • dashboard: hide router Users tab write controls without router:write (ROUT-377) (5a1960c)
  • dashboard: ignore expected mfa_required unhandled rejections (ROUT-460) (550891c)
  • dashboard: keep current provider in Edit model select (ROUT-469) (cbb00d6)
  • dashboard: keep enabled flag of routing policies on save (572291e)
  • dashboard: keep per-model routing prompts when saving router General tab (ROUT-294) (223cad3)
  • dashboard: keep router custom settings when choosing a profile (ROUT-441) (c4b2554)
  • dashboard: let Provider Catalog table scroll horizontally on narrow screens (ROUT-343) (f9a578d)
  • dashboard: lift Add Member card above members card so the user select menu is not covered (ROUT-385) (f35e721)
  • dashboard: make layout responsive at phone width (4f9be10)
  • dashboard: make Playground temperature optional (2a6a9e1)
  • dashboard: make router General tab read-only without router:write (ROUT-574) (5e6d809)
  • dashboard: measure Debug panel limits on the content width (ROUT-438) (38119a6)
  • dashboard: mirror sidebar and fix theme toggle and letter-spacing in RTL (47e1470)
  • dashboard: Models filter and endpoint sort no longer crash on models without endpoint (ROUT-281) (bf64fac)
  • dashboard: notify operators of unsafe permissions instead of a dead Fix now (ROUT-391) (59572e7)
  • dashboard: OpenAI web token validity is ~10 days, not 24h, in all locales (ROUT-289) (7c6d62d)
  • dashboard: optimizer preview follows the unsaved Profile/Custom draft (ROUT-440) (9b65922)
  • dashboard: per-model Reset targets connection id (da57eef)
  • dashboard: poll permission status for the global warning banner too (ROUT-369) (9556f75)
  • dashboard: poll permission status in Settings > Security so CLI fixes clear the banner (ROUT-369) (6e11a21)
  • dashboard: prefill model name when Routerly ID lacks provider prefix (ROUT-376) (30a5678)
  • dashboard: readable Usage/Call Detail for failed calls and policies (ROUT-509) (a4221d8)
  • dashboard: refresh role and permissions from /api/me when a session is restored (ROUT-406) (08ecfa2)
  • dashboard: render null costs as dash in router dashboard tab (ROUT-481) (e0ad3fe)
  • dashboard: require the token on web-session connections (ROUT-507) (eaf13f9)
  • dashboard: Roles page honours role:write (ROUT-345) (209b09a)
  • dashboard: router dashboard tab negative savings, title style, error plural and nested API error message (ROUT-508) (a349d05)
  • dashboard: router Routing/Optimizer/Security tabs read-only without router:write (ROUT-450) (47a1d27)
  • dashboard: router Token tab honours token:write/router:write (ROUT-345) (3739d3e)
  • dashboard: save Vertex project ID as vertexProjectId (0dbb245)
  • dashboard: scale stat card value to card width so it is never clipped (ROUT-389) (6b5f197)
  • dashboard: scroll connection removal error into view (ROUT-494) (afcbd9a)
  • dashboard: send targets null when all channel recipients are cleared (ROUT-395) (28b6332)
  • dashboard: share one /api/me request between auth and language restore (ROUT-406) (779482e)
  • dashboard: show dash for missing model price and context (bf30643)
  • dashboard: show non-streaming JSON replies in the Playground (ROUT-435) (36df3ef)
  • dashboard: show permission message on Models page without model:read (ROUT-378) (dd79dd5)
  • dashboard: skip /api/usage and /api/models calls on Overview and Usage without report:read/model:read (ROUT-384) (b846fad)
  • dashboard: skip /api/usage and /api/settings on router tabs without permission (ROUT-397) (0b45c81)
  • dashboard: skip /api/users in router Users tab without user:read (ROUT-387) (3f8f3f9)
  • dashboard: skip channel list fetch without notification:write on router General tab (ROUT-335) (98807c5)
  • dashboard: skip connections and health fetches on Models page without model:read (ROUT-378) (ad2922f)
  • dashboard: skip permission-gated layout requests for roles without the permission (ROUT-381) (3f4c403)
  • dashboard: skip Roles, Audit and Models requests the role cannot read (ROUT-409) (33e06cc)
  • dashboard: skip settings and integrations requests the role cannot read (ROUT-427) (006c07e)
  • dashboard: stack Overview cost and calls cards on phones (ROUT-403) (762f450)
  • dashboard: stop mid-word breaks in the Debug panel at minimum width (ROUT-438) (4d6813b)
  • dashboard: wrap long error text in the Debug trace summary (ROUT-438) (6e3daef)
  • dashboard: wrap long unbroken error text in Playground banners (ROUT-462) (8d6d181)
  • dashboard: wrap telemetry banner and fit rail logo on phones (ROUT-429) (b64af01)
  • dashboard: wrap theme toggle labels without splitting words (584d5e5)
  • experiments: name field path in 400, show variant share, document relative weights (f4f8e58)
  • guardrails: detectInjection catches 'ignore all (the) previous instructions' (ROUT-278) (08c03f1)
  • installer: check curl/wget/tar up front and fall back to wget for Node install (8ab5d93)
  • installer: enable systemd linger for user-scope Linux installs (b85d83f)
  • installer: never delete files the installer did not install (ROUT-579) (9fa6834)
  • installer: remove stale files from app dir on update (7cfaebc)
  • installer: resolve current/next/develop channels and install the stamped release asset (ROUT-382) (8e96236)
  • installer: skip sudo when running as root (bd19d8f)
  • installer: treat --yes on an existing install as update and restart the service (d78dcaa)
  • installer: uninstall removes tsbuildinfo so a reinstall rebuilds shared (ROUT-579) (2429019)
  • installer: write settings.json with mode 600 and keep requested channel (b1a0bc7)
  • make every module always active and drop module gating (ROUT-436) (f0b0f1f)
  • mcp: serialize toggle_model and create_router_token under the config lock (ROUT-364) (c55c175)
  • models: pin explicit prices as fieldOverrides so catalog refresh keeps them (ROUT-485) (e364fcc)
  • optimizers: count tool payloads in token estimates so headroom fires on the Anthropic lane (ROUT-291) (bfcb2b3)
  • optimizers: headroom trims tool rounds of an over-long single agent turn (ROUT-291) (2709587)
  • pii: scrub response PII on the Anthropic /v1/messages lane (5e8ca68)
  • provider: anthropic stream chunks report provider-returned model (ROUT-479) (1d3d650)
  • provider: anthropic-web fresh conversation per request, per-session org cache (ROUT-288) (95b2f59)
  • provider: anthropic-web sends system text in the prompt instead of rejected system_prompt (ROUT-497) (87c23dd)
  • provider: default anthropic-web endpoint to claude.ai so /v1/messages never 500s Invalid URL (ROUT-302) (3def2c2)
  • provider: default upstreamModelId without provider prefix and normalise stored full-id values (ROUT-283) (e7696fc)
  • provider: honour upstreamModelId in openai/anthropic/gemini/ollama/bedrock (ROUT-275) (a4c7da8)
  • provider: send developer role as system to custom OpenAI-compatible providers (ROUT-523) (5b47410)
  • provider: setup-token OAuth connections usable; model Test never hangs (ROUT-273) (8ad0f71)
  • proxy: close truncated upstream stream abnormally instead of clean [DONE] (ROUT-474) (a3c0de2)
  • proxy: do not inject stream_options.include_usage on the OpenAI lane (1c1a10b)
  • proxy: fall back and record errorMessage when a verbatim Anthropic candidate fails (ROUT-525) (6e74e81)
  • proxy: route anthropic-web /v1/messages through the adapter instead of claude.ai pass-through (ROUT-478) (e1c0660)
  • proxy: router without models answers a provider-shaped 503 instead of a 500 (ROUT-502) (de0579f)
  • release-ci: make root vitest suite pass on dev-box (ROUT-443) (84eee54)
  • release: manual-trigger-only release workflow with develop/next/current channel tiers (20e2ffe)
  • release: rename rolling pointer tags to avoid branch-name collision (1e5697a)
  • routing: llm policy honours router-level fallbackRoutingModelIds (ROUT-388) (d0af40c)
  • routing: price semantic-intent embedding with the registered model cost (78bbe18)
  • routing: semantic-intent sends upstream embedding model name, not registry id (ROUT-277) (3b03463)
  • service,dashboard: probe /embeddings on model Test for embedding models, drop dead Caching toggle (ROUT-295) (c4900e0)
  • service,dashboard: settings minor fixes (ROUT-459) (02d6ad9)
  • service: accept optimizer threshold down to the catalog minimum (ROUT-373) (a06804e)
  • service: apply channel router scope to events carrying routerId only in details (ROUT-335) (eb72443)
  • service: apply live log level to console trace lines (ROUT-390) (5bbd419)
  • service: apply logLevel to the running logger on PUT /api/settings (ROUT-356) (dcc669e)
  • service: apply model timeout to fetch-based custom and bedrock adapters (61a9ddf)
  • service: apply output PII scrub to Anthropic-native pass-through (ROUT-445) (ac44efc)
  • service: apply SSRF guard to Teams and Discord webhook URLs (ROUT-336) (173ae08)
  • service: audit MCP write tool calls (success and forbidden) (ROUT-327) (315d77c)
  • service: block user:write privilege escalation (ROUT-348) (5bb631d)
  • service: build notification test payload timestamp on every send (ROUT-332) (07e037f)
  • service: classify custom provider upstream errors by status and headers (ab0f0cb)
  • service: create usage.ndjson with mode 600 (419e019)
  • service: default anthropic endpoint for connections created without one (ROUT-284) (b70c87d)
  • service: deliver per-router override for events carrying routerId only in details (ROUT-335) (1d714ab)
  • service: dispatch real notification events to slack, teams, pagerduty, discord channels (ROUT-331) (2a19815)
  • service: do not listen or log to stdout in MCP stdio mode (9ea7c9c)
  • service: drop Vary: Origin on passthrough responses without Origin (ROUT-297) (4e82a30)
  • service: emit debug log line for the selected candidate (ROUT-432) (e163eae)
  • service: emit trace entries for openai-oauth models (ROUT-379) (8cee3f3)
  • service: enforce requireMfa on management API (ROUT-341) (34e6c16)
  • service: enforce role:write, token:write and token:read on management routes (ROUT-345) (c4eb98b)
  • service: first Provider Catalog repo wins on merge conflict (ROUT-340) (dfaefa6)
  • service: fix typecheck of escalation tests (ROUT-348) (6b30c50)
  • service: forward parallel_tool_calls on Responses API only when tools are present (88c99cf)
  • service: forward parallel_tool_calls on Responses only with tools (b4fc89c)
  • service: forward provider headers verbatim on the /v1/messages lane (ROUT-362) (af825e2)
  • service: forward provider headers verbatim on the /v1/responses lane (ROUT-362) (dceb20e)
  • service: forward provider headers verbatim on the OpenAI lane (ROUT-361) (03fe08d)
  • service: forward Responses additional_tools and custom tools (ROUT-350) (eef8c66)
  • service: headroom context-window cache warmed at boot and refreshed on model writes (ROUT-456) (ac74d50)
  • service: honour model timeout without SDK retries; 503 for exhausted stream candidates (7230715)
  • service: honour ROUTERLY_PORT over settings.json port (ROUT-323) (e7c8700)
  • service: install passthroughHandler as the not-found handler (ROUT-360) (d625efe)
  • service: keep connection provider on partial PUT /api/models/:id (3c411a6)
  • service: keep OpenAI lane wire-transparent for body and headers (2cc6b84)
  • service: keep PII stream tail before finish chunk; SSE block for /v1/messages stream (436b704)
  • service: keep provider content-type verbatim on non-stream OpenAI lane (ROUT-361) (3b9f744)
  • service: keep the provider text of {detail} upstream error bodies (ROUT-307) (4174b93)
  • service: log level fatal silences successful trace console lines (ROUT-394) (3b2da4f)
  • service: log module re-enable line via process.stdout.write (ROUT-436) (cb5bdf0)
  • service: make openai-web work against current chatgpt.com (ROUT-305) (b4ff1c9)
  • service: make ROUT-348 test helper compile under exactOptionalPropertyTypes (ROUT-358) (91fdee7)
  • service: mask integration secrets in GET /api/settings and header values (6e61a0b)
  • service: mask notification channel secrets in /api/settings (585a969)
  • service: merge partial body on PUT /api/models and /api/routers (c9e7c90)
  • service: migration tolerates connections without providerId (ROUT-386) (86bd988)
  • service: openai-oauth stream failing before first chunk returns router error, not empty 200 (ROUT-286) (21a248a)
  • service: openai-oauth Test and chat lane share one credential source (ROUT-285) (0b02dae)
  • service: optimizer preview runs the assigned profile, not the custom steps (ROUT-440) (95f923a)
  • service: PATCH notification channel with null clears the field (ROUT-392) (d1cfe95)
  • service: persist port, host, metrics settings and let service metrics use a token (24d3a62)
  • service: print chmod recovery command when startup refused on unsafe permissions (ROUT-370) (91cb28a)
  • service: propagate model timeout from instance to effective model (a80102d)
  • service: provider-shaped error bodies on /v1 and pass-through of provider 4xx on OpenAI lane (c1612a5)
  • service: PUT /api/settings returns listeningAddresses and localAddresses like GET (ROUT-393) (b0671ef)
  • service: rate custom moderation instructions as a policy violation (ROUT-435) (31015d1)
  • service: read developer role as system in Anthropic and Bedrock providers (ROUT-350) (b74f8aa)
  • service: record optimizerStats on streamed usage records (ROUT-303) (da84020)
  • service: record outcome timeout for SDK request timeouts (53b77bc)
  • service: record real token usage on verbatim /v1/messages forwards (c481e92)
  • service: recover HTTP status from Bedrock and Vertex adapter errors (ROUT-287) (032ebb5)
  • service: recover HTTP status from web adapter errors for provider-shaped rejection (ROUT-287) (f382cb7)
  • service: refuse deleting a connection used by a model (2044216)
  • service: refuse deleting a role assigned to users (a65b30b)
  • service: refuse deleting connections/models that are in use (d8248c1)
  • service: register OpenAI-compatible adapter and default endpoints for native deepseek/groq/together/perplexity/xai/mistral/cohere (ROUT-367) (e317bce)
  • service: register OpenAI-compatible adapter for catalog providers fireworks and cerebras (ROUT-367) (6636c14)
  • service: reject deleting a model referenced by a router (409) (7105af3)
  • service: reject empty anthropic-oauth token on connection create; model Test sends upstream model id (ROUT-282) (8691e49)
  • service: reject invalid logLevel in PUT /api/settings and service configure (ROUT-354) (a57fa83)
  • service: reject non-boolean requireMfa/dashboardEnabled in PUT /api/settings and CLI (ROUT-339) (f3d5dfe)
  • service: reject unknown routing models and make failed routing visible (ROUT-434) (810e04a)
  • service: replace orphaned conn-for connection when re-adding a model (ROUT-504) (81e4a83)
  • service: report input_tokens in message_delta for OpenAI-backed Messages streams (ROUT-352) (a6c8e6b)
  • service: report update check status and always show the installed version (ROUT-308) (cb437b3)
  • service: request stream usage for Responses streams (ROUT-351) (40d1fc5)
  • service: resolve update-checker channels through pre-releases and legacy pointers (ROUT-382) (b9f51b4)
  • service: retrieve models with unencoded slash and OpenAI-shaped 404 (cfeac6c)
  • service: return 400 for POST /api/models with missing id/provider (ROUT-346) (4b693a7)
  • service: return 429 when all router models hit their limits (f145816)
  • service: return 503 instead of an empty 200 when orchestrator stream candidates are exhausted (286f4d9)
  • service: return provider 401 for rejected openai-oauth token on both lanes (ROUT-307) (048bc8c)
  • service: return reply from passthrough route so upstream body is sent (91ea298)
  • service: return reply from proxy lane routes so raw-forward body is sent (abed518)
  • service: return usedBy on model delete 409; document 409 on delete (3c723ba)
  • service: sanitize anthropic-web upstream errors and headers (ROUT-473) (152f815)
  • service: satisfy exactOptionalPropertyTypes for resolved endpoint (a948203)
  • service: satisfy noUncheckedIndexedAccess in notification test (ROUT-332) (e224378)
  • service: satisfy noUncheckedIndexedAccess in sender.test.ts (ROUT-366) (2959baf)
  • service: send Grafana push as Prometheus remote_write (protobuf+snappy) and make the test a real write (ROUT-326) (bd3d9d2)
  • service: streaming PII scrub holds back trailing digit tokens of spaced entities (ROUT-452) (8f14a76)
  • service: strip /v1 from Ollama embedding endpoint (ROUT-416) (5e8fd87)
  • service: strip credential-derived fields from GET /api/users (e1d6f70)
  • service: tolerate connections without label in startup migration (ROUT-357) (e326170)
  • service: TTFT floor of 30s for web providers (ROUT-466) (ddd94a0)
  • service: type payload in experiments test so tsc build passes (948076b)
  • service: upstream 4xx rejection reaches the client provider-shaped instead of a generic 503/500 (ROUT-287) (a7b42fe)
  • service: validate integration url/endpoint as http(s) URL on create and update (ROUT-328) (ef1533a)
  • service: validate publicUrl and require integer usageRetention in PUT /api/settings (ROUT-355) (88b1baf)
  • service: verify InfluxDB token/org/bucket in integration test with authenticated write (ROUT-329) (d8932fa)
  • service: warn once and document cache-read fallback when cachePerMillion is absent (ROUT-293) (fa0f7d1)
  • shared: add model name to the OpenClaw config snippet (ROUT-353) (8afec3e)
  • shared: ignore connections without label when checking label duplicates (ROUT-359) (2f9d5b2)
  • shared: keep RoutingPolicy.config as any to unbreak the build (8e800cf)
  • shared: pass OpenClaw MCP header in KEY=VALUE form (ROUT-353) (825cb81)
  • stamp product version 0.5.4 in package manifests (433628a)
  • test: resolve @routerly/shared from source in service and cli vitest (ROUT-410) (b381530)
  • usage: stop pruning orphan usage records at startup (ROUT-552) (ee5932a)

Documentation

  • add demo instance preparation guide (ROUT-271) (a24bcbe)
  • add full-feature coverage section to demo guide (ROUT-271) (fc68b87)
  • changelog entry for auth refresh fix (cc1a552)
  • changelog spacing (cbc1f47)
  • changelog spacing (4501dd1)
  • changelog spacing (ROUT-369) (0091d64)
  • changelog: add 0.6.0 version and docs build entries (e6b2a16)
  • changelog: add ROUT-524 entry for coding-agents setup fix (c97bd78)
  • changelog: add ROUT-534 entry for semantic-intent embedding cost fix (3bc004f)
  • changelog: dedupe ROUT-375 entry (0dd88dd)
  • changelog: drop duplicate Models page entry (841a52e)
  • changelog: drop duplicate ROUT-291 line (9c5b9ad)
  • changelog: fix unreleased layout (ROUT-359) (cdcf4ca)
  • changelog: note Models page placeholder fix (255bef2)
  • changelog: note plain-HTTP dashboard fix (01fc464)
  • changelog: OpenClaw MCP header form (ROUT-353) (93dd640)
  • changelog: release addChannel latest only on main (ROUT-576) (6dbc885)
  • changelog: ROUT-365 (5de0659)
  • changelog: ROUT-449 flaky audit test (3ff6e28)
  • changelog: ROUT-561 test flake fix (57d842a)
  • changelog: tidy lint entry (a814ad7)
  • changelog: tidy merge (d0f134e)
  • changelog: tidy ROUT-214 entry (b303ada)
  • changelog: tidy spacing (d2d4ca1)
  • cli: escape pipe in --candidate-limit table cell (dc198c9)
  • cli: escape pipe in --metric table cell (f8f1eee)
  • cli: escape pipe in --router <name|id> table cells (f46f606)
  • cli: model add --connection accepts id or label (ROUT-325) (1078f6e)
  • dedupe changelog entry (ROUT-287) (1f8816b)
  • dedupe ROUT-335 changelog entry (cd479d5)
  • document manual release trigger and three-tier update channels (81451eb)
  • document router model warnings (ROUT-276) (a6f64e7)
  • fix changelog entry for auth refresh (2a7b4ed)
  • installer: mention tsbuildinfo on uninstall (ROUT-579) (c49bc1a)
  • integrations: add coding-agents router setup for Codex and OpenCode (ROUT-517) (4504808)
  • opencode: document model selection with -m routerly/routerly/ada (ROUT-528) (69c3151)
  • pin Docker image tag to v0.5.3 (latest still points at 0.2.0) (ROUT-368) (35ffcb8)
  • readme: list Fireworks and Cerebras, align model add --help with registered providers (ROUT-368) (c5da64e)
  • readme: pin installer to v0.5.3 until the default channel resolves to 0.5.x (ROUT-368) (44d5e2c)
  • readme: refresh README and docs intro for 0.5.x positioning and comparison (ROUT-368) (1d26d6e)
  • service: document router ignoring body model, align UAT-08-15 (ROUT-363) (e1a7fde)
  • service: document router:read as global, pin GET /api/routers behavior (4972d98)
  • shared: fix stale 'stable' example in updateinfo.channel tsdoc (240bb40)
  • uat: add functionality catalog derived from release/0.5.4 (514971f)
  • uat: add UAT-11-05/06 for plain-HTTP playground and router Test tab (0b4d943)
  • uat: record first full run against release/0.5.4 (1ce1d2a) (5287949)
  • uat: record Ollama pass against release/0.5.4 (1ce1d2a) (9053565)
  • uat: rerun fresh-install cases on clones of uat-clean (458e5db)