The two TypeScript legacy decorators in the server package (`@broadcastReturn`
on AuxTimerService, `@broadcastResult` on RuntimeService) drive all runtime
state broadcasting but had no test coverage, so a migration to standard
decorators would have been unverifiable.
Add characterisation tests that lock in the current behaviour:
- AuxTimerService: emit key derived from the last argument, payload equal to
the return value, one emit per public call, and the undecorated interval
update emitting a combined patch instead.
- RuntimeService: which methods broadcast and which do not, return value
forwarding, batch contents for each kind of state change, and the restore
point side effect.
No production code changes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JTztQittreLfXz8cgUeeMs
Search every text field with optional filters, keep result selection stable, and expose clearer match context and counts. Cover query parsing, matching, mixed-entry indexing, and the reveal flow.
* fix: issue where a count-to-end would lead to incorrect expected times
* fix: include add time in overtime when countToEnd
* fix: ui and server use same calculation for expected end
The server serves html/timer-legacy.html and html/login.html from disk
at runtime, relative to the bundled server. The Docker image copies
these files but the electron packaging did not, so the view 404ed in
all desktop distributions.
Additionally, AppImages mount at /tmp/.mount_*, a hidden directory.
Express sendFile refuses paths containing dot-segments by default
(returns 404 without touching disk), so the view failed on Linux even
with the file packaged. Allow dotfiles for this route; the request
path is fixed so no user input is affected.