feat(gui): routines view + /api/routines — closes the first parity-harness gap#592
Merged
Conversation
The first gap the parity harness flagged, now closed end to end:
API (internal/web/routines.go, tested):
- GET /api/routines — fleet: definition, schedule, latest run
- GET /api/routines/{name}/runs — run history
- GET /api/routines/{name}/runs/{run}/log — full log (falls back to the
stored output tail when the file was pruned)
- POST /api/routines/{name}/run — async trigger; 409 when disabled or
already running
GUI:
- Routines view on u / ⌘U / View menu: name, target project, model,
schedule, enabled state, last-run status with age (5s poll while
visible), run-now, and a log viewer dialog — TUI fleet-health parity
plus run-now/log on the same API
Parity: Routines moved from parity-ignore.json to
desktop/capabilities.json with its API routes (harness-verified).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The parity harness (#591) flagged
Routinesas the GUI's one acknowledged gap. This closes it end to end and deletes the ignore entry — the harness now verifies the coverage including the API routes.API (
internal/web/routines.go)GET /api/routines— the fleet: definition (project, model, permission mode, timeout, disabled), schedule (launchd/cron + human detail), latest runGET /api/routines/{name}/runs— run historyGET /api/routines/{name}/runs/{run}/log— full log file; falls back to the stored output tail if the file was pruned; run/routine ownership checked, path comes from the run row never the requestPOST /api/routines/{name}/run— async trigger (202; run row appears immediately inrunning); 409 when disabled or already runningAll endpoint behaviors covered by tests (isolated via
TY_ROUTINES_DIR).GUI
Routines view on u / ⌘U / View menu: same fleet-health picture as the TUI (name, target project, model, schedule, enabled, last-run outcome with age), polling every 5s while visible so triggered runs show their outcome — plus Run now and a log viewer, which the read-only TUI view doesn't have.
Verified against the live fleet: 4 real routines rendered with schedules;
twitter-monitorshowedrunning for 1mwith its run button correctly disabled.Parity
Routinesmoved fromparity-ignore.json→desktop/capabilities.jsonwith its API routes. The harness verifies both the coverage and that the routes exist.🤖 Generated with Claude Code