What iii-hq/iii shipped
Written by FoxPlug from the repository's own releases; not affiliated with Iii. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/iii-hq/iii; Iii did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- The engine's built-in sandbox became a router that sends sandbox calls to a configured sandbox adapter, carrying the sandbox stack and Observe v2 into the 0.26.0 integration branch. Pull request #2388
- An observer's capture list now decides both when it fires and what it receives, replacing the separate deliver and on settings. Pull request #2471
- Observer delivery got faster with far less memory held per observed event, while delivery semantics, the wire format and drop codes stayed the same. Pull request #2480
- VM execution became explicit in worker-compose.yaml: compose no longer decides on its own that a worker runs in a VM, and a new sandbox run command drives one container. Pull request #2457
- A worker can declare the iii engines it runs on in iii.worker.yaml as a semver range, which compose enforces and registry resolves report. Pull request #2449
- Standby was removed from the Rust, Node, browser, Python and Go SDKs, and the per-call hooks were renamed to onObservation. Pull request #2450
- SDK parity fixes landed for Observe v2, including OBSERVER_NOT_ACTIVE reported by accepted in every SDK and a connection state listener. Pull request #2452
- The 0.26 engine now returns clear failures explaining what removing trigger builtins means for an old worker instead of failing silently. Pull request #2448
- Three native Windows Compose failures were fixed: blank console windows when launched detached, path workers failing when run commands contain quotes, and access-denied errors on log sanitization or rotation. Pull request #2437
- A bench command was added so a pull request can be benchmarked against one or more released versions with a comparison table posted back. Pull request #2484
Why it matters
This week moved the 0.26 work forward on several fronts at once: the sandbox became a router to a configurable adapter, VM execution turned explicit, and Observe v2 settled its observer and SDK behavior. People running workers get clearer failures for removed trigger builtins, less memory per observed event, and fixes for Windows Compose startup and log rotation. Compose also gained engine version ranges and lock re-checks, and a bench command now compares pull requests against releases.
Changelog entry
- Route sandbox calls to the configured sandbox adapter; the built-in sandbox is now a router. Pull request #2388
- Make VM execution explicit with the sandbox run command instead of implicit VM workers. Pull request #2457
- Let the observer capture list decide when an observer fires and what it receives, removing deliver and on. Pull request #2471
- Speed up observer delivery and reduce memory held per observed event. Pull request #2480
- Remove standby from the five SDKs and rename the per-call hooks to onObservation. Pull request #2450
- Add SDK parity for Observe v2: OBSERVER_NOT_ACTIVE in accepted and a connection state listener. Pull request #2452
- Support an engine version range in iii.worker.yaml and report
iii_versionon registry requests. Pull request #2449 - Re-check the engine version of bundles installed from worker-compose.lock. Pull request #2460
- Return clear failures for removed trigger builtins. Pull request #2448
- Fix Windows process startup and log rotation for native Compose. Pull request #2437
- Add a bench command to compare benchmarks across releases on a pull request. Pull request #2484
- Restore the plain logo in the site header and footer. Pull request #2459
0.26 work landed this week: sandbox routes to a configurable adapter, VM runs are explicit via sandbox run, and Observer capture decides when an observer fires. Windows Compose fixes, engine version ranges in worker config, standby removed from all five SDKs.
Several 0.26 changes landed this week. The built-in sandbox is now a router to a configurable adapter, and VM execution is explicit: compose no longer assumes a worker runs in a VM, and a new sandbox run command drives one container. Observe v2 moved forward, with capture deciding when an observer fires and what it receives, faster delivery with less memory per event, standby removed from all five SDKs, and parity fixes for OBSERVER_NOT_ACTIVE. Workers can declare an engine version range in iii.worker.yaml, which compose enforces. The engine now gives clear failures for removed trigger builtins, Windows Compose startup and log rotation were fixed, and a bench command compares a pull request against released versions.
Week of October 26, 2026
What shipped
- The 0.26.0-rc.1 release candidate shipped with completed 0.25.0 release notes, a required websockets version of 14.0 or newer for Python, and a Tokio update that addresses RUSTSEC-2026-0386. Release
- The Go SDK reached parity with the Node, Python and Rust SDKs on top of 0.25.0, keeping idiomatic Go with error returns, ctx first, functional options and time.Duration, and gained an API reference. Pull request #2399
- The iii-sandbox-contract crate was added as the wire contract between the engine sandbox router and every sandbox adapter, with request and response types, AdapterInfo, CONTRACT_MAJOR, an error code table and fixtures. Pull request #2387
- The engine now handles trigger teardown races and cancellation, so trigger removal and owner disconnect no longer leave provider jobs active and late provider calls preserve newer registrations. Pull request #2409
- A channel reader now receives an error instead of end of stream when the writer goes away without a clean close. Pull request #2398
- The Rust SDK keeps Logger lines under concurrent logging and closes the connection on shutdown. Pull request #2404
- Go workers keep their websocket connections active with control pings every 20 seconds, a forced reconnect when no pong arrives within 60 seconds, and a reset reconnect backoff after successful registration. Pull request #2397
- Worker environment and command reach libkrun VMs out of band through a virtio-console port instead of the kernel command line. Pull request #2377
- The Docker Compose stack now connects the engine to Redis, with a configurable iii-stream bind host and a configurable Redis URL. Pull request #2422
- Review fixes for RBAC, races and duplicate observer ids landed on the observe-v2 branch, each with a test that fails on the branch and passes with the fix. Pull request #2441
Why it matters
This week brought the 0.26.0-rc.1 release candidate and a Go SDK at parity with the other SDKs, plus a new sandbox contract crate. Engine and channel fixes address trigger teardown races, writer aborts and long-lived worker connections, and the Compose stack now reaches Redis.
Changelog entry
- Iii 0.26.0-rc.1: completed 0.25.0 release notes, Python requires websockets 14.0 or newer, Tokio updated for RUSTSEC-2026-0386. Release
- Go SDK parity with Node, Python and Rust SDKs on 0.25.0, plus a Go API reference. Pull request #2399
- Added the iii-sandbox-contract crate with request and response types, AdapterInfo, CONTRACT_MAJOR, error codes and fixtures. Pull request #2387
- Engine handles trigger teardown races and cancellation without leaving provider jobs active. Pull request #2409
- Channel readers get an error instead of end of stream when the writer aborts. Pull request #2398
- Rust SDK keeps Logger lines under concurrent logging and closes the connection on shutdown. Pull request #2404
- Go workers send websocket pings every 20 seconds, reconnect after a 60 second pong timeout, and reset backoff after registration. Pull request #2397
- Sandbox passes worker environment and command to libkrun VMs through a virtio-console port. Pull request #2377
- Docker Compose engine connects to Redis, with configurable iii-stream bind host and Redis URL. Pull request #2422
- Observe-v2 review fixes for RBAC, races and duplicate observer ids, each with a failing-then-passing test. Pull request #2441
- Patched happy-dom and zod security advisories in the browser SDK dependencies. Pull request #2400
- Stopped publishing iii-init Darwin aliases from stable and alpha release jobs. Pull request #2139
Iii 0.26.0-rc.1 is out. Go SDK now at parity with Node, Python and Rust, with an API reference. New iii-sandbox-contract crate. Engine fixes for trigger teardown races and channel writer aborts. Compose stack now connects to Redis.
This week we published iii 0.26.0-rc.1 and released the Go SDK at parity with the Node, Python and Rust SDKs, with a new API reference. A new iii-sandbox-contract crate defines the wire contract between the engine sandbox router and sandbox adapters. On the engine side, trigger teardown races and cancellation are handled so provider jobs are not left active, and channel readers now get an error when the writer aborts. The Rust SDK keeps Logger lines under concurrency, Go workers keep websocket connections alive with pings and reconnect backoff reset, and the Docker Compose stack now reaches Redis with configurable bind host and URL. The Go SDK also moved to 0.26.0-rc.1.
Week of October 19, 2026
What shipped
- Released iii 0.25.0 with observers, 64 MiB messages and the stream and pubsub deprecation. Pull request #2345
- Tagged the iii 0.25.0 release. Release
- The engine now keeps a worker connected when it sends an oversized message and returns
payload_too_largeto the sender. Pull request #2373 - The Rust, Node, Python and Go SDKs send JSON envelopes up to 64 MiB as fragmented WebSocket messages. Pull request #2318
- Added a large-messages.v1 protocol feature so the engine sizes a worker's receive limit to 16 or 64 MiB. Pull request #2363
- The engine sends JSON envelopes larger than 1 MiB to workers as 1 MiB fragments. Pull request #2368
- Compose now extracts ZIP worker packages as well as gzip tar archives, fixing Windows worker artifacts. Pull request #2321
- Exposed iii-telemetry::settings so workers can ask whether telemetry is on. Pull request #2370
- The Python SDK now sends compact UTF-8 JSON instead of ASCII-escaped JSON. Pull request #2364
- Updated Tokio in the workspace lockfile to address RUSTSEC-2026-0386. Pull request #2391
Why it matters
This week the 0.25.0 line went from release candidate to stable, with observers and much larger messages as the headline changes. Workers can now send payloads up to 64 MiB without losing their connection, and the SDKs and engine agree on how those large messages are framed. Compose also gained ZIP package extraction, which matters for anyone installing Windows worker artifacts.
Changelog entry
- Released iii 0.25.0 with observers, 64 MiB messages and the stream and pubsub deprecation. Pull request #2345
- Engine keeps a worker connected when it sends an oversized message and returns
payload_too_large. Pull request #2373 - Rust, Node, Python and Go SDKs fragment main-protocol JSON messages up to 64 MiB. Pull request #2318
- Added the large-messages.v1 protocol feature to size a worker's receive limit to 16 or 64 MiB. Pull request #2363
- Engine sends JSON envelopes larger than 1 MiB to workers as 1 MiB fragments. Pull request #2368
- Compose extracts ZIP worker packages as well as gzip tar archives. Pull request #2321
- Exposed iii-telemetry::settings so workers can check whether telemetry is enabled. Pull request #2370
- Python SDK sends compact UTF-8 JSON instead of ASCII-escaped JSON. Pull request #2364
- Node and browser result fallback sends the bare
payload_too_largemessage. Pull request #2359 - Updated Tokio to address RUSTSEC-2026-0386. Pull request #2391
- Docs point the Linkly engine log at the project folder. Pull request #2354
- Completed the 0.25.0 release notes in the changelog. Pull request #2383
Iii 0.25.0 is out: observers, messages up to 64 MiB, and the stream and pubsub deprecation. Oversized worker messages now keep the connection and return payload_too_large. Compose also extracts ZIP worker packages.
Iii 0.25.0 is released. The release brings observers to every function, raises the message limit to 64 MiB, and marks stream and pubsub as deprecated. A worker that sends an oversized message now keeps its connection and gets payload_too_large instead of being dropped, and the Rust, Node, Python and Go SDKs fragment envelopes between 16 and 64 MiB. Compose now extracts ZIP worker packages as well as gzip tar archives, fixing installation of Windows worker artifacts. The changelog for the release was also completed.
Week of October 12, 2026
What shipped
- Added III_TOKEN so managed workers can authenticate to an RBAC listener without code changes, keeping the token out of the URL where logs and ps could show it. Pull request #2305
- The engine now rejects and disconnects a worker that declares a namespace outside its session scope instead of silently serving from default. Pull request #2303
- Fixed namespace routing so configuration calls resolve in default for all SDKs and Go workers inherit their worker namespace. Pull request #2304
- Negotiated TCP_NODELAY between the engine and Rust workers, removing the delayed-ACK wait on small request and response frames. Pull request #2325
- Fixed a lock-order inversion in stream trigger cleanup that could deadlock dispatch and unregistration. Pull request #2297
- Fixed lock-order deadlocks between metric insertion, name queries and retention. Pull request #2296
- Enforced trace sampling for worker spans and bounded archive writes so oversized spans no longer inflate or stall the SQLite archive. Pull request #2326
- Released WebSocket buffers retained by queued HTTP bodies so small POST payloads no longer pin the read buffer for minutes. Pull request #2316
- Fixed compose injecting a null execution value that took down the ide and harness on a second up in a fresh project. Pull request #2300
- Python schema generation now handles bare dict and list annotations, including nullable forms. Pull request #2317
Why it matters
This week tightened worker security and namespace routing, with token-based handshake authentication and rejection of workers that declare namespaces outside their session. It also cleared out several deadlocks and allocation hot spots in the engine, Rust SDK and observability paths that affected long-running workers.
Changelog entry
- Added III_TOKEN authentication for the worker handshake and channels. Pull request #2305
- Reject and disconnect workers that declare a namespace outside their RBAC session scope. Pull request #2303
- Resolve configuration calls in default across SDKs and inherit the worker namespace in Go. Pull request #2304
- Set TCP_NODELAY on engine worker sockets and negotiate it with Rust workers. Pull request #2325
- Release WebSocket buffers retained by queued HTTP bodies. Pull request #2316
- Fixed deadlocks in stream trigger cleanup. Pull request #2297
- Fixed metric storage lock-order deadlocks. Pull request #2296
- Enforced trace sampling and bounded archive writes in observability. Pull request #2326
- Fixed null execution value injection in compose. Pull request #2300
- Infer schemas for bare dict and list annotations in Python. Pull request #2317
- Reduced allocations and optimized release builds in the engine. Pull request #2306
- Released 0.24.5-alpha.3 across the installer and SDK packages. Release
This week: III_TOKEN authenticates worker handshakes and channels, workers declaring an out-of-scope namespace are now rejected, configuration calls resolve in default, and TCP_NODELAY is set between engine and Rust workers. Plus deadlock and allocation fixes across engine, SDK a
Several fixes landed this week in iii. Workers can now authenticate to an RBAC listener with III_TOKEN instead of putting the session token in the URL. The engine rejects a worker that declares a namespace outside its session scope rather than quietly serving from default, and configuration calls resolve in default across SDKs while Go workers inherit their worker namespace. Networking and runtime work: TCP_NODELAY is negotiated between engine and Rust workers, WebSocket buffers held by queued HTTP bodies are released, and lock-order deadlocks in stream trigger cleanup and metric storage are fixed. Observability now enforces trace sampling and keeps archive writes bounded, and Python schema generation handles bare dict and list annotations.
Week of October 5, 2026
What shipped
- The new iii.dev site went live with a landing page, manifesto, roadmap with spec pages, blog with RSS, privacy policy, and a cookie banner that loads analytics only after consent. Pull request #2285
- The engine now drives the functions-available updates from the registry itself and the background polling task that checked the function registry hash every 5 seconds was removed. Pull request #2283
- Sandboxes now boot on a per-sandbox read-only overlay instead of the shared image cache. Pull request #2275
- Oversized JSON is now rejected safely: a 16 MiB serialized envelope limit is enforced in Rust, Node, Python, and Go, correlated
payload_too_largeerrors are returned without disconnecting, and SDK reception is bounded at 64 MiB. Pull request #2265 - Host-side file operations on an extracted OCI rootfs no longer follow symlinks or other non-regular entries that come from image layers. Pull request #2273
- Trace query snapshot allocations were reduced by projecting root-key metadata and trace tags without deep-cloning complete hot stored span payloads. Pull request #2286
- The Compose panel now shows per-worker update progress, the running version beside each worker, and the iii version beside a managed engine. Pull request #2263
- The installer now asks a single setup question, runs the first project init when you press Enter, and skips the setup prompt when iii is already installed. Pull request #2280
- Compose now ignores
env_filevalues that parse as empty while preserving quoted whitespace and explicit Compose behavior. Pull request #2274 - Version 0.24.4-alpha.3 was released for the engine, Node.js, Python, the browser SDK, and helpers. Release
Why it matters
This week the project gained a public site with a landing page, manifesto, roadmap and blog, so people can read about it and follow along. The engine, SDKs, sandboxing and Compose all changed too: functions-available updates come from the registry instead of polling, oversized JSON is rejected cleanly, and sandboxes no longer boot on the shared image cache. Installer and Compose reporting were simplified so setup and update checks are easier.
Changelog entry
- Release: iii 0.24.4-alpha.3 Release
- Release: sdk/packages/go/iii/v0.24.4-alpha.2 Release
- Release: sdk/packages/go/iii/v0.24.4-alpha.3 Release
- Release: sdk/packages/go/iii/v0.24.5-rc.2 Release
- Release: iii 0.24.6-rc.2 Release
- Release: sdk/packages/go/iii/v0.24.6-rc.2 Release
- Release: iii 0.24.6-rc.3 Release
- Release: sdk/packages/go/iii/v0.24.6-rc.3 Release
- Feat(website): new iii.dev live with landing, manifesto, roadmap, blog, privacy policy and consent-gated analytics Pull request #2285
- Fix(engine): drive functions-available from the registry and remove the polling background task Pull request #2283
- Fix(sandbox): boot sandboxes on a per-sandbox read-only overlay instead of the shared image cache Pull request #2275
- Fix(sdk): enforce a 16 MiB JSON envelope limit and return
payload_too_largeerrors Pull request #2265
New iii.dev is live with a landing page, manifesto, roadmap and blog. Also this week: engine functions-available updates now come from the registry with no polling task, sandboxes boot on a per-sandbox read-only overlay, and oversized JSON is rejected safely across the Rust, Node
The new iii.dev is live: landing page, manifesto, roadmap with spec pages, blog with RSS, privacy policy, and analytics that load only after consent. Alongside that, several changes landed in the project. The engine now drives functions-available updates from the registry itself, removing the background task that polled the registry hash every 5 seconds. Sandboxes boot on a per-sandbox read-only overlay instead of the shared image cache. Oversized JSON is rejected safely, with a 16 MiB serialized envelope limit in the Rust, Node, Python and Go SDKs. Compose shows per-worker update progress and running versions, and the installer now asks one setup question and skips setup when iii is already installed.
Week of September 28, 2026
What shipped
- Engine::traces::list no longer decodes every stored root payload, instead paging over root keys to improve listing performance. Pull request #2256
- Filtered engine::traces::list now rejects traces before decoding by using root keys and the attribute index. Pull request #2258
- Engine::traces::spans accepts
include_events: false to omit span events and links from responses. Pull request #2259 - Go custom trigger providers can now advertise configuration and callback payload schemas through RegisterTriggerTypeOptions. Pull request #2268
- Compose::update now plans the whole batch with the shared dependency planner instead of expanding each root independently. Pull request #2249
- Engine reduces avoidable builtin KV allocations and decouples heap maintenance from the observability worker lifecycle. Pull request #2261
- Observability span hot cache now releases the full allocation when truncating attribute values. Pull request #2264
- Website replaced the Astro site with a Next.js 16 rebuild of iii.dev using React 19 and Tailwind v4. Pull request #2239
- The musl build can now install glibc-only workers on a glibc host by resolving for the actual system triple. Pull request #2250
- Python SDK now reconnects after any WebSocket close including normal ones, fixing several connection states. Pull request #2243
Why it matters
This week focused on performance improvements for trace listing and filtering, with changes that avoid unnecessary decoding and allocations. The Go SDK gained schema advertising for custom triggers, and the compose system now plans dependencies more efficiently. These changes make the engine faster and more resource-efficient.
Changelog entry
- Faster trace listings: engine::traces::list pages over root keys instead of decoding every payload Pull request #2256
- Faster trace filtering: engine::traces::list rejects traces before decoding using root keys and attribute index Pull request #2258
- Engine::traces::spans accepts
include_events: false to omit span events and links Pull request #2259 - Go SDK: custom trigger providers can advertise configuration and callback payload schemas Pull request #2268
- Compose::update plans batches with shared dependency planner for better conflict handling Pull request #2249
- Engine reduces avoidable KV allocations and decouples heap maintenance from observability worker Pull request #2261
- Observability: span hot cache releases full allocation when truncating attribute values Pull request #2264
- Website rebuilt with Next.js 16, React 19, and Tailwind v4 Pull request #2239
- Musl build can install glibc-only workers on glibc hosts Pull request #2250
- Python SDK reconnects after normal WebSocket closes Pull request #2243
- Rust SDK updated async-trait for Rust 1.99 compatibility Pull request #2266
- CI runs Harness E2E suite on each published release Pull request #2253
0.24.4 ships faster trace listings, optional span events/links, and Go trigger schemas. Engine reduces KV allocations and improves dependency planning.
Iii 0.24.4 is out. Trace listings now page over root keys instead of decoding every payload. Filtered traces reject candidates before decoding, using root keys and attribute indexes. Go trigger providers advertise schemas. The musl build installs glibc-only workers on glibc hosts. Python SDK reconnects after normal WebSocket closes. Compose plans batches efficiently with shared dependencies.
Week of September 21, 2026
What shipped
- Released iii 0.24.3 with compose project reporting, Amplitude telemetry removal, and channel socket fixes. Release
- Compose now reports what a project did, making startup failures and performance visible through events. Pull request #2221
- Fixed engine file descriptor exhaustion by releasing channel sockets as soon as either side leaves. Pull request #2230
- Runtime config overrides now reach workers through the configuration service without persisting to disk. Pull request #2231
- Managed engine lifetime now follows the compose process, with SIGHUP treated as graceful shutdown. Pull request #2227
- Engine telemetry now reports harness usage, long session flags, and collects operator email. Pull request #2213
- Website updated with compose::add examples, new onboarding script, and aligned AGENTS documentation. Pull request #2229
- Removed Amplitude vendor dependency, eliminating duplicate HTTP requests and API keys. Pull request #2222
- Configuration migration now uses exact default IDs and keeps overrides runtime-only. Pull request #2220
- Release workflow now accepts validated explicit version overrides for maintenance releases. Pull request #2218
Why it matters
Version 0.24.3 addresses critical resource leaks in the engine and improves visibility into compose startup behavior. The compose reporting feature makes failures and performance measurable for new users, while socket and telemetry fixes reduce infrastructure costs and operational complexity.
Changelog entry
- Feat(compose): report what a compose project did Release
- Chore(telemetry): remove Amplitude Pull request #2222
- Fix(engine): release channel sockets as soon as a side leaves Pull request #2230
- Fix(compose): deliver runtime overrides through the configuration service Pull request #2231
- Fix(compose): tie managed engine lifetime to compose Pull request #2227
- Feat(telemetry): report harness usage, flag long sessions, and accept email Pull request #2213
- Fix(compose): migrate readable config names and keep overrides runtime-only Pull request #2220
- Feat(release): allow validated explicit version overrides Pull request #2218
Iii 0.24.3 ships compose project reporting for startup visibility, fixes file descriptor exhaustion in long-lived connections, and removes the Amplitude vendor dependency.
Iii 0.24.3 is out. Compose now reports what projects do—critical for seeing startup failures and performance. Fixed channel socket leaks that exhausted file descriptors under load. Removed Amplitude telemetry to cut duplicate vendor calls and simplify the binary. Engine lifetime now follows compose process lifetime, with SIGHUP graceful shutdown.
Week of September 14, 2026
What shipped
- The installer now accepts --non-interactive flag or III_NON_INTERACTIVE environment variable to skip setup prompts. Pull request #2211
- Setup offers new flags: --start-with to scaffold and declare workers, --need-envs to request environment variables, and --skip-bin-download to defer binary downloads. Pull request #2195
- Engine adds configuration::ensure for atomic seed-if-empty initialization. Pull request #2214
- Compose now derives stable default configuration IDs from namespace and container key instead of using arbitrary values. Pull request #2212
- Startup displays download progress for package artifacts with per-worker status rows and progress bars. Pull request #2175
- Native musl iii-worker artifacts for
x86_64and aarch64 are now published and automatically selected on Alpine. Pull request #2192 - Compose startup can now be cancelled with Ctrl+C during lock waiting, metadata resolution, or artifact downloads. Pull request #2190
- Package metadata resolution now happens concurrently instead of sequentially, respecting the existing III_COMPOSE_MAX_PARALLEL_WORKERS limit. Pull request #2186
- JavaScript and Rust dependencies updated: OpenTelemetry to 2.x and 0.32, ws to 8.21. Pull request #2196
- Cargo and npm dependencies updated to close security advisories and gate supply chain checks in CI. Pull request #2197
Why it matters
This week brings installation improvements for unattended setups, better composition of workers with pre-configured environments, and critical reliability fixes for startup cancellation and configuration consistency. Download progress visibility and concurrent metadata resolution speed up the developer experience, while Alpine musl support and dependency updates extend platform compatibility and security.
Changelog entry
- Feat(install): add --non-interactive and III_NON_INTERACTIVE environment variable to skip setup prompts Pull request #2211
- Feat(install): add --start-with, --need-envs and --skip-bin-download flags to the setup offer Pull request #2195
- Fix(install): accept single keypress at harness tour prompt without requiring Enter Pull request #2189
- Feat(configuration): add atomic seed-if-empty ensure Pull request #2214
- Fix(compose): scope default configuration IDs by namespace with readable prefix and 16-character digest Pull request #2212
- Feat(compose): show startup download progress with per-worker status rows and progress bars Pull request #2175
- Fix(compose): make startup cancellable with Ctrl+C during lock waiting, metadata resolution, and downloads Pull request #2190
- Fix(compose): resolve package metadata concurrently using III_COMPOSE_MAX_PARALLEL_WORKERS limit Pull request #2186
- Fix(worker): publish native musl iii-worker artifacts for
x86_64and aarch64 on Alpine Pull request #2192 - Fix(compose): inherit machine environment in workers and apply
env_fileentries in declaration order Pull request #2203 - Fix(compose): preserve
env_filevalues for blank environment entries Pull request #2191 - Fix(compose): replace variant mapping when
config_overridechanges its name Pull request #2188 - Fix(compose): find workers after YAML comments including comments at column zero Pull request #2185
- Fix(cli): honor III_URL in iii trigger Pull request #2167
- Fix(cli): read the compose file's engine url in iii trigger Pull request #2168
- Fix(deps): move OpenTelemetry to JS 2.x / Rust 0.32 and ws to 8.21 Pull request #2196
- Chore(security): close remaining advisories and gate supply chain in CI Pull request #2197
- Fix(worker): publish lean runtime and builder Docker images Pull request #2182
- Fix(compose): a terminal operation event stops claiming a dead worker is ready Pull request #2176
- Feat(telemetry): report each completed onboarding tour step Pull request #2184
Iii 0.25.0 week: non-interactive installs, worker scaffolding flags, concurrent package resolution, startup cancellation, Alpine musl support, and security updates.
This week's iii updates focus on installation flexibility and startup reliability. The installer now supports non-interactive mode and new scaffolding flags for declaring workers and requesting environment variables. Compose improvements include concurrent package metadata resolution, visible download progress, and the ability to cancel startup with Ctrl+C. Alpine musl workers are now supported with native artifacts, and dependencies have been updated for security and compatibility.