Bookmarkable dashboard URL is now the default
Every /token-optimizer user on macOS and Windows gets asked once whether to install the bookmarkable URL. The answer is remembered forever. URL-first ordering means the dashboard output leads with the URL when it's live, and falls back to the local file path only when it isn't.
What is new
daemon-consentCLI.measure.py daemon-consent --getprints the stored consent JSON (or{}).--set yes|no|unsetwrites atomically via tempfile + rename so a mid-write crash can't leave partial JSON.--getvalidates the stored value as a JSON object and falls back to{}on any corruption.- Identity probe. The daemon serves a
/__to_pingendpoint that returns a magic string.daemon-statusGETs it and requires an exact match. A foreign service on port 24842 now reports asDAEMON_FOREIGNinstead of being mistaken for ours, so the skill routes to remediation rather than silently advertising someone else's web server. - SKILL.md 2×2 truth table over (daemon state, consent state) so Claude always picks one explicit path. Consent is written before
setup-daemonso a mid-install crash can't leave a running daemon the user said no to. - macOS upgrade safety. The installer now reclaims port 24842 from orphaned daemon processes running our own script before calling
launchctl bootstrap. Upgrading from v5.2.x / v5.3.2 to v5.3.3 is clean.
Migration
- macOS users with an existing daemon: update the plugin (
/plugin update token-optimizer), then runpython3 $MEASURE_PY setup-daemononce to install the new daemon script (the old script lacks the identity endpoint). v5.3.3's port-reclaim logic handles the transition. - Windows users who ran
setup-daemonon v5.3.2: same — re-runsetup-daemononce to refresh. - Never installed the daemon: first
/token-optimizerrun asks once. Default is yes.
Linux
Still stubbed. systemd --user daemon ships in v5.3.4.