Alex Newman
5b2eb9f599
MAESTRO: Merge PR #879 - daemon children cleanup fills orphan reaper gap
...
PR #879 adds killIdleDaemonChildren() to ProcessRegistry, targeting idle
Claude SDK processes that are children of the worker-service daemon but
weren't caught by the existing registry-based or ppid=1 cleanup paths.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 20:04:59 -05:00
Alex Newman
a35190b7bf
MAESTRO: Close PR #867 - process bomb and zombie observer fixes already in main
...
Both features proposed by PR #867 are already addressed:
1. Zombie observer idle timeout: fully implemented in SessionQueueProcessor.ts
2. Startup batching: 100ms stagger + idle timeout makes it unnecessary
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 19:30:25 -05:00
Alex Newman
4b180d8d66
MAESTRO: Close PR #930 - deferred worker init superseded by fail-open architecture
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 19:25:38 -05:00
Alex Newman
61615ddc0f
MAESTRO: Document PR #931 closure and spawn guard implementation in triage doc
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 19:00:23 -05:00
Alex Newman
3840a1734d
MAESTRO: Close PR #935 - SDK patching approach rejected in favor of fail-open architecture
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:31:40 -05:00
Alex Newman
ca990e8d53
MAESTRO: Merge PR #972 - fix Windows path handling for usernames with spaces
...
Removed shell: IS_WINDOWS from bun-runner.js spawn() call to prevent
cmd.exe from splitting paths at spaces. Added windowsHide: true to
prevent visible console windows on Windows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:29:57 -05:00
Alex Newman
2ea716a017
MAESTRO: Close PR #530 - retry logic superseded by fail-open hook strategy
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:27:55 -05:00
Alex Newman
4e4ad32f97
MAESTRO: Close PR #922 - async SessionStart hooks would break context injection
...
SessionStart hooks must run synchronously because the context hook's stdout
is captured and injected as Claude's system-level memory context. The Windows
blocking issue was already resolved by the fail-open approach in PRs #973 ,
#959 , and #964 .
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:27:06 -05:00
Alex Newman
faa1360f33
MAESTRO: Merge PR #964 - add fetch timeouts to Stop hook and health checks
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:25:49 -05:00
Alex Newman
be01694383
MAESTRO: Merge PR #959 - fail open on /api/context/inject during initialization
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:23:24 -05:00
Alex Newman
bf4d9421e0
MAESTRO: Merge PR #973 - hooks fail gracefully instead of blocking prompts
...
session-init.ts: replaced throws on worker 500/SDK agent failure with
logger.failure() + graceful exit 0. user-message.ts: replaced throw with
graceful return, console.error → process.stderr.write, USER_MESSAGE_ONLY → SUCCESS.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:19:41 -05:00
Alex Newman
311d62cc02
MAESTRO: Merge PR #960 removing user-message hook from SessionStart to fix startup error
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:16:15 -05:00
Alex Newman
d0b4c7ee59
MAESTRO: Add DOMPurify XSS defense-in-depth to TerminalPreview (closes PR #896 )
...
PR #896 identified a valid XSS concern in TerminalPreview.tsx but was
broken (missing DOMPurify import and dependency). The existing
escapeXML:true on AnsiToHtml already mitigates the vector, but
DOMPurify adds defense-in-depth sanitization.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:14:46 -05:00
Alex Newman
e6af8d207a
MAESTRO: Close duplicate CORS PR #926 in favor of merged PR #917
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:11:51 -05:00
Alex Newman
75b9930ee4
MAESTRO: Mark PR #917 CORS restriction as merged in triage document
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:11:12 -05:00
Alex Newman
2aab998b62
MAESTRO: Close duplicate PR #875 (CLAUDE_MEM_DISABLE_SUBDIRECTORY_CLAUDE_MD, keeping #913 )
...
PR #875 used negative logic naming (DISABLE instead of ENABLED), superseded
by PR #913 which uses the established CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED setting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:09:17 -05:00
Alex Newman
6b22017721
MAESTRO: Close duplicate PR #589 (CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED, keeping #913 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:08:40 -05:00
Alex Newman
34aef1aa18
MAESTRO: Close duplicate PR #823 (CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED, keeping #913 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:08:03 -05:00
Alex Newman
d00762d1f7
MAESTRO: Close duplicate PR #908 (Windows npm docs note, keeping #919 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:07:27 -05:00
Alex Newman
400f08c20d
MAESTRO: Close duplicate PR #905 (user-message hook removal, keeping #960 )
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:06:54 -05:00
Alex Newman
18c7f1cd76
MAESTRO: Close bot-generated PR #754 (copilot-swe-agent MCP documentation PR)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:06:21 -05:00
Alex Newman
74506dd4e6
MAESTRO: Close suspicious PR #904 (replaces repo URL with external download link)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:05:48 -05:00
Alex Newman
0f72356cb1
MAESTRO: Close junk PR #770 (bot-generated install/build with no source changes)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:05:06 -05:00
Alex Newman
121fb24705
MAESTRO: Close junk PR #546 (accidental main branch push with no clear purpose)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:04:36 -05:00
Alex Newman
867c658f4f
MAESTRO: Close stale PR #521 (fresh install timeout fix already shipped in v9.0.16 and v9.0.17)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:04:02 -05:00
Alex Newman
0704355a7f
MAESTRO: Close stale PR #700 (Windows Terminal popup fix already shipped in v9.0.6)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:03:29 -05:00
Alex Newman
6930a38997
MAESTRO: Close stale PR #933 (WMIC replacement already fixed in v9.0.2)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:02:58 -05:00
Alex Newman
e218dc5947
MAESTRO: Close stale PR #840 (WMIC replacement already fixed in v9.0.2)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:02:26 -05:00
Alex Newman
7e1c13c6c2
MAESTRO: Close stale PR #735 (isolated credentials already fixed in v9.0.15)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:01:54 -05:00
Alex Newman
e87701228d
MAESTRO: Close stale PR #848 (zombie observer prevention already fixed in v9.0.13)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:01:20 -05:00
Alex Newman
d6751e0f07
MAESTRO: Close stale PR #861 (zombie observer prevention already fixed in v9.0.13)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:00:49 -05:00
Alex Newman
b04a041c2d
MAESTRO: Close stale PR #773 (health check endpoint already fixed in v9.0.16)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 18:00:14 -05:00
Alex Newman
8218fcb17b
MAESTRO: Close stale PR #774 (health check endpoint already fixed in v9.0.16)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 17:59:43 -05:00
Alex Newman
86bdb036bd
MAESTRO: Close stale PR #820 (health check endpoint already fixed in v9.0.16)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-05 17:59:10 -05:00
Alex Newman
ce4cab0a23
MAESTRO: Mark PR #827 bun-runner merge tasks complete
...
All tasks completed: rebased onto main, resolved hooks.json conflicts
(preserved Setup hook, applied bun-runner pattern), verified build,
merged to main, and confirmed bun-runner finds Bun correctly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-05 01:49:43 -05:00
Alex Newman
a0380fe1f7
MAESTRO: Mark PR #820 manual verification task complete
...
Health check endpoint fix verified working:
- /api/health responds in ~12ms (well under 15s timeout)
- No timeout errors in worker logs
- Both worker-utils.ts and HealthMonitor.ts use /api/health
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:33:30 -05:00
Alex Newman
9864410eb8
MAESTRO: Mark PR #820 test and merge tasks complete
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:31:53 -05:00
Alex Newman
450b2135b6
MAESTRO: Mark PR #820 build verification task complete
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:30:35 -05:00
Alex Newman
a58a22cc6a
MAESTRO: Mark PR #820 code review task complete
...
Reviewed health check endpoint logic in worker-utils.ts and HealthMonitor.ts.
Both correctly use /api/health (liveness) instead of /api/readiness to avoid
15-second hook timeout during MCP initialization.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:29:46 -05:00
Alex Newman
0c9b8826c9
MAESTRO: Mark PR #820 rebase task complete
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:28:57 -05:00
Alex Newman
8f1a260d96
chore: bump version to 9.0.15
...
Includes PR #745 isolated credentials fix - prevents API key hijacking
from random project .env files by using centralized credentials from
~/.claude-mem/.env
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:21:01 -05:00
Alex Newman
a69613b4e0
MAESTRO: Complete PR #745 auth method verification task
...
Verified auth method logging works correctly after merge:
- Rebuilt and synced local code (v9.0.14 release predated merge)
- Restarted worker with PR #745 EnvManager code
- Confirmed log shows: authMethod=Claude Code CLI (subscription billing)
- Verified getAuthMethodDescription() correctly detects no API key
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:17:35 -05:00
Alex Newman
e7cae825bd
MAESTRO: Mark PR #745 merge task complete
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:13:41 -05:00
Alex Newman
ce576db0dc
MAESTRO: Fix console usage in EnvManager.ts and verify build/tests pass
...
- Replaced console.warn/error with logger.warn/error calls per project standards
- Test suite enforces no console.* in background services (logs are invisible)
- Build verified: worker-service, mcp-server, context-generator, viewer UI all built
- All 797 tests pass (0 fail)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:12:27 -05:00
Alex Newman
53f6f57420
MAESTRO: Complete EnvManager.ts security and correctness review
...
Reviewed PR #745 EnvManager implementation:
- Security: Credentials isolated in ~/.claude-mem/.env, not process.env
- Correctness: Properly integrates with SDKAgent, GeminiAgent, OpenRouterAgent
- Code quality: Well-documented, type-safe, cross-platform compatible
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:10:45 -05:00
Alex Newman
814d2f6c03
MAESTRO: Mark PR #745 rebase task complete
...
- Resolved 4 conflicts during rebase onto main
- Merged zombie process cleanup (main) with isolated credentials (PR)
- SDKAgent.ts now has both spawnClaudeCodeProcess and env options
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 20:10:00 -05:00
Alex Newman
fa604849fe
MAESTRO: Mark PR #722 post-merge verification complete
...
- Tests pass: 797 passed, 3 skipped, 0 failed
- Build succeeds: all artifacts generated
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 19:51:31 -05:00
Alex Newman
34004904e7
MAESTRO: Mark PR #722 merge task complete
2026-02-04 19:50:15 -05:00
Alex Newman
4df9f61347
refactor: implement in-process worker architecture for hooks ( #722 )
...
* fix: stop generating empty CLAUDE.md files
- Return empty string instead of "No recent activity" when no observations exist
- Skip writing CLAUDE.md files when formatted content is empty
- Remove redundant "auto-generated by claude-mem" HTML comment
- Clean up 98 existing empty CLAUDE.md files across the codebase
- Update tests to expect empty string for empty input
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
* build assets
* refactor: implement in-process worker architecture for hooks
Replaces spawn-based worker startup with in-process architecture:
- Hook processes now become the worker when port 37777 is free
- Eliminates Windows spawn issues (NO SPAWN rule)
- SessionStart chains: smart-install && stop && context
Key changes:
- worker-service.ts: hook case starts WorkerService in-process
- hook-command.ts: skipExit option prevents process.exit() when hosting worker
- hooks.json: single chained command replaces separate start/hook commands
- worker-utils.ts: ensureWorkerRunning() returns boolean, doesn't block
- handlers: graceful fallback when worker unavailable
All 761 tests pass. Manual verification confirms hook stays alive as worker.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
* context
* a
* MAESTRO: Mark PR #722 test verification task complete
All 797 tests passed (3 skipped, 0 failed) after merge conflict resolution.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
* MAESTRO: Mark PR #722 build verification task complete
* MAESTRO: Mark PR #722 code review task complete
Code review verified:
- worker-service.ts hook case starts WorkerService in-process
- hook-command.ts has skipExit option
- hooks.json uses single chained command
- worker-utils.ts ensureWorkerRunning() returns boolean
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
* MAESTRO: Mark PR #722 conflict resolution push task complete
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 19:49:15 -05:00
Alex Newman
57a60c1309
chore: bump version to 9.0.13
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 19:41:07 -05:00