Repository navigation
Releases
v0.2.0
Compatibility
- 0.2.0 N-1 support targets 0.1.8, the latest published patch of 0.1.x, and remains additive on API 1:
- Plugin API: verified by a directional type bridge (old plugin values accepted by the current console; current console values satisfy old plugins; historical optional keys are retained) and the exact published 0.1.8 conformance kit against a 0.1.8-shaped provider opened by the current loader. New principal capabilities remain opt-in.
- Routes: verified for the legacy browser session, tool listing, ping, panel snapshots, actions, confirmation-token exchange and a sample plugin asset through both tool-id and load-reference paths. Other Access/bearer and static-shell routes remain supported by policy but are not exercised by the added historical probe.
- Space route: a producer Space reply
{changed: false, cursor}without a scene now passes through unchanged instead of being projected to an empty scene. A 0.1.8 static shell treats it as a failed source for that poll instead of blanking the scene; current shells keep the last scene. - Manifest files: verified for unversioned and versioned API 1 plugin registrations with module/hash validation. Existing pet/asset pack manifests and static node configuration remain supported by policy but are not covered by this N-1 probe; the principal registry is an additive new surface.
Added
-
Refit Room into the remaining viewport with compact avatar/name-tag controls, hover/focus fact popovers, non-overlapping CSS billboards and the existing projected 3D overlays. Keep Scene style controls inside Room, one scene scroll region, a screen-reader summary and a visible Team text alternative. Unify Space state styling and working indicators using existing tokens (#101).
-
Add header-only snapshot versions and
X-Acon-Knownconditional request headers, preserving plugin cursor replies and forwarding version/freshness headers through the static transport. Adapt polling to request duration while keeping the inbox's 5-second minimum, pause hidden panel/Space polls with immediate visible refresh, progressively render inbox sources, refresh expired snoozes on unchanged rounds, and drive Room motion from the client observation clock without marking healthy SWR sources failed (#105). -
Add the Space Board view with per-group zone columns, producer-linked cards, owner detail controls, and collapsed Done history showing the last five supplied cards. Keep horizontal scrolling within each board row, preserve focus/disclosures, and cover the responsive matrix with a Board probe (#101).
-
Coalesce identical snapshots across viewers in a bounded in-memory LRU cache with per-panel TTL overrides, stale-while-revalidate, action/reload invalidation and separate principal keys. Declared readOnly principal tools preserve the cache; other principal actions and all console actions invalidate it. Keep producer bodies and error snapshots unchanged, expose freshness only through cache/age/sample-time headers and add System cache/provider timing diagnostics, and add a private-output snapshot timing probe (#105).
-
Add the Space Flow view with per-project actors, directed 15-minute message counts, distinct relationship strokes and recent activity. Keep at most 200 public link events for 30 minutes in page memory, and show per-peer counts and the last 10 events in agent detail. Suspend the minute refresh while Flow is hidden (#101).
-
Make Team the default Space view while honoring a saved view choice in
acon.space.section; the Space header now scrolls with the page. Add per-group attention and active-agent summaries, collapsed idle/away rows, and namespaced actor detail routes with responsive presentation and focus restoration; keep the roster in Room. Extend the browser probe for Team/detail navigation and persistence, including a reload withviewremoved (#101). -
Add optional public Space groups, actor roles and state-change timestamps, with a group filter and Room as the default view. Raise caps to 96 actors and 128 links; save the Flat/Room/3D sub-toggle separately as
acon.space.roomView. These API 1 fields are additive: N-1 compatibility is unaffected because older consoles ignore unknown optional fields. -
Add synthetic H1/A1 lineage and comparison integration fixtures with explicit owner/project/hash routing, bounded pages and lazy evidence reads, plus isolated compact/wide keyboard and visual checks (#63).
-
Serve authenticated MCP principal tools at
/principal/mcpwith a private live registry, verified Access or separate bearer identity, per-principal rate and concurrency limits, read-only filtering, bounded bodies/results and metadata-only audit. Addacon principal list|off|onand document the 2025-11-25 transport and registry schema (#88). -
Add opt-in principal tool declarations, dedicated principal snapshot/action ports and bounded public JSON results. Console dispatch builds person actors; principal dispatch never falls back to console ports. The conformance kit validates principal declarations while API 1 plugins remain compatible (#88, contract slice).
Fixed
-
Refresh Team, Flow, Board and Room avatars when installed pet ids change without scene fact changes; retain focus, disclosure state and unchanged-poll memo behavior (#101).
-
Restrict geometry-forced Space updates to Room: Team, Flow and Board use CSS layout and no longer rewrite unchanged root controls on ResizeObserver notifications. Wait for both fixture producers before measuring Team polls; remove its CSP-incompatible predicate waits (#101).
-
Honor
changed: falsepanel replies without notifying listeners or rerendering, while updating the conditional cursor and retaining legacy full-snapshot deduplication (#63). -
Safely release queued diagram visibility callbacks after frame handover or a visible theme redraw, without dereferencing a cleared observer (#90).
Install
npm i -g @staix/agent-console@0.2.0
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 248cba368b1bed3ca5d823a0e0d6e2c885ae3ef8697e7d72d2e1f845e7350808) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.8...v0.2.0
v0.1.8
Fixed
- Preserve the last successful CI verdict across release-gate API errors, distinguish API outages from missing runs, and give actionable release and CI failure messages (#83).
- Defer Mermaid theme redraws while panels are hidden, document inline WebP images, reject unsupported visual overflow controls, and report isolated UI server readiness failures (#87).
Install
npm i -g @staix/agent-console@0.1.8
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 d2b652fed13938577952722e3450bf811bf02d5f922604b76b61203c6c8a1261) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.7...v0.1.8
v0.1.7
Added
- Serve plugin
image/webpassets inline under the PNG/JPEG header and size policy, checking RIFF/WEBP magic in the conformance helper and route before serving (#81), including the static shell attachment viewer. - Export recursively frozen
VISUAL_CASESandVisualCasefrom@staix/agent-console/visual-cases, with DOM-free shared visual conformance cases and renderer regression checks, including 512-character asset ids and Mermaid UTF-16 boundaries (#78).
Changed
- CI and release hardening (#64):
check.ymladds oneif: always()aggregate job,ci-ok, that fails on any non-success gating result.release.ymlstarts with agatejob (scripts/release-gate.ts) that checks tag, version,mainancestry and the dated CHANGELOG entry and waits, with a deadline, for the tag commit'sCheckrun to finish green before anything publishes.scripts/release-tag.tsbumps the version first and is the only way to create a release tag. The GitHub release step retries API calls on 5xx and 429. Both workflows pinactions/checkoutv6.
Fixed
- Hidden Mermaid frames report successful renders after image load and synchronous layout, without waiting for requestAnimationFrame; the 5 s fallback, 20 KB cap and sandbox stay unchanged (#84).
Install
npm i -g @staix/agent-console@0.1.7
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 dcd534daaa5645bdeb610045d3c3127f880b870dbc6bec6df3fde7778d8be0ff) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.6...v0.1.7
v0.1.6
Changed
- Scope the zero-dependency import rule to
src/and document the browser vendoring policy (#72). The boundary check now validates every vendor manifest's exact devDependency pin, allowed license and adjacent NOTICE. The shippedshell/vendor/files and total size are unchanged. - Review selections use an equal thin outline and row fill; thread marks include an icon and comment count, and review quotes have no side band (#71, PR 1). New additive control-boundary, motion and theme-aware scrim tokens improve contrast and consistency, with a documented radius rule, private layer scale and a regression design guard. Existing public tokens/classes and reduced motion remain supported.
- Shell icons come from vendored Tabler outline icons (
@tabler/icons3.50.0, MIT) instead of hand-drawn paths (#71).scripts/vendor-icons.tswrites the path data of 14 icons toshell/vendor/icons/icons.jswith a per-source SHA-256 manifest and NOTICE. Icon names in plugin manifests are unchanged, unknown names still fall back tobox, andbrandstays the acon mark.shell/vendor/grows by 5,657 bytes (icons.js 1,522, manifest.json 2,903, NOTICE 1,232). - Touch, reading and resilience (#71, PR 2): on coarse pointers every button, rail link, search, tab, icon button and input is at least 44 px tall at any width, so tablets in landscape get touch targets. Detail, thread and review prose bodies read at
--acon-text-basewith line-height 1.65. Forced-colors mode keeps chips, badges and notices outlined. Selections use the accent tokens, the palette input has its own accessible name, and.btnhas a 1 px press offset that reduced motion removes.scripts/ui-check.mjsadds a 1024 px touch scenario that measures the 44 px targets.
Install
npm i -g @staix/agent-console@0.1.6
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 9d706464dd90fae56dd2d769e590176bdaa309c721bb298c4c81b8e9ee25b69a) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.5...v0.1.6
v0.1.5
Added
- Local Mac first, other Macs over the Cloudflare WARP mesh (#65).
--originacceptshttp://for WARP device addresses in100.64.0.0/10. A bearer node has a script-free/loginform; the token typed there gets a 12-hourHttpOnly; SameSite=Strictsession cookie that stands for the token, and a browser opening/unauthenticated is redirected to it (other callers keep the 401). Access and loopback nodes are unchanged. The README shows a loopback agent for this Mac plus a bearer agent on the WARP address. - README freshness (#67):
scripts/readme-facts.tsrenders the README's package, producer and command facts frompackage.json,src/contract.tsandsrc/cli.ts, andbun run checkfails when a block differs (--writerewrites them).docs/verified.jsonrecords the commit each document was last reviewed against;scripts/check-docs.mjsreports stale documents on every check and refuses a release with--require-fresh. A successful release notifies STAIxBWLB/agent-hub-site whenSITE_DISPATCH_TOKENis set.
Fixed
- Name agent-research alongside the other three plugin producers in
acon helpand the package description, matching the README producer table (#69). - The README lists agent-mem and agent-research among the tools that register plugins, and the 0.1.1 entry no longer contradicts the README on the hosted static-shell readback (#67).
Install
npm i -g @staix/agent-console@0.1.5
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 4c97f6e5ec99019529b00cf4dd0d7cbcf368b437c2c1316d35d1c7ffe2b8c609) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.4...v0.1.5
v0.1.4
Fixed
- The static shell reports a request that hits its own deadline as slow ("the node is reachable but busy"), not as "refused (origin)". A slow node stays usable: it counts as online, with a "slow" note in the status chip, and its next request is still sent. Only a network failure with a reachable health probe is reported as "refused (origin)" (#59).
- Inbox polling keeps at most one snapshot in flight per tool. A tick shares a slow tool's pending request. An explicit refresh waits for it and then polls once, and every caller waiting on the same request shares that poll. Slow providers no longer pile up requests every 5 s (#60).
Install
npm i -g @staix/agent-console@0.1.4
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 caf65ca2bb9dc81a5a8fb0e9e20433349c873fa3cf71baa3d0add15e823c0c27) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.3...v0.1.4
v0.1.3
Fixed
acon setup launchd --applywaits up to 10 s forlaunchctl bootoutto finish beforebootstrap, which failed with error 5 when it replaced a running agent (#56).- The plist keeps the PATH
bunlink (such as/opt/homebrew/bin/bun) when it is the running binary instead of the versioned Cellar file thatbrew upgraderemoves (#56). acon build --staticwritescompatibility_date2026-10-01, which recent wranglers support (2026-11-04 was refused). It also adds.vercelignore, so Vercel no longer serveswrangler.jsonc,.assetsignoreor_headers(#55).- The README notes that the first Vercel or Workers deploy of a new project can be a production deployment (#55).
Install
npm i -g @staix/agent-console@0.1.3
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 839a6aacb407373c81ba933b7fba20e24b4e730b0302768e2c3ed319c99f77e5) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.2...v0.1.3
v0.1.2
Fixed
- The contract no longer references the DOM lib (#52), so consumers compiled with
lib: ["ESNext"]no longer get DOM globals such asdocument. Panel-side types resolve to the exact DOM types (HTMLElement,HTMLButtonElement,HTMLFormElement,Node) when the consumer has the DOM lib, and to the new structuralConsoleElementandConsoleNodeotherwise.bun run checktypechecks the contract and conformance without the DOM lib. Types only, with no change for DOM-typed panels.
Install
npm i -g @staix/agent-console@0.1.2
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 f41b42e7de2aeb7d0803d49f22f16ad035549eebae0c1b45ee27afab7b957a6b) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.1...v0.1.2
v0.1.1
Added
- H2 static shell (#46):
acon build --static --nodes id=https://origin[,id=origin] [--out dist], fixed credential-free assets and Vercel/Workers static config, per-node bearer/Access auth, namespaced tools, node-owned actions and allowlisted credentialed CORS. Node-specific expiring GET-only grants serve authenticated modules/assets without exposing bearer tokens in URLs. Two-node ui-check covers ownership and distinct offline/origin-refused states. Hosted preview readback remains unverified. - H1 follow-ups (#45):
acon serve --read-only/ACON_READ_ONLY=1refuses every plugin action (403read-only node, no plugin call, no confirm token, a replayed token is not honoured), reportsreadOnly: truein/tools, and the shell shows a Read-only chip with verb, answer and confirm buttons disabled.acon token new [--file] [--force]writes a 0600 base64url bearer token and prints only its path.acon setup launchd [--label] [--apply]prints (or installs) a LaunchAgent foracon servewith auth passed as env names and file paths. The Dockerfile carries OCIsourceandrevisionlabels. - Release images (#45): behind
IMAGE_PUBLISH_ENABLED, tagged releases push multi-arch (linux/amd64,linux/arm64) images toghcr.io/staixbwlb/agent-console:<version>(andlatestfor stable versions) with OCI labels, read the manifest back and run--versionon amd64.
Install
npm i -g @staix/agent-console@0.1.1
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 09e6e471e0e5570a77411d5a493fc53857c9c3d51e643a0bfb43256c5ab4d710) and its manifest (tag, commit, SHA-256) from this run are attached.
Full changelog: v0.1.0...v0.1.1
v0.1.0
Compatibility
Initial 0.1.x minor line: N-1 is not applicable because no previous minor has been published.
-
Plugin API (#27): a plugin that checks
ctx.featuressends no forms orresultitems to a console before this release, which would report them as malformed; plugins that ignoremetaare unaffected. -
Plugin API, routes and manifest files (#26): plugins registered for api 1 with a single
<tool>.jsonand a plain"api": 1load unchanged;/p/<tool>/...routes keep working beside the new/p/<tool>@<hash>/...refs. Consoles before this release refuseapiMin/apiMaxkeys and ignore<tool>@<version>.jsonfiles (they fail the tool-id check), so a tool that needs both should keep writing<tool>.json.
Fixed
- Plugin discovery scans files that start with a
#!line (CLI entry files) instead of marking the plugin "cannot be read"; a file that cannot be scanned is now named in the reason. The stripped line ends at any JavaScript line terminator (LF, CR, U+2028, U+2029), so an import after a CR-terminated#!is still checked.
Added
-
host.ui.button(label, onClick, {tone?, disabled?})(api 1, additive): abutton.btnwithtype="button"and theprimaryordangermodifier.host.ui.noticewith toneerrnow usesrole="alert"so errors are announced assertively; other tones keeprole="status"(#43). -
host.ui.visual(api 1, additive): Mermaid diagrams in asandbox="allow-scripts"frame with its own CSP (noconnect-src), lazy and reused per panel, falling back to the source text on error, over 20 KB or after 5 s; comparison cards; tables throughui.table; before/after with text or asset sides. Mermaid is vendored from@mermaid-js/tiny12.2.0 (2.8 MB) with a hash manifest andscripts/vendor-mermaid.ts --check(#29). -
host.ui.review(api 1, additive): text, prose and diff review with range selection by pointer or keyboard, anchors withlineRange,textQuoteand (diffs)diffHunk/side, placement by hash then unique quote, an unplaced strip and chunked rendering up to 20,000 lines. Contract typesReviewSelector,ReviewAnchor,ReviewThread,ReviewDoc; conformancereviewProblems; shared cases intest/fixtures/review/ship with the package (#28). -
Inbox choice answers and results (#27):
ctx.features(inbox.form,inbox.result,action.meta); verbformwith 1-4 choice questions, an "Other" text, a review step and drafts kept across a refused answer; aresultgroup withseenreceipts after the body end was in view for 1 s in a focused window, and "Mark all read";action(input, meta)with the verified identity;verbFormProblemsand feature checks in conformance. -
Staged plugin upgrades (#26):
apiMin/apiMaxranges, versioned registrationsplugins/<tool>@<version>.json(newest loadable wins), a re-scan at most every 5 s that serves a new registration to pages opened after it while open pages keep their load until restart, andscripts/install-release.tsfor immutableconsole/releases/<version>-<commit>/installs withcurrentandpreviouslinks. -
Plugin assets (api 1, additive): optional
provider.asset({id}), served at a session-gatedGET /p/<tool>/asset?id=with a type allowlist (SVG as attachment only), nosniff, a 32 MB default cap and same-origin framing; shell CSP gainsframe-src 'self';host.ui.img,host.ui.frameandhost.ui.linkaccept only this plugin's asset ids or panels; conformance checksassetanswers (#24). -
host.ui.table,host.ui.barsandhost.ui.spark(api 1, additive): a sortable text table with an exportedTableColumntype, horizontal bars with target markers and a small line, built as shell SVG with token colors, text equivalents and bounded input (500 rows, 12 columns, 50 bars, 365 points);tableColumnProblemsin conformance (#23). -
acon serve(H1): resident console with--host,--portand--origin, authenticated by Cloudflare Access JWT (RS256 against the team JWKS) or a bearer token file. It refuses a non-loopback bind without auth, binds confirm tokens to the verified identity, answers 204 on/healthzand has no idle exit. A Dockerfile runs it as non-root with a/datavolume and a health check (#20). -
acon install <name|https URL|dir>,--listand--force: pet and asset packages downloaded separately, verified against the sha256 index at assets.entelecheia.ai (ACON_ASSETS_INDEXoverrides), https only, streaming size caps, staged and installed with one rename (#17). -
Space Flat/Room/3D views: CSS room camera, opt-in on-demand vendored Three.js, projected keyboard controls, bounded embedded GLB models and Room fallbacks (#14).
-
Optional Space area: public plugin scenes, keyed actors/cards and a text roster, fact-driven motion, separately installed image packs and a CSS fallback; pack/pet image validation is shared and asset reads require a session (#13).
-
Pet and Mini, moved from agent-hub: Codex v2 pet packages from local folders drawn as CSS sprites whose pose follows the inbox, a compact
#/local/miniview with one-step answers, and a pop-out through Picture-in-Picture or a popup;GET /pets/<id>/sheetbehind the session (#12). -
Repeatable UI checks across phone, tablet and desktop widths, both themes and 200% text; rem type tokens, discoverable scrolling tabs and inline status chips on phones (#7).
-
host.uipanel kit with text-only elements, forms, keyboard-navigable rows and a shared detail template; documented public CSS classes and tokens (#5). -
acon ui(H0): loopback console with a one-time link, session cookie, strict CSP and idle exit after 5 minutes. -
Plugin discovery from
$AGENTHUB_HOME/console/plugins/<tool>.jsonwith module hash and permission checks;acon pluginslists the result. -
Console plugin contract api 1 (
@staix/agent-console/contract) with inbox, search, structured previews and undo, plus a conformance suite (@staix/agent-console/conformance). -
Verb reasons (
reason: "optional" | "required") asked inline and sent asreason; plugin palette commands (manifest.commands) that run throughaction(); a conformance check that inboxatstays stable;onSnapshotskips unchanged polls (#6). -
Confirm tokens for destructive actions: single use, 60 s, bound to session, tool and input.
-
Shell: unified inbox with keyboard triage, peek sheet, command palette, confirm dialog, undo toast, System area, light and dark themes, tablet and phone layouts.
Install
npm i -g @staix/agent-console@0.1.0
Published to npm with provenance through GitHub OIDC trusted publishing. The validated tarball (SHA-256 71e90500a07317909c9a66f36801cb52d764ae2d85f9748e51c8f5242baa7022) and its manifest (tag, commit, SHA-256) from this run are attached.