From efdd1dd1567e34a11b31649e98f6f3ead8ed63b3 Mon Sep 17 00:00:00 2001 From: lexis Date: Fri, 29 May 2026 20:36:26 +0200 Subject: [PATCH 1/2] docs(web-ui): schedule creation is now inline table bottom row (follow-up to #602) --- docs/web-ui.md | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/docs/web-ui.md b/docs/web-ui.md index e1c827f2..e579cbaf 100644 --- a/docs/web-ui.md +++ b/docs/web-ui.md @@ -242,7 +242,7 @@ state + applied dirs; `POST /purge-tombstone/{name}`). ### SCH3DUL3S tab Anything that fires at a future time. Operator-set schedules -go through the creation form at the top; agent self-paced +are created inline in the table (last row); agent self-paced reminders surface at the bottom as a sibling list (#460 — they share enough conceptual ground to live together). @@ -278,18 +278,15 @@ active = `targets_remove`, checked-not-originally-active = `✕` button cancels the whole schedule (`POST /api/schedules/{id}/cancel`). -An inline creation form above the table lets the operator -queue a new schedule directly: targets (multi-select -checkboxes drawn from live container names + `operator` + -`manager`), prompt body (textarea), first-fire datetime-local -(pre-filled to 5 minutes from now), an interval composer -(#466 — preset chips for common durations + separate -d/h/m/s number fields with a live "↻ every …" preview; -all-zero = one-shot), and an optional human-readable -description. On submit the form POSTs to `/api/schedules` as -JSON; the tab pill shows the count of active schedules (at -least one live target not yet cancelled). Refreshed on tab -activation and after each submit/cancel. Backed by +The table's last row is a permanent inline creation row (#564): +inputs live directly in table cells (targets as checkboxes, +body textarea that expands on focus, datetime-local pre-filled +to 5 minutes from now, interval composer, description). Click +`+` to POST to `/api/schedules` as JSON; the row carry-state +survives SSE refreshes (partially-typed inputs are preserved +across live updates). The tab pill shows the count of active +schedules (at least one live target not yet cancelled). +Refreshed on tab activation and after each submit/cancel. Backed by `GET /api/schedules`. No backend changes for the table layout — it renders entirely from existing `schedulesState` + `containersState`. From 23ed12488153f72b0c674f4a143315d99ed80288 Mon Sep 17 00:00:00 2001 From: lexis Date: Fri, 29 May 2026 20:38:16 +0200 Subject: [PATCH 2/2] docs(web-ui): fix interval composer wording + SSE->re-render (iris nits) --- docs/web-ui.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/web-ui.md b/docs/web-ui.md index e579cbaf..ada63831 100644 --- a/docs/web-ui.md +++ b/docs/web-ui.md @@ -281,10 +281,10 @@ active = `targets_remove`, checked-not-originally-active = The table's last row is a permanent inline creation row (#564): inputs live directly in table cells (targets as checkboxes, body textarea that expands on focus, datetime-local pre-filled -to 5 minutes from now, interval composer, description). Click -`+` to POST to `/api/schedules` as JSON; the row carry-state -survives SSE refreshes (partially-typed inputs are preserved -across live updates). The tab pill shows the count of active +to 5 minutes from now, mini d/h/m/s number inputs (blank or +all-zero = one-shot), description). Click `+` to POST to +`/api/schedules` as JSON (or `⌫` to clear the half-filled row); +carry-state preserves partially-typed inputs across re-renders. The tab pill shows the count of active schedules (at least one live target not yet cancelled). Refreshed on tab activation and after each submit/cancel. Backed by `GET /api/schedules`. No backend changes for the table layout