Skip to content

chore(release): version packages - #245

Merged
aterrylu merged 1 commit into
mainfrom
changeset-release/main
Jun 28, 2026
Merged

chore(release): version packages#245
aterrylu merged 1 commit into
mainfrom
changeset-release/main

Conversation

@aterrylu

@aterrylu aterrylu commented Jun 24, 2026

Copy link
Copy Markdown
Owner

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@autonomos/dashboard@0.4.0

Minor Changes

  • #263 0998a6d Thanks @aterrylu! - Rebuild the terminal tabs + split-pane layout on dockview, and make it the default. The hand-rolled binary-tree layout, the detached-terminal overlay (SessionMountLayer), and the hidden groups workspace-swap are replaced by a dockview-react dock that owns the pane topology (ADR-047). dockview's renderer: "always" keeps every terminal's xterm mounted across tab switches, retiring the most fragile hand-rolled system — the manual rect-flying overlay.

    What changes for you:

    • Click = navigate, drag = compose. Clicking a sidebar agent (or Org Chart / Templates / Schedules / New Agent) opens it solo in its own group. Dragging one into the pane area composes a tab or split — and that arrangement is saved as a bound workspace: click any of its members later and the whole group is restored, persisted across reloads (and a cold reload restores exactly what you were last viewing). Drag works from both the flat and hierarchical sidebar views.
    • Cleaner chrome. Tab titles match the sidebar size, the active tab is outlined with the app's hairline divider, terminals fill their panel edge-to-edge, and dockview's redundant per-group "tab overflow" dropdown is hidden. Dragging the highlighted tab no longer shows a phantom split overlay (you can't split a pane against itself).

    Two terminal bugs fixed along the way:

    • Sidebar active-highlight no longer flickers between agents while you move/split tabs (the dockview→store sync now ignores the transient mid-drag activations and applies only the final one).
    • Terminals no longer slowly shrink to a tiny size after the session sits idle. Hidden panels now get a real display:none, which restores the visibility check that disposes their WebGL context and skips fitting — preventing the GPU context-loss storm and mis-measured refits that drove the shrink. Hardened further: degenerate resizes are never sent to the PTY, and a re-fit is scheduled after a WebGL context recreate.

    The legacy layout engine remains available behind the layoutEngine flag ('legacy' | 'dockview') as a fallback.

  • #250 4e1fde3 Thanks @aterrylu! - The sidebar's flat view now supports pinning agents and reordering them by drag. Pinned agents appear in a section at the top, above a divider, with unpinned agents below. Pin an agent (hover a row and click the pin) and it drops to the bottom of the pinned section; unpin it and it jumps to the top of the unpinned section. New agents always appear at the top of the unpinned section. Drag-and-drop reorders agents within a section (you can't drag across the divider — use the pin button to move between sections). Your pins and manual order persist across restarts; any previous flat ordering carries over as unpinned.

  • #257 08de6c2 Thanks @aterrylu! - Replace the coarse autonomousMode boolean with a per-provider permission mode (default | auto | plan | bypass). The single on/off switch couldn't express the granularity each CLI actually supports, so spawning an agent was all-or-nothing on permission prompts.

    Each provider now maps the common mode to its native surface: Claude Code → --permission-mode default|acceptEdits|plan (or --dangerously-skip-permissions for bypass), Gemini CLI → --approval-mode default|auto_edit|plan|yolo, and Codex → approval_policy=on-request|on-failure|never (its sandbox stays danger-full-access — autonomOS is the trust boundary). Codex has no plan mode, so plan is disabled for it in the UI and clamps to the default with a warning.

    The Settings panel sets a global default and the Create Agent panel can override it per spawn; both expose a clickable "?" explainer describing what the selected mode does for each provider. Templates carry their own default permission mode.

    Migration is transparent (accept-and-discard): existing autonomousMode: true records map to bypass and false to default, the legacy field is scrubbed on read, and an unspecified mode defaults to bypass to preserve current behavior. See ADR-045.

  • #261 4806642 Thanks @aterrylu! - Flip the default permission mode from bypass to default (fail-closed). A spawn that doesn't specify a permissionMode now asks before each privileged action instead of skipping all permission prompts.

    The original ADR-045 cut shipped bypass as the default to mirror the old autonomousMode behavior, but that proved fragile: bypass emits --dangerously-skip-permissions, which the real Claude Code binary refuses under CI/root, and it silently granted full autonomy to any spawn that forgot to set a mode. A safe default matters more — callers that want autonomy now set bypass explicitly (the Settings/Create-Agent UI, MCP, and templates can all still choose it).

    Migration of existing records is unchanged: an old autonomousMode: true still maps to bypass, so already-configured installs keep their prior behavior. Only fresh/unspecified spawns get the safe default. Also: Claude default mode now emits no flag (the redundant --permission-mode default was perturbing interactive-TUI startup timing). See ADR-045 (Update 2026-06-26).

  • #249 8a0257a Thanks @aterrylu! - The agent sidebar now defaults to the hierarchical (org-chart) view instead of the flat list. The default applies to anyone who has never explicitly picked a view via the toggle — including existing installs whose view was auto-saved before this change — not just fresh installs. Once you choose a view with the toggle, your choice sticks across restarts as before.

    Also removes the "show stopped agents" eye toggle and the exited-agents list from the sidebar (both flat and hierarchy views). Stopped agents are no longer surfaced in the sidebar; the org-chart panel still lets you remove a stopped agent if needed.

Patch Changes

  • #248 69b9a2e Thanks @aterrylu! - Make the currently-displayed agent's sidebar entry far easier to spot. The active row previously used only a faint page.border background fill — a ~4-point luminance step on the Midnight navy that was nearly invisible. It now gets a gold/amber outline ring plus a soft glow (drawn with an inset box-shadow, so there is no layout shift on activation) and a subtle accent-tinted fill. The accent is sourced from each theme's own gold/amber token, so it reads correctly in Midnight (gold), Daylight (amber), and Void. The highlight works in both flat and hierarchy views — it is orthogonal to the 3px left border hierarchy view uses for parent rows, so an active agent that is also an expanded manager keeps both signals. The existing red "N unread ·" notification text is untouched and coexists with the highlight.

  • #265 333534d Thanks @aterrylu! - Clearer permission-mode dropdown labels: "Default" → Ask, "Auto-edit" → Accept edits (Plan and Bypass unchanged). "Auto-edit" was confusing — that mode auto-approves edits but still gates riskier actions, and "Accept edits" matches Claude Code's own terminology. Labels-only; the underlying enum values (default/auto/plan/bypass) and behavior are unchanged. Sourced from the single PERMISSION_MODE_INFO constant in core.

  • #266 a2815cb Thanks @aterrylu! - Remove the legacy layout engine now that dockview is the default (ADR-047, follows feat(dashboard): rebuild tabs + split-pane layout on dockview, default on #263). Deletes the hand-rolled binary-tree split system (layoutTree), the detached-terminal overlay (SessionMountLayer), the hidden groups workspace-swap, the SplitLayout/PaneSlot/DropZoneOverlay/TabBar/LayoutContext components, the layoutEngine flag, and the react-resizable-panels dependency — ~3.5k lines of fragile custom code. dockview is now the only layout engine.

    No user-facing behavior change: dockview already shipped on by default and is untouched. The sidebar's on-screen-agent indicator is re-sourced from dockview's live panel set (was derived from the deleted layout tree). The legacy split/close keyboard shortcuts (Ctrl+D / Ctrl+Shift+D / Ctrl+W) are removed — dockview-native keybinds are a planned follow-up.

  • #255 1c393c5 Thanks @aterrylu! - Refine the flat-view pin affordance: the pin/unpin control now sits in each agent row's top-left corner (instead of reserving space on the right), reveals on hover when unpinned, stays visible once pinned, and the pin points straight down in both states (outline = unpinnable, filled = pinned).

  • #264 c36e0ae Thanks @aterrylu! - Claude Usage now reads Claude Code's local OAuth token (read-only) as the
    zero-touch default credential, calling Anthropic's OAuth usage endpoint for the
    full per-window, per-model, and extra-credits breakdown. The token is never
    refreshed and never written to disk. Pasting a claude.ai session key still works
    as an explicit override. The old cookie-scanning / agent-harvest machinery
    (which couldn't obtain a cookie on a clean OAuth-only install) is removed, and
    the autoDetectClaudeSession setting is renamed autoDetectClaudeAccount
    (the old key is still read for back-compat).

  • Updated dependencies []:

    • @autonomos/core@0.4.0

@autonomos/server@0.4.0

Minor Changes

  • #257 08de6c2 Thanks @aterrylu! - Replace the coarse autonomousMode boolean with a per-provider permission mode (default | auto | plan | bypass). The single on/off switch couldn't express the granularity each CLI actually supports, so spawning an agent was all-or-nothing on permission prompts.

    Each provider now maps the common mode to its native surface: Claude Code → --permission-mode default|acceptEdits|plan (or --dangerously-skip-permissions for bypass), Gemini CLI → --approval-mode default|auto_edit|plan|yolo, and Codex → approval_policy=on-request|on-failure|never (its sandbox stays danger-full-access — autonomOS is the trust boundary). Codex has no plan mode, so plan is disabled for it in the UI and clamps to the default with a warning.

    The Settings panel sets a global default and the Create Agent panel can override it per spawn; both expose a clickable "?" explainer describing what the selected mode does for each provider. Templates carry their own default permission mode.

    Migration is transparent (accept-and-discard): existing autonomousMode: true records map to bypass and false to default, the legacy field is scrubbed on read, and an unspecified mode defaults to bypass to preserve current behavior. See ADR-045.

  • #261 4806642 Thanks @aterrylu! - Flip the default permission mode from bypass to default (fail-closed). A spawn that doesn't specify a permissionMode now asks before each privileged action instead of skipping all permission prompts.

    The original ADR-045 cut shipped bypass as the default to mirror the old autonomousMode behavior, but that proved fragile: bypass emits --dangerously-skip-permissions, which the real Claude Code binary refuses under CI/root, and it silently granted full autonomy to any spawn that forgot to set a mode. A safe default matters more — callers that want autonomy now set bypass explicitly (the Settings/Create-Agent UI, MCP, and templates can all still choose it).

    Migration of existing records is unchanged: an old autonomousMode: true still maps to bypass, so already-configured installs keep their prior behavior. Only fresh/unspecified spawns get the safe default. Also: Claude default mode now emits no flag (the redundant --permission-mode default was perturbing interactive-TUI startup timing). See ADR-045 (Update 2026-06-26).

Patch Changes

  • #244 49e35f8 Thanks @aterrylu! - Fix the release changelog consolidator dropping most changes. The consolidated root CHANGELOG.md (and the GitHub Release body derived from it) sourced only packages/app/CHANGELOG.md, so every changeset that didn't list @autonomos/app — server-, dashboard-, core-, and cli-only changes — was silently omitted (v0.3.0's release body showed 1 of ~21 changes). The consolidator now merges all per-package CHANGELOGs, deduplicates by PR (keeping the highest severity), and renders one concise line per PR. A new unit test (wired into make check) guards the regression, and the script hard-fails if a release section comes out empty while changesets were consumed.

  • #259 8117dfe Thanks @aterrylu! - Quarantine the usage-queue-sim-integration test pending a fix for the auto-trust ↔ TUI-stdin-attachment race (ADR-036 / PR fix(server): re-deliver silently-dropped starting prompts via delivery receipt #209). The test types the prompt over the terminal WebSocket and relies on the usage-queue's auto-Enter; unlike production agent spawns it does not route through the prompt-delivery receipt mechanism, so it's exposed to the documented race that mechanism is designed to absorb. The quarantine is observable in code (a skip: true with a header comment explaining the cause and exit criteria) and reversible once either the race is fixed upstream or the test is re-routed through the receipt path.

  • #254 5b57cfe Thanks @aterrylu! - Fix agent resume failing with resumeAgentId "<id>" not found after an agent calls self_exit. The self_exit MCP tool issued a hard DELETE /api/agents/:id, which rmSync'd the agent record off disk — so a later create_agent({ resumeSessionId }) could not find it (getAgent() returned undefined). This was asymmetric with kill_agent, which soft-exits via POST /:id/kill and keeps the record as status: "exited" (resumable). self_exit now takes the same soft-exit path, marking the record exited with exitReason: "self_exited" instead of deleting it, so self-exited agents can be resumed. The /:id/kill route gained an optional { reason } body (validated against ExitReason, defaulting to user_killed) so the exit reason stays honest in the UI/notifications.

  • #260 c786abd Thanks @aterrylu! - Enable terminal WebSocket frame coalescing by default and make it leading-edge. Coalescing (added previously behind AUTONOMOS_WS_COALESCE=1) eliminates burst-induced dropped frames (measured 12/31/65 → 0 at 1/4/12 MB on a real GPU) and cuts frame count ~570× over the network/multi-pane — but a pure trailing window added up to 8 ms to interactive echo. The coalescer is now leading-edge: the first chunk after an idle gap flushes immediately (zero added latency for typing and slow output), and only a genuine burst — chunks arriving faster than the window — coalesces. This makes it strictly ≥ the historical per-chunk behavior on every axis, so it's now ON by default. Set AUTONOMOS_WS_COALESCE=0 to restore the exact per-chunk send as an escape hatch.

  • #253 37b4372 Thanks @aterrylu! - Add opt-in WebSocket frame coalescing for the live terminal stream (AUTONOMOS_WS_COALESCE=1). The live path previously sent one WS frame per node-pty chunk; Claude Code's Ink TUI emits many tiny chunks per repaint, so a burst (npm install, make build) fanned into hundreds of thousands of frames, dropping animation frames in the browser render loop. When enabled, chunks are buffered per connection and flushed as a single frame on an 8 ms window or a 16 KB threshold (whichever first). On a real GPU a 12 MB burst goes from 65 dropped frames to 0; it also cuts frame count ~570× (helping remote/SSH and multi-pane sessions) and lowers server event-loop stall. Default OFF → byte-identical to prior behavior. The PTY-exit path now flushes any coalesced tail before closing the socket so the final pre-exit output isn't dropped. Ships with an ablation harness (bun run perf:l1) and unit + regression tests. Tunable via AUTONOMOS_WS_COALESCE_MS / AUTONOMOS_WS_COALESCE_BYTES.

  • #258 42b56a4 Thanks @aterrylu! - Fix Claude Usage staying on the old account after a Claude Code account switch. The auto-detect path relied on CLAUDE_SESSION_COOKIE, which Claude Code only propagates (it never re-derives it from the logged-in account), so the cookie the server held was frozen at launch and the agents it spawns merely inherited that frozen value — restarting sessions never switched accounts. The plugin now discovers the active session key by scanning the user's own running claude processes and adopting the most-recently-started external session's cookie. The server's own process tree — the server, its spawned agents, and other children like scheduler isolated runs — is excluded both by process ancestry (descends from the server PID) and by AUTONOMOS_* env markers, so the frozen launch cookie can never win. The scan reads process env via ps//proc for the current user only — where the cookie already lives — validates the strict sk-ant-sid… shape, never logs it, and invalidates the usage cache when the account changes. It deliberately does not depend on the server itself having a cookie. Manual-paste remains the tier-1 override. See ADR-046.

  • #264 c36e0ae Thanks @aterrylu! - Claude Usage now reads Claude Code's local OAuth token (read-only) as the
    zero-touch default credential, calling Anthropic's OAuth usage endpoint for the
    full per-window, per-model, and extra-credits breakdown. The token is never
    refreshed and never written to disk. Pasting a claude.ai session key still works
    as an explicit override. The old cookie-scanning / agent-harvest machinery
    (which couldn't obtain a cookie on a clean OAuth-only install) is removed, and
    the autoDetectClaudeSession setting is renamed autoDetectClaudeAccount
    (the old key is still read for back-compat).

  • Updated dependencies []:

    • @autonomos/core@0.4.0

@autonomos/cli@0.4.0

Patch Changes

@autonomos/app@0.4.0

@autonomos/core@0.4.0

@nox-0x nox-0x left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving — automated Changesets release PR: 0.3.0→0.3.1 version bumps across all packages, root CHANGELOG entry deduped to a single line for PR #244 (confirming the consolidator fix from that PR works as intended), and the consumed changeset file removed. No logic to review.

@aterrylu
aterrylu force-pushed the changeset-release/main branch 10 times, most recently from 42ee4df to 7f20f0c Compare June 27, 2026 06:22
@aterrylu
aterrylu force-pushed the changeset-release/main branch from 7f20f0c to 52fc99e Compare June 28, 2026 19:49
@aterrylu
aterrylu merged commit fe11d46 into main Jun 28, 2026
11 checks passed
@aterrylu
aterrylu deleted the changeset-release/main branch June 28, 2026 21:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants