# Changelog ## [8.65.1](https://github.com/doublewordai/control-layer/compare/v8.65.0...v8.65.1) (2026-06-26) ### Bug Fixes * enforce unique priority order for composite model components ([#1189](https://github.com/doublewordai/control-layer/issues/1189)) ([6ac734c](https://github.com/doublewordai/control-layer/commit/6ac734c4204c143ca409b3dcde4abdc254032bac)) ## [8.65.0](https://github.com/doublewordai/control-layer/compare/v8.64.0...v8.65.0) (2026-06-26) ### Features * serve GET /v1/models in Anthropic format ([#1181](https://github.com/doublewordai/control-layer/issues/1181)) ([7ee3ac6](https://github.com/doublewordai/control-layer/commit/7ee3ac69c7b89466d5da7f666d8d3a563c4a554b)) ## [8.64.0](https://github.com/doublewordai/control-layer/compare/v8.63.0...v8.64.0) (2026-06-26) ### Features * erase a deleted user's API keys and fusillade data ([#1174](https://github.com/doublewordai/control-layer/issues/1174)) ([c5182c8](https://github.com/doublewordai/control-layer/commit/c5182c8952036823bc0a734dc478382a7860c01c)) ## [8.63.0](https://github.com/doublewordai/control-layer/compare/v8.62.0...v8.63.0) (2026-06-25) ### Features * input-caching ([#1172](https://github.com/doublewordai/control-layer/issues/1172)) ([9bf7a0b](https://github.com/doublewordai/control-layer/commit/9bf7a0b5631a3606a6d951ff8600b7a0577be40a)) ## [8.62.0](https://github.com/doublewordai/control-layer/compare/v8.61.3...v8.62.0) (2026-06-25) ### Features * add Anthropic /v1/messages ingress ([#1177](https://github.com/doublewordai/control-layer/issues/1177)) ([d24bd11](https://github.com/doublewordai/control-layer/commit/d24bd11ca00a8ff797c310e89cc0cd5edd32e8c4)) * support flex + streaming for chat completions and responses ([#1171](https://github.com/doublewordai/control-layer/issues/1171)) ([e48702a](https://github.com/doublewordai/control-layer/commit/e48702a1e812d322a3b4f74d2b7fc5f43a172aa9)) ## [8.61.3](https://github.com/doublewordai/control-layer/compare/v8.61.2...v8.61.3) (2026-06-24) ### Bug Fixes * **deps:** bump onwards to 0.33.3 ([#1173](https://github.com/doublewordai/control-layer/issues/1173)) ([12d50c8](https://github.com/doublewordai/control-layer/commit/12d50c8d3424e647a371f529bc5a3e48b79300af)) * stop sending generated display name to stripe on customer creation ([#1169](https://github.com/doublewordai/control-layer/issues/1169)) ([7870071](https://github.com/doublewordai/control-layer/commit/7870071ace5f91a593e1867f943c3421910d55fc)) ## [8.61.2](https://github.com/doublewordai/control-layer/compare/v8.61.1...v8.61.2) (2026-06-22) ### Bug Fixes * **dashboard:** show a clean error message for failed responses ([#1153](https://github.com/doublewordai/control-layer/issues/1153)) ([d7011de](https://github.com/doublewordai/control-layer/commit/d7011de39f45c6139a284dbdfb74e45a1b632891)) * **responses:** translate content parts in multi-step executor input ([#1161](https://github.com/doublewordai/control-layer/issues/1161)) ([ce50bd7](https://github.com/doublewordai/control-layer/commit/ce50bd7c13d525a299848772c11ed6965847f84c)) ## [8.61.1](https://github.com/doublewordai/control-layer/compare/v8.61.0...v8.61.1) (2026-06-19) ### Bug Fixes * **deps:** bump fusillade to 19.0.0 ([#1162](https://github.com/doublewordai/control-layer/issues/1162)) ([e041b40](https://github.com/doublewordai/control-layer/commit/e041b40d7e86ff26d7d973bf7ee0f853230bb9d1)) * **playground:** render reasoning from all backend fields ([#1158](https://github.com/doublewordai/control-layer/issues/1158)) ([e1ee0a6](https://github.com/doublewordai/control-layer/commit/e1ee0a6b22d89853f1e3d012ebde41ea21120ce0)) ## [8.61.0](https://github.com/doublewordai/control-layer/compare/v8.60.7...v8.61.0) (2026-06-18) ### Features * **cors:** optional any-origin CORS without credentials ([#1155](https://github.com/doublewordai/control-layer/issues/1155)) ([c00b0a5](https://github.com/doublewordai/control-layer/commit/c00b0a51a2c0f83cf527aa8112e726a91ebc9c6a)) ### Bug Fixes * **cors:** correct scheme in default dev-frontend origin ([#1156](https://github.com/doublewordai/control-layer/issues/1156)) ([33b6b48](https://github.com/doublewordai/control-layer/commit/33b6b484f490d7d8c1e4034431e5326fe3831631)) ## [8.60.7](https://github.com/doublewordai/control-layer/compare/v8.60.6...v8.60.7) (2026-06-17) ### Bug Fixes * block platform keys from doing inference ([#1148](https://github.com/doublewordai/control-layer/issues/1148)) ([5b25362](https://github.com/doublewordai/control-layer/commit/5b253627f8f92cb5cf498c3ab50b68a1045fab3a)) * bump fusillade to 18.0.2 ([#1154](https://github.com/doublewordai/control-layer/issues/1154)) ([ca91646](https://github.com/doublewordai/control-layer/commit/ca916460e71a228fef258cdc0d66fdeb842d1096)) ## [8.60.6](https://github.com/doublewordai/control-layer/compare/v8.60.5...v8.60.6) (2026-06-16) ### Bug Fixes * **image-normalizer:** don't re-sign URLs already in our own store ([#1150](https://github.com/doublewordai/control-layer/issues/1150)) ([2aaa8ab](https://github.com/doublewordai/control-layer/commit/2aaa8ab6f853594d6939aa2f723616d11d968be3)) ## [8.60.5](https://github.com/doublewordai/control-layer/compare/v8.60.4...v8.60.5) (2026-06-16) ### Bug Fixes * bump fusillade ([#1144](https://github.com/doublewordai/control-layer/issues/1144)) ([eb14b5c](https://github.com/doublewordai/control-layer/commit/eb14b5c13bb7dd7bdaf9ff6dac594b11a08fe08f)) ## [8.60.4](https://github.com/doublewordai/control-layer/compare/v8.60.3...v8.60.4) (2026-06-15) ### Bug Fixes * **deps:** bump onwards to 0.31.1 and fusillade to 18.0.0 ([#1140](https://github.com/doublewordai/control-layer/issues/1140)) ([ab97e7c](https://github.com/doublewordai/control-layer/commit/ab97e7c82ff0d8ef8bb39f61924365226c6f6af5)) ## [8.60.3](https://github.com/doublewordai/control-layer/compare/v8.60.2...v8.60.3) (2026-06-15) ### Bug Fixes * count only successful requests in per-user model usage ([#1129](https://github.com/doublewordai/control-layer/issues/1129)) ([626ae97](https://github.com/doublewordai/control-layer/commit/626ae971c27476a06db21e950bc80ca782eccfcd)) ## [8.60.2](https://github.com/doublewordai/control-layer/compare/v8.60.1...v8.60.2) (2026-06-15) ### Bug Fixes * any non success response when fetching images gets turned into a 502, implying an error on our server ([#1132](https://github.com/doublewordai/control-layer/issues/1132)) ([b500fbb](https://github.com/doublewordai/control-layer/commit/b500fbbd2e75a0c73967454c06bfc342dc834f6a)) * onwards body limit ([#1135](https://github.com/doublewordai/control-layer/issues/1135)) ([1a66eac](https://github.com/doublewordai/control-layer/commit/1a66eac585ca659ddd9eb35d7207279de6270d74)) * validate purpose on file upload ([#1137](https://github.com/doublewordai/control-layer/issues/1137)) ([eede166](https://github.com/doublewordai/control-layer/commit/eede166a5df3024c7268ce91fbbb86f99193e605)) ## [8.60.1](https://github.com/doublewordai/control-layer/compare/v8.60.0...v8.60.1) (2026-06-12) ### Bug Fixes * **deps:** bump fusillade to 17.3.1 for batchless flex pending counts ([#1134](https://github.com/doublewordai/control-layer/issues/1134)) ([4ad4e88](https://github.com/doublewordai/control-layer/commit/4ad4e88c5bc49f9acc29d0bcc420d73269b33aec)) ## [8.60.0](https://github.com/doublewordai/control-layer/compare/v8.59.0...v8.60.0) (2026-06-11) ### Features * standardise error logs into having metric emissions ([#1130](https://github.com/doublewordai/control-layer/issues/1130)) ([bfda345](https://github.com/doublewordai/control-layer/commit/bfda34584ed12fe179c087c1c3e89d26bbba398a)) ## [8.59.0](https://github.com/doublewordai/control-layer/compare/v8.58.1...v8.59.0) (2026-06-05) ### Features * image input normalisation ([#1083](https://github.com/doublewordai/control-layer/issues/1083)) ([97d006c](https://github.com/doublewordai/control-layer/commit/97d006c4231dd00c490ce9fa94a3a6476dad38dc)) ### Bug Fixes * **openapi:** use Doubleword-served models in API doc examples ([#1125](https://github.com/doublewordai/control-layer/issues/1125)) ([27fc25f](https://github.com/doublewordai/control-layer/commit/27fc25fffd140c51874e8ec66dafc5e8db2b324f)) ## [8.58.1](https://github.com/doublewordai/control-layer/compare/v8.58.0...v8.58.1) (2026-06-03) ### Performance Improvements * **sync:** raise onwards fallback resync default 10s->5min ([#1118](https://github.com/doublewordai/control-layer/issues/1118)) ([86b9049](https://github.com/doublewordai/control-layer/commit/86b9049a7dfb625b77174d02fbf3131fbe868519)) * **sync:** stop api_keys no-op upserts from triggering onwards reloads ([#1119](https://github.com/doublewordai/control-layer/issues/1119)) ([d0ca45d](https://github.com/doublewordai/control-layer/commit/d0ca45d84bfb8c308817bc13b7e567f8655a673f)) ## [8.58.0](https://github.com/doublewordai/control-layer/compare/v8.57.0...v8.58.0) (2026-06-02) ### Features * match initial purchase amount ([#1113](https://github.com/doublewordai/control-layer/issues/1113)) ([f09db56](https://github.com/doublewordai/control-layer/commit/f09db563e84f1daf324aaff488768197b085da3c)) ### Bug Fixes * **deps:** bump hickory-resolver to 0.26 + aws-sdk-s3 to 1.134 (closes 4 backend alerts) ([#1116](https://github.com/doublewordai/control-layer/issues/1116)) ([d90d7b0](https://github.com/doublewordai/control-layer/commit/d90d7b07a414f45d09cafaa1e15c7f8bc6528315)) * Give the pre-tax total as credits, not the total. ([#1115](https://github.com/doublewordai/control-layer/issues/1115)) ([7abae48](https://github.com/doublewordai/control-layer/commit/7abae48b94f20f26477e9290987a8e7859fa0fea)) ## [8.57.0](https://github.com/doublewordai/control-layer/compare/v8.56.0...v8.57.0) (2026-06-01) ### Features * add pending request decay window ([#1107](https://github.com/doublewordai/control-layer/issues/1107)) ([5eda366](https://github.com/doublewordai/control-layer/commit/5eda3665580509ab8466948bc14f66ac2499a066)) ### Bug Fixes * **deps:** bump tar from 0.4.45 to 0.4.46 in /dwctl ([#1109](https://github.com/doublewordai/control-layer/issues/1109)) ([5381f6d](https://github.com/doublewordai/control-layer/commit/5381f6d54f1c6832d5b3f053e963f84fe008a8b2)) ## [8.56.0](https://github.com/doublewordai/control-layer/compare/v8.55.0...v8.56.0) (2026-06-01) ### Features * adds rate limits for unverified users ([#1105](https://github.com/doublewordai/control-layer/issues/1105)) ([3e07a01](https://github.com/doublewordai/control-layer/commit/3e07a01765170ac36a3ce436ca9e750da1c2a205)) ## [8.55.0](https://github.com/doublewordai/control-layer/compare/v8.54.2...v8.55.0) (2026-05-29) ### Features * expose onwards 0.29 retry backoff per composite model ([#1097](https://github.com/doublewordai/control-layer/issues/1097)) ([fbe6717](https://github.com/doublewordai/control-layer/commit/fbe67170b33331eb01b9c43eba8e0b36d2faedef)) * replace underway for response creation to use channel system ([#1101](https://github.com/doublewordai/control-layer/issues/1101)) ([9fdcb96](https://github.com/doublewordai/control-layer/commit/9fdcb963e8dbfcce295723242db4cce049ac5445)) ## [8.54.2](https://github.com/doublewordai/control-layer/compare/v8.54.1...v8.54.2) (2026-05-28) ### Bug Fixes * **files:** return 400 not 500 for malformed multipart uploads ([#1102](https://github.com/doublewordai/control-layer/issues/1102)) ([8e11774](https://github.com/doublewordai/control-layer/commit/8e11774fb880b696e62836af6ea2532461c9a918)) ## [8.54.1](https://github.com/doublewordai/control-layer/compare/v8.54.0...v8.54.1) (2026-05-27) ### Bug Fixes * **dashboard:** load provider icons via the icon proxy ([#1099](https://github.com/doublewordai/control-layer/issues/1099)) ([afaee05](https://github.com/doublewordai/control-layer/commit/afaee05c756a90860dc0e67a79ccc1260e95e344)) ## [8.54.0](https://github.com/doublewordai/control-layer/compare/v8.53.0...v8.54.0) (2026-05-27) ### Features * proxy provider-display-config icons through the API ([#1096](https://github.com/doublewordai/control-layer/issues/1096)) ([f460543](https://github.com/doublewordai/control-layer/commit/f4605435070461edddcd933c1c70737ebc00ba09)) ## [8.53.0](https://github.com/doublewordai/control-layer/compare/v8.52.2...v8.53.0) (2026-05-26) ### Features * add configurable browser security response headers ([#1091](https://github.com/doublewordai/control-layer/issues/1091)) ([0357624](https://github.com/doublewordai/control-layer/commit/03576247b13cb70b26f4338624b039c4153d8df8)) ## [8.52.2](https://github.com/doublewordai/control-layer/compare/v8.52.1...v8.52.2) (2026-05-21) ### Bug Fixes * **openapi:** gate admin spec behind admin auth and disable by default ([#1089](https://github.com/doublewordai/control-layer/issues/1089)) ([56b145c](https://github.com/doublewordai/control-layer/commit/56b145ce6f8932bedaffc2f4d07a1009c2b7e3c4)) ## [8.52.1](https://github.com/doublewordai/control-layer/compare/v8.52.0...v8.52.1) (2026-05-20) ### Bug Fixes * **organizations:** verify and validate contact-email changes ([#1080](https://github.com/doublewordai/control-layer/issues/1080)) ([4f91377](https://github.com/doublewordai/control-layer/commit/4f91377ed7e10f32e1c607073df01beda27d8591)) ## [8.52.0](https://github.com/doublewordai/control-layer/compare/v8.51.0...v8.52.0) (2026-05-20) ### Features * **usage:** scope /usage to active organization and accept user_id filter ([#1086](https://github.com/doublewordai/control-layer/issues/1086)) ([1d4a05c](https://github.com/doublewordai/control-layer/commit/1d4a05c66f063176232d43630e408ffa065b3426)) ## [8.51.0](https://github.com/doublewordai/control-layer/compare/v8.50.0...v8.51.0) (2026-05-20) ### Features * single request deletion ([#1082](https://github.com/doublewordai/control-layer/issues/1082)) ([379e705](https://github.com/doublewordai/control-layer/commit/379e70597935e095cc7131d7137678dfc1b6585c)) * unified http client ([#1078](https://github.com/doublewordai/control-layer/issues/1078)) ([106b78e](https://github.com/doublewordai/control-layer/commit/106b78e4ab775e425d29fa3fe6ffdc1f7eb80004)) ### Bug Fixes * open responses compliant deletion ([#1084](https://github.com/doublewordai/control-layer/issues/1084)) ([2de7390](https://github.com/doublewordai/control-layer/commit/2de7390227ce2376741902e54104ee4d731a9c63)) ## [8.50.0](https://github.com/doublewordai/control-layer/compare/v8.49.1...v8.50.0) (2026-05-15) ### Features * Remove virtual batches ([#1065](https://github.com/doublewordai/control-layer/issues/1065)) ([3a30d90](https://github.com/doublewordai/control-layer/commit/3a30d90daa0b9363770a45691a96e80fd8141afc)) ### Bug Fixes * Bump fusillade to speedup batch page query ([#1077](https://github.com/doublewordai/control-layer/issues/1077)) ([970f7c2](https://github.com/doublewordai/control-layer/commit/970f7c28fb13ed8de41594128af53a4859f6221d)) ## [8.49.1](https://github.com/doublewordai/control-layer/compare/v8.49.0...v8.49.1) (2026-05-14) ### Bug Fixes * **endpoints:** paginate edit modal and stop dropping models on save ([#1071](https://github.com/doublewordai/control-layer/issues/1071)) ([73c2073](https://github.com/doublewordai/control-layer/commit/73c207353f4e57e0bccf2c5e072e1e2ac2fdf6aa)) ## [8.49.0](https://github.com/doublewordai/control-layer/compare/v8.48.0...v8.49.0) (2026-05-13) ### Features * create response UI ([#1067](https://github.com/doublewordai/control-layer/issues/1067)) ([c6e69e3](https://github.com/doublewordai/control-layer/commit/c6e69e37c6688acf26139e07daee99f931642d41)) ### Bug Fixes * **responses:** mark parent row processing during multi-step loop ([#1069](https://github.com/doublewordai/control-layer/issues/1069)) ([1b86515](https://github.com/doublewordai/control-layer/commit/1b865152c24197cf3bcf4bd8c764935397a9f510)) * **responses:** terminate fusillade row on client cancel ([#1070](https://github.com/doublewordai/control-layer/issues/1070)) ([602df7f](https://github.com/doublewordai/control-layer/commit/602df7fa568d7f6096efdee7f1672af3da9b167c)) ## [8.48.0](https://github.com/doublewordai/control-layer/compare/v8.47.0...v8.48.0) (2026-05-11) ### Features * **chat-completions:** support service_tier:"flex" via fusillade ([#1056](https://github.com/doublewordai/control-layer/issues/1056)) ([20b77ef](https://github.com/doublewordai/control-layer/commit/20b77ef1b6fe9699d3af1ed2e0f4fd4b35906ed8)) ### Bug Fixes * **responses:** wire DwctlRequestProcessor end-to-end on the flex daemon path ([#1064](https://github.com/doublewordai/control-layer/issues/1064)) ([66e7564](https://github.com/doublewordai/control-layer/commit/66e756425271f0c12171cab249d1d127659fd1af)) ## [8.47.0](https://github.com/doublewordai/control-layer/compare/v8.46.4...v8.47.0) (2026-05-08) ### Features * **api:** explain modality-blocked 403s in AI proxy errors ([#1062](https://github.com/doublewordai/control-layer/issues/1062)) ([4e32c41](https://github.com/doublewordai/control-layer/commit/4e32c41353f8748f1185a29e6e9fa8f4ff08132a)) * redesign endpoint model editing UX ([#1060](https://github.com/doublewordai/control-layer/issues/1060)) ([c26ed46](https://github.com/doublewordai/control-layer/commit/c26ed46af8b8b686ce35f0c569bc4853c3a26825)) ## [8.46.4](https://github.com/doublewordai/control-layer/compare/v8.46.3...v8.46.4) (2026-05-08) ### Bug Fixes * **responses:** make complete-response idempotent against terminal-state rows ([#1050](https://github.com/doublewordai/control-layer/issues/1050)) ([1bbec2d](https://github.com/doublewordai/control-layer/commit/1bbec2df3178152cce05db642ff01caae744555d)) * **responses:** translate Open Responses input items to chat-completions shape ([#1058](https://github.com/doublewordai/control-layer/issues/1058)) ([7f700c4](https://github.com/doublewordai/control-layer/commit/7f700c43537259e7a589e4d62cfaae7dba795728)) * **responses:** wire service_tier:flex to the daemon for /v1/responses ([#1059](https://github.com/doublewordai/control-layer/issues/1059)) ([35ff4f1](https://github.com/doublewordai/control-layer/commit/35ff4f1fc5e045081664df89bdcb6d0302657bf8)) ## [8.46.3](https://github.com/doublewordai/control-layer/compare/v8.46.2...v8.46.3) (2026-05-07) ### Bug Fixes * bump fusillade + minor deps ([#1054](https://github.com/doublewordai/control-layer/issues/1054)) ([306ef31](https://github.com/doublewordai/control-layer/commit/306ef315b30786b4194240edea824de1b6560724)) ## [8.46.2](https://github.com/doublewordai/control-layer/compare/v8.46.1...v8.46.2) (2026-05-07) ### Bug Fixes * Do not record requests as successful in outlet/http-analytics if they actually had errors mid-sse-stream ([#1048](https://github.com/doublewordai/control-layer/issues/1048)) ([2b6e252](https://github.com/doublewordai/control-layer/commit/2b6e252e353445c97d5c09c713f276b162a0ee61)) ## [8.46.1](https://github.com/doublewordai/control-layer/compare/v8.46.0...v8.46.1) (2026-05-07) ### Bug Fixes * pass through client-side tool_calls instead of dispatching them ([#1049](https://github.com/doublewordai/control-layer/issues/1049)) ([88ac176](https://github.com/doublewordai/control-layer/commit/88ac176d60b0a0b518d7b7b4ae3f5ff3d48ef129)) ## [8.46.0](https://github.com/doublewordai/control-layer/compare/v8.45.0...v8.46.0) (2026-05-05) ### Features * **webhooks:** allow org members read-only access to org webhooks ([#1043](https://github.com/doublewordai/control-layer/issues/1043)) ([4bf5b54](https://github.com/doublewordai/control-layer/commit/4bf5b54142b57d34bdf2456202f1db30d539461f)) ### Bug Fixes * **deps:** clear all 36 open Dependabot vulnerabilities ([#1045](https://github.com/doublewordai/control-layer/issues/1045)) ([fa79316](https://github.com/doublewordai/control-layer/commit/fa793161b73ae32432cd8a7d1e5f2ca0554469c2)) ## [8.45.0](https://github.com/doublewordai/control-layer/compare/v8.44.3...v8.45.0) (2026-04-30) ### Features * dwctl migration for multi-step response analytics linkage ([#1036](https://github.com/doublewordai/control-layer/issues/1036)) ([d9eb4bd](https://github.com/doublewordai/control-layer/commit/d9eb4bd562b507183cf8cb2dc6f64fab78b7bff9)) ## [8.44.3](https://github.com/doublewordai/control-layer/compare/v8.44.2...v8.44.3) (2026-04-28) ### Bug Fixes * preserve upstream error codes instead of wrapping as 500 ([#1031](https://github.com/doublewordai/control-layer/issues/1031)) ([ddd7079](https://github.com/doublewordai/control-layer/commit/ddd7079c1af3e12e6b4e4d7e7f10a5dd7824731f)) ## [8.44.2](https://github.com/doublewordai/control-layer/compare/v8.44.1...v8.44.2) (2026-04-27) ### Bug Fixes * filter priority from queue metrics ([#1029](https://github.com/doublewordai/control-layer/issues/1029)) ([89c92d5](https://github.com/doublewordai/control-layer/commit/89c92d57c6151e5e26818abd5b93c91a6e68db7d)) ## [8.44.1](https://github.com/doublewordai/control-layer/compare/v8.44.0...v8.44.1) (2026-04-27) ### Bug Fixes * batch id attribution and completion window filtering ([#1025](https://github.com/doublewordai/control-layer/issues/1025)) ([2928686](https://github.com/doublewordai/control-layer/commit/29286866bbe40991c09b3a601899ca841d23d41b)) ## [8.44.0](https://github.com/doublewordai/control-layer/compare/v8.43.0...v8.44.0) (2026-04-25) ### Features * service_tier and background handlers ([#1007](https://github.com/doublewordai/control-layer/issues/1007)) ([43e4239](https://github.com/doublewordai/control-layer/commit/43e4239ccb7f033ccb94f6f47dbd97c96a4c9531)) ## [8.43.0](https://github.com/doublewordai/control-layer/compare/v8.42.3...v8.43.0) (2026-04-24) ### Features * mobile swimlane view for models page ([#1022](https://github.com/doublewordai/control-layer/issues/1022)) ([4237a96](https://github.com/doublewordai/control-layer/commit/4237a96f5a045f012e753e49d66c786cc4147f35)) ## [8.42.3](https://github.com/doublewordai/control-layer/compare/v8.42.2...v8.42.3) (2026-04-22) ### Bug Fixes * models sort ([#1016](https://github.com/doublewordai/control-layer/issues/1016)) ([2bd3635](https://github.com/doublewordai/control-layer/commit/2bd36356dff5cc393448366d43673598004fd129)) ## [8.42.2](https://github.com/doublewordai/control-layer/compare/v8.42.1...v8.42.2) (2026-04-22) ### Bug Fixes * fmt changelog ([007cc7d](https://github.com/doublewordai/control-layer/commit/007cc7dd78003203818b10eeb2a346b0c2fb2898)) ## [8.42.1](https://github.com/doublewordai/control-layer/compare/v8.42.0...v8.42.1) (2026-04-22) ### Bug Fixes * updated readme formatting ([41f0e63](https://github.com/doublewordai/control-layer/commit/41f0e634506ea48a0699c6956dcd2eab4ab2fa73)) ## [8.42.0](https://github.com/doublewordai/control-layer/compare/v8.41.0...v8.42.0) (2026-04-22) ### Features * upgrade fusillade 16.3.0 and switch async view to service_tier=flex ([#1009](https://github.com/doublewordai/control-layer/issues/1009)) ([c98bc38](https://github.com/doublewordai/control-layer/commit/c98bc386e1de4b19e3732a6771f613cd90c90c13)) ## [8.41.0](https://github.com/doublewordai/control-layer/compare/v8.40.1...v8.41.0) (2026-04-17) ### Features * cascade batch state to child requests via background job ([#1001](https://github.com/doublewordai/control-layer/issues/1001)) ([0071c85](https://github.com/doublewordai/control-layer/commit/0071c85cdb0a8139e568be31bf6e61c06ba3854f)) ## [8.40.1](https://github.com/doublewordai/control-layer/compare/v8.40.0...v8.40.1) (2026-04-16) ### Bug Fixes * center tooltips and make model/user cells click-to-copy ([#998](https://github.com/doublewordai/control-layer/issues/998)) ([e2fb2f5](https://github.com/doublewordai/control-layer/commit/e2fb2f5fab090e4265e1236ff94f7dc553b466e6)) ## [8.40.0](https://github.com/doublewordai/control-layer/compare/v8.39.0...v8.40.0) (2026-04-16) ### Features * async-ui followups - onwards 0.24.2, user in metadata, cleaner batch view ([#995](https://github.com/doublewordai/control-layer/issues/995)) ([7284c07](https://github.com/doublewordai/control-layer/commit/7284c0762194fd4b446d5141dc372d8af5832c48)) ### Bug Fixes * bump fusillade to 16.1.2 ([#997](https://github.com/doublewordai/control-layer/issues/997)) ([24117da](https://github.com/doublewordai/control-layer/commit/24117da746058abbd4cd6bb3f52d02e521926851)) ## [8.39.0](https://github.com/doublewordai/control-layer/compare/v8.38.2...v8.39.0) (2026-04-15) ### Features * async requests UI and streamlined batch experience ([#989](https://github.com/doublewordai/control-layer/issues/989)) ([76cd01b](https://github.com/doublewordai/control-layer/commit/76cd01baff9fe6b36d22d5549f92a03524aeb3c8)) ## [8.38.2](https://github.com/doublewordai/control-layer/compare/v8.38.1...v8.38.2) (2026-04-15) ### Bug Fixes * batch creation from sync respects queue capacity, jobs backoff and retry ([#990](https://github.com/doublewordai/control-layer/issues/990)) ([dafed4a](https://github.com/doublewordai/control-layer/commit/dafed4a072eae6e638fcf26ff25503af84603abc)) ## [8.38.1](https://github.com/doublewordai/control-layer/compare/v8.38.0...v8.38.1) (2026-04-15) ### Bug Fixes * bump onwards to 0.24.1 ([#991](https://github.com/doublewordai/control-layer/issues/991)) ([9058b99](https://github.com/doublewordai/control-layer/commit/9058b99cdf8ea64b01032c55503337c76ca88658)) ## [8.38.0](https://github.com/doublewordai/control-layer/compare/v8.37.1...v8.38.0) (2026-04-14) ### Features * connections role for gating feature ([#981](https://github.com/doublewordai/control-layer/issues/981)) ([5ce28e2](https://github.com/doublewordai/control-layer/commit/5ce28e212fa7a52299e4328451210079a4f30757)) ## [8.37.1](https://github.com/doublewordai/control-layer/compare/v8.37.0...v8.37.1) (2026-04-13) ### Bug Fixes * document dynamo nvext.agent_hints.priority injection path ([#984](https://github.com/doublewordai/control-layer/issues/984)) ([cf613b0](https://github.com/doublewordai/control-layer/commit/cf613b0d90cf1a224bbaa817e22640bb0452c28c)) ## [8.37.0](https://github.com/doublewordai/control-layer/compare/v8.36.0...v8.37.0) (2026-04-13) ### Features * allow platform managers to use any batch completion window ([#978](https://github.com/doublewordai/control-layer/issues/978)) ([5ac8ef5](https://github.com/doublewordai/control-layer/commit/5ac8ef5de021d67092b3952e3f45a5425083237e)) * wire fusillade deadline-priority injection into batch_daemon config ([#980](https://github.com/doublewordai/control-layer/issues/980)) ([f653871](https://github.com/doublewordai/control-layer/commit/f65387119bc11c9632ecf5f3d49185335c877fea)) ## [8.36.0](https://github.com/doublewordai/control-layer/compare/v8.35.1...v8.36.0) (2026-04-10) ### Features * more transparent and intuitive handling of errors in ingested jsonl ([#967](https://github.com/doublewordai/control-layer/issues/967)) ([a9a7365](https://github.com/doublewordai/control-layer/commit/a9a7365afd45a03c87ba7c8107dc555fd0a2f440)) ### Bug Fixes * missed an index migration ([#975](https://github.com/doublewordai/control-layer/issues/975)) ([9643080](https://github.com/doublewordai/control-layer/commit/9643080edb66bd6f5446c229ca65937a6dcb2a72)) ## [8.35.1](https://github.com/doublewordai/control-layer/compare/v8.35.0...v8.35.1) (2026-04-10) ### Bug Fixes * hide reasoning tokens if zero ([#970](https://github.com/doublewordai/control-layer/issues/970)) ([f647cd9](https://github.com/doublewordai/control-layer/commit/f647cd9a70fc5f9ce74a8d184adf1291ceb9118d)) ## [8.35.0](https://github.com/doublewordai/control-layer/compare/v8.34.0...v8.35.0) (2026-04-09) ### Features * expose reasoning token analytics ([#939](https://github.com/doublewordai/control-layer/issues/939)) ([070fbaa](https://github.com/doublewordai/control-layer/commit/070fbaaf3a5166e56390fb8ac780dd9ab4e8817e)) ## [8.34.0](https://github.com/doublewordai/control-layer/compare/v8.33.4...v8.34.0) (2026-04-09) ### Features * external connections ([#956](https://github.com/doublewordai/control-layer/issues/956)) ([61df97b](https://github.com/doublewordai/control-layer/commit/61df97b20e7895d9f01224b9d37a222400abcb35)) ## [8.33.4](https://github.com/doublewordai/control-layer/compare/v8.33.3...v8.33.4) (2026-04-09) ### Bug Fixes * update cost names ([#963](https://github.com/doublewordai/control-layer/issues/963)) ([a671cde](https://github.com/doublewordai/control-layer/commit/a671cde8a491cecc3832b9c27e2a5ad9c810a70d)) ## [8.33.3](https://github.com/doublewordai/control-layer/compare/v8.33.2...v8.33.3) (2026-04-08) ### Bug Fixes * allow standard users to read all provider display configs ([#959](https://github.com/doublewordai/control-layer/issues/959)) ([8b9ae4e](https://github.com/doublewordai/control-layer/commit/8b9ae4e5e12e1f2acd8334eaccc8aaa04116ca1c)) ## [8.33.2](https://github.com/doublewordai/control-layer/compare/v8.33.1...v8.33.2) (2026-04-07) ### Bug Fixes * autotopup fixes ([#940](https://github.com/doublewordai/control-layer/issues/940)) ([ab79595](https://github.com/doublewordai/control-layer/commit/ab795952ed0ab73bc402d84ee9b669df34905f27)) * bump fusillade for new reassembler ([#958](https://github.com/doublewordai/control-layer/issues/958)) ([be5d4aa](https://github.com/doublewordai/control-layer/commit/be5d4aa7ba9f52dda5f2a883863942cca47eb704)) ## [8.33.1](https://github.com/doublewordai/control-layer/compare/v8.33.0...v8.33.1) (2026-04-07) ### Bug Fixes * allow standard users to load provider display configs ([#950](https://github.com/doublewordai/control-layer/issues/950)) ([ae649e6](https://github.com/doublewordai/control-layer/commit/ae649e6bed6eab1633c0b1b5d414512f904c8e9a)) ## [8.33.0](https://github.com/doublewordai/control-layer/compare/v8.32.1...v8.33.0) (2026-04-02) ### Features * add live reload for config.yaml ([#879](https://github.com/doublewordai/control-layer/issues/879)) ([7394715](https://github.com/doublewordai/control-layer/commit/73947151b95b8ca403eff6a33f8b851573516543)) * add provider display configuration to model catalog ([#945](https://github.com/doublewordai/control-layer/issues/945)) ([ad14021](https://github.com/doublewordai/control-layer/commit/ad14021f92c7b6c13cad14b7f06b7dfdd6ad9ebd)) ## [8.32.1](https://github.com/doublewordai/control-layer/compare/v8.32.0...v8.32.1) (2026-03-31) ### Bug Fixes * update personal domain list ([#943](https://github.com/doublewordai/control-layer/issues/943)) ([b29cd0a](https://github.com/doublewordai/control-layer/commit/b29cd0a7a1ada44ceec50467a8dbc9c08efd046e)) ## [8.32.0](https://github.com/doublewordai/control-layer/compare/v8.31.1...v8.32.0) (2026-03-31) ### Features * org auto-enrollment ([#938](https://github.com/doublewordai/control-layer/issues/938)) ([2563db3](https://github.com/doublewordai/control-layer/commit/2563db35e29c20027b18fa27436ab5778a8e7ec9)) * self serve orgs ([#936](https://github.com/doublewordai/control-layer/issues/936)) ([ab8b48f](https://github.com/doublewordai/control-layer/commit/ab8b48fcc9edc52ba9c17983ee7338aaba71675c)) ## [8.31.1](https://github.com/doublewordai/control-layer/compare/v8.31.0...v8.31.1) (2026-03-31) ### Bug Fixes * Handle errors appearing in sse streams ([#934](https://github.com/doublewordai/control-layer/issues/934)) ([dce40fa](https://github.com/doublewordai/control-layer/commit/dce40faa9db51322de3f610ef1976e94cf26d9d5)) ## [8.31.0](https://github.com/doublewordai/control-layer/compare/v8.30.2...v8.31.0) (2026-03-31) ### Features * migration to allow multiple orgs with same email ([#933](https://github.com/doublewordai/control-layer/issues/933)) ([f2f3a16](https://github.com/doublewordai/control-layer/commit/f2f3a169603849de03f60b4412ad7bd2cc925dc6)) ## [8.30.2](https://github.com/doublewordai/control-layer/compare/v8.30.1...v8.30.2) (2026-03-31) ### Bug Fixes * bump fusillade 14.2.0 ([#931](https://github.com/doublewordai/control-layer/issues/931)) ([81d7b6b](https://github.com/doublewordai/control-layer/commit/81d7b6b7edde045f7530ce0800fb4b41cab70d56)) ## [8.30.1](https://github.com/doublewordai/control-layer/compare/v8.30.0...v8.30.1) (2026-03-30) ### Bug Fixes * bump fusillade 14.1.0 ([#929](https://github.com/doublewordai/control-layer/issues/929)) ([9273a82](https://github.com/doublewordai/control-layer/commit/9273a82965c7ffd67ad235a7735c0d7b51102ca2)) * support fusillade 14.0.1 file stream handling ([#927](https://github.com/doublewordai/control-layer/issues/927)) ([17c05cd](https://github.com/doublewordai/control-layer/commit/17c05cd756372c9b9b8b22d8da6121f7f9cf5d7e)) ## [8.30.0](https://github.com/doublewordai/control-layer/compare/v8.29.0...v8.30.0) (2026-03-27) ### Features * Add underway as job handler, and move batch creation to it ([#914](https://github.com/doublewordai/control-layer/issues/914)) ([bb90e58](https://github.com/doublewordai/control-layer/commit/bb90e58cebd961c236073148ca3d615364e9b11e)) * fusillade fair usage ([#923](https://github.com/doublewordai/control-layer/issues/923)) ([26c3da7](https://github.com/doublewordai/control-layer/commit/26c3da70b5037f84cf592c4e9b9c0cb08cd46dc9)) ## [8.29.0](https://github.com/doublewordai/control-layer/compare/v8.28.1...v8.29.0) (2026-03-26) ### Features * org notification settings in api handlers ([#921](https://github.com/doublewordai/control-layer/issues/921)) ([05d2051](https://github.com/doublewordai/control-layer/commit/05d2051004386a569cbc7676a05f7869aff65d6e)) ## [8.28.1](https://github.com/doublewordai/control-layer/compare/v8.28.0...v8.28.1) (2026-03-25) ### Bug Fixes * batch streaming ([#909](https://github.com/doublewordai/control-layer/issues/909)) ([3c6ce8d](https://github.com/doublewordai/control-layer/commit/3c6ce8db9a5bad3c95f2bf2874aeb4f02881396b)) ## [8.28.0](https://github.com/doublewordai/control-layer/compare/v8.27.1...v8.28.0) (2026-03-24) ### Features * platform webhooks extension ([#902](https://github.com/doublewordai/control-layer/issues/902)) ([1a8a0cf](https://github.com/doublewordai/control-layer/commit/1a8a0cf42725dc06a97b9220fe89757c0e4c4efc)) ### Bug Fixes * enrich 402 when balance <= 0 ([#859](https://github.com/doublewordai/control-layer/issues/859)) ([3ed3703](https://github.com/doublewordai/control-layer/commit/3ed37030d8c65607e045da4d5f8efeefe4db19de)) * error realtime usage ([#913](https://github.com/doublewordai/control-layer/issues/913)) ([6ffa10d](https://github.com/doublewordai/control-layer/commit/6ffa10ddd16038d1216dfbd5a4e8e1d2690b6de0)) ## [8.27.1](https://github.com/doublewordai/control-layer/compare/v8.27.0...v8.27.1) (2026-03-20) ### Bug Fixes * show realtime data in usage reports ([#904](https://github.com/doublewordai/control-layer/issues/904)) ([56f3ae9](https://github.com/doublewordai/control-layer/commit/56f3ae9f48099fd6f1545d401c548dc818f2fc8e)) ## [8.27.0](https://github.com/doublewordai/control-layer/compare/v8.26.0...v8.27.0) (2026-03-19) ### Features * simplify cli callback ([#906](https://github.com/doublewordai/control-layer/issues/906)) ([dd8ad43](https://github.com/doublewordai/control-layer/commit/dd8ad43f0f015cf914e7aedd4098254d2ad2378f)) ## [8.26.0](https://github.com/doublewordai/control-layer/compare/v8.25.0...v8.26.0) (2026-03-19) ### Features * move cli callback endpoint ([#903](https://github.com/doublewordai/control-layer/issues/903)) ([e89ff16](https://github.com/doublewordai/control-layer/commit/e89ff16dc1789579e583083890262526de9d33c0)) ## [8.25.0](https://github.com/doublewordai/control-layer/compare/v8.24.0...v8.25.0) (2026-03-19) ### Features * Add CLI login callback endpoint for browser-based authentication ([#897](https://github.com/doublewordai/control-layer/issues/897)) ([cc07cc1](https://github.com/doublewordai/control-layer/commit/cc07cc135906ad93f23e78f06ffb2f964200907d)) ### Bug Fixes * bump onwards ([#901](https://github.com/doublewordai/control-layer/issues/901)) ([b561664](https://github.com/doublewordai/control-layer/commit/b561664757973302d569d698fa11a758cb87a56d)) ## [8.24.0](https://github.com/doublewordai/control-layer/compare/v8.23.0...v8.24.0) (2026-03-19) ### Features * Enable requests to be streamed for specific endpoints ([#877](https://github.com/doublewordai/control-layer/issues/877)) ([93dbb75](https://github.com/doublewordai/control-layer/commit/93dbb759c6b792842d8748e01ad47e03e5f81032)) ## [8.23.0](https://github.com/doublewordai/control-layer/compare/v8.22.3...v8.23.0) (2026-03-18) ### Features * member_id in create key for PMs + attribute PM keys to PM when not specified ([#890](https://github.com/doublewordai/control-layer/issues/890)) ([6b543c2](https://github.com/doublewordai/control-layer/commit/6b543c2a123bb7ece7d4c9aff399ed7625dd3463)) * removed mailto and added create organization request to support ([#891](https://github.com/doublewordai/control-layer/issues/891)) ([9d82115](https://github.com/doublewordai/control-layer/commit/9d8211508b9041cd2cc8adf18327663ff9963f5b)) ### Bug Fixes * pass the api key to create batch, for which it should use for all of its requests ([#885](https://github.com/doublewordai/control-layer/issues/885)) ([35e04b7](https://github.com/doublewordai/control-layer/commit/35e04b77b6a2b5ba6c1950ab7b70d90701278d7d)) ## [8.22.3](https://github.com/doublewordai/control-layer/compare/v8.22.2...v8.22.3) (2026-03-16) ### Bug Fixes * bump onwards ([#892](https://github.com/doublewordai/control-layer/issues/892)) ([861ca70](https://github.com/doublewordai/control-layer/commit/861ca70a1dda9076cf8d1025073717f6685c9c92)) ## [8.22.2](https://github.com/doublewordai/control-layer/compare/v8.22.1...v8.22.2) (2026-03-16) ### Bug Fixes * **dwctl:** pick up onwards 0.21.0 opt-in server-side tool calling ([#888](https://github.com/doublewordai/control-layer/issues/888)) ([49494d3](https://github.com/doublewordai/control-layer/commit/49494d338166f562f528f6b59465dab71d46db69)) ## [8.22.1](https://github.com/doublewordai/control-layer/compare/v8.22.0...v8.22.1) (2026-03-16) ### Bug Fixes * orgs need batch permissions so we can make batches as an org via the api ([#872](https://github.com/doublewordai/control-layer/issues/872)) ([efc8ae0](https://github.com/doublewordai/control-layer/commit/efc8ae0d429e20a67dd9d2f8aa6a1f2f94bd6e47)) ## [8.22.0](https://github.com/doublewordai/control-layer/compare/v8.21.0...v8.22.0) (2026-03-16) ### Features * **dwctl:** server-side tool calling backend ([#878](https://github.com/doublewordai/control-layer/issues/878)) ([1ff4c56](https://github.com/doublewordai/control-layer/commit/1ff4c5665ff6000f73b54d76581038829de44458)) ## [8.21.0](https://github.com/doublewordai/control-layer/compare/v8.20.0...v8.21.0) (2026-03-16) ### Features * server side active first sorting ([#864](https://github.com/doublewordai/control-layer/issues/864)) ([5b6dfd7](https://github.com/doublewordai/control-layer/commit/5b6dfd75562cd3ee066ec23d84dbc625c8753f31)) ## [8.20.0](https://github.com/doublewordai/control-layer/compare/v8.19.2...v8.20.0) (2026-03-15) ### Features * bill based on completion time ([#876](https://github.com/doublewordai/control-layer/issues/876)) ([88e923d](https://github.com/doublewordai/control-layer/commit/88e923dc7af2238f61b3f58dcb42c4ec147bacb4)) ## [8.19.2](https://github.com/doublewordai/control-layer/compare/v8.19.1...v8.19.2) (2026-03-12) ### Bug Fixes * allow emoty string cookie domain, which is transformed to none ([#873](https://github.com/doublewordai/control-layer/issues/873)) ([599606d](https://github.com/doublewordai/control-layer/commit/599606d876026817c5ee82ab9d5729288aaaaa68)) ## [8.19.1](https://github.com/doublewordai/control-layer/compare/v8.19.0...v8.19.1) (2026-03-12) ### Bug Fixes * optional domain for active org cookie ([#868](https://github.com/doublewordai/control-layer/issues/868)) ([36dd297](https://github.com/doublewordai/control-layer/commit/36dd297f346a351a339081d0ae68305775ed476e)) ## [8.19.0](https://github.com/doublewordai/control-layer/compare/v8.18.1...v8.19.0) (2026-03-12) ### Features * add trace_id to http_analytics ([#865](https://github.com/doublewordai/control-layer/issues/865)) ([fb56e2f](https://github.com/doublewordai/control-layer/commit/fb56e2fe8454045578874d7feff6532c204e678b)) * org-scoped batch/file filtering with metadata enrichment ([#839](https://github.com/doublewordai/control-layer/issues/839)) ([000fcef](https://github.com/doublewordai/control-layer/commit/000fcef23d353c29122722d0a99a1d51d46f17bf)) ### Bug Fixes * Split timeouts ([#833](https://github.com/doublewordai/control-layer/issues/833)) ([7b5d78f](https://github.com/doublewordai/control-layer/commit/7b5d78f5e5c752c2fd92d89cfe9c719a3570b41e)) ## [8.18.1](https://github.com/doublewordai/control-layer/compare/v8.18.0...v8.18.1) (2026-03-11) ### Bug Fixes * check recent last_login + store onboarded in browser ([#860](https://github.com/doublewordai/control-layer/issues/860)) ([af6d8d6](https://github.com/doublewordai/control-layer/commit/af6d8d6bea9cd96d2297929123807d650b6251b6)) ## [8.18.0](https://github.com/doublewordai/control-layer/compare/v8.17.1...v8.18.0) (2026-03-11) ### Features * allow email reuse in orgs with updated unique indx on user emails ([#853](https://github.com/doublewordai/control-layer/issues/853)) ([f4ca358](https://github.com/doublewordai/control-layer/commit/f4ca358e7a2770fe27e7f1be960f82925b9e1949)) * migration to allow org members to have the same api key name ([#857](https://github.com/doublewordai/control-layer/issues/857)) ([09b6001](https://github.com/doublewordai/control-layer/commit/09b600185dd2034189872f637b935154a304be8e)) * use last_login column to detect first login and redirect onboarding ([#835](https://github.com/doublewordai/control-layer/issues/835)) ([45f5138](https://github.com/doublewordai/control-layer/commit/45f5138b4056abe4e357404cd19242dc498c0900)) ### Bug Fixes * make get_pending_request_counts count processing and claimed too ([#836](https://github.com/doublewordai/control-layer/issues/836)) ([ae6fbda](https://github.com/doublewordai/control-layer/commit/ae6fbdaccba01ac893abfc5baf8f4d8076be0ddc)) ## [8.17.1](https://github.com/doublewordai/control-layer/compare/v8.17.0...v8.17.1) (2026-03-11) ### Bug Fixes * validate org balance at batch creation when in org context ([#848](https://github.com/doublewordai/control-layer/issues/848)) ([97884f9](https://github.com/doublewordai/control-layer/commit/97884f945349da75b09bcb26d66a746b3f9b4ebc)) ## [8.17.0](https://github.com/doublewordai/control-layer/compare/v8.16.4...v8.17.0) (2026-03-11) ### Features * tracing enrichment — span prefixes, dep bumps, stack size fix ([#842](https://github.com/doublewordai/control-layer/issues/842)) ([1b19a32](https://github.com/doublewordai/control-layer/commit/1b19a32a586c9a34e22b20253941eb2d7beff9f3)) ## [8.16.4](https://github.com/doublewordai/control-layer/compare/v8.16.3...v8.16.4) (2026-03-11) ### Bug Fixes * bump fusillade to 8.1.1 for claim query orphaned batch fix ([#846](https://github.com/doublewordai/control-layer/issues/846)) ([92976ef](https://github.com/doublewordai/control-layer/commit/92976ef00a05845ae76bd906c96b385271649be8)) ## [8.16.3](https://github.com/doublewordai/control-layer/compare/v8.16.2...v8.16.3) (2026-03-11) ### Bug Fixes * trigger release for fusillade 8.1.0 claim performance fix ([#844](https://github.com/doublewordai/control-layer/issues/844)) ([b04a194](https://github.com/doublewordai/control-layer/commit/b04a19406c0af84f8080367da7829623b279b785)) ## [8.16.2](https://github.com/doublewordai/control-layer/compare/v8.16.1...v8.16.2) (2026-03-11) ### Bug Fixes * populate all deployed models in daemon capacity limits ([#837](https://github.com/doublewordai/control-layer/issues/837)) ([b2a0f87](https://github.com/doublewordai/control-layer/commit/b2a0f87d8b5ccb58c73f4bafae4438141ecaef39)) ## [8.16.1](https://github.com/doublewordai/control-layer/compare/v8.16.0...v8.16.1) (2026-03-10) ### Bug Fixes * allow users to trigger a batch within their org ([#831](https://github.com/doublewordai/control-layer/issues/831)) ([974534b](https://github.com/doublewordai/control-layer/commit/974534b2635037e779ba773f18ab1aad46a4b6fd)) ## [8.16.0](https://github.com/doublewordai/control-layer/compare/v8.15.6...v8.16.0) (2026-03-10) ### Features * auto top-up monthly spending limit ([#815](https://github.com/doublewordai/control-layer/issues/815)) ([6a0ab3a](https://github.com/doublewordai/control-layer/commit/6a0ab3a9163f8d768acdd5c2e2a39cc0a2a0daac)) ### Bug Fixes * bump onwards to 0.18.6 — preserve error code in strict mode ([#830](https://github.com/doublewordai/control-layer/issues/830)) ([2c9e2b4](https://github.com/doublewordai/control-layer/commit/2c9e2b454d6f4fa2dfc5896f899fc4768809e468)) ## [8.15.6](https://github.com/doublewordai/control-layer/compare/v8.15.5...v8.15.6) (2026-03-10) ### Bug Fixes * warn when composite model has no enabled components (503) ([#827](https://github.com/doublewordai/control-layer/issues/827)) ([1253166](https://github.com/doublewordai/control-layer/commit/1253166aa34f410576e97d69bd2a5439ceb23953)) ## [8.15.5](https://github.com/doublewordai/control-layer/compare/v8.15.4...v8.15.5) (2026-03-09) ### Bug Fixes * keep composite models in routing table when all components disabled ([#823](https://github.com/doublewordai/control-layer/issues/823)) ([f242540](https://github.com/doublewordai/control-layer/commit/f2425409d21617a9d713fddb3a023fb78031e0b2)) ## [8.15.4](https://github.com/doublewordai/control-layer/compare/v8.15.3...v8.15.4) (2026-03-09) ### Bug Fixes * bump onwards to 0.18.4 ([#821](https://github.com/doublewordai/control-layer/issues/821)) ([a4aa262](https://github.com/doublewordai/control-layer/commit/a4aa262bc80b21d7ab116129932fbfdb793e10f1)) ## [8.15.3](https://github.com/doublewordai/control-layer/compare/v8.15.2...v8.15.3) (2026-03-09) ### Bug Fixes * disambiguate scaled-down backend errors from upstream failures ([#819](https://github.com/doublewordai/control-layer/issues/819)) ([d9dc31f](https://github.com/doublewordai/control-layer/commit/d9dc31f10a1d1b44c8957a8021dde6cbb6986571)) ## [8.15.2](https://github.com/doublewordai/control-layer/compare/v8.15.1...v8.15.2) (2026-03-08) ### Bug Fixes * validate endpoint-to-model-type matching in batch file uploads ([#813](https://github.com/doublewordai/control-layer/issues/813)) ([817cc03](https://github.com/doublewordai/control-layer/commit/817cc032cbd8ae1964181d53bc1ee6ad7016d42c)) ## [8.15.1](https://github.com/doublewordai/control-layer/compare/v8.15.0...v8.15.1) (2026-03-06) ### Bug Fixes * cookie sync + file owner balance check ([#810](https://github.com/doublewordai/control-layer/issues/810)) ([da4a88e](https://github.com/doublewordai/control-layer/commit/da4a88e204cca9cc03f5ff01b819857694c160c4)) ## [8.15.0](https://github.com/doublewordai/control-layer/compare/v8.14.0...v8.15.0) (2026-03-06) ### Features * auto top-up for credit balances ([#805](https://github.com/doublewordai/control-layer/issues/805)) ([957a1d5](https://github.com/doublewordai/control-layer/commit/957a1d53e6d3d53873e4e8db8270833846534bbd)) ## [8.14.0](https://github.com/doublewordai/control-layer/compare/v8.13.0...v8.14.0) (2026-03-06) ### Features * add server-side filtering, sorting, and facets for models API ([#804](https://github.com/doublewordai/control-layer/issues/804)) ([a716b95](https://github.com/doublewordai/control-layer/commit/a716b95a62de2c60ec2d51743964f76e8b90e9cb)) * migration and initial organisation backend infrastructure ([#797](https://github.com/doublewordai/control-layer/issues/797)) ([df159d9](https://github.com/doublewordai/control-layer/commit/df159d9d740992250b0e8532145686a68d6e5264)) * organisation invites + views ([#801](https://github.com/doublewordai/control-layer/issues/801)) ([5ed7561](https://github.com/doublewordai/control-layer/commit/5ed7561c7f004eab533887bebc353cda39f4597b)) ## [8.13.0](https://github.com/doublewordai/control-layer/compare/v8.12.0...v8.13.0) (2026-03-04) ### Features * support legacy /v1/completions endpoint ([#803](https://github.com/doublewordai/control-layer/issues/803)) ([78e1712](https://github.com/doublewordai/control-layer/commit/78e1712c20e5101589cd7f6d6563c75142ea2e03)) ### Bug Fixes * reject batch creation when account balance is negative ([#799](https://github.com/doublewordai/control-layer/issues/799)) ([64fa3f0](https://github.com/doublewordai/control-layer/commit/64fa3f0e7a8c6735464c42cf9da9166a1de5bbaf)) ## [8.12.0](https://github.com/doublewordai/control-layer/compare/v8.11.0...v8.12.0) (2026-03-03) ### Features * Notify on low balance ([#786](https://github.com/doublewordai/control-layer/issues/786)) ([f77e436](https://github.com/doublewordai/control-layer/commit/f77e43694fd907238834630e5cfa28ab6083d68d)) ## [8.11.0](https://github.com/doublewordai/control-layer/compare/v8.10.2...v8.11.0) (2026-03-03) ### Features * add model catalog metadata (JSONB) ([#790](https://github.com/doublewordai/control-layer/issues/790)) ([8a7c2f3](https://github.com/doublewordai/control-layer/commit/8a7c2f3b9c53f5af245af6831bd431b01e9b14d4)) ### Bug Fixes * always run batch completion poller for finalization ([#788](https://github.com/doublewordai/control-layer/issues/788)) ([1129bf5](https://github.com/doublewordai/control-layer/commit/1129bf56077c5073a441dff88fd139fd8053424e)) * give sample files to oauth users ([#782](https://github.com/doublewordai/control-layer/issues/782)) ([fcbc342](https://github.com/doublewordai/control-layer/commit/fcbc342f57bb1a3ad74e5139ab69887ffca5b8d1)) * set system API key purpose to platform for admin API access ([#778](https://github.com/doublewordai/control-layer/issues/778)) ([acf36c6](https://github.com/doublewordai/control-layer/commit/acf36c6ef9224b957f348d73336035df1d83df22)) ## [8.10.2](https://github.com/doublewordai/control-layer/compare/v8.10.1...v8.10.2) (2026-02-27) ### Bug Fixes * bump onwards to 0.18.1 ([#780](https://github.com/doublewordai/control-layer/issues/780)) ([e06f05c](https://github.com/doublewordai/control-layer/commit/e06f05cae038b197665e15bead5ce627fde45dfd)) ## [8.10.1](https://github.com/doublewordai/control-layer/compare/v8.10.0...v8.10.1) (2026-02-26) ### Bug Fixes * dont mark as finalising if the batch is marked failed ([#775](https://github.com/doublewordai/control-layer/issues/775)) ([1beb646](https://github.com/doublewordai/control-layer/commit/1beb646096d9e3324b5f6c284cf4d6e7a670d5f3)) ## [8.10.0](https://github.com/doublewordai/control-layer/compare/v8.9.0...v8.10.0) (2026-02-25) ### Features * **dashboard:** use searchable combobox for redirect target ([#770](https://github.com/doublewordai/control-layer/issues/770)) ([0b3abb9](https://github.com/doublewordai/control-layer/commit/0b3abb9a1431e0525d6dd6e81936bdfc36dd9b18)) ### Bug Fixes * allow decimal throughput input ([#773](https://github.com/doublewordai/control-layer/issues/773)) ([109ddb9](https://github.com/doublewordai/control-layer/commit/109ddb9cedc209ea88e6c38ec80a1c87dc5eb7e4)) * Bump onwards 0.18.0 ([#774](https://github.com/doublewordai/control-layer/issues/774)) ([1894bdb](https://github.com/doublewordai/control-layer/commit/1894bdbcb55fa44a36d3241fcd32d344f69da130)) ## [8.9.0](https://github.com/doublewordai/control-layer/compare/v8.8.1...v8.9.0) (2026-02-24) ### Features * User usage dashboard ([#729](https://github.com/doublewordai/control-layer/issues/729)) ([34ca712](https://github.com/doublewordai/control-layer/commit/34ca712fdf750cc529bc9ede9842af0abca276cf)) ### Bug Fixes * Logging cleanup ([#764](https://github.com/doublewordai/control-layer/issues/764)) ([3a44a05](https://github.com/doublewordai/control-layer/commit/3a44a057354a5ef2e037d03158bd524ec35d75b1)) ## [8.8.1](https://github.com/doublewordai/control-layer/compare/v8.8.0...v8.8.1) (2026-02-24) ### Bug Fixes * align strict mode mount point with non-strict mode ([#767](https://github.com/doublewordai/control-layer/issues/767)) ([c8d8b6a](https://github.com/doublewordai/control-layer/commit/c8d8b6aa0db93636e778e33bf5168eba9ddef9eb)) ## [8.8.0](https://github.com/doublewordai/control-layer/compare/v8.7.1...v8.8.0) (2026-02-24) ### Features * **dashboard:** add traffic routing rules and batch window UI ([#763](https://github.com/doublewordai/control-layer/issues/763)) ([adcfc96](https://github.com/doublewordai/control-layer/commit/adcfc960e43eacbc079cc366b8efafbd1be0a908)) * **deployments:** filter batch tariffs by allowed completion windows ([#759](https://github.com/doublewordai/control-layer/issues/759)) ([3190e81](https://github.com/doublewordai/control-layer/commit/3190e81f90f274576cd13200564324c7eeb9fe01)) * per completion window, acceptance relaxation factors ([#742](https://github.com/doublewordai/control-layer/issues/742)) ([15e5021](https://github.com/doublewordai/control-layer/commit/15e5021aa1ae08d923438c0623f953ebc667dc9f)) ### Bug Fixes * use fallback serialisation to extract model name where possible if deserialisation into standard openai type fails. ([#757](https://github.com/doublewordai/control-layer/issues/757)) ([e535e73](https://github.com/doublewordai/control-layer/commit/e535e732c1e7a784cae69996046e21b57846664e)) ## [8.7.1](https://github.com/doublewordai/control-layer/compare/v8.7.0...v8.7.1) (2026-02-24) ### Bug Fixes * if statement in release ([#760](https://github.com/doublewordai/control-layer/issues/760)) ([00b5f16](https://github.com/doublewordai/control-layer/commit/00b5f163d0970652757589681bfd904f224057eb)) ## [8.7.0](https://github.com/doublewordai/control-layer/compare/v8.6.0...v8.7.0) (2026-02-24) ### Features * add trusted provider flag for strict mode response sanitization ([#724](https://github.com/doublewordai/control-layer/issues/724)) ([1fb3703](https://github.com/doublewordai/control-layer/commit/1fb3703139d587220154ab56e5e237173a31eb12)) * **billing:** add token usage extraction for OpenAI Responses API ([#753](https://github.com/doublewordai/control-layer/issues/753)) ([2258d24](https://github.com/doublewordai/control-layer/commit/2258d24b98efb63f1b9876a58a6affa0e4dc6889)) * edit throughput in UI ([#722](https://github.com/doublewordai/control-layer/issues/722)) ([60fd5ec](https://github.com/doublewordai/control-layer/commit/60fd5ec498db4698f7a15b2f2bc5291e8c404862)) ## [8.6.0](https://github.com/doublewordai/control-layer/compare/v8.5.0...v8.6.0) (2026-02-23) ### Features * per-model traffic routing rules and batch window control ([#743](https://github.com/doublewordai/control-layer/issues/743)) ([7163e75](https://github.com/doublewordai/control-layer/commit/7163e751a7d366929fe57e8f4a4692519c3c7c71)) ### Bug Fixes * **dev:** extra commas in just check ([#750](https://github.com/doublewordai/control-layer/issues/750)) ([12fdf56](https://github.com/doublewordai/control-layer/commit/12fdf56d56eb0108b64e02c39af7f220e79c403a)) ## [8.5.0](https://github.com/doublewordai/control-layer/compare/v8.4.1...v8.5.0) (2026-02-23) ### Features * race condition guard on batch creation ([#723](https://github.com/doublewordai/control-layer/issues/723)) ([34d5340](https://github.com/doublewordai/control-layer/commit/34d5340e2c5afaed63df3c7d80911f7d0050ffdf)) ## [8.4.1](https://github.com/doublewordai/control-layer/compare/v8.4.0...v8.4.1) (2026-02-20) ### Bug Fixes * Parameterise email templates to repair crate publishing ([#719](https://github.com/doublewordai/control-layer/issues/719)) ([4939b12](https://github.com/doublewordai/control-layer/commit/4939b12d0d68e740ff5c646d0ba1c913629c57c0)) ## [8.4.0](https://github.com/doublewordai/control-layer/compare/v8.3.0...v8.4.0) (2026-02-20) ### Features * **playground:** stream reasoning tokens into collapsible thinking block ([#744](https://github.com/doublewordai/control-layer/issues/744)) ([943b9b2](https://github.com/doublewordai/control-layer/commit/943b9b2b6fdc2c1be41d095b6a658de6977d4b10)) ## [8.3.0](https://github.com/doublewordai/control-layer/compare/v8.2.0...v8.3.0) (2026-02-19) ### Features * UI tweaks got merged onto a lost branch ([#740](https://github.com/doublewordai/control-layer/issues/740)) ([1c7445b](https://github.com/doublewordai/control-layer/commit/1c7445be50cddf23bc5ee7fb9950944e4f9bc1e3)) ## [8.2.0](https://github.com/doublewordai/control-layer/compare/v8.1.0...v8.2.0) (2026-02-19) ### Features * persist models page filters across navigations ([#733](https://github.com/doublewordai/control-layer/issues/733)) ([dd7cc9d](https://github.com/doublewordai/control-layer/commit/dd7cc9df24dbb5cfaa744f770767c407e1711e12)) ## [8.1.0](https://github.com/doublewordai/control-layer/compare/v8.0.1...v8.1.0) (2026-02-19) ### Features * make demo mode data more realistic ([#731](https://github.com/doublewordai/control-layer/issues/731)) ([17aa9bf](https://github.com/doublewordai/control-layer/commit/17aa9bf874b1c5251fc6e164d60f9a351fcfc01d)) ### Bug Fixes * advance to step 2 when manually configuring models in edit endpoint modal ([#728](https://github.com/doublewordai/control-layer/issues/728)) ([fdcf360](https://github.com/doublewordai/control-layer/commit/fdcf36051948ea61b478d5ec741824a23b461d90)) * omit Secure attribute from cookies when cookie_secure is false ([#730](https://github.com/doublewordai/control-layer/issues/730)) ([e6f936e](https://github.com/doublewordai/control-layer/commit/e6f936ee0ccd2e62edcfca636668bd85d0cf4631)) ## [8.0.1](https://github.com/doublewordai/control-layer/compare/v8.0.0...v8.0.1) (2026-02-18) ### Bug Fixes * bump onwards to 0.15.1 ([#726](https://github.com/doublewordai/control-layer/issues/726)) ([b567f15](https://github.com/doublewordai/control-layer/commit/b567f1512ebc9ecdfcb719f7f4ff80ca4c0829bc)) ## [8.0.0](https://github.com/doublewordai/control-layer/compare/v7.5.1...v8.0.0) (2026-02-17) ### ⚠ BREAKING CHANGES * move from SLA to Priority ([#711](https://github.com/doublewordai/control-layer/issues/711)) ### Features * add OpenAPI docs for Responses API ([#713](https://github.com/doublewordai/control-layer/issues/713)) ([ec3a49b](https://github.com/doublewordai/control-layer/commit/ec3a49ba2509bf2aa9802916563e09693f70d8df)) * move from SLA to Priority ([#711](https://github.com/doublewordai/control-layer/issues/711)) ([1ee7f63](https://github.com/doublewordai/control-layer/commit/1ee7f63bfdcc88111b3c7f80919eb72bf3e4fe6d)) ## [7.5.1](https://github.com/doublewordai/control-layer/compare/v7.5.0...v7.5.1) (2026-02-17) ### Bug Fixes * bump onwards to 0.14.0 for TCP keepalive ([#720](https://github.com/doublewordai/control-layer/issues/720)) ([54f4d6c](https://github.com/doublewordai/control-layer/commit/54f4d6c35fa853cb0fc86080599fd0d4dbb5b01c)) * escalation and finalization management ([#715](https://github.com/doublewordai/control-layer/issues/715)) ([337810f](https://github.com/doublewordai/control-layer/commit/337810fd61c6230f9ab2e09a6f1395ef1b325533)) * reenable tracing by adding tls support for reqwest 12 ([#718](https://github.com/doublewordai/control-layer/issues/718)) ([cade847](https://github.com/doublewordai/control-layer/commit/cade847530033d6b5204708ff8e66b9800e66bea)) ## [7.5.0](https://github.com/doublewordai/control-layer/compare/v7.4.1...v7.5.0) (2026-02-17) ### Features * support with-replacement sampling for weighted random failover ([#704](https://github.com/doublewordai/control-layer/issues/704)) ([3c4fb9b](https://github.com/doublewordai/control-layer/commit/3c4fb9b97affac993e24595e337a457fe22449d0)) ## [7.4.1](https://github.com/doublewordai/control-layer/compare/v7.4.0...v7.4.1) (2026-02-16) ### Bug Fixes * allow model selection beyond combobox initial list ([#707](https://github.com/doublewordai/control-layer/issues/707)) ([48029ff](https://github.com/doublewordai/control-layer/commit/48029ff38b6f8d80eccb634f12309f3306939a42)), closes [#623](https://github.com/doublewordai/control-layer/issues/623) * clean up log lines + inherit trace id from fusillade ([#706](https://github.com/doublewordai/control-layer/issues/706)) ([6ff2949](https://github.com/doublewordai/control-layer/commit/6ff29496f1497aee317b1b05e90e0043515e9167)) ## [7.4.0](https://github.com/doublewordai/control-layer/compare/v7.3.1...v7.4.0) (2026-02-16) ### Features * Webhooks ([#684](https://github.com/doublewordai/control-layer/issues/684)) ([60d1b4e](https://github.com/doublewordai/control-layer/commit/60d1b4ec2a5fb32cb72ebd7cc3e800cf36294733)) ### Bug Fixes * bump fusillade 5.4.2 ([#705](https://github.com/doublewordai/control-layer/issues/705)) ([f69d132](https://github.com/doublewordai/control-layer/commit/f69d1326742a6f0a31ff77e78c2545414a4e5d4e)) * more reqwest problems with otel ([#689](https://github.com/doublewordai/control-layer/issues/689)) ([8fc1761](https://github.com/doublewordai/control-layer/commit/8fc1761c9a1edcdf15b7974779a8f91f32a5d883)) * Stream usage transform ([#701](https://github.com/doublewordai/control-layer/issues/701)) ([770f281](https://github.com/doublewordai/control-layer/commit/770f2817a4aa729dbe836198522809893ba99160)) ## [7.3.1](https://github.com/doublewordai/control-layer/compare/v7.3.0...v7.3.1) (2026-02-16) ### Bug Fixes * **batch:** support /v1/responses via configured allowlist ([#667](https://github.com/doublewordai/control-layer/issues/667)) ([233c95d](https://github.com/doublewordai/control-layer/commit/233c95dafa69b147e683f2dbe2d31d1a6bb30d40)) * cancel shutdown token before axum graceful shutdown ([#699](https://github.com/doublewordai/control-layer/issues/699)) ([d9f56e7](https://github.com/doublewordai/control-layer/commit/d9f56e73e3e731c0598814057ff1cd0f5b4180f2)) ## [7.3.0](https://github.com/doublewordai/control-layer/compare/v7.2.0...v7.3.0) (2026-02-13) ### Features * New bootstrap content ([#696](https://github.com/doublewordai/control-layer/issues/696)) ([fea21b0](https://github.com/doublewordai/control-layer/commit/fea21b00a20106d4b9573c53ab6ad48c774e399d)) ### Bug Fixes * filter stale daemons from running count in model info ([#697](https://github.com/doublewordai/control-layer/issues/697)) ([6adde1c](https://github.com/doublewordai/control-layer/commit/6adde1cb578665955ca88b6ac3c421ff44e64410)) ## [7.2.0](https://github.com/doublewordai/control-layer/compare/v7.1.0...v7.2.0) (2026-02-13) ### Features * **dashboard:** show per-daemon batch concurrency in model info ([#694](https://github.com/doublewordai/control-layer/issues/694)) ([672901e](https://github.com/doublewordai/control-layer/commit/672901e14a0a125eb6e904a35149e27ef078fb75)) ### Bug Fixes * bump fusillade to 3.5.1 ([#692](https://github.com/doublewordai/control-layer/issues/692)) ([35ef5f8](https://github.com/doublewordai/control-layer/commit/35ef5f86d11230654961513e0ae494e621c4082b)) ## [7.1.0](https://github.com/doublewordai/control-layer/compare/v7.0.1...v7.1.0) (2026-02-13) ### Features * add Prometheus info/gauge metrics for onwards cache state ([#686](https://github.com/doublewordai/control-layer/issues/686)) ([cf9e5ea](https://github.com/doublewordai/control-layer/commit/cf9e5eac2de82f3a498b688f685e641de65afff6)) ### Bug Fixes * add purge config to daemon config structs ([#690](https://github.com/doublewordai/control-layer/issues/690)) ([4ec8c38](https://github.com/doublewordai/control-layer/commit/4ec8c380351bdc8d573e7cad81d5576bc8bfab87)) * stream batch results and file content to prevent OOM ([#662](https://github.com/doublewordai/control-layer/issues/662)) ([765f951](https://github.com/doublewordai/control-layer/commit/765f9511444961357e942427d2a98b3b74caaac5)) ## [7.0.1](https://github.com/doublewordai/control-layer/compare/v7.0.0...v7.0.1) (2026-02-12) ### Bug Fixes * instantiate tls client as the very first thing ([#687](https://github.com/doublewordai/control-layer/issues/687)) ([895cfab](https://github.com/doublewordai/control-layer/commit/895cfab5fd939467597225336292b3b5662c2b29)) ## [7.0.0](https://github.com/doublewordai/control-layer/compare/v6.1.0...v7.0.0) (2026-02-11) ### ⚠ BREAKING CHANGES * email is now its own config, rather than a property of native_auth ([#685](https://github.com/doublewordai/control-layer/issues/685)) * consolidate dashboard URL into single top-level config field ([#677](https://github.com/doublewordai/control-layer/issues/677)) ### Features * add per-request body size limit for batch file uploads ([#674](https://github.com/doublewordai/control-layer/issues/674)) ([6b91ee1](https://github.com/doublewordai/control-layer/commit/6b91ee1aeb76561c92ff0bf0fc4a66a34cc73e70)) * add rate limiting and fallback sync for onwards notifications ([#676](https://github.com/doublewordai/control-layer/issues/676)) ([9f7431d](https://github.com/doublewordai/control-layer/commit/9f7431dd772b1fab682cbf9ba0fbc5af392beb47)) * Consent banner ([#654](https://github.com/doublewordai/control-layer/issues/654)) ([7663d8f](https://github.com/doublewordai/control-layer/commit/7663d8f1ee123306d65eb701a5da1d68c8397ed3)) * consolidate dashboard URL into single top-level config field ([#677](https://github.com/doublewordai/control-layer/issues/677)) ([9480826](https://github.com/doublewordai/control-layer/commit/9480826ee20d819589676b6c3d6f8101d163fe72)) * email is now its own config, rather than a property of native_auth ([#685](https://github.com/doublewordai/control-layer/issues/685)) ([2569bd6](https://github.com/doublewordai/control-layer/commit/2569bd669e7d2bb600f9b075e4e5b3d7ad4495e0)) * lazy-load model analytics on Models page ([#675](https://github.com/doublewordai/control-layer/issues/675)) ([728fb76](https://github.com/doublewordai/control-layer/commit/728fb769bb5a26294df734af0d62eaaec1bf1686)) * Send email notifications to users on batch completions, optionally. Poll batches for completion rather than just calculate on query. ([#659](https://github.com/doublewordai/control-layer/issues/659)) ([00ae12b](https://github.com/doublewordai/control-layer/commit/00ae12bf9f5d6b3fa9da21d052870f1124ba979b)) ### Bug Fixes * align TraceLayer with OpenTelemetry HTTP semantic conventions ([#682](https://github.com/doublewordai/control-layer/issues/682)) ([94e61d2](https://github.com/doublewordai/control-layer/commit/94e61d25c073594bba75fd0caa0278d9b0a19917)) * bump fusillade ([#683](https://github.com/doublewordai/control-layer/issues/683)) ([d7721fb](https://github.com/doublewordai/control-layer/commit/d7721fb16b35ee2de0b53584b9757eece1f284d7)) * path extraction for endpoint access checks must use unstripped paths ([#660](https://github.com/doublewordai/control-layer/issues/660)) ([b796bc2](https://github.com/doublewordai/control-layer/commit/b796bc2f89274e39128afa52ee89fcaef99a8c3f)) * Repair tracing by fixing otel package incompatability; add trace ids back to spans. ([#663](https://github.com/doublewordai/control-layer/issues/663)) ([3a45940](https://github.com/doublewordai/control-layer/commit/3a45940724a7514cf87c7f72692a036dbde2a325)) ## [6.1.0](https://github.com/doublewordai/control-layer/compare/v6.0.0...v6.1.0) (2026-02-09) ### Features * batch acceptance criteria (part 1) ([#658](https://github.com/doublewordai/control-layer/issues/658)) ([61a3f93](https://github.com/doublewordai/control-layer/commit/61a3f93bf156eb34d4efd29b34b779a9efa53a39)) ### Bug Fixes * better handling of large file errors ([#669](https://github.com/doublewordai/control-layer/issues/669)) ([fe44b81](https://github.com/doublewordai/control-layer/commit/fe44b81f09c047e4ad35c2839e06b8ff62ecf905)) * bump fusillade to 5.1.0 ([#672](https://github.com/doublewordai/control-layer/issues/672)) ([c6cda1e](https://github.com/doublewordai/control-layer/commit/c6cda1ee72e406879dfda2128c64e283a6148b42)) * default throughput ([#665](https://github.com/doublewordai/control-layer/issues/665)) ([606a114](https://github.com/doublewordai/control-layer/commit/606a1142fec0ae17adad796fc8237fa1e6d8ca38)) ## [6.0.0](https://github.com/doublewordai/control-layer/compare/v5.0.3...v6.0.0) (2026-02-04) ### ⚠ BREAKING CHANGES * add queue monitoring endpoint for pending request counts ([#636](https://github.com/doublewordai/control-layer/issues/636)) ### Features * add queue monitoring endpoint for pending request counts ([#636](https://github.com/doublewordai/control-layer/issues/636)) ([54829c5](https://github.com/doublewordai/control-layer/commit/54829c544fc5fe68ddc9d5d52f6bc443e092eeb7)) * Improve tracing interconnectedness, make labels consistent ([#642](https://github.com/doublewordai/control-layer/issues/642)) ([1a2a60f](https://github.com/doublewordai/control-layer/commit/1a2a60fd60614aa932f448041680189fe9caf87f)) ### Bug Fixes * pass escalations models into composite models query to give batch API keys access ([#657](https://github.com/doublewordai/control-layer/issues/657)) ([8cb42bf](https://github.com/doublewordai/control-layer/commit/8cb42bf97e8e4b41400eb7cfce4e849ca76b139b)) * tracing verbosity ([#656](https://github.com/doublewordai/control-layer/issues/656)) ([9b5c95e](https://github.com/doublewordai/control-layer/commit/9b5c95e141992534411964a9d3600ad6324b15f7)) ### Performance Improvements * use cargo-chef for Docker build caching ([#632](https://github.com/doublewordai/control-layer/issues/632)) ([bc06586](https://github.com/doublewordai/control-layer/commit/bc06586321e65b87ea639da1a5ccb96fbefad3e9)) ## [5.0.3](https://github.com/doublewordai/control-layer/compare/v5.0.2...v5.0.3) (2026-01-30) ### Bug Fixes * 100 pagination ([#638](https://github.com/doublewordai/control-layer/issues/638)) ([dc06510](https://github.com/doublewordai/control-layer/commit/dc06510a3ef3c2d63ba303d10b737ff3f0752dec)) * don't query all deployments in file estimate ([#641](https://github.com/doublewordai/control-layer/issues/641)) ([ce9b2a5](https://github.com/doublewordai/control-layer/commit/ce9b2a55da4597a152380c3ecd63b02832665303)) ## [5.0.2](https://github.com/doublewordai/control-layer/compare/v5.0.1...v5.0.2) (2026-01-29) ### Bug Fixes * **batches:** use fusillade sla based error filtering from dwctl handlers ([#624](https://github.com/doublewordai/control-layer/issues/624)) ([8812d06](https://github.com/doublewordai/control-layer/commit/8812d06f0ac9b069075290e6325d74802d41738e)) ## [5.0.1](https://github.com/doublewordai/control-layer/compare/v5.0.0...v5.0.1) (2026-01-28) ### Bug Fixes * optimize balance threshold notifications for batch inserts ([#630](https://github.com/doublewordai/control-layer/issues/630)) ([9e39939](https://github.com/doublewordai/control-layer/commit/9e39939a321c29fdfc0d43c0331d10199dfa6d16)) ## [5.0.0](https://github.com/doublewordai/control-layer/compare/v4.1.0...v5.0.0) (2026-01-28) ### ⚠ BREAKING CHANGES * update to fusillade 3.0.1 with route-at-claim-time escalation ([#627](https://github.com/doublewordai/control-layer/issues/627)) ### Features * update to fusillade 3.0.1 with route-at-claim-time escalation ([#627](https://github.com/doublewordai/control-layer/issues/627)) ([21ea357](https://github.com/doublewordai/control-layer/commit/21ea357561b88129c9436801adce1732f70e32aa)) ## [4.1.0](https://github.com/doublewordai/control-layer/compare/v4.0.0...v4.1.0) (2026-01-28) ### Features * decouple analytics from request logging with write-through batching ([#603](https://github.com/doublewordai/control-layer/issues/603)) ([1869a3a](https://github.com/doublewordai/control-layer/commit/1869a3a9b0cf7525a22ce4dc213f4127282c6e46)) ### Bug Fixes * bump fusillade ([#626](https://github.com/doublewordai/control-layer/issues/626)) ([bf8ac6b](https://github.com/doublewordai/control-layer/commit/bf8ac6bd9f001b33f7f991f39bf737f879248c2f)) ## [4.0.0](https://github.com/doublewordai/control-layer/compare/v3.3.1...v4.0.0) (2026-01-27) ### ⚠ BREAKING CHANGES * File limits configuration has been reorganized. ### Features * consolidate file limits config and add max_requests_per_file ([#617](https://github.com/doublewordai/control-layer/issues/617)) ([7bd0ee3](https://github.com/doublewordai/control-layer/commit/7bd0ee304bbb2cefb02afec85f230d824f9daf3c)) ### Bug Fixes * **deps:** update dependency lucide-react to ^0.563.0 ([#621](https://github.com/doublewordai/control-layer/issues/621)) ([52d8e8e](https://github.com/doublewordai/control-layer/commit/52d8e8ea9d5fe224c2ec9beaa5b26c91dcbd65b8)) ## [3.3.1](https://github.com/doublewordai/control-layer/compare/v3.3.0...v3.3.1) (2026-01-27) ### Bug Fixes * sync package-lock.json with package.json ([fa3c491](https://github.com/doublewordai/control-layer/commit/fa3c491a0b25227af8bc9d3efbcb9b13717b28c8)) ## [3.3.0](https://github.com/doublewordai/control-layer/compare/v3.2.0...v3.3.0) (2026-01-27) ### Features * add configurable file upload concurrency limits ([#614](https://github.com/doublewordai/control-layer/issues/614)) ([67065a3](https://github.com/doublewordai/control-layer/commit/67065a36e8deb10554a3b9cf91a176f206e90496)) ### Bug Fixes * **deps:** update dependency lucide-react to ^0.563.0 ([#579](https://github.com/doublewordai/control-layer/issues/579)) ([ff714a2](https://github.com/doublewordai/control-layer/commit/ff714a23bb68d79118cd8d4b35b0576aa1948560)) ## [3.2.0](https://github.com/doublewordai/control-layer/compare/v3.1.2...v3.2.0) (2026-01-27) ### Features * Bootstrap content ([#611](https://github.com/doublewordai/control-layer/issues/611)) ([377e22d](https://github.com/doublewordai/control-layer/commit/377e22ddb39194467012260030be4774439f62e3)) * upgrade fusillade to 2.3.0 ([#613](https://github.com/doublewordai/control-layer/issues/613)) ([28862ff](https://github.com/doublewordai/control-layer/commit/28862ff27d1c2d73eb954a9687f8b3b3755f06e9)) ### Bug Fixes * don't show errors before SLA completion ([#606](https://github.com/doublewordai/control-layer/issues/606)) ([f76fa5f](https://github.com/doublewordai/control-layer/commit/f76fa5f570c23c65a79bf39962f521bd2fb8934b)) ## [3.1.2](https://github.com/doublewordai/control-layer/compare/v3.1.1...v3.1.2) (2026-01-26) ### Bug Fixes * remove cost estimate column from files table ([#609](https://github.com/doublewordai/control-layer/issues/609)) ([1b31dc8](https://github.com/doublewordai/control-layer/commit/1b31dc8db7903209a57342769c257c2e6644560b)) ## [3.1.1](https://github.com/doublewordai/control-layer/compare/v3.1.0...v3.1.1) (2026-01-26) ### Performance Improvements * defer files query until files tab is active on batches page ([#607](https://github.com/doublewordai/control-layer/issues/607)) ([d060328](https://github.com/doublewordai/control-layer/commit/d060328b22bf534e3e7ca35ecd9a28c955aad347)) ## [3.1.0](https://github.com/doublewordai/control-layer/compare/v3.0.1...v3.1.0) (2026-01-26) ### Features * add include=analytics to batches list endpoint ([#602](https://github.com/doublewordai/control-layer/issues/602)) ([36f5ff1](https://github.com/doublewordai/control-layer/commit/36f5ff153ce5c21beba52d73d7dee89c595218b7)) ## [3.0.1](https://github.com/doublewordai/control-layer/compare/v3.0.0...v3.0.1) (2026-01-26) ### Bug Fixes * use eager connection for schema pools to respect min_connections ([#600](https://github.com/doublewordai/control-layer/issues/600)) ([ac96ba0](https://github.com/doublewordai/control-layer/commit/ac96ba05fd32b4ba4e83efa3b53a164a8673ff49)) ## [3.0.0](https://github.com/doublewordai/control-layer/compare/v2.9.2...v3.0.0) (2026-01-26) ### ⚠ BREAKING CHANGES * add runtime config for AI API base URL ([#595](https://github.com/doublewordai/control-layer/issues/595)) ### Features * add pool exhaustion error handling with 503 response ([#597](https://github.com/doublewordai/control-layer/issues/597)) ([80230ac](https://github.com/doublewordai/control-layer/commit/80230ac868b7d964a711f27bdbfc811124d2c388)) * add runtime config for AI API base URL ([#595](https://github.com/doublewordai/control-layer/issues/595)) ([1bda2ff](https://github.com/doublewordai/control-layer/commit/1bda2ff519ee9fb4f29280fdee62df68cdfa4f3b)) * decouple analytics/billing from request logging ([#596](https://github.com/doublewordai/control-layer/issues/596)) ([7846dac](https://github.com/doublewordai/control-layer/commit/7846dac137088ab51aa32a181c3dd7d3fe65e19e)) ### Bug Fixes * remove super-slow log statement in transaction writing ([#599](https://github.com/doublewordai/control-layer/issues/599)) ([443d0f4](https://github.com/doublewordai/control-layer/commit/443d0f46071b2092ea5c8d2875441f0a4defa2c5)) ## [2.9.2](https://github.com/doublewordai/control-layer/compare/v2.9.1...v2.9.2) (2026-01-24) ### Bug Fixes * use get file from primary pool to avoid any internal lag and errors ([#591](https://github.com/doublewordai/control-layer/issues/591)) ([cfa56ef](https://github.com/doublewordai/control-layer/commit/cfa56ef9d8136304cff5205a5c4644dac2961009)) ## [2.9.1](https://github.com/doublewordai/control-layer/compare/v2.9.0...v2.9.1) (2026-01-23) ### Bug Fixes * write pool for get file right after creation, due to tx race conditions ([#588](https://github.com/doublewordai/control-layer/issues/588)) ([3a2b35f](https://github.com/doublewordai/control-layer/commit/3a2b35f4e94f1a77cbf310150d6ac0c24ab02723)) ## [2.9.0](https://github.com/doublewordai/control-layer/compare/v2.8.0...v2.9.0) (2026-01-23) ### Features * add model filtering by group ([#586](https://github.com/doublewordai/control-layer/issues/586)) ([0be0ef3](https://github.com/doublewordai/control-layer/commit/0be0ef336ef0bc5019cbc66fbcf8b92f2ce7b28e)) ## [2.8.0](https://github.com/doublewordai/control-layer/compare/v2.7.2...v2.8.0) (2026-01-23) ### Features * batched inserts in fusillade ([#583](https://github.com/doublewordai/control-layer/issues/583)) ([98bc430](https://github.com/doublewordai/control-layer/commit/98bc430855aada8351226203a2ab11c935868d41)) * speed up tests and simplify database handling, also add read and write pool for outlet ([#580](https://github.com/doublewordai/control-layer/issues/580)) ([51f25af](https://github.com/doublewordai/control-layer/commit/51f25aff0d14575c60867b67582eade80e902e9b)) ## [2.7.2](https://github.com/doublewordai/control-layer/compare/v2.7.1...v2.7.2) (2026-01-22) ### Bug Fixes * handle search path at connection time rather then after ([aa9c796](https://github.com/doublewordai/control-layer/commit/aa9c79648fc5083ee56dacacb679b615dfc059b5)) * make test go zoom, remove sleep behavior in as many unit tests as possible ([#575](https://github.com/doublewordai/control-layer/issues/575)) ([d0adb91](https://github.com/doublewordai/control-layer/commit/d0adb91d8b97d359d50eca1e328aac80f28c20f5)) ## [2.7.1](https://github.com/doublewordai/control-layer/compare/v2.7.0...v2.7.1) (2026-01-21) ### Bug Fixes * revert onwards sync to use main pool due to listen notify ([032b58c](https://github.com/doublewordai/control-layer/commit/032b58cab7afc1ebe65b64e4026722a58aeb54bf)) ## [2.7.0](https://github.com/doublewordai/control-layer/compare/v2.6.0...v2.7.0) (2026-01-21) ### Features * implement read and write connections across handlers and tests ([#569](https://github.com/doublewordai/control-layer/issues/569)) ([405f33d](https://github.com/doublewordai/control-layer/commit/405f33df0c1343979be41e566addb85b7b6710cb)) ## [2.6.0](https://github.com/doublewordai/control-layer/compare/v2.5.2...v2.6.0) (2026-01-21) ### Features * add is_internal, batch_metadata_request_origin columns and remove denormalized PII ([#567](https://github.com/doublewordai/control-layer/issues/567)) ([566824f](https://github.com/doublewordai/control-layer/commit/566824f30054d98621853cdf654d13694f9ef45b)) ### Bug Fixes * better column name and removed unnecessary email join ([#570](https://github.com/doublewordai/control-layer/issues/570)) ([fb8c1e2](https://github.com/doublewordai/control-layer/commit/fb8c1e24b64bb81143104c8a8f5af63bec5c2784)) ## [2.5.2](https://github.com/doublewordai/control-layer/compare/v2.5.1...v2.5.2) (2026-01-21) ### Bug Fixes * add top level replica url to help parsing ([#565](https://github.com/doublewordai/control-layer/issues/565)) ([90882a8](https://github.com/doublewordai/control-layer/commit/90882a8206732903e137337e3bbdded7f39588d5)) ## [2.5.1](https://github.com/doublewordai/control-layer/compare/v2.5.0...v2.5.1) (2026-01-20) ### Bug Fixes * added file upload UX parity to create batch modal ([#563](https://github.com/doublewordai/control-layer/issues/563)) ([c9fc647](https://github.com/doublewordai/control-layer/commit/c9fc64761e14c9f2c50600a6a663ee883229aee7)) ## [2.5.0](https://github.com/doublewordai/control-layer/compare/v2.4.2...v2.5.0) (2026-01-20) ### Features * add replicas to schema database mode and optional parameters to set both replicas independently ([#561](https://github.com/doublewordai/control-layer/issues/561)) ([0cefcfc](https://github.com/doublewordai/control-layer/commit/0cefcfcb130a5af718baa0a02c856b3f2bd34423)) ## [2.4.2](https://github.com/doublewordai/control-layer/compare/v2.4.1...v2.4.2) (2026-01-20) ### Bug Fixes * UX bug responses still showing error ([#557](https://github.com/doublewordai/control-layer/issues/557)) ([a61b6fc](https://github.com/doublewordai/control-layer/commit/a61b6fc23c449ff923a7e46959f2fa290cfd0d07)) ## [2.4.1](https://github.com/doublewordai/control-layer/compare/v2.4.0...v2.4.1) (2026-01-19) ### Bug Fixes * bump fusillade ([#555](https://github.com/doublewordai/control-layer/issues/555)) ([aa0fbfb](https://github.com/doublewordai/control-layer/commit/aa0fbfb4ade75eb6c27f81e2a9b05dbf6bae0a10)) ## [2.4.0](https://github.com/doublewordai/control-layer/compare/v2.3.0...v2.4.0) (2026-01-19) ### Features * remove unique filename constraint on files ([#548](https://github.com/doublewordai/control-layer/issues/548)) ([2a47665](https://github.com/doublewordai/control-layer/commit/2a476658f4521802ecead5bff89bef82cf7eb72c)) ### Bug Fixes * check we'll be able to serialize custom ids at inference time ([#549](https://github.com/doublewordai/control-layer/issues/549)) ([2ba2beb](https://github.com/doublewordai/control-layer/commit/2ba2bebea075ec44c7ae48ab5874ed941324c689)) ## [2.3.0](https://github.com/doublewordai/control-layer/compare/v2.2.0...v2.3.0) (2026-01-19) ### Features * **batches:** show batch creator in platform manager UI ([#541](https://github.com/doublewordai/control-layer/issues/541)) ([bf46658](https://github.com/doublewordai/control-layer/commit/bf46658af06bb502d9f359b24aca150352d67d5d)) ## [2.2.0](https://github.com/doublewordai/control-layer/compare/v2.1.1...v2.2.0) (2026-01-16) ### Features * add sanitization response option in for models ([#542](https://github.com/doublewordai/control-layer/issues/542)) ([77e71f1](https://github.com/doublewordai/control-layer/commit/77e71f13a9519524c53a4f70448aafc011daee9c)) ## [2.1.1](https://github.com/doublewordai/control-layer/compare/v2.1.0...v2.1.1) (2026-01-16) ### Bug Fixes * use exact alias match for tariff lookup ([#544](https://github.com/doublewordai/control-layer/issues/544)) ([5a568de](https://github.com/doublewordai/control-layer/commit/5a568deab85422b1f587de51e013e593060ccd96)) ## [2.1.0](https://github.com/doublewordai/control-layer/compare/v2.0.0...v2.1.0) (2026-01-15) ### Features * trigger deployment on release ([#538](https://github.com/doublewordai/control-layer/issues/538)) ([0a43fe5](https://github.com/doublewordai/control-layer/commit/0a43fe5332b08725fe8f7e8d85d8d95aa33b71ee)) ### Bug Fixes * **dashboard:** pass is_composite filter to models API ([#536](https://github.com/doublewordai/control-layer/issues/536)) ([1ae2181](https://github.com/doublewordai/control-layer/commit/1ae2181be23913cc1710dcd03ad91d4801ec069c)) ## [2.0.0](https://github.com/doublewordai/control-layer/compare/v1.3.0...v2.0.0) (2026-01-15) ### ⚠ BREAKING CHANGES * This release includes composite/virtual models which changes the API surface for model management. ### Features * update Cargo.lock for composite models release ([27da89b](https://github.com/doublewordai/control-layer/commit/27da89b2389cba71f140369d7bcd062c0263c2b0)) ### Bug Fixes * hide virtual model information from non-platform managers ([#534](https://github.com/doublewordai/control-layer/issues/534)) ([281ba66](https://github.com/doublewordai/control-layer/commit/281ba66f1a1e48b6cccfbae31925779f21996369)) ## [1.3.0](https://github.com/doublewordai/control-layer/compare/v1.2.0...v1.3.0) (2026-01-15) ### Features * Batch request origin in metadata and displayed in transactions history ([#530](https://github.com/doublewordai/control-layer/issues/530)) ([d8ad5a3](https://github.com/doublewordai/control-layer/commit/d8ad5a302c75ce5b110f65b63b772924724f8e51)) ## [1.2.0](https://github.com/doublewordai/control-layer/compare/v1.1.2...v1.2.0) (2026-01-15) ### Features * add composite models for weighted provider load balancing ([#532](https://github.com/doublewordai/control-layer/issues/532)) ([93cfbca](https://github.com/doublewordai/control-layer/commit/93cfbca9de7f2dc0d9817330370f3e21125a5130)) * Transaction types ([#518](https://github.com/doublewordai/control-layer/issues/518)) ([c9ddf14](https://github.com/doublewordai/control-layer/commit/c9ddf14912b168e06f5821f57ebf01cd6a849be4)) ### Bug Fixes * sum_recent_transactions_grouped includes batch_aggregates ([#531](https://github.com/doublewordai/control-layer/issues/531)) ([4a50c31](https://github.com/doublewordai/control-layer/commit/4a50c31fada2387724c88cc04326d917fb743d79)) ## [1.1.2](https://github.com/doublewordai/control-layer/compare/v1.1.1...v1.1.2) (2026-01-14) ### Bug Fixes * Billing portal support ([#526](https://github.com/doublewordai/control-layer/issues/526)) ([821845d](https://github.com/doublewordai/control-layer/commit/821845d39e76fb75bafb4d2eec29c0c9083e5979)) ## [1.1.1](https://github.com/doublewordai/control-layer/compare/v1.1.0...v1.1.1) (2026-01-14) ### Bug Fixes * icons ([#522](https://github.com/doublewordai/control-layer/issues/522)) ([2ec4914](https://github.com/doublewordai/control-layer/commit/2ec491454c2aa3242692175a3cf26d2aa6b4b1ef)) * weird stripe api restraint ([#523](https://github.com/doublewordai/control-layer/issues/523)) ([cbe7b3f](https://github.com/doublewordai/control-layer/commit/cbe7b3f06e8a0c87d05f9221eb2f7e4282f2b61e)) ## [1.1.0](https://github.com/doublewordai/control-layer/compare/v1.0.0...v1.1.0) (2026-01-14) ### Features * show both slas on model summaries ([#517](https://github.com/doublewordai/control-layer/issues/517)) ([908688c](https://github.com/doublewordai/control-layer/commit/908688c45435d7df3e5595141c94f0d86e00dbc6)) ### Bug Fixes * return to details and result count links ([#514](https://github.com/doublewordai/control-layer/issues/514)) ([e315fee](https://github.com/doublewordai/control-layer/commit/e315fee4b79f6d179065f9571df03cdd6ef7e1d9)) ## [1.0.0](https://github.com/doublewordai/control-layer/compare/v0.29.0...v1.0.0) (2026-01-13) ### ⚠ BREAKING CHANGES * move to fusillade 1.0.0 and move to model escalations [#513](https://github.com/doublewordai/control-layer/issues/513) ### Features * move to fusillade 1.0.0 and move to model escalations [[#513](https://github.com/doublewordai/control-layer/issues/513)](https://github.com/doublewordai/control-layer/issues/513) ([61ac5e3](https://github.com/doublewordai/control-layer/commit/61ac5e35835f108a28873bc04f728a9e605cad2e)) ### Bug Fixes * move to fusillade 1.0.0 and move to model escalations ([#513](https://github.com/doublewordai/control-layer/issues/513)) ([a01e218](https://github.com/doublewordai/control-layer/commit/a01e21814113f0af6fe85822881a8e69d9b6777c)) ## [0.29.0](https://github.com/doublewordai/control-layer/compare/v0.28.3...v0.29.0) (2026-01-12) ### Features * Batch request results view ([#484](https://github.com/doublewordai/control-layer/issues/484)) ([05fcf6f](https://github.com/doublewordai/control-layer/commit/05fcf6f17a92d8c62ba82d98294e50fc27ddfd49)) ### Bug Fixes * fixed progress bar round down for batch details page also ([#507](https://github.com/doublewordai/control-layer/issues/507)) ([da1dd84](https://github.com/doublewordai/control-layer/commit/da1dd845637af2fc783a10d41c35689ff715012d)) ## [0.28.3](https://github.com/doublewordai/control-layer/compare/v0.28.2...v0.28.3) (2026-01-12) ### Bug Fixes * need to expose certain custom headers when using cors (blocked by bro… ([#505](https://github.com/doublewordai/control-layer/issues/505)) ([dfd7694](https://github.com/doublewordai/control-layer/commit/dfd76942ff5cc3163c2ceec4ce28b3ea9d86396d)) ## [0.28.2](https://github.com/doublewordai/control-layer/compare/v0.28.1...v0.28.2) (2026-01-09) ### Bug Fixes * in processign state, the progress bar pulses, now less aggrressively ([#497](https://github.com/doublewordai/control-layer/issues/497)) ([d87f24a](https://github.com/doublewordai/control-layer/commit/d87f24a84e5f80802be892264dd8d75b9a71744c)) ## [0.28.1](https://github.com/doublewordai/control-layer/compare/v0.28.0...v0.28.1) (2026-01-09) ### Bug Fixes * regenerated sqlx queries ([#495](https://github.com/doublewordai/control-layer/issues/495)) ([1c1f111](https://github.com/doublewordai/control-layer/commit/1c1f111af309cc77a736dc724afb5a12470019a8)) * various search and UI fixes ([#494](https://github.com/doublewordai/control-layer/issues/494)) ([dc99ef2](https://github.com/doublewordai/control-layer/commit/dc99ef28aa0b319616f227b8a18dd4db1f3c5cac)) ## [0.28.0](https://github.com/doublewordai/control-layer/compare/v0.27.1...v0.28.0) (2026-01-09) ### Features * sample file generators ([#468](https://github.com/doublewordai/control-layer/issues/468)) ([0c375c2](https://github.com/doublewordai/control-layer/commit/0c375c237230da8d5859595356d32610bd566672)) ### Bug Fixes * make transaction time filtering server side ([#490](https://github.com/doublewordai/control-layer/issues/490)) ([6e5928e](https://github.com/doublewordai/control-layer/commit/6e5928e8c6b13d067b0de8b0554e882d778893fe)) * removed references to expiry of files, and some UI warnings for large… ([#491](https://github.com/doublewordai/control-layer/issues/491)) ([5ff255d](https://github.com/doublewordai/control-layer/commit/5ff255d45c9169f303ec2d59d28586de67deab21)) ## [0.27.1](https://github.com/doublewordai/control-layer/compare/v0.27.0...v0.27.1) (2026-01-09) ### Bug Fixes * add histogram buckets for fusillade_retry_attempts_on_success ([#488](https://github.com/doublewordai/control-layer/issues/488)) ([2ac41f2](https://github.com/doublewordai/control-layer/commit/2ac41f2b4940eebee5df0cfa36f29f4f898fcccc)) ## [0.27.0](https://github.com/doublewordai/control-layer/compare/v0.26.0...v0.27.0) (2026-01-09) ### Features * add request_origin and batch_sla labels to gen_ai metrics and http_analytics ([#486](https://github.com/doublewordai/control-layer/issues/486)) ([e49b29e](https://github.com/doublewordai/control-layer/commit/e49b29e8feeac392f7eb37c79d83f79c51b76eb9)) ### Bug Fixes * change the ordering of prometheus initialization and background … ([#485](https://github.com/doublewordai/control-layer/issues/485)) ([d3520e1](https://github.com/doublewordai/control-layer/commit/d3520e1a0b4221bd536c06bf92735861dcddb787)) * Jansix UI fixes 2 ([#481](https://github.com/doublewordai/control-layer/issues/481)) ([ee8290c](https://github.com/doublewordai/control-layer/commit/ee8290cd532395e7706e9e829a7cbd4bcce09e6b)) ## [0.26.0](https://github.com/doublewordai/control-layer/compare/v0.25.0...v0.26.0) (2026-01-08) ### Features * improve batch modal UX with filename editing and copy updates ([#478](https://github.com/doublewordai/control-layer/issues/478)) ([a9af15d](https://github.com/doublewordai/control-layer/commit/a9af15dacc68bded996a739f81fdd794fc02e0e3)) ### Bug Fixes * round down in progress % ([#482](https://github.com/doublewordai/control-layer/issues/482)) ([ca42d89](https://github.com/doublewordai/control-layer/commit/ca42d8958e1cdad1a5adcc6bc9f45a9715950414)) * test sla e2e ([#479](https://github.com/doublewordai/control-layer/issues/479)) ([c685cd0](https://github.com/doublewordai/control-layer/commit/c685cd095cf8b7455699b4af7e4e848922999d35)) ## [0.25.0](https://github.com/doublewordai/control-layer/compare/v0.24.3...v0.25.0) (2026-01-08) ### Features * add progress bar for file uploads ([#477](https://github.com/doublewordai/control-layer/issues/477)) ([296a06a](https://github.com/doublewordai/control-layer/commit/296a06a747e94b28f1538c371b2b9dd52587a80c)) ### Bug Fixes * refresh API keys table and make HTML title configurable ([#469](https://github.com/doublewordai/control-layer/issues/469)) ([b7c4538](https://github.com/doublewordai/control-layer/commit/b7c4538ace9e7af6cb9f3197a5367b8fb5a277b2)) ## [0.24.3](https://github.com/doublewordai/control-layer/compare/v0.24.2...v0.24.3) (2026-01-08) ### Bug Fixes * when sending api requests cross origin, need to send credentials ([#474](https://github.com/doublewordai/control-layer/issues/474)) ([d6d2c3c](https://github.com/doublewordai/control-layer/commit/d6d2c3c83fbfab860c60b54b9d716f6e8426fd4c)) ## [0.24.2](https://github.com/doublewordai/control-layer/compare/v0.24.1...v0.24.2) (2026-01-07) ### Bug Fixes * when rerouting to api endpoint, strip /ai prefix to not double up ([727fe8b](https://github.com/doublewordai/control-layer/commit/727fe8bc88df503b873598c5eead61feeb56a484)) ## [0.24.1](https://github.com/doublewordai/control-layer/compare/v0.24.0...v0.24.1) (2026-01-07) ### Bug Fixes * configurable cross-origin for files and batches endpoints ([4717166](https://github.com/doublewordai/control-layer/commit/471716687d67a4a1045cf95c47ddffcff11715cf)) ## [0.24.0](https://github.com/doublewordai/control-layer/compare/v0.23.0...v0.24.0) (2026-01-07) ### Features * batch aggregation optimization for transactions endpoint ([#465](https://github.com/doublewordai/control-layer/issues/465)) ([d567568](https://github.com/doublewordai/control-layer/commit/d5675681083b5d8f76a8d16da26d7dbe1b8af89d)) ### Bug Fixes * Jansix testing fe fixes ([#464](https://github.com/doublewordai/control-layer/issues/464)) ([4492b47](https://github.com/doublewordai/control-layer/commit/4492b4748b9570c158d9e6318251bd2e7c14ce3f)) ## [0.23.0](https://github.com/doublewordai/control-layer/compare/v0.22.0...v0.23.0) (2026-01-07) ### Features * add tracing instrumentation to request serialization flow ([#459](https://github.com/doublewordai/control-layer/issues/459)) ([f8cd68a](https://github.com/doublewordai/control-layer/commit/f8cd68a9ba92b2698b3a6150d6e88d5bc308464b)) * make pool metrics sample interval configurable ([#457](https://github.com/doublewordai/control-layer/issues/457)) ([1bd23c7](https://github.com/doublewordai/control-layer/commit/1bd23c7741f06e9ce422b6d3b4629aca81db2336)) ### Bug Fixes * **deps:** update rust crate fusillade to 0.13.0 ([#462](https://github.com/doublewordai/control-layer/issues/462)) ([b6682dd](https://github.com/doublewordai/control-layer/commit/b6682dd38855660cf5c633061994e595f6e804ae)) ## [0.22.0](https://github.com/doublewordai/control-layer/compare/v0.21.1...v0.22.0) (2026-01-07) ### Features * add analytics processing lag metric ([#449](https://github.com/doublewordai/control-layer/issues/449)) ([6afa7e8](https://github.com/doublewordai/control-layer/commit/6afa7e8bdb75e170cc78e583d9441703c70525b2)) * cache sync & pool metrics ([#454](https://github.com/doublewordai/control-layer/issues/454)) ([8929ec9](https://github.com/doublewordai/control-layer/commit/8929ec965ff5a0b19de80a2fa01bd582a56aa2f2)) ### Bug Fixes * check by externalID for auth_source ([#446](https://github.com/doublewordai/control-layer/issues/446)) ([bf51e28](https://github.com/doublewordai/control-layer/commit/bf51e2893392d24ff32f09c51c5a5285b4772e5a)) * use COALESCE for checkpoint seq comparison to enable index usage ([#448](https://github.com/doublewordai/control-layer/issues/448)) ([48dcfd5](https://github.com/doublewordai/control-layer/commit/48dcfd504207a6dfb83ff1a4c8123266062ef6bc)) ### Performance Improvements * add expression index for http_analytics id::text joins ([#450](https://github.com/doublewordai/control-layer/issues/450)) ([a31f26b](https://github.com/doublewordai/control-layer/commit/a31f26bcc64d045dfb24f37d92e1461b428d53ed)) ## [0.21.1](https://github.com/doublewordai/control-layer/compare/v0.21.0...v0.21.1) (2026-01-06) ### Bug Fixes * compute balance on read instead of on write ([#445](https://github.com/doublewordai/control-layer/issues/445)) ([839373c](https://github.com/doublewordai/control-layer/commit/839373cbc1cfcd9460769649526ad045eabcdb7c)) * Prettier auth source ([#443](https://github.com/doublewordai/control-layer/issues/443)) ([e021696](https://github.com/doublewordai/control-layer/commit/e02169679ec3c1de3863e1acbb263a7d17fade58)) ## [0.21.0](https://github.com/doublewordai/control-layer/compare/v0.20.0...v0.21.0) (2026-01-06) ### Features * add --validate flag and strict config parsing ([#441](https://github.com/doublewordai/control-layer/issues/441)) ([48cc236](https://github.com/doublewordai/control-layer/commit/48cc2366be15d2a9e3caef54ce5fb234257dcf52)) ## [0.20.0](https://github.com/doublewordai/control-layer/compare/v0.19.1...v0.20.0) (2026-01-06) ### Features * support separate databases for fusillade/outlet with optional read replicas ([#433](https://github.com/doublewordai/control-layer/issues/433)) ([8c24cd0](https://github.com/doublewordai/control-layer/commit/8c24cd0d72927cc95b3dc91df5452f5a82a7a4bd)) ### Bug Fixes * **deps:** update rust crate axum-prometheus to 0.10 ([#436](https://github.com/doublewordai/control-layer/issues/436)) ([6472ebf](https://github.com/doublewordai/control-layer/commit/6472ebfdc5e16986e64e32009c465dde9dff5877)) ## [0.19.1](https://github.com/doublewordai/control-layer/compare/v0.19.0...v0.19.1) (2025-12-24) ### Bug Fixes * allow early upload in batch model for cost estimates ([#425](https://github.com/doublewordai/control-layer/issues/425)) ([24bb933](https://github.com/doublewordai/control-layer/commit/24bb9334d42336e055d9015db7bc2fc4e51dcf7b)) * hide view reuest analytics button from users without RequestViewer role ([#427](https://github.com/doublewordai/control-layer/issues/427)) ([c0469f0](https://github.com/doublewordai/control-layer/commit/c0469f0b5d83b603be0c139129431b3873595756)) ## [0.19.0](https://github.com/doublewordai/control-layer/compare/v0.18.3...v0.19.0) (2025-12-22) ### Features * allow intake of multiple SLAs ([#390](https://github.com/doublewordai/control-layer/issues/390)) ([dbe0a47](https://github.com/doublewordai/control-layer/commit/dbe0a47d173dc88bea1db43beab82d2577506802)) * Migrate analytics to http analytics table ([#416](https://github.com/doublewordai/control-layer/issues/416)) ([c5d1253](https://github.com/doublewordai/control-layer/commit/c5d12532ba18a39ab4cb288ff7ff501ce2f5b9ed)) ## [0.18.3](https://github.com/doublewordai/control-layer/compare/v0.18.2...v0.18.3) (2025-12-22) ### Bug Fixes * tidy up openapi docs ([#420](https://github.com/doublewordai/control-layer/issues/420)) ([609adf4](https://github.com/doublewordai/control-layer/commit/609adf4c725abcbfa9849d29ac8532e4e6a6fb81)) ## [0.18.2](https://github.com/doublewordai/control-layer/compare/v0.18.1...v0.18.2) (2025-12-22) ### Bug Fixes * response headers for incomplete output files didnt match the docs ([#406](https://github.com/doublewordai/control-layer/issues/406)) ([e8ea0d1](https://github.com/doublewordai/control-layer/commit/e8ea0d1f07b5326819a2fbf6a3ae1f538d9bf7cc)) ## [0.18.1](https://github.com/doublewordai/control-layer/compare/v0.18.0...v0.18.1) (2025-12-20) ### Bug Fixes * fusillade 0.11.1 ([#413](https://github.com/doublewordai/control-layer/issues/413)) ([fbc68e4](https://github.com/doublewordai/control-layer/commit/fbc68e4aafa4b9ae128d1114e584e158014b1804)) ## [0.18.0](https://github.com/doublewordai/control-layer/compare/v0.17.4...v0.18.0) (2025-12-20) ### Features * expose sla config ([#407](https://github.com/doublewordai/control-layer/issues/407)) ([bda10de](https://github.com/doublewordai/control-layer/commit/bda10de899719cbfb922494ef5e195144de97fb0)) * server-side search and filtering for users, groups, models, batches and files ([#404](https://github.com/doublewordai/control-layer/issues/404)) ([ab065a6](https://github.com/doublewordai/control-layer/commit/ab065a67472d17c1ccd84b3bbc483c18e9f24d88)) ### Bug Fixes * **deps:** update dependency lucide-react to ^0.562.0 ([#398](https://github.com/doublewordai/control-layer/issues/398)) ([105cf52](https://github.com/doublewordai/control-layer/commit/105cf5214c01e9d8bf65312c594528c154b5ae74)) * jsonl sanitization ([#405](https://github.com/doublewordai/control-layer/issues/405)) ([2dc9fef](https://github.com/doublewordai/control-layer/commit/2dc9fef72b2cd395fad5eeee5109211dc819d35b)) * make region + organization optional, remove endpoint filter or standard users ([#409](https://github.com/doublewordai/control-layer/issues/409)) ([496e7ea](https://github.com/doublewordai/control-layer/commit/496e7ea558457d7784d32492d6b31a78176eb297)) * read api key in via env var ([#408](https://github.com/doublewordai/control-layer/issues/408)) ([c13200a](https://github.com/doublewordai/control-layer/commit/c13200a120083841af4a07783fd6536c947ed986)) * Uptime and simplification for standard users ([#412](https://github.com/doublewordai/control-layer/issues/412)) ([18028e0](https://github.com/doublewordai/control-layer/commit/18028e098fccd2dac4c50125f108fda40f5e589f)) ## [0.17.4](https://github.com/doublewordai/control-layer/compare/v0.17.3...v0.17.4) (2025-12-18) ### Bug Fixes * add more permissive cors ([#400](https://github.com/doublewordai/control-layer/issues/400)) ([29003fc](https://github.com/doublewordai/control-layer/commit/29003fcc9a9319f323d655bd03cdc7b846036443)) ## [0.17.3](https://github.com/doublewordai/control-layer/compare/v0.17.2...v0.17.3) (2025-12-18) ### Features * delete batches and fix file cascade ([#396](https://github.com/doublewordai/control-layer/issues/396)) ([86b64b2](https://github.com/doublewordai/control-layer/commit/86b64b2bc088be48fe340e0d2d07efc47a2c819e)) ## [0.17.2](https://github.com/doublewordai/control-layer/compare/v0.17.1...v0.17.2) (2025-12-17) ### Bug Fixes * fusillade 0.8.2 ([#393](https://github.com/doublewordai/control-layer/issues/393)) ([3e5b9b1](https://github.com/doublewordai/control-layer/commit/3e5b9b11b52696a6ac4d71b81237452880f0e101)) ## [0.17.1](https://github.com/doublewordai/control-layer/compare/v0.17.0...v0.17.1) (2025-12-17) ### Bug Fixes * Api batch docs ([#389](https://github.com/doublewordai/control-layer/issues/389)) ([1b99045](https://github.com/doublewordai/control-layer/commit/1b990456f3a64e57cc28ad2b0afc48155a6a07b3)) ## [0.17.0](https://github.com/doublewordai/control-layer/compare/v0.16.0...v0.17.0) (2025-12-17) ### Features * dynamic Model description in model cards layout ([#368](https://github.com/doublewordai/control-layer/issues/368)) ([38adce4](https://github.com/doublewordai/control-layer/commit/38adce40b4b74e6e99ffd14e0a4f36bccbfbc28e)) ### Bug Fixes * clean up model card desc and add read more text ([#378](https://github.com/doublewordai/control-layer/issues/378)) ([7d08b3c](https://github.com/doublewordai/control-layer/commit/7d08b3c67e932fa20e9481b3ad9b38e580bdbc10)) * empty ([#384](https://github.com/doublewordai/control-layer/issues/384)) ([92dcda6](https://github.com/doublewordai/control-layer/commit/92dcda6dc65521954e824c2fad563957a88b5e1f)) * release please dashboard 3 ([#385](https://github.com/doublewordai/control-layer/issues/385)) ([1a83d70](https://github.com/doublewordai/control-layer/commit/1a83d701ee6a9ba6f1fbaafd0f85ea8a1661b8be)) * release please simple ([#387](https://github.com/doublewordai/control-layer/issues/387)) ([d52ea3c](https://github.com/doublewordai/control-layer/commit/d52ea3c6bd2d4c3ef116f0a3e9f7f9c485672a2e)) * release-please includes dashboard ([#381](https://github.com/doublewordai/control-layer/issues/381)) ([67e6f8f](https://github.com/doublewordai/control-layer/commit/67e6f8f4bf65bc343ca6257085b8646c77d184e3)) * sqlx queries ([#377](https://github.com/doublewordai/control-layer/issues/377)) ([2f0481d](https://github.com/doublewordai/control-layer/commit/2f0481d473dec09714f03ccdd8820cf8fd2f852c))