v0.7.0
latestMega-plan execution (30 commits): plan-mode approval gates, oracle integrity, honest cost metering, independence hardening, session control plane, headless CI contract, trust posture, automation, and TUI unification. All user-facing claims below are covered by tests, mock-LLM end-to-end runs, or the VHS visual gate (`tests/visual/`, 12 reference frames at 0.00% self-diff).
Added
- Plan mode: `niki plan` researches without executing and writes reviewable
- Session CLI: `niki session list/show/checkpoints/undo/rewind` with
- User slash commands: `.niki/commands/*.md` (filename → `/name`) with
- Headless contract: `niki run --bare` (no memory/MCP/knowledge-URLs),
- Oracle integrity: `oracle_source` (spec/derived/property) on every test
- Independence hardening: Red receives evidence-only diffs, isolation records
- Honest meter: cached-input/reasoning token splits, unpriced-model warnings
- Trust posture: `[permissions] mode` + `--permission-mode`, `disable_worktree`
- Lifecycle hooks: `[hooks.commands]` wired to PreTaskStart/PreAgentStart/
- GitHub automation: keyless nightly eval gate, human-gated `@niki` review
- Eval credibility: per-case costs, disclosure manifest on every run,
- Observability: `trace.jsonl` spans per run (honestly derived timeline),
- MCP Streamable-HTTP remote transport (JSON + SSE, session affinity).
- Onboarding: `niki init` alias, `init --scan` AGENTS.md drafter,
- TUI unification: one status grammar, 100% theme-token production code,
- TUI motion system: primitives + caret blink, Done slide-in, notice
Fixed
- `GEMINI_API_KEY` vs `GOOGLE_API_KEY` chat fallback miss.
- `smoke`/`doctor` pointed at nonexistent `niki init` (now a real alias).
- Unwired `schemas/review_feedback.schema.json` removed.
- `backend = "podman"` doc strings corrected (docker|worktree only).
- `safety_proof.json` scope documented as git-only (was overclaimed).
- Approval tool auto-approved everything; ask tool invented answers.
- `[permissions]` table silently dropped by config merge.
- MCP `JsonRpcResponse` never parsed (`jsonrpc` field rename bug).
- Dry-run empty branch refs; planner-skip metrics crash.
- Global key `h`/`s`/`l` dead-ends; blank session screen; `$-0.00`.
Changed
- `safety_proof.json`, spend-cap, and deny-list copy narrowed to match code.
- `niki recommend` static-pairings truth in docs (history-driven per-project