Repository navigation
Releases: LLM-4-People/millivolt
Release list
millivolt 0.4.1
What's included
- 65e96e0 release: bump VERSION to 0.4.1 for the promotion
- 1d6ccaf tests: extract the config provider field mapping checks
- 58710cf tests: extract the config MCP band checks
- dbcb456 tests: extract the config validation and allowlist checks
- c267935 tests: extract the config boot repair and strict load checks
- 1e402bd tests: extract the lenient config overlay helpers and load checks
- aab17a4 tests: extract the config explicit-zero overlay checks
- 7ae4948 tests: extract the config overlay and diff-key checks
- 60925c2 tests: extract the paused and queued SSE keepalive checks
- 6596f9f tests: extract the operator hold and per-send timeout checks
- e58939c tests: extract the theme check modules
- d02bc3d tests: extract the operator pause queueing and hold publication checks
- 26684e2 tests: extract the operator pause timer and persistence checks
- 54f2de5 tests: extract the workflow policy modules
- 73b0705 tests: extract the operator pause hold replacement checks
- 5f84123 tests: keep the static benchmark writer methods in their original group
- c081311 tests: extract the embedded dashboard static load checks
- 8060344 tests: extract the dashboard bootstrap payload and version metadata checks
- 6c13009 tests: extract the gzip middleware and dashboard compression benchmarks
- 1567219 tests: extract the static cache, validator and representation checks
- 3ef7126 tests: extract the dashboard config seed and canonical field contracts
- 57daba3 tests: extract the dashboard shell asset reference and settings module checks
- 6ea6574 tests: extract the dashboard install surface and brand icon checks
- 8bfc52f tests: extract the storage provider rename history checks
- 2c38430 tests: extract the storage writer overflow, close and busy-timeout checks
- cf42b9b tests: extract the storage purge filter, count and export parity checks
- 477a631 tests: extract the storage newest-first query paging checks
- c441166 tests: extract the storage query endpoint and statement guards
- 9dab32b tests: extract the storage migration fixtures and checks
- bba5c9a tests: extract the storage data-version and purge-rebuild checks
- ba24fdc tests: name the debug canary read after its module
- c71b48d scheduler: split the retry send gate into scheduler_send.go
- 1ee5369 scheduler: split pacing state and backoff bounds into scheduler_pacing.go
- c3a49c4 scheduler: split admission and the queue into scheduler_admission.go
- 0a5d5e3 scheduler: split the group index and idle eviction out of scheduler.go
- 00f2b96 tests: extract the browser storm banner and incident checks
- b82d67a web: split the request-log detail drawer out of log.js
- 07156d4 tests: extract the browser theme, viewport and touch checks
- 651ca0a web: split the request-log debug capture out of log.js
- dd96e5a tests: extract the browser incremental width, day and retry hover checks
- 807b6ea web: split the request-log rows out of log.js
- b78f67e web: split the request-log archive window out of log.js
- 1dacae9 docs: describe the ordered lazy settings module set
- 3e88dd8 tests: extract the browser chart and focus checks
- 480daf8 tests: follow the settings backup module in the template canary
- fb33875 tests: extract the browser fixture constants and upstream owner
- 09cd352 docs: follow the split analyzer owners
- f8abd0a storage: split the snapshot owner into encode, admission, preflight, recover, scan, merge and inspect modules
- 9b0ad35 docs: follow the split chrome owners after the shell split
- 7973ca5 sse: split the analyzer into decode, feed, usage, terminal, error, fill and report modules
- 5d6a9cc format: split the Responses codec into modules
- f5a20fc format: split the Anthropic Messages codec into modules
- ea95103 dashboard: follow the split chrome owners in the settings module comments
- fcf36b7 tests: run the log merge regression probe in npm test
- 10612f6 docs: follow the split module owners in comments
- 5600cf8 dashboard: split the chrome monolith into six ordered modules
- cd6cae0 dashboard: move the settings state, apply and purge owners to the last module
- 5d2e2c8 dashboard: move the settings provider-editor actions to their own module
- d5000cd dashboard: move the settings sub-conversations editor to its own module
- bdf766c dashboard: move the settings request-overrides editor to its own module
- ec98b3b dashboard: move the settings model-rules editor to its own module
- 8506cd8 dashboard: move the settings providers editor to its own module
- d80326b dashboard: move the settings backup and field surfaces to their own module
- 7904ac7 dashboard: load the settings sheet through one sequential module list
- 9696b79 docs: follow the split storage owners in comments
- c08ed01 storage: move record column-value helpers to writer.go and remove store.go
- 199083d storage: split provider alias rewriting into store_providers.go
- 617cb4c tests: settle UI waits on observable state
- b15bef3 ci: split the gate and require the promotion escalation
- 94346e5 storage: split the analytical projection read surface into store_projection.go
- bb5519f storage: move PurgeFilter and the delete preview beside Store.Clear
- 717514d storage: split the bounded log export into store_export.go
- 9c1fac1 storage: split the ad-hoc SELECT endpoint into query_admin.go
- 39f6f23 storage: split durable record reads and the log page into store_query.go
- 71d0498 storage: extend debug.go with sidecar byte accounting and the writer sweep
- 77fa97f storage: split durable enqueue, writer and accounting snapshot into store_record.go
- 973dd32 storage: split totals accounting and its persisted document into totals.go
- 64782c9 storage: split store identity, options and lifecycle into store_open.go
- 72c367b web: move the live-log page into aggregate_log.go
- 3f3dd53 storage: split schema, migration and index reclaim into store_schema.go
- 7ad054b web: move the explorer fold into aggregate_explorer.go
- ae47a5f web: move request scoping into aggregate_scope.go
- 6e46e78 web: move the bootstrap payload into aggregate_bootstrap.go
- f44547d web: move the traffic chart fold into aggregate_chart.go
- cb8f747 web: move the KPI band fold into aggregate_kpi.go
- 6212807 web: move aggregate status classification into aggregate_status.go
- 176f817 storage: reject an out-of-range persisted totals document
- b85d88b refactor(config): move the override and sub-conversation gates into config_validate_overrides.go
- c1cd8bd tests: pin the one-byte config floor as a rejection
- 61cceb8 refactor(config): move Validate and the shared bounds into config_validate.go
- 94f3db9 refactor(config): move the YAML load and repair path into config_load.go
- eb84118 refactor(config): move Clone and the deep-copy helpers into config_clone.go
- ace2a88 refactor(config): move the shipped defaults into config_defaults.go
- 66e1274 web: pin the ring-derived unwritten set across a restart
- d202773 refactor(config): move the Config types into config_types.go
- 7dec659 storage: stream query rows into the response buffer
- 529ba3c backup: encode archives at the measured compression level
- 4bc0aef docs: follow the split proxy request and relay owners
- e053a39 docs: describe the two-pass race and plain sharder
- 6ec6575 tests: make the pooled lineage allocation probe deterministic
- 1e894db proxy: move streamBody into relay_stream.go and retire relay.go
- 67bfd28 proxy: move request parsing into request_parse.go
- 85a702e checks: own the forced full-race entry point
- 27059e8 tests: scope race coverage by evidence and split the gate
- 52fa384 proxy: split relay translated-transform and rescue classification into relay_transform.go
- c6468db proxy: move JSON counting scanners into request_json_count.go
- f506967 metrics: validate contributions at the fold, not the accumulator
- d566bef proxy: split relay retry driver and classification into relay_retry.go
- 5e71666 proxy: move request metadata decode into request_metadata.go
- faa033c proxy: split relay upstream metadata and timing helpers into relay_upstream.go
- 7de6f6c proxy: move bounded request body reads into request_body.go
- e8e4071 tests: pin the scratch release contract without pooling across GC
- d9088c8 proxy: split relay serve and streaming-retry loops into relay_serve.go
- 5a84302 proxy: move client identity and header plumbing into request_client.go
- 5cea1a2 proxy: split relay spool and translated-structure helpers into relay_translate.go
- 13382ef proxy: move target resolution into request_target.go
- d0ed622 proxy: move token cap trust boundary into request_tokencap.go
- 6a63d08 proxy: split relay non-streaming paths into relay_nonstream.go
- 2bf8fa2 docs: point the lifecycle races at the split harness sections
- 6a2e20f proxy: move ensured-tools rewrite into request_tools.go
- 0b28628 tests: accept a warmed KPI memo at concurrent convergence
- 40647ed format: move the Chat request encoder into its own file
- f6c9561 format: move the Chat content and tool decoding into its own file
- 581eda6 web: keep the pooled ring scratch when every record is durable
- bd9efc2 proxy: move request override merge into request_overrides.go
- 0c36c7e format: move the Chat legacy function decoding into its own file
- 6433191 format: move the Chat request decoder into its own file
- 6d11888 format: move the Chat request wire types into their own file
- 36dc235 cmd/proxy: point backup comments at the split test owners
- 146ece1 proxy: move upstream request assembly into request_upstream.go
- 593d9b4 tests: pin both published percentile contracts
- 3979d13 format: move the Responses tool-call tracking into its own file
- c6964d5 format: move the Responses content channels into their own file
- d10fd08 metrics: preallocate the exposition fold and its sample scratch
- 32b47e3 format: move the Responses terminal classificati...
millivolt 0.4.0
What's included
- 52ce4a2 tests: pin in-band exclusion from the error enumerators
- ead3e44 web: align in-band 5xx error classification with Go and SQL
- 167b0a5 docs: document the in-band 429 attempt everywhere
- ee4b2ba tests: cover the retryable committed-status twins
- 1d9ed84 metrics: describe the in-band attempt exception
- d9e8f4a tests: lock the in-band attempt into the shared contracts
- 4840c8e proxy: correct the ensure-tools fast-path comment
- ab8bb62 docs: report the merged-turn tool-result reorder
- 4250e9e docs: qualify the store-less backup preview
- ba18374 tests: pin the base64 document pre-scan decoy
- 630676f proxy: keep the upstream 429 behind a committed 200
- e2078fd backup: fail closed on an undecoded selected database
- cb42ce9 format: tolerate a wrong-typed Chat reasoning_text
- f0c345b format: do not report empty Chat reasoning details
- fd77c04 format: keep a wrong-typed Responses error param raw
- 4005138 tests: update the committed non-200 status pin
- 6f46d4d docs: record analyzer counting limits
- 02e3b47 docs: state start-event authority for stream tier
- 3b01e37 tests: control null and absent access_programs
- 69473f1 tests: pin Anthropic tool-id pre-scan decoys
- bf3fb9a format: drop reasoning done events at message indexes
- c5900d1 tests: use the shared wire frame parser
- 6ea7152 docs: use bytes for the operator token band
- 7338e2c docs: scope Bearer cookie minting away from MCP
- 9196166 docs: scope the fail-closed config sentence
- 5423f19 docs: qualify encoded-route preservation and base joining
- 337318d format: fall back to Chat reasoning_text
- cf12af4 proxy: capture pacer writes through the debug tap
- 825c0e1 proxy: record the committed 200 on an in-band error
- d01fd12 format: report dropped Anthropic response-only members
- 368d4cc format: order tool results in a merged Anthropic turn
- 9a0239c format: carry the service tier into an Anthropic stream
- 31eaf5a format: keep summary and content reasoning channels apart
- e7f492f proxy: scan exact ensure-tools keys once
- 01256a7 proxy: accept the documented default auth header selector
- 41dc8e5 format: decode error members independently
- 612739e metrics: accept only string or numeric error codes
- 39bdb6c backup: decode a selected archive member without a store
- a878a34 proxy: frame a reassembled terminal at EOF
- 1d936e0 sse: capture usage from a reassembled Responses terminal
- 757cfb2 format: canonicalize tool schemas to a root object
- 63b1f54 dashboard: give provider favicons a visible tile edge
- cf85260 tests: scope the Responses item-status metadata
- e8fb16a tests: make the pretty F1 pin reach the guard
- 768d267 format: scope the Anthropic pre-scan to decoded content
- 3325c78 format: keep open non-call items incomplete on failure
- 0f598ed tests: rename the failed buffered argument row
- 211ec27 tests: pin native folded usage through the relay
- 7533914 tests: pin the truncated tool close matrix
- 2ca73c2 tests: pin the seeded pretty-printed Responses echo
- f1a544d format: report the emitted Responses citation span
- bb060c0 format: pre-reserve request tool ids before decoding
- cd34105 docs: describe leaving open tool calls unclosed on failure
- fd22222 format: keep each Responses item close status
- ab82943 format: classify Anthropic tool input empty spellings as bytes
- eac4e8f docs: reflow the new adapter paragraphs
- 036b926 proxy: wrap the cursor re-ask comment
- 1e0f7e2 format: apply the reasoning-kind guard to reasoning handlers
- 8407f67 metrics: document the literal service-tier record rule
- bc197fe docs: scope the strip passthrough spelling to strip off
- d26ba00 config: describe the real /mcp credential gate
- 7df88dc format: pin the streamed Anthropic reasoning usage
- f1d934a format: reuse warningField in the Chat citation test
- 81d3e91 web: derive the CLI override keys from the settings payload
- e54ff10 proxy: cover the remaining discovery error sinks
- 86b23f9 proxy: start the committed-pacer test at the production status
- b7bdad3 metrics: parse each error member independently
- 175fe5b format: warn for include_obfuscation only when enabled
- 7a9165f format: derive the Anthropic stop reason from content
- e5ce3f7 format: reject negative Responses stream positions
- b046493 format: canonicalize every empty Anthropic tool input
- 49be060 format: route Responses reasoning events only to reasoning items
- 178b842 proxy: record translated provider-tool activity
- 09dc198 proxy: fail a translated bodyless status closed as 502
- deaacd4 proxy: require HTTP 200 for a cursor re-ask run
- 9fbb14d proxy: classify routes by the escaped request path
- 9de12e1 format: defer the Responses message done frame until the status is known
- 34ecd0f format: mark Responses message items incomplete
- f86dd57 format: share one request tool-id namespace across decoders
- fe9699d proxy: apply folded usage when a native body cannot decode
- a9d68e9 format: end the Anthropic stream on its error event
- 24c2906 format: leave open tool blocks unclosed on a failure
- 490f11c sse: ignore the Responses reasoning request echo
- 9772bf0 format: emit message-relative Responses citation spans
- adf3cec docs: drop retry backoff from the pacer's covered phases
- 605251d proxy: record the committed status on a fail-closed 202
- 295802c docs: scope the native passthrough collection-bound claim
- 1639f90 proxy: share the array counter with the stop scan
- a97bf13 proxy: commit non-completion statuses through the pacer body mode
- a3d4d1a proxy: bound provider error type and code at the client sinks
- 5182cc1 docs: align the keepalive comments with the pacer's real scope
- 239a876 format: rebase Chat message citations onto their text block
- 52baa4d proxy: decode include entries before matching the logprob option
- 0f1444a proxy: keep the request record for malformed Responses text
- dd61767 docs: name the codec that enforces translated bounds
- 516f7c9 tests: finish the warning helper deduplication
- fe6f213 tests: reuse the shared warning-field helper
- 48b8a92 tests: cover the streamBody partial-write owner
- 2192967 proxy: correct the preflight parity comment
- c9acab8 ui: show CLI-preserved settings in the restore preview
- 07371ef config: name the real model-grouping filter surfaces
- 245c32c config: stop promising a TTFB SSE keepalive
- c44c27f docs: correct the translated-stream phase warning claim
- a33a923 docs: split the Responses reasoning Anthropic surfaces
- 588addc docs: separate preflight and translated-codec collection bounds
- b66a2d8 proxy: keep discovery errors in the OpenAI envelope
- a53f524 sse: raise a stale Anthropic custom total after completed output
- c8095f4 format: emit required-nullable Anthropic message members
- 593200f format: narrow Chat citation spans with the platform guard
- 68394b8 tests: keep the Responses citation spelling fixture in range
- f8c88bf format: rebase Responses citation spans onto their text part
- 16891b3 format: bound the response.failed terminal error tuple
- c01dd3e format: bound non-stream provider error fields
- 70fb1fe format: reject non-chunk Chat stream bodies
- 813a4b2 format: route Responses argument events only to tool items
- 9a9c82f format: reserve streaming tool ids across every decoder
- b77bbf4 format: bound Responses request metadata at the codec
- 3177734 proxy: record deprecated Chat functions and function_call
- c9b0082 proxy: record thinking only when the request enables it
- b76b03d proxy: record native Responses request metadata
- 924bff0 proxy: keep the request record for integral number spellings
- 71be0dd proxy: reject non-200 cursor Run statuses
- 1ba18b9 proxy: frame a terminal tail after a flushed data line
- 2920efe proxy: count composed cursor error frames once
- 3d0fcb4 proxy: count partial translated-error and cursor writes
- ddc21b9 proxy: remember an already-flushed data line at the hold
- 2d729dc proxy: restore the streamBody doc block
- 48ed2fb tests: match the audio limit pin case
- b0cb35e docs: record the translated audio-output limit
- 95ab756 docs: list the allowed_callers array bound
- e8b5028 format: guard stream index narrowing on 32-bit builds
- 8298bf9 format: classify a Chat error envelope before its object
- daab605 proxy: count partial writes at every client writer
- eb3816d format: treat whitespace-only tool start input as empty
- 82692cb format: bound merged response metadata across duplicate objects
- 8f9840d proxy: frame every held data line as its own event
- 7a3216e format: use valid thinking budgets in codec fixtures
- a1b93e5 docs: document accepted stream decoding limits
- e76a6ff tests: pin the round-10 contract-decision docs
- 5ad2e40 proxy: correct Anthropic discovery auth comments
- a7b94ec sse: pin Chat tool-call integral index retention
- 904fb10 format: guard the Responses owner index against a full scan
- 0595d6e docs: match Go HTTP field parsing for caller limit headers
- 1fcfc72 config: document the request override rule cap
- d7f674a config: state request override precedence exceptions
- 12445a3 config: document allowed base URL scheme and port rules
- 8c3beb0 web: preview live-only keys in a restore
- 815e423 proxy: count delivered bytes on a partial client write
- 0ea9bd4 sse: keep the first nested Anthropic error
- cfa80f9 format: bound provider stream error fields at one owner
- c256063 format: drop assistant media from Anthropic responses
- 4b04dde format: reject non-completion Chat response bodies
- 79364cc docs: state the json_schema object requirement
- d95b635 format: require a JSON object json_schema schema
- f52f506 format: pin Chat stream created integral spellings
- b39859c format: decode remaining response indexes and spans exactly
- 15e3967 format: bound Chat n to the schema range
- e97688c format: require a valid Anthropic thinking budget
- 3448078 format: accept integral spellings on request integer fields
- 2a97665 format: place Anthropic system runs by emitted turns
- da9efe1...
millivolt 0.3.37
What's included
- ddff5a6 sse: capture usage from a reassembled terminal document
- 0c0f905 proxy: keep a late terminal event name in its original position
- a7e6edd proxy: keep an over-bound terminal event whole for the analyzer
- f71756c sse: count each terminal Responses text unit as a chunk
- 8f4bf6e format: emit Responses terminal blocks in document order
- 75bcfcd format: track Responses reasoning summary coverage per part
- fe67991 format: avoid repeating a non-empty Responses start payload
- fb198bd format: consume done payload for an announced empty part
- 07f22c2 proxy: keep a retry non-completion status out of the SSE body
- 39a19c7 proxy: buffer Responses terminal events across their SSE boundary
- dff1702 format: fill announced empty Responses channels from terminal payload
- fbe119b sse: record terminal-only Responses answer presence and TTFT
- ef1145d format: identify terminal Responses items by wire identity
Image: ghcr.io/llm-4-people/millivolt:0.3.37
Digest: sha256:00df9db80e7296671ae22031f3771965f4751dd694c8ab39a97b5d39e3226909
Full changelog: v0.3.36...v0.3.37
millivolt 0.3.36
What's included
- 596ed44 docs: match warning header truncation behavior
- e0f0a57 tests: cover terminal-only tool calls on response.incomplete
- 8e37a4a proxy: drop a terminal event name whose data does not match
- 3a8c012 format: flush buffered initial tool arguments on truncation
- 2614be5 sse: bound terminal content-part parsing
- 6ab5fdd proxy: commit non-completion status atomically against the pacer
- fec9446 format: bound buffered Responses initial tool arguments
- 2d49c40 format: close target blocks when the encoder fails
- 2d227d0 sse: count terminal-only Responses output and keep terminal names paired
- e89c505 format: buffer initial tool arguments and synthesize terminal items
- 451ffc2 proxy: keep non-completion statuses out of the translated SSE path
- 8103239 format: tighten the start-payload regression
- 523e475 docs: list every bounded request collection
- 3b96c56 format: report a plain-text document title loss
- 8a05af1 sse: count terminal-only Responses function calls
- 5c65041 format: open Chat reasoning before text and drop a dead flag
- f8aba6c proxy: route the last HTTP error sinks through the shared writer
- 370ad2b proxy: relay accepted and status-only responses verbatim
- e830c60 proxy: render pacer pre-commit errors in the client protocol
- 84f0f8b format: bill Responses item envelopes to the terminal budget
- 32445cf format: close target blocks on hard decoder failures
- 6a144c3 format: emit start-only payloads and initial tool arguments
- 4779549 format: retain Anthropic cache totals across usage deltas
- be2df17 tests: lock the translation and stream contracts
- 3a2b68f format: document the real translation warning contract
- e164d23 proxy: pin the routing path and token-cap boundaries
- 6613169 accounting: read usage from the source, not the translated wire
- 68f54ce format: reject impossible usage and check every fold
- 6a5fde5 format: preserve reasoning, annotations and stop sequences
- 192dd2c format: keep cache breakpoints and report request losses
- 1ed5893 format: emit only target-valid content parts
- eebd822 format: refuse a tool restriction the target cannot represent
- e6a974a format: emit only target-valid request vocabularies
- 1b45eed format: one translated retention budget and bounded identity
- 840e2ff format: bound every decoded wire collection
- f75a47d sse: analyze the real provider wire taxonomy
- b6859c4 format: preserve the Responses terminal state
- a431b65 proxy: render every error surface in the client protocol
- 47464e8 format: guarantee translated stream preamble and start payloads
- 4279c2a format: close each translated block exactly once
- 2d5b118 format: bound every wire collection before decode
- 74f5ddd format: observe every translated source stream
- ab96899 proxy: detect forwarded provider error frames
- a717892 format: bound response arrays before decoding
- 5320895 format: close Anthropic blocks at terminal events
- 4d210bd proxy: record truncated Anthropic streams
- 943ba62 proxy: keep translation warnings proxy-owned
- fb5e126 proxy: map Anthropic-body token overrides to max_tokens
- df48041 format: normalize inline file data URLs
- 8c28c24 format: normalize inline image data URLs
- 6c3c7e3 format: decode legacy Chat response function calls
- 592bbd6 format: decode Chat reasoning content
- c0094af format: report audio dropped from tool results
- 9b52efd format: lift every system message for Anthropic
- 722ea36 proxy: detect terminal frames by event name
- be14711 docs: wrap the adapter summary paragraph
- b23e60d format: convert or report legacy Chat request fields
- 6c8757a format: report only unmapped Responses include options
- 245f4d3 format: map minimal effort onto Anthropic's low
- e745200 format: clamp Chat temperature for Anthropic targets
- 7008ee2 format: remove dead translation shims
- 29a0402 proxy: fail a translated in-band error with 502
- 55557b4 format: report each Chat metadata loss once
- 5187e71 proxy: answer pre-commit errors in the client protocol
- 56edd3b format: bound retained Responses stream output
- e419cb1 format: warn on fields the target cannot carry
- 65819ac format: decode and preserve Chat store requests
- f1172d3 format: close Responses blocks at terminal events
- 66d8242 format: emit one Chat terminal delta and accept missing [DONE]
- 1611a8f proxy: merge request and response translation warnings
- 9d771a9 proxy: keep Anthropic passthrough out of Chat degenerate rules
- c01bb7f format: carry inline media into Chat and Responses bodies
- 5af915a proxy: remove duplicated ensured-tools commentary
- e893ffa docs: avoid claiming universal field coverage
- 0749aa1 docs: document client protocols and cross-protocol translation
- 2eed22c proxy: translate between client and upstream protocols
- 1180e9c format: add the canonical protocol IR and wire codecs
- 6dee111 config: add the translation loss policy setting
- 44a70b1 tests: skip packages with no test files in the sharder
Image: ghcr.io/llm-4-people/millivolt:0.3.36
Digest: sha256:03d10a7daf0ad445bf88b502f481e3db34dd43a4c41f3df58873c0901febbcab
Full changelog: v0.3.35...v0.3.36
millivolt 0.3.35
What's included
- 7e09a20 ci: add a dispatched full-gate recovery for testing
- 244d6c9 tests: size docs captures for table font variation
- 7e21bf4 ci: release merged promotion PRs without a main push event
Image: ghcr.io/llm-4-people/millivolt:0.3.35
Digest: sha256:014684b5ef26a2475c497a3abb9cd69473cad8f31fa6aa27edaf0ab8b890048b
Full changelog: v0.3.34...v0.3.35
millivolt 0.3.34
What's included
- 261c36e tests: pin compacted and hidden-bar chart domains
- 14a794e dashboard: define the compact speed unit
- 535720d tests: make rate and clock checks locale-neutral
- 1e8ef47 tests: cover incremental inserts and header floors
- 36ae024 requests: suppress the cell title over client badges
- 44bdb0d dashboard: keep the spark height mirror on the base rule
- 5118ec9 dashboard: describe the responsive overview tile height
- fc155d8 requests: describe the measured column floor precisely
- 6e7600f tests: cover incremental column growth
- de2ce60 docs: correct the column and sparse-chart claims
- 2d6a9a0 requests: share one header builder with the width probe
- 7b2f651 dashboard: fit overview tiles to short locked cards
- 61ea445 dashboard: format compact speed values consistently
- e32769a requests: remeasure every live status transition
- 5b5f068 requests: keep retry messages from widening the table
- 63272e1 tests: point the identity canary at its new owner
- 11cb2ba dashboard: use the compact t/s unit in the Avg TPS KPI
- 08322b5 dashboard: tighten overview cost and timing units
- 14dd2f6 tests: drop stale fixed-column wording from the request probes
- da5f77b requests: size columns to content and only ever grow
- 181f966 dashboard: give overview sparks real vertical depth
- d94f192 dashboard: fill line-only chart plots edge to edge
- dead05c proxy: timestamp translated streams before client writes
- f27887c metrics: use one TPS and one per-attempt TTFT
- cfaa2a5 Require an immediate commit for each completed fix
Image: ghcr.io/llm-4-people/millivolt:0.3.34
Digest: sha256:10f34dde49bac62e3f3ebecebf8ded5a0f4cec693902685a0d30e7a681d223c9
Full changelog: v0.3.33...v0.3.34
millivolt 0.3.33
What's included
- 779635b Fix release publication when main checks are skipped
- c5feec5 Rework dashboard theme picker and harden release gate
Image: ghcr.io/llm-4-people/millivolt:0.3.33
Digest: sha256:44453fc59b6a89011ba81d720f932d0c5c2e5d4afce62651f4b36b5c0aee80a3
Full changelog: v0.3.32...v0.3.33
millivolt 0.3.32
What's included
- f6f1921 Load dashboard scripts through the jsdom request interceptor
- df21d66 Revert "Merge atomic tool calls and append soundness into testing"
- 58bb84f Move delivery timeouts into settings
- 8138ce2 Stop body idle deadline from cutting SSE streams
- d6a3bfd Pin multi-size favicon fallback
- b031028 Restore multi-size favicon fallback
- 76df292 Separate theme accents from status colors
- 47e99cd Refresh brand raster icons for the new accent
- e40cd9b Clarify theme ownership and contrast documentation
- 09dc24a Differentiate Slate and Ember theme accents
- 3129e56 Make every dashboard theme work in Clear and Black
- f21dc14 Add dashboard theme palettes and a theme picker
- fa26bbd Close four soundness holes and a defaults-path byte-loss regression
- a1324c8 Close six soundness holes in atomic tool calls; make the accounting bounded
- e29811d Hide the Restart control when self-restart cannot work
- 5bc2009 Rework atomic tool calls; drop the append rescue; fix tool-call accounting
- ac4f007 Fix the framing regression the fourth review found, and correct the docs
- 21dd52f Fix the soundness holes and dead code the third review found
- 22582e4 Address the round-two review of atomic tool calls
- c8e2097 Add atomic tool calls and make the append retry sound
- 58507ab Correct the client-retryability documentation against the real SDK
- d6bc6f3 Revert "Add opt-in append_retries rescue for post-content stream truncation"
- 3061aa6 Add opt-in append_retries rescue for post-content stream truncation
Image: ghcr.io/llm-4-people/millivolt:0.3.32
Digest: sha256:b7ffcd6d097e42911460244ca4b93ab5446327acd1d025e1f0efc7b205f02fea
Full changelog: v0.3.31...v0.3.32
millivolt 0.3.31
What's included
- b3c8031 docs: correct release failure recovery
- 1ae775f docs: qualify code-bearing promotions
- 0d4655f ci: keep docs-only promotions release-free
- afad853 docs: document ruleset verification
- bd0de5e docs: tighten the promotion checklist
- f1955ae docs: clarify the promotion and release workflow
Image: ghcr.io/llm-4-people/millivolt:0.3.31
Digest: sha256:e9c0e1f698262efb10afb6bb88df732bff90feba5f799057fdf3f1a242f7ea28
Full changelog: v0.3.30...v0.3.31
millivolt 0.3.30
What's included
- 85b5c1b ci: release versioned promotions without pushing main
- 6c07caf version: compare release versions with SemVer precedence
- ec0c275 ci: enforce testing-first main promotions
Image: ghcr.io/llm-4-people/millivolt:0.3.30
Digest: sha256:d216d7436231b4ed56ed95f1189d849928b42e136de5569f7b92d5a33a90e254
Full changelog: v0.3.29...v0.3.30