Cronologia Commit

Autore SHA1 Messaggio Data
  clanker 4a528f3975 Force Wake: human-triggered resume of parked tasks and goals 1 mese fa
  clanker 73dcec9314 List UX: newest-first tables, New task expander above the queue 1 mese fa
  clanker 13d283c0a6 r3: query layer (arch 14) — the work moves into the ORM with identical results. list_tasks filters (status/project) and sorts (priority, created_at — DateTime columns are unix-epoch ints, so the SQL ORDER BY equals the old .to_unix() compare) inside the query; get_ready_tasks stops loading EVERY task row for predecessor checks and queries only the queued candidates' predecessors; unreachable_task_ids batches (candidate tasks once, their sessions in one id-filtered query, the saddles in another — the newest-open-session-per-task semantics preserved by an id-ordered backward walk); display_map_for loads the wanted tasks' blocks in ONE task_id-filtered query instead of three full-table scans filtered in Vala; TasksState.build materialises the task list ONCE (the triple list_tasks died); TaskDetailState's enqueue dropdown queries exactly the standalone rows it lists (new list_standalone_tasks) instead of every task on every pulse; TimelineService.recent_window stops loading every session twice — the yeehaw session->task map builds from a batched lookup of only the WINDOW newest entries' sessions. The batched WHERE-in is an OR-chain helper (id_in/id_filter) because the expression grammar has no IN operator; id batches carry decimal strings (the Invercargill collections mishandle boxed value types — an int64 vector through to_immutable_buffer corrupts the heap, the exact trap the CreateTaskAction comment warns about). 851 checks, unchanged. 1 mese fa
  clanker 2cf9149d29 r3: legacy wire removal (arch 19, P3-1) — SaddleUpdateEndpoint + SaddlePollEndpoint and their routes are gone (the daemon never called them; verified against saddle/src at review time): the poll-era ingest/verdict pair 404s now, pinned by regressions. The service support that existed only for them dies with them: take_pending_answers (the saddle-keyed variant; the for_task assignment carrier stays), take_pending_comments + PendingComment, validate_token (its only caller was the update/poll bearer pin — resolve_bearer collapses to saddle_for_token for the all-id-less wire), the subtask/plan refusal arms, and the update endpoints' own statics move to SaddleWire (read_json_body/json_ok/json_error shared by every remaining /api/saddle/* route). Knock-ons per the plan: tasks.working_branch was write-dead (only /update done ever supplied it) — column + entity field + TaskDetailPublic member + the task-page line + mark_terminal/complete_task's dead parameter die; the plain-task plan-review UI in task_detail.html was unreachable (plans are goal-only since plan 12; only /update block type=plan could raise one) — BlockView.is_plan_review, the plan-review section, and the task page's ~180-line plan-remarks JS (dead with no [data-plan-review] targets) are removed; AnswerBlockAction's plan-verdict arms stay (the deep-link API + off-contract pushes keep working). Test fixtures rewrite into the push-era shapes: block raises ride POST /results blocked pushes (pages/lifecycle/push bundles), the terminal-task review fixture inserts its row directly (terminal pushes are consumed silently), rejected entries ride a results push, the dashboard review raise rides a review entry, the queued-state guard becomes a results state no-op, the /update subtask/plan refusals become 404 pins, and branch_advanced — the /poll verdict hint — is re-pinned on its surviving surface: the answers bundle's parked-resume allocation now asserts branch_advanced=true after a strictly-newer sibling completion on the shared branch. 856 -> 850 checks. 1 mese fa
  clanker a58d9c0738 r2: saddle-status + session-outcome constants, one bearer resolution (arch 26) — SADDLE_IDLE/BUSY/OFFLINE and OUTCOME_STOPPED/RESUMED/DONE/FAILED beside SaddleService replace the magic strings across SaddleService (register/list/park/free/offline writes incl. the guarded UPDATE SQL), TaskService (unreachable check, every release outcome), AllocationService (the claim's idle/busy/resumed), Dispatcher (the affine-wake idle check), SaddleApi (the offline->idle ask recovery, the legacy done outcome) and the four entrypoints' offline/idle guards; the {id}-anchored and id-less auth styles collapse into resolve_bearer (validate_token pinning the route's saddle vs saddle_for_token owning-whatever-registered) so every /api/saddle/* endpoint resolves its credential through one helper. No OUTCOME_PARKED: no web-side writer exists (D4's web half is unlanded) — an unused constant would be dead code; it lands with D4. The wire-state switch labels (daemon results states) and display labels stay literals by kind. 1 mese fa
  clanker 375d0957f9 r1: one time-format util — src/Format.vala's format_stamp owns the '%Y-%m-%d %H:%M' display shape; the four per-entrypoint format_stamp/format_time copies and the saddles/rules/projects inline formats collapse onto it (StatePulse keeps its second-precision pulse stamp); the clock domain is uniform now_local (PushService's VAPID exp was the lone now_utc, and to_unix is timezone-independent anyway). 1 mese fa
  clanker 34f58415c3 r1: one JSON-entry reading surface — src/Json.vala grows EntryJson (string_member/optional_string_member/get_string_or/string_array_member/parse_iso/parse_string_array); SaddleService's four private statics, SaddleApi's get_string_or/parse_iso/string_options and TaskService.parse_block_options all collapse into it, three string-array parsers down to one, behaviour byte-identical (the malformed-options warning keeps each call site's wording). 1 mese fa
  clanker 37508060cf r1: dead code deletion — has_yeehaw (the batch yeehaw_task_ids/yeehaw_feed own every surface), SaddleService snippet_text + generate_token (mint_saddle_token is the live minter), the Saddle.container_id column (entity + flattened M0001, tear-down convention), the never-set 'recovering' branch of unreachable_task_ids, TaskDetailPublic plan/auto_approve/toggle_auto_approve, the duplicated hideQuoteUi in main.html (the activeHandler-clearing definition wins), and the malformed/duplicated docblocks (TaskService nested /**, the orphaned list_tasks header, the SaddleService /status orphan, the TasksEntrypoint double header). fail_goal's empty cascaded-if dies with the counter, the shared cascade_goal_tasks helper owning the cancel/fail task sweep. 1 mese fa
  clanker 7db4cac172 s5: UI polish — mechanical rows ('session context restored', 'parked until') filtered from every user-facing timeline (write-side filtering on the daemon-ingest path, the web's restore comment removed, read-side filters on the goal narrative/task thread/dashboard so legacy rows vanish too; the raw terminal keeps everything), label reconciliation (a goal in completion review reads 'awaiting your review', the run-task status card agrees via display_map_for/display_of_detail — no bare 'blocked' for review parks), and verdict-shaped blocks pinned to their explicit accept/reject + free-text forms with NULL-options questions staying question-shaped. 1 mese fa
  clanker e7e167579f C2: goal comments ride the run task; system events styled (F8) 1 mese fa
  clanker e9b8fc1064 B1: goal-run control parity — Retry supervision, Requeue-to-resume, /tasks redirect 1 mese fa
  clanker 8b1c48a785 ui: rename every user-visible 'bot' to 'agent' at the source 1 mese fa
  clanker 0cc0b32eb3 integration: repo-qualified goal_branches rows, plan-12 doc rot swept 1 mese fa
  clanker fa78f8a5bf goals: flatten — subtask web machinery and task plans deleted 1 mese fa
  clanker 44f2e66a5a goals: schema, lifecycle service, wire contract and task callbacks 1 mese fa
  clanker 06760a6895 ui: agent celebrations — saddle yeehaw festive card, 🤠 badge and timeline events 1 mese fa
  clanker 478be0a6fb ui: heredoc completion reports — markdown summary card + timeline first-line snippets 1 mese fa
  clanker 9f5ab7ab36 push: plan 11 task E — real Web Push (VAPID) notifications 1 mese fa
  clanker a661dcca94 ui: plan 11 task D — task page, queue and dashboard layout tranche 1 mese fa
  clanker b397745530 lifecycle: draft state machine on a flattened M0001 — enqueue/delete guards, edit matrix, auto-enqueue subtasks, waiting-on-drafts display 1 mese fa
  clanker 16ea23f919 phase 3: capability awareness + dashboard — assignment capabilities context (saddle_tags/fleet_tags), GET /api/saddle/capabilities for the daemon CLI, subtask callback capabilities validated against the operator tag set (explicit-only, unknown tags name the valid list), task page status block pinned to the top with newest-first blocking sections, home dashboard pinning OPEN blocks as newest-first link-through cards above a cross-task activity timeline (TimelineService, last ~50 events), slow-ask lost-wake regression; tracked test bytecode removed 1 mese fa
  clanker b55f9a8719 feat: dead/wedged daemon reconciliation — vanishing daemons drive offline+requeue with narrated comments (3-strike verified against connection-refused), stale last_activity wedges fence+requeue, saddles page health panel (state/uptime/last-contact/badge), task rows mark the unreachable window, raw-log polling verified from the first push; harness timeout 1800s 1 mese fa
  clanker e561f584c3 feat: subtask auto-approve — tasks.auto_approve toggle above the subtasks table covers descendants transitively; covered review blocks auto-answered ('auto' recorded, timeline entry, delivered like a human verdict) while questions/RFCs and the parent's own review stay human-gated; all-terminal descendants resume with the push-first final-review instruction 1 mese fa
  clanker 43915c6c15 feat: computed task display state (TaskService.TaskDisplay) used by all lists and the detail page — review-requested over stored done, delegating x/y with open subtasks, terminal/failed flags; presentation only 1 mese fa
  clanker e51bad5de4 fix: hide the review block's duplicate body preview while the review section shows it (same pattern as the plan-review fix) 1 mese fa
  clanker 2a17623f47 feat: retry + resume — failed-task retry (summary moved to a comment and cleared, requeue bookkeeping), unreachable saddles requeue with an interruption comment, manual requeue-to-resume for tasks stuck on offline saddles, daemon 'resumed' status surfaced as a progress entry 1 mese fa
  clanker 8a2b5c00ca feat: capability tags — migration, service, saddle chips + catalogue on /saddles, required-capabilities on the task page, capability-matched dispatch (superset pairing, skip-and-continue with a wait log + queue-row flag) 1 mese fa
  clanker 39097a49dd feat: rules — migration, CRUD page, project/task attach UI, effective rule set (task ∪ primary ∪ co-developed, deduped, ordered) in the /start payload 1 mese fa
  clanker 733152f23d fix: hide the duplicate plan body preview while the plan-review section shows it; self-contained web-stack test harness (app + fake daemon) as a meson test 1 mese fa
  clanker 0b1675e78b fix: git_url in /start payload, block option radio cards, design-task plan review (approve + RFC feedback), terminal entry types (shell-reset/failed/query), failed-task handling, branch prefill on create form 1 mese fa