Skip to content

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 17:52

Core

  • Delay local embedding runtime loading (@EricSanchezok)
  • Externalize optional release bundling imports (@EricSanchezok)
  • Fix release binary dependency bundling (@EricSanchezok)
  • Add GitHub-backed plugin marketplace (@EricSanchezok)
  • Complete plugin platform overhaul (@EricSanchezok)
  • Render richer note card previews (@EricSanchezok)
  • Expand note card preview metadata (@EricSanchezok)
  • Refactor home scope runtime boundaries (@EricSanchezok)
  • Refactor synergy global server runtime (@EricSanchezok)
  • Fix startup scope label outside instance context (@EricSanchezok)
  • Improve Synergy startup terminal output (@EricSanchezok)
  • Stabilize worktree snapshot revert test (@EricSanchezok)
  • Fix rollback audit status test isolation (@EricSanchezok)
  • Harden config compatibility after PR stack (@EricSanchezok)
  • Refactor config into domain fragments (@EricSanchezok)
  • Fix browser workspace CI checks (@EricSanchezok)
  • Tidy orphaned note scope display (@EricSanchezok)
  • Implement Playwright browser workspace (@EricSanchezok)
  • Improve note card previews (@EricSanchezok)
  • Unify blueprint document tools into notes (@EricSanchezok)
  • Fix stale blueprint loop state (@EricSanchezok)
  • Remove blueprint document status (@EricSanchezok)
  • Optimize prompt cache boundary handling (@EricSanchezok)
  • Move note origin metadata to footer (@EricSanchezok)
  • fix(blueprint): slot/plan-mode/submit/restart/terminal cleanup (@EricSanchezok)
  • feat: Blueprint / Plan Mode / Loop Engineering — full frontend + backend (@EricSanchezok)
  • refactor(agent): extract agent-table and types from synergy builder (@EricSanchezok)
  • fix(blueprint): add auto-generated agent table to supervisor prompt (@EricSanchezok)
  • fix(blueprint): harden supervisor audit prompt with structured evidence requirements (@EricSanchezok)
  • fix(blueprint): tighten loop tool visibility and audit prompts (@EricSanchezok)
  • fix(blueprint): implement auditing→supervisor auto-spawn in blueprint_loop_finish (@EricSanchezok)
  • feat: add Blueprint/Plan Mode/Loop Engineering backend (@EricSanchezok)
  • fix(browser): make snapshot best-effort in browser_navigate (@EricSanchezok)
  • fix(server): allow blob: images in Content-Security-Policy (@EricSanchezok)
  • fix(browser): route blocked URLs through permission gate and sync agent tools to frontend (@EricSanchezok)
  • test(tool): validate all tool parameter schemas are JSON-Serializable (@EricSanchezok)
  • refactor(session): resolve controlProfile by parent-chain walk instead of BFS cascade (@EricSanchezok)
  • refactor(browser): replace custom CDP runtime with Playwright driver (@EricSanchezok)
  • refactor(plugin-runtime): explicit registry and functional bridge handlers (@EricSanchezok)
  • fix(profile): add network_read to CAPABILITY_PERMISSIONS enumeration (@EricSanchezok)
  • fix(typecheck): resolve test type errors in browser actions and locator tests (@EricSanchezok)
  • fix(test): update workspace enforcement test for file_external_write deny in autonomous (@EricSanchezok)
  • fix: browser-route.ts use BrowserWS interface to bypass WSContext type mismatch (@EricSanchezok)
  • fix(v2): close remaining design gaps with RED tests (@EricSanchezok)
  • fix(plugin): v4.1 audit fixes — route, policy, circular dep, naming, tests (@EricSanchezok)
  • feat(plugin): v4.1 runtime modules, auto-policy, logs, marketplace UX, dev dashboard, docs (@EricSanchezok)
  • feat(v2): complete design spec — registration, frontend panels, final integration (@EricSanchezok)
  • feat(v2): complete v2 agent tools — 9 new built-in browser tools (@EricSanchezok)
  • feat(v2): complete Browser Automation API foundation (@EricSanchezok)
  • feat(v2): Phase 2-6 modules — actions, downloads, assets, clipboard, eval, browser_read, browser_viewport (@EricSanchezok)
  • feat(v2): Phase 1 — Browser Automation API foundation (TDD) (@EricSanchezok)
  • feat(plugin): v4 gap closure — enforcement, limits, consent, UI, marketplace (@EricSanchezok)
  • feat: complete design spec compliance — 9 remaining gaps (@EricSanchezok)
  • fix(batch3-4): structural cleanup + protocol/UX consistency (@EricSanchezok)
  • fix(batch1-2): frontend store wiring, protocol, CDP resource safety (@EricSanchezok)
  • feat(plugin): v4 runtime isolation, consent engine, toolchain marketplace (@EricSanchezok)
  • refactor: BrowserOwner unified identity layer (@EricSanchezok)
  • feat(plugin): v3 final — dead code purge, naming fixes, trust tier unification, design gap closure (@EricSanchezok)
  • fix: P2 cleanup — remove setSessionFactory + BrowserRuntime.session() dead code (@EricSanchezok)
  • fix: post-audit cleanup — 17 fixes from 4-way audit (@EricSanchezok)
  • feat(plugin): Platform v3 - security, loader refactor, routes, frontend host, trusted import, sandbox (@EricSanchezok)
  • feat: Phase 3 — browser WebSocket server route (@EricSanchezok)
  • feat: Phase 2+7 — 13 agent browser tools + agent-browser skill removal (@EricSanchezok)
  • feat: Phase 1 — core browser runtime subsystem (@EricSanchezok)
  • refactor: replace all agent-visible .toISOString() with local time format (@EricSanchezok)
  • feat(plugin): Phase 0-1 security baseline — plugin IDs, capability decomposition, manifest v3, CSP, plaintext auth (@EricSanchezok)
  • refactor(agenda): unify prompt to <agenda-context> for all session modes (@EricSanchezok)
  • refactor(enforcement): reclassify internal coordination and read-only network tools as low risk (@EricSanchezok)
  • feat(agenda): inject signal context (timestamp + run count) into persistent session prompts; align anima permissions with primary agent pattern (@EricSanchezok)
  • fix: resolve 14 test failures across packages, fix cross-platform bugs (@EricSanchezok)
  • fix(sandbox): update Windows sandbox helper Rust code for windows-sys 0.59 compat (@EricSanchezok)
  • fix(enforcement): fix at token in UNSAFE_SHELL_TOKENS causing false positive (@EricSanchezok)
  • feat(enforcement): bash external paths use classifyBashRisk to select file_external_read vs _write (@EricSanchezok)
  • revise_file: align hashline reliability with oh-my-pi (#120) (@EricSanchezok)
  • feat(enforcement): split file_external capability into file_external_read and file_external_write (@EricSanchezok)
  • feat(plugin): complete Plugin Platform v2 with tests, docs, and security (@EricSanchezok)
  • fix(security): resolve all 5 remaining audit findings (@EricSanchezok)
  • fix(security): resolve 3 blockers and 1 high from security audit (@EricSanchezok)
  • refactor(ui): Phase 2b — CSS sync, import wiring, dead file cleanup (@EricSanchezok)
  • feat(plugin): add sandbox iframe shell and postMessage bridge (@EricSanchezok)
  • feat(plugin): mount PluginRoute in server.ts before SPA catch-all (@EricSanchezok)
  • feat(plugin): add server plugin routes for Plugin Platform v2 (@EricSanchezok)
  • fix(permission): merge dev diagnostic reasons into gate classify() (@yzxoi)
  • fix(plugin): enforce plugin tool classification with prefix (@EricSanchezok)
  • feat(csp): add baseline Content-Security-Policy header to SPA (@EricSanchezok)
  • fix(plugin): remove false encryption claim from auth store (@EricSanchezok)
  • refactor(permission): wire circuit breaker, remove dead code, add regression tests (@yzxoi)
  • fix(ui): surface diagnostic refusal reason in frontend audit tooltip (@EricSanchezok)
  • fix(permission): classifier must never bypass profile deny (@yzxoi)
  • fix: stop routing bug tasks to code-cartographer first (@EricSanchezok)
  • fix(enforcement): surface diagnostic reasons for all destructive shell commands (@EricSanchezok)
  • feat(enforcement): diagnostic transparency — agents see why commands are blocked (@EricSanchezok)
  • feat: grant note_write/note_edit to all subagents via common base permissions (@EricSanchezok)
  • fix(sandbox): cross-platform path normalization for Windows (@EricSanchezok)
  • fix(permission): read auto_classifier from top-level config, not permission sub-object (@yzxoi)
  • fix(classifier): don't feed capability labels to the LLM (@yzxoi)
  • fix(permission): move classifier BEFORE profile decision so Auto Mode works under autonomous (@yzxoi)
  • fix(test): stabilize flaky scope/index sort test with explicit touch (@yzxoi)
  • test(permission): add tests for rule engine and classifier (Stage 3+4) (@yzxoi)
  • feat(ui): add 'Always allow' button that persists user permission rules (@yzxoi)
  • feat(permission): wire user rules + classifier into applyGateApproval (@yzxoi)
  • feat(permission): add LLM risk classifier with circuit breaker (Stage 4) (@yzxoi)
  • feat(permission): add persistent user rule store (Stage 3) (@yzxoi)
  • test(permission): add tests for destructive analyzer, protected paths, and session memory (@yzxoi)
  • feat(permission): add Protected Paths hard boundary + resilient destructive detection (@yzxoi)
  • feat(permission): add Provenance layer for agenda-triggered sessions (@yzxoi)
  • feat(permission): add session memory + ask timeout to permission runtime (@yzxoi)
  • fix: forward attachments from plugin tool results to runtime bridge (@EricSanchezok)
  • fix(test): add non-null assertions for strict typecheck compliance (@EricSanchezok)
  • fix(test): convert require() to await import() in enforcement tests (@EricSanchezok)
  • feat(prepare): compile sandbox helper in bun dev prepare (@EricSanchezok)
  • feat(sandbox): source-deploy + pre-release sandbox usability (@EricSanchezok)
  • refactor(sandbox): deep maintainability cleanup — naming, logic, redundancy (@EricSanchezok)
  • feat(sandbox): complete CI/bundling/elevated-backend distribution pipeline (@EricSanchezok)
  • fix(test): convert require() to await import() in enforcement tests, fix glob test directory conflict (@EricSanchezok)
  • fix(test): update autonomous test assertions for deny shell_destructive + allow file_external (@EricSanchezok)
  • fix(profile): autonomous denies shell_destructive, update tests for new behavior (@EricSanchezok)
  • fix(test): add async/await to all EnforcementGate.create() calls across gate/mcp-plugin/workspace tests (@EricSanchezok)
  • fix(test): add async to mcp-plugin test functions for await EnforcementGate.create (@EricSanchezok)
  • fix(test): add await to EnforcementGate.create calls, update workspace test for autonomous external-write (@EricSanchezok)
  • fix: typecheck green — await EnforcementGate.create, handle missing config context, regen SDK (@EricSanchezok)
  • fix(profile): handle missing config context in resolveEffectiveSandbox (@EricSanchezok)
  • fix(test): skip glob-expand tests on APFS edge cases, merge dev at 7d61eb3 (@EricSanchezok)
  • fix(anima): bind model role (mid) so agenda cron jobs respect current model config (@EricSanchezok)
  • feat(profile): redesign autonomous for full dev access with recovery guidance (@EricSanchezok)
  • chore(sandbox): release readiness — CI hash scripts, bwrap bundle docs, README fix, macOS SBPL finish (@EricSanchezok)
  • feat(sandbox): Codex parity — 18 nodes across WFP, ConPTY, desktop, proxy runtime, protected create, glob expansion, deny-read matcher, metadata intercept, permission intersect, macOS SBPL expand, unix socket exec, symlink TOCTTOU, win deny-read ACL, setup flow, network disabled env, elevated backend, hash comments, bwrap docs (@EricSanchezok)
  • fix(sandbox): review — dead imports, env filter, clippy, misleading messages (@EricSanchezok)
  • feat(sandbox): out-of-box UX — fallback warn, bundled bwrap, doctor CLI, helper CI, readiness guides, WSL2 routing (@EricSanchezok)
  • feat(sandbox): Codex parity — TOML permissions, ExecPolicy, WFP backend (@EricSanchezok)
  • style: apply prettier formatting to engram files (@EricSanchezok)
  • fix: resolve type errors from controlProfile and command.template optional types (@EricSanchezok)
  • feat(sandbox): P1 parity — SBPL base policy, approval cache, after_spawn, proxy domain routing, WSL detection (@EricSanchezok)
  • feat(sandbox): P0 parity — full-read bwrap, ConPTY/desktop FFI, glob deny-read, metadata write intercept (@EricSanchezok)
  • fix: repair merge-conflict regressions in invoke.ts + tighten collapsible border and background colors (@EricSanchezok)
  • feat(sandbox): parity contracts — Landlock runtime, capability SIDs, desktop/env, proxy bridge, hash script (@EricSanchezok)
  • feat(sandbox): add Windows pipe forwarding and ConPTY contracts (@EricSanchezok)
  • feat(sandbox): add Windows stdio bridge and command-line builder (@EricSanchezok)
  • feat(sandbox): add Windows restricted token and process contracts (@EricSanchezok)
  • feat(sandbox): Phase 3 Windows helper config parity (@EricSanchezok)

App

  • Allow plan mode before session creation (@EricSanchezok)
  • Refine prompt plan mode controls (@EricSanchezok)
  • Update sidebar agent icon (@EricSanchezok)
  • Clarify blueprint tool icon semantics (@EricSanchezok)
  • Use adaptive note code block themes (@EricSanchezok)
  • Refine prompt input attachments (@EricSanchezok)
  • Refine notes workspace visual hierarchy (@EricSanchezok)
  • Refine blueprint status menu and colors (@EricSanchezok)
  • Unify blueprints into notes panel (@EricSanchezok)
  • Support blueprint runs from empty sessions (@EricSanchezok)
  • Polish notes and blueprint panels (@EricSanchezok)
  • refactor(app): extract prompt editor hook (@EricSanchezok)
  • refactor(app): extract prompt submit and attachments (@EricSanchezok)
  • refactor(app): split prompt input helpers (@EricSanchezok)
  • fix(blueprint): Run executes immediately, unify semantic icons, fix UX details (@EricSanchezok)
  • fix(ui): always show workspace rail on desktop, show browser only for active sessions (@EricSanchezok)
  • fix(ui): strip cICP chunk from Display P3 PNGs before browser decode (@EricSanchezok)
  • fix: tool-browser workspace import path (@EricSanchezok)
  • feat: Phases 5+6 — annotation system + agent assistant mode (@EricSanchezok)
  • feat: Phase 4 — frontend browser workspace components (@EricSanchezok)
  • refactor(sidebar): unify session and project list animations with MD3 corporate motion (@EricSanchezok)
  • fix: surface browser image decode error details in drop attachment toast (@EricSanchezok)
  • simplify NoteCard footer: pin + time only, remove title and tags (@EricSanchezok)
  • feat(sidebar): live project reorder with FLIP animation (@EricSanchezok)
  • reduce sidebar project session indentation from 24px to 6px (@EricSanchezok)
  • feat(plugin): wire sandbox iframe lifecycle to all panel paths (@EricSanchezok)
  • feat(plugin): add error boundaries around all plugin UI content (@EricSanchezok)
  • feat(plugin): wire declarative tool renderer fallback metadata (@EricSanchezok)
  • feat(plugin): add PluginPermissionsDisplay consent UI component (@EricSanchezok)
  • feat(plugin): wire panel skeleton→mount lazy-load lifecycle (@EricSanchezok)
  • feat(plugin): wire tool renderer lazy loading to message-part (@EricSanchezok)
  • feat(plugin): migrate theme and icon systems to registries (@EricSanchezok)
  • feat(ui): add FLIP animation for sidebar session reordering and unify sort consistency (@EricSanchezok)
  • feat(plugin): add declarative JSON Schema settings form renderer (@EricSanchezok)
  • refactor(ui): Phase 2a — unified ToolTrigger component, BasicTool cleanup (@EricSanchezok)
  • feat(plugin): migrate settings and panels to plugin registries (@EricSanchezok)
  • fix: smooth note card hover and show tag filter scrollbar (@yzxoi)
  • fix: preserve workspace tool state across panel close/reopen (@yzxoi)
  • fix: let session flex-track workspace drawer width for smooth resize (@yzxoi)
  • feat(plugin): add frontend plugin loader, lifecycle manager, contributions fetcher (@EricSanchezok)
  • feat(plugin): add tool/part renderer registries with lazy loader (@EricSanchezok)
  • feat(plugin): create frontend registries and PluginHostProvider (@EricSanchezok)
  • fix(ui): add loading states for sidebar projects and session content (@EricSanchezok)
  • feat(ui): hide timeline and tool args in compact mode when workspace opens (@EricSanchezok)
  • fix: measure todo panel height from content child instead of body (@EricSanchezok)
  • fix: make SessionProgressIsland todo panel shrink to fit content (@EricSanchezok)
  • fix: use clip-reveal pattern for drawer instead of translateX to prevent partial-width flash (@EricSanchezok)
  • fix: prevent stale DAG from reappearing across agent turns (@EricSanchezok)
  • fix: clip drawer panel overflow to prevent partial-width flash during slide-in (@EricSanchezok)
  • refine: workspace drawer slides in from right (300ms, MD3 emphasized easing) (@EricSanchezok)
  • fix: prevent SVG hold ring from filling black on click, extend hold-to-cancel to 2s (@EricSanchezok)
  • feat(ui): add Auto Mode toggle to session permission popover (@yzxoi)
  • feat(ui): add Auto Mode toggle in Settings for classifier auto-allow (@yzxoi)
  • feat(ui): enhance PermissionDock with session-allow + risk reason (@yzxoi)
  • fix: float SubagentDock above progress island in shared out-of-flow wrapper (@EricSanchezok)
  • fix(sidebar): defer project highlight when a session is selected (@yzxoi)
  • refactor(ui): remove glass-effect(backdrop-filter/color-mix) from statusbar and progress island, replace with solid opaque surfaces (@EricSanchezok)

SDK

  • Add LLM agent documentation entrypoints (@EricSanchezok)
  • feat(plugin): add permissions schema to PluginManifest (@EricSanchezok)
  • feat(plugin): add Plugin Platform v2 frontend UI SDK types (@EricSanchezok)
  • feat(plugin): add contributes.ui schema to PluginManifest v2 (@EricSanchezok)
  • chore(sdk): regenerate SDK types for updated SandboxConfig backend enum (@EricSanchezok)