All notable changes to Endenza are documented here. The format follows Keep a Changelog and the project adheres to Semantic Versioning.
2026-05-03 — Endenza rebrand + canvas-comes-alive session
A marathon warp session spanning rebrand, living-things, performance, asset bundling, terminal polish, docs overhaul, and 14 test-pollution fixes. The platform moved from craft 6.5/fit 6.0 to craft 7.7/fit 6.9.
Added
- Living-things runtime — canvas schema v6 adds an optional
behaviorfield to components. TheLivingThingsSimulatordrives idle, wander, and patrol behaviors with deterministic seeding, reduced-motion respect, andIntersectionObserverpause when off-screen. Wire-in tostudio renderRoom(e0316a4). - Real Mana Seed sprites — 35 Mana Seed Character Base sprites bundled into
bin/dashgen/static/packs/(body, hair, armor, tools, ambient) replacing placeholder procedural art (c884602). - Performance budgets — three new budgets added to
bin/perf_audit.pyand wired into the test suite: canvas-walk fps, character-creator first-paint, terminal hydrate latency (1016840,15b929e). - Terminal layout customization — resize, reorder, and collapse for terminal tree bands;
compact footer toolbar; compose pinned to bottom; skeleton bootstrap (
3e17487,28bce54,616e034). - Per-request CSP nonce —
unsafe-inlinelifted fromscript-src; nonce injected per request; test coverage added (a803830). - Warp protocol toolchain —
bin/warp_preflight.sh,bin/warp_salvage.sh,bin/warp_compliance_check.sh,bin/warp_quality_probe.sh,bin/warp_post_merge_verify.sh(0f7e41a). Incremental-commit policy added to MAESTRO Directive 22 (af5b8ba).
Changed
- Endenza brand throughout (RN-α) —
ENSEMBLE_*→ENDENZA_*for 20+ localStorage keys (with migration shim),plugins/ensemble/→plugins/endenza/, user-visible strings swept across dashboard, terminal, cookie banner, settings, and warp widget (39b3168,6a987d7,f86f062,831b29d). - Single-logo across themes — brand mark no longer shifts between dark/light modes. Mac app icons regenerated for post-rebrand wordmark.
- 39 stale docs archived — Phase 1 archival: POLISH_2026-05-0α/BETA, CODE_RATING,
A_TIER_PLAN, BIG_HAUL_PLAN, FREEZE_TAG_PLAN, R14_PLAN, SIMPLIFICATION_PLAN, NAVIGATION_IA_PLAN,
TERMINAL_PAGE_PLAN, and 28 others moved to
docs/archive/(6db14dc). - Docs restructured into purpose folders — Phase 2:
docs/getting-started/,docs/architecture/,docs/operations/,docs/design/,docs/decisions/created; 30+ docs moved viagit mv(6bcd7c5). - Handler module split —
control-panel-server.pydecomposed intobin/handlers/sub-modules (auth, studio, sprite, pack, settings, pair, SSE). Warp α+β. - BaseJsonStore extracted —
StateStore,ChatStore,UserProfileStoreall inherit atomic-write + flock base. Concurrent-write stress tests added. Warp β.
Fixed
- Auth-key drift —
DASHBOARD_TOKENunified;/byok/linkconfirmed working after auth cascade repair. - Persistence — atomic writes with
flockhardened; sprite/canvas/chat stores all onBaseJsonStore; dual-shape save for character creator landed. - Walk-cycle preview — 64× 64 preview + walk-cycle in character creator (CC slot B); body layer wired.
- Terminal duplicate header — skip duplicate
ENSEMBLE STATUSbar inside terminal tree (e60977c). - Terminal viewport — body set to flex-column; main fills viewport; no orphan bars
(
778343e). - 14 test-pollution issues —
assertGreaterEqualfor schema version assertions; staleENSEMBLE_*keys swept; three pre-existing failures (test-pollution pattern) remain and are tracked in craft-debt ledger. - Perf budget errors — budget tests now gate cleanly; CI-local ruff added to
warp_post_merge_verify.sh. - Terminal warm pair-CTA — warm Pair-CTA on any
/statefailure + offline pill demoted (616e034).
Documented
docs/decisions/LIVING_THINGS_PLAN_2026-05-03.md— 4-phase living-things roadmap (L0–L5 behavior tiers, authoring, agent vocabulary, reactive/dialogue).docs/decisions/POLISH_ROADMAP_2026-05-03.md— four-tier polish roadmap with surface-by-surface craft×fit ratings and next-warp candidates.docs/decisions/DOCS_OVERHAUL_PLAN_2026-05-03.md— Option C doc overhaul: archival, restructure, rewrites, new docs, style guide.docs/decisions/ASSET_AUDIT_2026-05-03.md— purchased-pack audit + bundle proposal (35 Mana Seed + LimeZu sprites selected).docs/operations/WARP_PROTOCOL_AUDIT_2026-05-03.md— warp protocol polish audit; incremental-commit policy; cwd-drift + ps-ww workarounds.
Unreleased
v2.0 contract sweep — 2026-04-26
Eight new operating directives + three-layer autopilot mutex + Tier 1/2/3 hardening + SwiftBar menu bar indicator. No public API breaks; all additions are opt-in or backward-compatible defaults.
Added — eight directives:
- Smart handoff protocol — self-monitor context (80% warn → 90% auto-stage → 95% hard-stop with paste-ready resume prompt). Memory: smart_handoff_protocol.md.
- Turbo mode — liberal turbo signal phrase; AFK batch coding; auto-engages rapid-fire if off; safety gates still fire. Memory: turbo_mode.md + signal_phrase_detection.md.
- Outside-the-box thinking (priority 1) — operating posture for smarter problem-solving. Memory: outside_the_box_thinking.md.
- Feedback pipeline — Sunday 6am aggregator + plan-then-approve gate for live products. Memory: feedback_pipeline.md.
- Six-state lifecycle — Building → Launch Prep → Warmer ⇄ R&D ⇄ Updates → Hibernating. Replaces evolution_modes. Memory: project_states.md.
- State enable/disable — verbal set <slug> to <state> + PWA dashboard pill.
- Three-layer autopilot mutex — workshop lock + per-project spawn lock + opt-in resource floor + user-controlled max_concurrent_autopilots cap (default 2). Memory: hardware_constraints.md (renamed from hardware_m1.md).
- Rapid-fire toggle — per-chat rapid_fire_enabled; OFF = prose mode. Every AskUserQuestion reserves slot 4 for Disable Rapid Fire Mode escape hatch. Memory: rapid_fire_toggle.md.
Added — Tier 1 hardening:
- caffeinate -i wrap on claude -p (no-op on non-macOS). State: caffeinate_during_autopilot (default true).
- Battery-state pre-flight via pmset. State: require_ac_power (default false, opt-in).
- Disk-space pre-flight (df -g /). State: min_free_disk_gb (default 5).
- Log rotation scheduled task (Sunday 5am, 30/60/90-day retention).
Added — Tier 2 hardening:
- Network pre-flight (curl ping api.anthropic.com). State: require_network_check (default true).
- Claude CLI version pin. State: min_claude_cli_version (default empty).
- Memory link consistency checker in self_test.sh.
Added — Tier 3 hardening:
- plugins/endenza/bin/resource_watchdog.sh — sidecar samples RAM/CPU during autopilot, kills tree on sustained pressure. State: resource_watchdog_enabled (default false, opt-in).
- TROUBLESHOOTING.md §16-23 covering all v2.0 failure modes including state.json corruption recovery.
Added — three-layer mutex implementation:
- plugins/endenza/bin/orchestrator_spawn_lock.sh (acquire/release/status/sweep/wrap, 285 lines).
- plugins/endenza/bin/test_spawn_lock_race.sh (9-test race suite, all passing).
- Companion bin-win/orchestrator_spawn_lock.ps1 Windows port.
- state.json schema additions for the mutex layer.
Added — SwiftBar menu bar indicator:
- plugins/endenza/integrations/swiftbar/ensemble-autopilot.10s.sh — shows ☕ + active count when firing.
- plugins/endenza/integrations/swiftbar/setup.sh — one-shot installer (brew + folder + symlink + relaunch).
Added — turbo session template:
- plugins/endenza/templates/turbo_session.txt — paste-ready 60-min autonomous prompt.
Changed — operating contracts:
- MAESTRO.md — 18 directives total. Directives 1, 2, 6 rewritten for three-layer mutex + state + lint. Directives 16, 17, 18 added (turbo / outside-box / feedback). Context-awareness subsection.
- AGENT.md — 20 sections total. §3 lint-clean rule. §4.5 context awareness. §5 three-layer mutex. §17 six-state lifecycle. §18-20 turbo/outside-box/feedback.
Changed — schema migration:
- chats/<slug>.json: evolution_mode → state (auto-migrated for 7 chats).
Changed — dashboard: - Six-state pills, color-coded. Slugified CSS class names.
Changed — companion repos:
- Lint configs synced to ensemble-config, ensemble-dashboard, website-agent-starter, ensemble-phone, ensemble-desktop.
De-personalization:
- Bin scripts use ${HOME}/.claude/orchestrator. Bootstraps use ~/. Mobile docs scrubbed of personal email. Memory file rename hardware_m1.md → hardware_constraints.md.
Onepagers refreshed: top-level README.md, plugin README.md, public/index.html, public/dossier.html, CHEATSHEET.md.
[Pre-v2.0 Unreleased]
Polish + marketplace-readiness work since v1.0.0. No public API breaks.
Added
- PWA wrapper for the public dashboard —
manifest.json, service worker, EB-Garamond–themed icon. Installable to phone home screen with offline read-mode caching. bin/setup-dashboard.sh— first-run productization script. Idempotently creates the user’s own<username>/ensemble-dashboardrepo, enables Pages, generatesDASHBOARD_TOKEN, registers Dashboard Update routine.bin/control-panel-server.py+ launchd plist — Mac-local Python http.server (port 8080, Tailscale-reachable) for interactive control: toggle active / mode / autopilot, fire autopilot, kill switch, embeddedclaude.ai/codechat iframe.bin/fire-all-eligible.sh— serial-dispatch wrapper that fires<minutes>-min autopilot at every active+eligible project sequentially, respecting the test-bench lock.bin/dashboard-generate.sh— emits styled HTML roster + per-project pages with timelines, plus shared style.css and control.js.- Per-project pages with vertical milestone timelines (45 milestones across 7 projects, Maestro-curated).
- Spectra Nova onboarded as autopilot-eligible — local Mac clone, .NET 8 toolchain verified, 204 tests passing on first run.
/active <slug>,/inactive <slug>,/projectsslash commands at~/.claude/commands/./auto Nalias for/autopilot N./rapidslash command — forces the next response into AskUserQuestion shape.- Skill catalog at
plugins/endenza/skill_catalog.yaml+ onboarding §5.5 — auto-recommend useful skills during Agent setup.
Changed
- Routine renames to Title Case:
Morning Briefing,Evening Planning,Overnight Heavy,Workday Pulse,Dashboard Update,Rotation. AUTOMATION FIRE banners updated. - Dashboard timestamps now relative (“3 mins ago” via inline JS) instead of absolute UTC.
- Dashboard cards show evolution-mode pills (Frozen / Reactive / Maintenance / Evolving).
- Rapid-fire elevated to STAPLE protocol-level priority alongside autopilot lock and kill-switch cascade.
Fixed
- Critical autopilot hang (
5d489e0) —claude -p --add-dir <dir> "$PROMPT"was eating the prompt as a directory because--add-diris variadic. Added--separator before the prompt. Every prior autopilot fire was silently doing nothing. - CI Linux switch (
f289098) — moved jobs frommacos-latesttoubuntu-latest(10× cheaper) — but auto-trigger disabled (d4132f6) until Kevin resolves GitHub Actions billing. - Routine prelude path (4
~/.claude/scheduled-tasks/*/SKILL.md) — fixed brokenbin/routine_prelude.shreference (script lives atplugins/endenza/bin/). - Email scrub (
cc42158) —kevinmadson3@gmail.com→kevinmadson@protonmail.comin 4 doc occurrences across both repos.
1.0.0 — 2026-04-25
The Ensemble’s first durable public-install-ready release. Phase 0 of docs/GRAND_PLAN.md substantively closed.
Mission gaps closed (per docs/decisions/MISSION_ROADMAP.md)
- Gap 1 — Lock-type semantics (
17b6655)holder.jsonandstate.json.lock_intentgain anintentfield:"test"|"code"|"any". Test-intent locks contend (one chat owns the test bench at a time). Code-intent sessions skip the lock entirely (parallel coding across many chats). Any-intent (legacy) preserves pre-Gap-1 behavior. The pitch claim “Code in parallel. Test in single file.” is now architecturally true rather than aspirational. - Gap 2 — Rotation scheduler (
13bd4ac) Newbin/rotation_pick.sh+Rotationscheduled task firing 23:30 / 01:30 / 04:30 local. Round-robin distributes overnight autopilot across all active+eligible projects, sorted by least-recently-fired (last_autopilot_fire_at). - Gap 3 — Plan→Code→Test→Fix→Wrap loop template (
ab39236) Newplugins/endenza/templates/autopilot_loop.txtdefines the canonical 5-phase autopilot session.autopilot_session.shwires the template into both default + project-targeted prompts. - Gap 4 — Per-project window prefs (
b773b26)chats/<slug>.jsoncarries optionalpreferred_windows+blocked_windows.rotation_pick.shhonors them.
Added
- Plugin-refactor (
38206d6) — 20 commits merged intomain. Plugin-shaped layout for marketplace distribution. - Phone-triggered autopilot pipeline — Termius + Tailscale → SSH → launchd agent in user’s Aqua session → Keychain access →
autopilot_session.sh. Project-targeted via 4th positional arg. /autopilot Nslash command — cwd-aware project detection viabin/detect-project.sh.- Atomic kill-switch sweep —
bin/mobile_dispatch.sh killnow sweeps the full process tree (parent bash + GNUtimeoutwrapper +claude -pgrandchild) plus SIGKILL stragglers. bin/notify.sh— multi-channel notifier (macOS osascript + Pushover via.env.local).bin/maestro-context.sh— auto-aggregates lock state, chat roster, autopilot runs, 24-hour commits at first turn.bin/morning-digest.sh— EB-Garamond–styled HTML cross-project briefing.- Friend-facing website-agent v2 (
917ff66,f067b89) — lifecycle-aware bootstrap with 10 phase gates G0→G9, resume protocol, full GitHub-security weave (2FA + SSH +.gitignore+ Dependabot + secret scanning + push protection + CodeQL + HTTPS enforce). - Cross-platform parity layer (
KiwiMaddog2020/ensemble-config) —bin-mac/↔bin-win/matrix,PARITY.mdtracks Windows ports. - Active/inactive control —
chats/<slug>.json::activefield + verbal command pattern + slash commands. - Evolution mode — 4-mode taxonomy (
frozen/reactive/maintenance/active) per project, surfaced at G9. - Voice-friendly numbering on every
AskUserQuestionlabel (1.2.3.4.). - Flow continuity rule — never offer “pause” / “stop” / “sleep on it” as options; user dictates cadence.
Changed
- Push rails lifted (
8f01f01) —git pushto origin on current branch is permitted without per-turn approval. Destructive ops, store submissions, deploys beyond GitHub Pages, public-flips, and billing remain gated. - Batched-approval discipline strengthened — bundle units as wide as defensible at the decision point; in-flight execution skips per-step asks; decision points still always fire
AskUserQuestion.
Documentation
docs/GRAND_PLAN.mdv0.3 — three-tier taxonomy (Maestro / Virtuoso / Agent), product ladder (Phase 0 → 1 → 2 → 3).docs/decisions/MISSION_ROADMAP.md— 5-gap audit + sequencing.docs/CONTROL_PANEL_PLAN.md— interactive Ensemble GUI architecture.docs/architecture/AUTOPILOT_DESIGN.md— full pipeline design.docs/design/UX_STREAMLINING.md— 12 prioritized opportunities for “input-disappearing” UX.docs/architecture/OPUS_OPTIMIZATION.md— seven rules for operating Claude Opus 4.7 inside the Ensemble.
Phase 0 exit criteria
- ✅ Plugin-refactor merged
- ✅
/autopilot Nslash command built - ✅ Mobile dispatch pilot validated
- ✅ v1.0.0 tagged
- ⏳ First external user onboarded (friend with website-agent v2 — package staged, awaiting hand-off)
- ⏳ Repo public-flip (deferred until Claude skill marketplace publication)
Pre-1.0.0 history
Earlier development (plugin-refactor branch + initial Ensemble bootstrapping) is captured in the git log. Highlights:
- 2026-04-21 — System named The Ensemble. Atomic mkdir lock primitive proven on APFS. PreToolUse hook with hard-enforcement matcher. Distributed kill-switch with idempotent six-phase cascade.
- 2026-04-22 — Three-tier taxonomy locked (Maestro / Virtuoso / Agent). Plugin layout drafted.
- 2026-04-23 — Plugin-refactor merged →
main. v0.x development closed.