Releases: darkraise/darkrouter
Release list
v0.8.0
Features
- feat(catalog): add Kira AI preset (e173520)
Other changes
- ci: speed up authentication tests and parallelize frontend checks (c9a860f)
Full changelog: v0.7.1...v0.8.0
Image
docker pull darkraise/darkrouter:0.8.0
Digest: sha256:6249ede30de0c6c87f7333c0b268eaf51de0fe09b77cfb38c9083b8d47acaea3
v0.7.1
Fixes
- fix(connect): allow configuring public base URL in UI (be66f7b)
Full changelog: v0.7.0...v0.7.1
Image
docker pull darkraise/darkrouter:0.7.1
Digest: sha256:7f8fcb3c0d4d7272f7c60067f022e90d46bfef7171b21d96e34aaa986a8831ad
v0.7.0
Features
- feat(admin): name the auth style in a probe failure (26f3b4a)
- feat(bedrock): send a tool's cache_control as a cachePoint (485e8ec)
- feat(console): manage accounts from Settings (e6b0ecd)
- feat(admin): manage accounts as an administrator (49f0931)
- feat(store): list, create and remove accounts (609af0b)
- feat(console): sign in with a username (64b21bc)
- feat(console): claim the console with a username (1530ca8)
- feat(cmd): warn when console is unclaimed (dc699fd)
- feat(admin): claim the console with first account (e644ef3)
- feat(admin): log in as a named account (6922a88)
- feat(store): scope sessions to an owner (c230fa7)
- feat(store): add user account methods (7d1dc57)
- feat(store): add users and session ownership (f4b66ae)
- feat(settings): show what waits for a restart (f8dffcb)
- feat(settings): edit every stored setting (d720273)
- feat(settings): add an editor per setting kind (552813d)
- feat(config-api): serve every setting from the registry (e0f879a)
- feat(config-registry): declare what each key holds (084e9a0)
- feat(config-api): write any stored setting through PUT (d2de9d9)
- feat(store): commit a config patch in one transaction (7899709)
- feat(config): commit a patch under the reload lock (d4f2518)
- feat(config-registry): validate each key on the way in (3a4af49)
- feat(health): surface the pending-restart set on both endpoints (9a5e30e)
- feat(health): report a skipped setting as invalid (127795f)
- feat(docker): start with no configuration file (8e34503)
- feat(config): build the store from the database (2661acd)
- feat(config): allow a store over an injected loader (8e8d63f)
- feat(config): track restart-only drift from boot (b7bdbe3)
- feat(store): drop stored rows that match the default (09443ee)
- feat(store): load configuration from the database (6fc0a9a)
- feat(store): add a registry for every stored config key (e0939fd)
- feat(config): name the keys a cross-key rule failure covers (6c0febc)
- feat(config): read bootstrap values from the environment (b8ce007)
- feat(connect): advertise a configurable public domain (be5b99f)
Fixes
- fix(ci): avoid duplicate catalogue PR authentication (fd4a793)
- fix(catalog): repair provider catalogue refresh (b242454)
- fix(admin): bound a local IPv6 /64's logins together (2c4ec98)
- fix(exec): keep a cut refresh wait off the credential (c7b6131)
- fix(web): drop a deleted chat's unsaved exchanges (fc0ed10)
- fix(bedrock): keep documents within Converse's rules (11378f3)
- fix(web): let the row pin shrink with new data (46869af)
- fix(web): warn when a keyless add is not routed (d05c04a)
- fix(web): size log tab columns in ch (d8c37f4)
- fix(bedrock): render documents as Converse blocks (cdcf14c)
- fix(anthropic): send text documents as a text source (57731ce)
- fix(edge): base64-encode an Anthropic text document (a98f930)
- fix(exec): end a forward at its terminal event (44eda45)
- fix(exec): name connect after a token refresh (b847867)
- fix(exec): name timeouts the transport enforces (55c8c58)
- fix(exec): keep a firing timeout's bound name (2821b99)
- fix(exec): record failed unary writes as cancelled (769fa3a)
- fix(exec): pass flush errors through body capture (95bf5da)
- fix(exec): stop blaming clients for shutdown cuts (6a05aaa)
- fix(exec): record a finished forward as a success (238b76f)
- fix(exec): prefer a provider error to a hang-up (6319321)
- fix(exec): end a cancelled forward with an error (590312c)
- fix(admin): keep the alias pin when If-Match mixes * (cf360b0)
- fix(admin): refuse a location on a non-vertex provider (72a7cab)
- fix(store): fill a provider location only once (3d25344)
- fix(admin): key LAN IPv6 logins per address (259aa0d)
- fix(admin): count a keyless provider's cooldowns (4ac0375)
- fix(web): take routing state from the last key write (b06bceb)
- fix(web): disable a refused key that cannot be refetched (aeaa077)
- fix(admin): redact each field of a structured secret (d77eaeb)
- fix(admin): reject an AWS key only on its own refusal (95d784e)
- fix(admin): keep an OpenAI key missing scopes (dcf4ec2)
- fix(providers): unpin actions below extra-large width (0850a55)
- fix(web): never measure the empty-state row (f8bb786)
- fix(providers): offer location only for Vertex (3d247ce)
- fix(requests): pin rows to the measured height (0a3327a)
- fix(providers): apply the free-models box on retry (0a6992f)
- fix(providers): warn when a saved change is not routed (42be3dc)
- fix(providers): keep answered prompts after a failure (d941c38)
- fix(providers): show cancelled test runs as neutral (02eeb6a)
- fix(playground): keep held saves held and scoped (6526394)
- fix(auth): require a JSON object for a vendor refusal (86cdcb2)
- fix(store): classify NFS, FUSE and transient lock errors (9bd9244)
- fix(catalog): cap the calls a custom lister makes (b1b172e)
- fix(catalog): grade tokens at an unquoted cache rate (c0b4862)
- fix(store): fence only the last rollup day from prune (b801634)
- fix(gemini): stop calling Flash Thinking non-thinking (33e421a)
- fix(bedrock): send tool cachePoints to listed models (e45ff8a)
- fix(anthropic): parse custom-typed tools as functions (784b900)
- fix(gemini): read snake_case parameters_json_schema (725ca93)
- fix(openai): name document types without mime.types (8c436e2)
- fix(xlate): keep converted Gemini schemas valid (373ff98)
- fix(store): report no lock on non-unix platforms (31cc2d1)
- fix(exec): name the timeout bound that fired (55586ac)
- fix(exec): record a failed sub-batch's status (77a44ee)
- fix(vertex): reach the us and eu multi-regions (c69a1cb)
- fix(gemini): fail over past a dead API key (c31de24)
- fix(admin): keep a key OpenAI refuses for its IP (2903ae9)
- fix(admin): validate vertex and bedrock endpoints (7f00882)
- fix(adapter): refuse a host-moving region or location (8d08d76)
- fix(catalog): cool a Gemini key refused with a 400 (b9486d0)
- fix(admin): keep a key the provider answers 403 (07e1a23)
- fix(admin): length-prefix fields in the cursor hash (df7f1bf)
- fix(web): show a client hang-up apart from failure (4f9fba7)
- fix(store): leave client hang-ups out of error rate (f5da192)
- fix(exec): record a hang-up after commit as cancelled (5c3a496)
- fix(exec): redact a token-count send's error (2075092)
- fix(config): warn when shutdown_grace outlasts the stop (72b0fa1)
- fix(store): lock on NFS and survive mounts without locks (c883cf6)
- fix(exec): let an upload use all of max_body_bytes (e22ceec)
- fix(exec): bound embedding sub-batches like a send (e06ea66)
- fix(exec): bound a trickling unary body by total (2f43de4)
- fix(web): keep the Free tier badge on one line (8b94aa8)
- fix(adapter): convert Gemini OpenAPI schemas for others (86ad4ac)
- fix(gemini): sign unsigned current-turn calls for 3.x (1068e82)
- fix(gemini): send no thinking config to 1.x and 2.0 (4d6aea5)
- fix(gemini): rejoin a thought's signature for clients (520f29d)
- fix(gemini): cap generated tool call ids at 40 chars (8ee5181)
- fix(openai): decode plain data URIs and infer file MIME (48ba528)
- fix(anthropic): carry a delta's redacted data on open (f045377)
- fix(openaicompat): order index-less embeddings by position (6bd5b65)
- fix(web): skip saving a setting retyped as stored (a7e6bf2)
- fix(web): say what a failed local rollback left (fbc7323)
- fix(web): space the requests window by rendered rows (9d639fc)
- fix(admin): mark unloaded config saves routing_updated (807c738)
- fix(admin): key IPv6 login buckets by /64 (d389111)
- fix(admin): accept an If-Match list on alias saves (5dc40ee)
- fix(admin): let a patch fill a missing location (1ede268)
- fix(admin): flag key refusals behind other statuses (1a1537f)
- fix(web): wrap long model ids in the trace drawer (ca421ba)
- fix(web): wrap alias chain actions below targets (59dc9f3)
- fix(web): unpin provider actions in a narrow table (39070bc)
- fix(web): stop the requests table crushing columns (fb9f854)
- fix(web): warn when a local runtime is not routed (e0de375)
- fix(web): keep a new chat's saves in one queue (9d86dbe)
- fix(web): send the prompt a reasoning-only reply met (f3e9b42)
- fix(web): keep a stopped test reply out of history (832c123)
- fix(web): say when provider usage did not load (51b90d2)
- fix(web): compare settings by value, not spelling (d9998e5)
- fix(web): give back bulk lines as typed on retry (cadc8bc)
- fix(admin): judge overview health by enabled creds (5b2690f)
- fix(catalog): use platform.claude.com for OAuth tokens (97a1a0e)
- fix(catalog): grade a cost by the cache rate it used (ca0a7b8)
- fix(store): keep only cache rates a listing quoted (cf69bf4)
- fix(auth): describe Anthropic's object-shaped errors (28a202f)
- fix(auth): stop a forgotten unsaved rotation serving (299fb1e)
- fix(catalog): bound each lister call, not the listing (7f19180)
- fix(exec): keep query-param keys out of error text (8240128)
- fix(exec): end a forwarded stream with one error (929c971)
- fix(exec): report a cut in a forwarded raw tail (0cf749a)
- fix(exec): blame a stalled client, not the provider (5bc1ba4)
- fix(gemini): render client schemas in their own field (108ccf9)
- fix(gemini): follow each model's thinking levels (e529d93)
- fix(bedrock): send cache TTL only where supported (84ecdbd)
- fix(vertex): forward only betas Vertex accepts (00f98e8)
- fix(adapter): decide tool choice from rendered tools (b20b9e5)
- fix(ir): keep nameless typed tools out of BuiltIn (462ec01)
- fix(auth): treat a non-JSON 400/401 refresh as transient (3ea2f63)
- fix(catalog): leave free models' cache rates at zero (8ac4f75)
- fix(catalog): list Ollama Cloud from /v1/models (7772bde)
- fix(catalog): keep models_url for rows on its host (99e57f9)
- fix(store): keep rollup catch-up off pruned days (1e91ba7)
- fix(admin): report a committed provider as created (d88f0d8)
- fix(web): skip provider creation on a fast retry (5fe2ad1)
- fix(web): count a stored key as added when unrouted (0b04741)
- fix(admin): report a committ...
v0.6.2
Fixes
- fix(console): read a bulk credential's account from its own line (3587782)
Full changelog: v0.6.1...v0.6.2
Image
docker pull darkraise/darkrouter:0.6.2
Digest: sha256:5048e3e95740677c43a0ec02509368fc268196938fb7d7fc42b33d40f027cab7
v0.6.1
Fixes
- fix(providers): give Cloudflare and Snowflake the account their URL needs (cb08188)
Full changelog: v0.6.0...v0.6.1
Image
docker pull darkraise/darkrouter:0.6.1
Digest: sha256:f314c85faac0f3d98770d6098b128a2cbce76961cb311749244593824764533a
v0.6.0
Features
- feat(docker): run as root so a bind mount needs no chown (6ef47bf)
Full changelog: v0.5.0...v0.6.0
Image
docker pull darkraise/darkrouter:0.6.0
Digest: sha256:1007966a20dc0056e49bcc68f69fd42d8dd3dab84cfd7e89de4c9b8a6c3f6fe5
v0.5.0
Features
- feat(config): make the configuration file optional (6f068a4)
Full changelog: v0.4.0...v0.5.0
Image
docker pull darkraise/darkrouter:0.5.0
Digest: sha256:b9e5953c7b58504b0668ca2057fd7e6dff9904c00541d80dc3c4a00e53ee303e
v0.4.0
Features
- feat(admin): claim the console from a setup page (0dddd29)
Other changes
- chore(compose): pass .env through instead of listing it (fbaecca)
- chore(compose): drop the bundled Caddy service (5c1972c)
Full changelog: v0.3.2...v0.4.0
Image
docker pull darkraise/darkrouter:0.4.0
Digest: sha256:6d524cc19f194bfd8493e4d435eb7a8089f1d184a6eb5821d04fb1b904c99804
v0.3.2
Other changes
- refactor(console): clear the React Compiler findings (649d62c)
Full changelog: v0.3.1...v0.3.2
Image
docker pull darkraise/darkrouter:0.3.2
Digest: sha256:9086e21a95ba0ab270698f5e2ccf1051af6f4e001d748d601c209710d9b597e1
v0.3.1
Other changes
- build(deps): pin darkraise-ui rather than range it (ea9e055)
Full changelog: v0.3.0...v0.3.1
Image
docker pull darkraise/darkrouter:0.3.1
Digest: sha256:6afe03301080949a9366c00be1d202fdc6a40832309a113c6327a763a9da69be