Skip to content

feat: Sprint 22 — Purge + Doctor Modernization#4

Merged
mboss37 merged 13 commits intomasterfrom
feat/sprint-22
Apr 7, 2026
Merged

feat: Sprint 22 — Purge + Doctor Modernization#4
mboss37 merged 13 commits intomasterfrom
feat/sprint-22

Conversation

@mboss37
Copy link
Copy Markdown
Owner

@mboss37 mboss37 commented Apr 7, 2026

Summary

  • TUI Dashboard: project purge (d keybinding), single memory remove (r), responsive header, killed manual refresh + CLI purge command
  • Doctor Modernization: SessionEnd detection, MCP allowedMcpServers check + auto-fixer (reads .mcp.json), hook analyzer cleanup
  • Memory Sync: SessionStart auto-pull hook, SessionEnd auto-push hook (backgrounded to avoid timeout), push guard (0-memory push warns and bails)
  • Memory Placement Fix: getMemoryPlacement infers placement from existing config instead of prompting on every --fix for pre-existing installs
  • MCP Fixer: reads .mcp.json for server names, respects shared/local placement routing
  • Testing: 10 DashboardDataSource unit tests, purge tests, regression script (bash), 318 unit tests + 54 benchmarks green
  • Docs: Updated doctor.mdx, memory.mdx, README, landing page. Content review pass. Convention rule for 3-surface updates.

Stats

  • 39 files changed, 1206 insertions, 70 deletions
  • 318 unit tests + 54 benchmarks passing

Test plan

  • pnpm test:run — 322 tests pass
  • pnpm bench:memory — 54 benchmarks pass
  • pnpm test:regression — doctor regression script passes
  • claude-launchpad doctor --fix on fresh project — all fixes apply correctly
  • claude-launchpad doctor --fix on existing project — no spurious placement prompt
  • SessionEnd hook fires and completes push on /exit
  • TUI dashboard: d purges project, r removes single memory

🤖 Generated with Claude Code

mboss37 added 13 commits April 7, 2026 17:06
- memory purge <project>: bulk delete all memories for a project with
  confirmation prompt and orphan relation cleanup
- doctor: detect SessionEnd, UserPromptSubmit hooks (info severity),
  hook type diversity check, info issues no longer reduce score
- doctor: flag missing allowedMcpServers when MCP servers configured,
  flag sandbox without network config for HTTP MCP servers
- fixer: auto-generate allowedMcpServers from configured server names
- HookConfig.event widened to string to support all 28+ Claude Code events

309 tests + 54 benchmarks green.
When memory sync is configured (gist ID exists), automatically add a
SessionEnd hook that pushes memories after each session.

- memory install: adds SessionEnd push hook when sync is already set up
- doctor: flags missing SessionEnd push hook (medium severity)
- fixer: auto-adds the hook respecting placement (shared vs local)
- parser: now reads hooks from settings.local.json too (bugfix)
- readSyncConfig(): lightweight file-read only, no gh CLI discovery

312 tests + 54 benchmarks green.
- Doctor: hook analyzer detects SessionEnd (memory projects), MCP security
  checks for allowedMcpServers, fixer adds both
- TUI: project purge via 'd' key, single remove via 'r', killed manual refresh
- Push: guard against 0 memories (warn and bail instead of empty gist)
- Header: responsive layout (hides chips on narrow terminals)
- Killed CLI purge subcommand (TUI handles single + bulk delete)
- Updated backlog with sync hardening items
- DashboardDataSource unit tests (purge, delete, filtering, stats)
- Regression test script moved from /tmp to tests/regression/
- Doc updates: doctor.mdx, memory.mdx, README, landing page
- Content review fixes across all surfaces
- Convention rule: evaluate landing page, docs, README on every content change
- Fix mutation violation in addSessionEndPushHook
…tion

- Add SessionStart pull hook (runs before context injection) when sync configured
- Switch MCP registration from --scope user to --scope project (writes .mcp.json)
- Local placement uses --scope local, shared uses --scope project
- Parser reads .mcp.json for MCP server detection (standard Claude Code pattern)
- Broaden hasMemoryIndicators to detect via tool permissions and hooks as fallback
- Doctor analyzer flags missing pull hook when sync configured, fixer auto-repairs
- 322 unit tests (4 new) + 21 regression tests (3 new)
- memory.mdx: --scope user → --scope project/local, document .mcp.json
- memory.mdx: add pull hook and sync hooks to doctor integration section
- README: mention .mcp.json as MCP config location
- getMemoryPlacement infers placement from existing agentic-memory
  permissions instead of prompting on every --fix for pre-existing installs
- addAllowedMcpServers reads .mcp.json (not just settings.json), respects
  placement routing, and fixes analyzer name mismatch
- SessionEnd push hook backgrounded with & to avoid timeout kill
- Backlog: added dedup race condition entry
- Extract memory/MCP fix functions to fixer-memory.ts (fixer.ts: 536→392 lines)
- Fix purge count showing filtered count instead of total project count
- Add HookEvent type with SessionEnd to restore compile-time validation
- Document auto-sync hooks, allowedMcpServers, and destructive keybindings
- Clarify session lifecycle in memory.mdx (pull→inject→store→push)
@mboss37 mboss37 merged commit 9d74145 into master Apr 7, 2026
1 check passed
@mboss37 mboss37 deleted the feat/sprint-22 branch April 7, 2026 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant