Skip to content

v4.5.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 01:11

What's Changed

Policy Packs

  • Save and reuse run configurations: amicus pack save <name> --kind council|fanout|solo [flags] captures your bench, chair, critic/lenses, options, and briefing template as a reusable JSON file. Load it with --pack <name> on any run, and explicit flags always override the pack's values. Packs are recorded on the run metadata either way, so you always know which configuration was used.
  • Pack management commands: amicus pack list, pack show <name>, and pack rm <name> help you organize saved packs. --from-run <id> builds a pack from a run you already liked instead of typing flags manually.
  • MCP pack semantics: On amicus_start, amicus_fanout, and amicus_council_run over MCP, packs resolve in-process without forwarding to child processes. Special handling for maxCost and template ensures they apply correctly even on the MCP path, and any pack field with no MCP destination surfaces as an explicit notice so nothing silently disappears.
  • Council packs reject invalid fields: agent, thinking, and summaryLength are now rejected on council packs with PACK_INVALID, since the council engine hard-codes these values and ignores pack values anyway. They remain valid on fanout and solo packs.

Briefing Templates

  • Render {{variable}} templates before sending: --template <name|path> with optional --artifact <file> and repeatable --var k=v renders a Markdown briefing with known variables like {{prompt}}, {{artifact}}, {{date}}, and {{project}}. Templates live in ~/.config/amicus/templates/, and a user template shadows a built-in of the same name.
  • Strict template rendering: Unknown variables, missing data, or unused --var values all fail with TEMPLATE_RENDER rather than silently dropping data, catching mistakes early.
  • Template library management: amicus template list and template show <name> inspect saved templates. v4.5 ships one built-in, review. On MCP, a pack's briefing.template is the only way to reach a template since the tools have no template param of their own.

Council Workspace Auto-Open

  • GUI launches automatically on MCP council runs from Claude Code (local): When amicus_council_run is invoked from Claude Code (local), the Electron workspace window now opens automatically after the run starts, eliminating the need for a separate amicus watch <runId> --ui call. Decision order respects explicit ui params, hard guards (no Electron, no DISPLAY), and the new workspace.autoOpen config key.
  • Workspace auto-open configuration: A new workspace.autoOpen key in config.json (default on) lets you opt out. The MCP response includes workspaceOpened: boolean and workspaceOpenReason when it did not open, so callers know why.

Council Run Observability

  • Dropped members are now recorded and surfaced: When a preset member's alias no longer resolves or has fallen out of the model catalog, run.json now carries an additive droppedMembers: [{member, reason}] array. The --json envelope and amicus_council_run MCP response include this for scripted callers, and amicus council show <name> reports the identical resolved/dropped split as a preview before you spend.
  • Pack-attributed errors are clear: When a pre-flight error names a value the pack supplied, the message adds (set by pack '<name>') so pack-caused failures are never mistaken for typos in your own flags.

Workspace Rendering Fixes

  • Blind-mode toggle no longer collapses open panels or repaints twice: Toggling blind mid-run now updates in place and paints once, preserving the open/loaded state of lazy-loaded prose panels instead of closing them.
  • Artifact name collisions no longer misattribute prose: Two models whose sanitized filenames collide (e.g., vendor/a and vendor?a both becoming vendor-a) now get deterministic suffixes (~2, ~3), and the workspace consults the collision map on every lookup instead of showing the wrong model's text.
  • Seat rows reorder to match the composed run: renderSeats now moves existing rows into place on every render, fixing the frozen row order that occurred when a repair solo or new wave changed the underlying leg order mid-run.
  • Failed council seats no longer render as perpetually live: A shared-server early return bypassed the terminal progress.json write, leaving a stage marked in-progress. Terminal-write logic is now centralized in writeTerminalProgressSafe, called at all early-return sites.

Config and Validation

  • Pack validation on save and load: Packs are validated when saved (hard-fail with PACK_INVALID for any fatal issues, warnings to stderr) and again on every use. pack show never fails on an invalid pack, only reports what's wrong.
  • Pack precedence is explicit: Everywhere a pack applies, resolution order is flag > pack > config default > built-in default, so explicit command-line flags always win and packs only fill in what you didn't say.
  • Schema normalization: Five v4.3-era schemas now use the raw-file $id convention, and a new schemas/pack.schema.json documents all 19 schemas in the repo.

MCP Improvements

  • MCP schemas reflect actual defaults: amicus_start and amicus_fanout no longer declare JSON-Schema defaults for agent, noUi, or includeContext, keeping schema metadata honest while defaults are still applied at the same read sites.
  • Pack child pid pre-seed on fanout: The fanout wave pre-seeds pack-related child process metadata so deaths are reapable, even before pack-using child processes are created.

CLI and Tooling

  • Template and pack CLI handlers: New amicus template and amicus pack command trees, with full coverage of list/show/save/rm operations and robust error handling.
  • Explicit-flag precedence in parseArgs: The CLI's argument parser now records explicitly-typed keys for pack merge precedence, so flags always beat pack defaults.

Docs and Reference

  • Comprehensive usage documentation: Policy packs, briefing templates, and auto-open are fully documented in docs/usage.md, docs/configuration.md, and docs/council.md.
  • Implementation plan captured: docs/superpowers/plans/2026-07-27-v4.5-save-and-share.md details the 23-task implementation, with dispositions for all open items tabled in the design spec.

Full Changelog: v4.4.1...v4.5.0