Skip to content

v0.3.2

Choose a tag to compare

@github-actions github-actions released this 04 Jul 13:22

v0.3.2 (2026-07-04)

Chores

  • ci: Add living-docs docs-validate and docs-sync caller workflows (bc1bff6)

Thin callers for the shared reusable workflows in mad-core/.github, parameterized with service_slug: mad-cli. docs-validate gates each PR to main on a clean docs structure lint; docs-sync mirrors docs/ into mad-core/mad-docs under raw/mad-cli/ after merge to main.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

Claude-Session: https://claude.ai/code/session_01GWHBALtjHVd176YddWc9YP

Signed-off-by: Jose Salamanca jose.salamancacoy@gmail.com

Documentation

  • Bootstrap and author living-docs tree for mad-cli (5adb6b3)

Add docs/.docs-manifest.yaml (service mad-cli, area backend) and the full /docs tree it declares, adapted from the org backend contract to what mad-cli is — an operator CLI with no HTTP/SSE/MCP surface and no database:

  • 01-overview: passport, context, scope, glossary - 02-architecture: overview, components + the deterministic source/test trees - 03-contracts: the CLI command surface (cli.md) and external dependencies (the generic api-reference/data-model/events entries do not apply) - 04-conventions: cli-design, layering, quality, testing-strategy - 05-operations: installation, configuration, ci-cd, release - 06-history: changelog mirrored from the semantic-release CHANGELOG.md

Content is authored faithfully from src/mad_cli, CLAUDE.md, CONTRACTS.md, README.md and the workflows. The source/test trees are generated by gen_docs; every entry's acknowledged_at_commit is stamped at the CI-callers commit so the structure lint is clean.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

Claude-Session: https://claude.ai/code/session_01GWHBALtjHVd176YddWc9YP

Signed-off-by: Jose Salamanca jose.salamancacoy@gmail.com

  • Document persistent session logs and new install options (16263ae)

Reflect the code changes in the living-docs tree and re-acknowledge every page the linter flagged at the code commit (4499532):

  • 03-contracts/cli.md: new install options (--anthropic-api-key, repeatable --set-key, --retention-days, --mcp-allowed-hosts) and the refreshed summary. - 05-operations/configuration.md: MAD_SESSIONS_DIR, MAD_SESSIONS_RETENTION_DAYS, MAD_MCP_ALLOWED_HOSTS, MAD_SSE_HEARTBEAT_S, and the new install paths for the anthropic/deepseek/linear/opencode credentials. - 05-operations/installation.md: the sessions bind mount (survives rebuilds; existing instances re-run mad install) and the extra install knobs. - 03-contracts/external-dependencies.md: the sessions mount + MAD_SESSIONS_DIR. - 06-history/changelog.md: mirror the v0.3.0 and v0.3.1 releases.

The remaining flagged pages (components, cli-design, layering, quality, testing-strategy, release) needed no content change and are re-acknowledged.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

Claude-Session: https://claude.ai/code/session_01GWHBALtjHVd176YddWc9YP

Signed-off-by: Jose Salamanca jose.salamancacoy@gmail.com

Features

  • cli: Ask for retention, extra API keys and MCP hosts during install (4499532)

mad install now collects several useful mad-edge settings up front so the operator no longer has to follow up with mad config set:

  • --anthropic-api-key (secret, optional): alternative billing to the Claude OAuth token; prompted right after the Claude token. Writes ANTHROPIC_API_KEY. - --set-key ID=VALUE (repeatable): a builtin registry id (fanned out to its env vars) or a custom [A-Z][A-Z0-9_]* name written verbatim. claude-oauth is rejected — it has its own --claude-token. Interactive runs offer the same via a mini-loop after the main credentials. - --retention-days (>= 1, optional): writes MAD_SESSIONS_RETENTION_DAYS, else a commented reference (unset = keep forever). - --mcp-allowed-hosts (optional): writes MAD_MCP_ALLOWED_HOSTS, else a commented reference. MAD_SSE_HEARTBEAT_S is always left as a commented reference.

install also creates the per-instance sessions/ data dir and the summary panel now shows the sessions path, retention, MCP hosts and the extra keys (masked).

EnvFile grows an additive add_comment() helper so the generated .env can carry documented, inert reference lines (get()/keys() ignore them).

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

Claude-Session: https://claude.ai/code/session_01GWHBALtjHVd176YddWc9YP

Signed-off-by: Jose Salamanca jose.salamancacoy@gmail.com

  • templates: Persist session logs via a dedicated bind mount (799e44e)

mad-edge writes its JSONL session logs (its source of truth) under MAD_SESSIONS_DIR (default ./sessions inside the container). Because that path was never bind-mounted, a mad update rebuild destroyed every session.

Add a dedicated <data_path>/<instance>/sessions:/sessions bind mount, pin MAD_SESSIONS_DIR to /sessions in the compose environment: block (forced container-side like MAD_WORKSPACE_DIR, so the mount and the variable can never diverge), and create/own /sessions in the Dockerfile's non-root user block alongside /workspaces.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

Claude-Session: https://claude.ai/code/session_01GWHBALtjHVd176YddWc9YP

Signed-off-by: Jose Salamanca jose.salamancacoy@gmail.com


Detailed Changes: v0.3.1...v0.3.2