v13.19.0
thedotmack/claude-memv13.19.0Aug 31, 2026by thedotmack
AI Summary
This release introduces a user-friendly one-click restart mechanism for the memory worker via a new web interface, alongside improved UI for outage warnings and enhanced safety checks for the restart process.
Key Highlights
- Added a web interface (`GET /restart`) to restart the memory worker with a single click.
- Updated outage warnings to be more visible by moving them below injected context and displaying them in red in the terminal.
- Enhanced security for the restart endpoint with frame protection and a POST requirement behind user clicks.
- Updated `/health` endpoint to report the process ID (pid) to verify the successor process is running.
- Implemented a readiness check requiring both a new pid and a bound port on `/api/readiness`.
New Features
- One-click worker restart via web interface.
- Improved outage warning visibility (red text, moved position).
- Enhanced security for restart endpoint (X-Frame-Options, frame blocking).
- /health endpoint now exposes process ID.
- Readiness check now validates port binding alongside process ID.
Full Release Notes
## Restart the memory worker in one click When the observer stops saving, the outage warning used to point at `~/.claude-mem/settings.json`. A restart clears nearly every one of these outages (a wedged or SIGKILL'd provider subprocess), so the warning now leads with the restart, offered two ways: ``` Restarting the memory worker clears almost every outage. Do one of these: Click to restart: http://localhost:37777/restart Or in a terminal: npx claude-mem restart Still failing after the restart? Run: npx claude-mem doctor ``` `GET /restart` serves a page whose button restarts the worker and waits until the replacement is actually up before telling you so. ### The warning is also easier to see - **Moved below the injected context.** The timeline runs long enough that a warning at the top had already scrolled off by the time context finished printing. - **Shown in red** in the terminal. The agent's copy stays clean — ANSI escapes there are just noise in the model's context. ### Safety notes The restart page is deliberately conservative: - The `GET` is inert. Restarting is a `POST` behind a real click, so a page that merely names the URL in an `<img>` cannot bounce your worker. - The route refuses to be framed (`frame-ancestors 'none'`, `X-Frame-Options: DENY`), so an attacker cannot frame it and harvest the click through an overlay. - Success requires the successor, not the corpse: a *different* pid on `/health` (the dying worker answers for the whole graceful-shutdown window) **and** `/api/readiness` ok (a bound port is not a ready worker). `/health` now reports `pid` to make that check possible.