v0.3.2
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