Skip to content

#57: Show agent control-plane state on project status cards - #58

Merged
Unthred merged 18 commits into
mainfrom
feature/57-control-plane-status-visibility
Aug 20, 2026
Merged

#57: Show agent control-plane state on project status cards#58
Unthred merged 18 commits into
mainfrom
feature/57-control-plane-status-visibility

Conversation

@Unthred

@Unthred Unthred commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Summary

Highlights

  • AI Controlled: no auto-build/restart from file changes; dotnet run --no-build host; no quiet countdown
  • Control plane: /mode, /run/rebuild, /run/tests, /run/ship-check, /run/stop, /app/quit
  • Deploy script quits via /app/quit before replace
  • Skill/rule chat announcements (BuildMonitor: …)

Test plan

  • CI build-and-test on head SHA (401 tests previously; latest green on 14b440b)
  • Live AI Controlled verify (WitherbyConnect) — no build until /run/rebuild
  • Release deploy to C:\Utils\BuildMonitor (14b440b)
  • No process-kill deploy path; /app/quit added for next deploys

Notes

User confirmed ready to ship.

Simon McConnell added 3 commits August 18, 2026 10:16
Expose busy/idle, build suppression, queued edits, and ship-check phases through ProjectHealthSnapshot so the status panel, tray, and diagnostics share one source of truth. Refresh health immediately on session and ship-check transitions.
Agents can mark idle, pause the watch host, run an explicit build, and resume watch without ship-check tests. Status cards show rebuild phases and results.
Normal flow remains busy → edits → idle → ship-check. Document /run/rebuild only for locked output or clean-build recovery.
@Unthred
Unthred force-pushed the feature/57-control-plane-status-visibility branch from 403cf46 to a778ef4 Compare August 18, 2026 09:17
Simon McConnell added 4 commits August 18, 2026 14:35
Extend busy while files keep arriving so a 120s timer does not resume auto-build mid-edit. Status and GET /session now show whether idle came from the agent or timeout. Agents can run tests (optional filter) without a full ship-check.
git status --porcelain is empty when clean; calling Trim() on that null crashed the script before publish.
Add goals-to-endpoints mapping, cost-aware workflows, test filter examples,
and anti-patterns to control-plane docs; mirror condensed guidance in the
installed agent skill.
Centralize user-facing URL selection in LocalPortProbe.ResolveCanonicalUserFacingUrl
so status panel text, hyperlink target, and notifications all use the same
https://localhost canonical URL when the launch profile provides it.

Prefer HTTPS localhost when multiple profile/probe endpoints are open; map runtime
127.0.0.1 to matching profile localhost hostname.

Also: POST /run/stop, launch-profile on dotnet run, agent workflow panel in Build
diagnostics, control-plane event journal.
Replace sequential prose on hover project cards with a compact status grid so
build health, agent busy/held, queued changes, and last build are scannable at
a glance. Control-plane formatter emits structured fields; WPF only renders
presentation rows. Linked to #57 status-card work on PR #58.
Per-project mode with BuildTriggerPolicy, GET/POST /mode, status MODE row, and agent skill so file changes never auto-schedule builds in AI Controlled.
Simon McConnell added 7 commits August 20, 2026 09:16
Wait for the preferred launch-profile scheme before locking onto the first open port, and add a per-project Auto/HTTPS/HTTP preference in Settings.
Restore Core.Settings import and make OrderBy use an explicit lambda so publish succeeds.
Grace was burning during long builds before Kestrel listened, so site-ready locked onto HTTP. Measure grace from first open port and keep polling until the preferred HTTPS URL wins.
CI failed because the always-visible MODE row was not reflected in three presentation assertions.
Disable dotnet watch in AI Controlled (migrate to run --no-build), suppress edit-gating countdowns, and ignore hot-reload/watch autonomous restarts so only explicit /run or manual actions build.
Cancel site-ready Closing countdown during tray/panel hover so the panel stays visible for watching builds until the cursor leaves.
@Unthred

Unthred commented Aug 20, 2026

Copy link
Copy Markdown
Owner Author

#63 (tray hover): status panel stays open while the cursor is on the tray icon/panel — no site-ready Closing countdown on hover. Commit \63aeb45.

Skill and always-on rule now mandate short BuildMonitor: lines for mode/busy/idle and rebuild/ship-check/tests so Cursor output shows control-plane activity.
@Unthred

Unthred commented Aug 20, 2026

Copy link
Copy Markdown
Owner Author

#64: control-plane skill/rule now require \BuildMonitor:\ chat announcements for handshake and /run/*\ (commit $(git rev-parse --short HEAD)). Re-run Settings → Install / Update on watched projects to pick up the new text.

Loopback quit uses the same RequestExit path as the tray Exit menu. Deploy script asks the running tray to quit instead of killing the process.
@Unthred

Unthred commented Aug 20, 2026

Copy link
Copy Markdown
Owner Author

#65: \POST /app/quit\ — graceful tray exit (same as Exit menu). Deploy script calls it before publish. Commit \14b440b. Bootstrap: current installed tray lacks this endpoint — Exit once from the menu, run deploy, then future deploys use /app/quit.

@Unthred
Unthred merged commit 42485df into main Aug 20, 2026
3 checks passed
@Unthred
Unthred deleted the feature/57-control-plane-status-visibility branch August 20, 2026 12:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment