Troubleshooting
What to do when the toast doesn't show up, the hook doesn't fire, or something goes wrong.
Most issues are diagnosed in 30 seconds by running ringly doctor. Always start there.
Quick diagnosis
ringly doctor
This runs 9+ checks on your environment. Expected output:
✓ Node.js v22.14.0 (>= 20.0.0)
✓ Platform win32 x64
✓ PowerShell v5.1 detected
✓ AUMID registered Claude.Code.CLI
✓ Claude Code settings 8 options set, en-US
✓ Plugin installed ringly@0.6.0
✓ Hooks registered 5/5 active
✓ Start Menu shortcut present
✓ Test fire toast displayed
9 passed · 0 warnings · 0 failed
Each failing check comes with a fix suggestion. If everything passes but the toast still doesn’t show up, read the blocks below.
Common issues
No toast at all
- Focus Assist or Do Not Disturb is on. Open Settings → System → Notifications and turn it off, or add
Claude Codeto the exceptions list. - AUMID not registered. Run
ringly init --forceto re-create the shortcut and re-register. - Volume muted or notification sound disabled. Check the notification sound toggle in Settings → System → Sound → Advanced.
Toast appears but looks wrong
autolanguage detected wrongly. Runringly configand pin it topt-BRoren-US.- Truncated text. Can happen when the project name is very long — Windows truncates by design. Consider renaming the project folder to something shorter.
Hook seems silent
- Enable debug.
ringly config→ setdebugto true. Logs go to a file path printed at the end ofringly doctor. - Check that the event is enabled. If you turned off
events_stopfor example, theStopevent never fires a toast.
spawn EINVAL when running ringly update --yes on Windows
Known Node ≥ 20.12 bug (CVE-2024-27980) that refuses to spawn .bat/.cmd directly. Fixed in v0.5.1. If you’re still on an older version:
npm install -g ringly@latest
Plugin installed, but hooks don’t fire
- Run
/reload-pluginsin Claude Code. Hooks load at session start, so changes require a reload. - Check
~/.claude/settings.jsonand verify thehookskey was written correctly by Claude Code (should have all 5 Ringly events). - As a last resort, uninstall and reinstall the plugin:
/plugin uninstall ringly /plugin install ringly@ringly
/plugin → Configure screen doesn’t appear for Ringly
That’s intentional. Since v0.5.0 Ringly no longer uses the plugin manager’s userConfig due to known schema limitations (no enum support, Enter doesn’t toggle booleans, no atomic write). All config lives in ringly config. Read Why we don’t use the plugin manager.
Debug log
When debug: true, Ringly writes detailed logs to:
- Windows:
%LOCALAPPDATA%\Ringly\ringly.log - macOS:
~/Library/Logs/Ringly/ringly.log - Linux:
~/.local/state/ringly/ringly.log
The log rotates automatically at 5 MB — the current file becomes ringly.log.1 and the new one starts fresh. The size check is throttled to once per minute to keep the hot path cheap.
Still not working?
Open an issue at github.com/nickdevcode/Ringly/issues with:
- full output from
ringly doctor - Windows version (
winver) - Node version (
node --version) - Claude Code version (
claude --version) - debug log content (if applicable)
The more context, the faster the resolution.