Releases: CJackHwang/Succinix
Release list
Succinix v0.6.0
Succinix v0.6.0 — dsh service keys: ctx.fs · ctx.sandbox · ctx.terminals · ctx.sessionPersistence
Browser-native Linux, MIT licensed. This release aligns the engine to the dsh (DeepSeek Harness) service contract: the self-namespaced ctx.succinix single-key surface is removed, and the engine now provides the dsh 0.1.0-rc.6 service keys over the same browser-native execution world (WebContainer + Lifo + Pyodide). Cordis baseline moves to @deepseek-ai/cordis@4.0.1.
dsh service alignment (breaking)
ctx.succinixremoved — no legacy key, no deprecation shim; the engine providesctx.fs,ctx.sandbox,ctx.terminals,ctx.sessionPersistenceper the dsh 0.1.0-rc.6 contract.ctx.fs— 12 primitives, 13 error codes,sandboxMode,sandboxPolicy, opaquetargetKey, LF-normalized outcomes, boundedreadBytes(dsh error/identity contracts).ctx.sandbox.confine— fail-closed: acceptsread-onlyandworkspace-write; realnode|npm|npxsubprocesses throwSANDBOX_UNAVAILABLEin confined mode.ctx.terminals— owner-scoped registry, fixed signal whitelist, one in-flight send per session, idempotent quiescentkill.ctx.sessionPersistence— event-sourced JSONL mirror: contiguous seq, torn-tail repair, raw artifacts, opaque revisions.- Command-context fields renamed:
ctx.succinixState/ctx.succinixPlugins→succinixState/succinixPlugins.
Contract discipline
- Vendored dsh 0.1.0-rc.6 contract snapshots under
docs/contracts/dsh-0.1.0-rc.6/— CI no longer depends on temporary directories. - New gates wired into
npm run check:scripts/check-dsh-shapes.mjs(export shape diff vs official d.ts),scripts/check-dsh-keys.mjs. - Unit + browser e2e coverage for the four dsh services, including the external
examples/cordis-appcontract.
Quality
npm run checkgreen: typecheck / lint / 517 unit tests / build / audit / static / engine-package / docs / plugin-boundaries / dsh gates.npm run test:e2egreen: verify-deploy 76 passed; scenarios 14/14 (87 checks); lang-verify 32; instance-demo 28/28; instance-routing 27/27; cordis-app 45/45.
Full changelog:
https://github.com/CJackHwang/Succinix/blob/main/CHANGELOG.md
Succinix v0.4.0
Succinix v0.4.0 — Platform release: Terminal SDK · Multi-instance · Multi-user
Browser-native Linux, MIT licensed. This release turns Succinix into an embeddable multi-tenant Linux runtime: the terminal interaction core is now a UI-free SDK, state/snapshots/process views partition per instance, and multi-user semantics are documented as organizational isolation (not a security boundary).
Terminal SDK (E1–E4)
SuccinixTerminalSession— UI-free terminal interaction core (command history, Tab completion, real Ctrl+C interrupt, command queue, cwd-following prompt) over the narrowTerminalRpc/TerminalOutputcontracts.createTerminalBoot— parameterized boot flow (steps / retry / testMode) withBootUIprogress markers.- The standalone app is now a thin assembly layer over the SDK — no behavior change.
- New package export:
@succinix/engine/terminal(self-contained, zeronode:references).
Multi-instance (M1–M5)
@succinix/engine/instanceexportscreateSuccinixInstance({ wc, instanceId, ... })— aggregates executor + terminal session + per-instance snapshot persistence, services and port views.- Additive
instanceIdprotocol field: state files under/workspace/.succinix-<id>, per-instance IndexedDB snapshot keys, per-instancepsfiltering, per-instanceinterruptandkillauthorization (cross-instance kills rejected). ?instance=<id>starts the standalone app as a named instance — dual-tab demo, e2e verified (27/27 checks).- Same-page multi-instance (future host use): shared RPC channel + single watchdog + per-instance service/port registries (documented boundary — Lifo interaction cwd is page-level).
Multi-user semantics (U1)
userIdandinstanceIdare the same field;?user=<id>seeds a per-user home (/workspace/users/<id>), prompt and node/python spawns start there, state/snapshots/process views are per-user.- Host-side kill authorization rejects cross-instance/system kills for non-default instances.
- Documented as organizational isolation, not a security boundary (AGENTS.md / SDK.md / PROTOCOL.md).
Quality
- Self-test
?test=1: 76 passed, 0 failed, 5 skipped (was 71). - Vitest: 336 tests across 26 files (was 118).
- Bench (measured): boot → prompt ~6.1 s (dominated by WebContainer.boot, environment-dependent); Lifo/Node command p50 ≈ 79 ms — no regression vs 0.3.0; snapshot N=200 → 13 ms.
- host.js grew 5 KB → 15 KB (per-instance routing lives in the host daemon); lifo-core.js unchanged (lazy-loaded).
Full changelog:
https://github.com/CJackHwang/Succinix/blob/main/CHANGELOG.md
Succinix v0.3.0
Succinix v0.3.0
Browser-native Linux — a full Linux-like OS inside WebContainers, MIT licensed.
Highlights
- Boot screen simplified — no DOM splash overlay; boot logs (
[ OK ]lines) stream straight into the terminal, motd + prompt follow directly after self-test. - Built-in Python on Pyodide 314.0.4 (Python 3.14.2) — resident daemon, state accumulates across commands,
pip/pip3+python -m pipvia micropip. Pure-Python wheels persist across refresh; compiled wheels need a re-install (documented boundary). - Process ownership annotation —
ps()responses carryscope(system/container/unknown) +containerId, enabling host projects (e.g. SunamAI) to filter processes per container and block cross-container kills. - TODO-optimizations: full 19-item batch (P0–P6) — bounded snapshot loss window (30 s max-age force), single-host respawn invariant, engine/host-route pure logic extraction, Ctrl+C interrupt + command queue clear, Up/Down history + Tab completion, shared theme/util/version modules, ~94.5% line coverage gate.
- Language ecosystem verification —
scripts/lang-verify.mjs(28 checks: Python/Pyodide, Node/TS, Ruby WASM probe, shared-FS read/write across runtimes),docs/LANGUAGES.mdmeasurement-backed support matrix.
Fixes
cd /returns to workspace root (session-cwd sync missed non-/workspacepaths)- Prompt follows session cwd —
cd /workspace/proj→guest@succinix:~/proj$ - Auto-snapshot 30 s age-force re-arms after restore; post-request
/cmd.jsondelete no longer swallows out-of-band probes - Spawn failure race: fast-exiting processes reported
ok:falseinstead of a phantom success
Ecosystem
@succinix/engine0.1.3 on npm (self-contained engine package for embedding Succinix in host projects)- Full changelog: https://github.com/CJackHwang/Succinix/blob/main/CHANGELOG.md