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 月之前 |
clanker
|
1568628f4e
phase 2: telemetry flip — pushed chunks/results ingestion, staleness probe, pollers retired
|
1 月之前 |
clanker
|
2a8a2ec4b0
phase 1: work acquisition flip — ask/allocation, per-saddle tokens, wake computation + lost-wake guard
|
1 月之前 |
clanker
|
b0ae5dd17d
fix: live blocks without reload — hidden terminal tabs release their SSE stream (per-origin HTTP/1.1 cap starvation was the culprit), task pages refresh on focus and log refresh failures instead of swallowing them, README documents the SSE budget; regression test covers daemon-raised block -> pulse -> sealed GET refresh roundtrip
|
1 月之前 |
clanker
|
65ebc7c247
fix: raw-log cursor never trusts the daemon's next beyond served-and-stored chunks — belt-and-braces against the daemon-side /log snapshot race; forensics test simulates the race (chunks appended during response construction, next computed after) and proves every chunk lands exactly once with zero seq gaps
|
1 月之前 |
clanker
|
4d7354bd13
feat: branch_advanced on verdict and resume paths — any sibling (same parent, or same project+branch) completing/failing/dispatching/progressing after the task's park marker (suspended_at, else newest block, else last session activity) flips it true; carried on POST /answer, /notify verdicts, /poll answers and resume /start payloads so the daemon can skip the pointless pull --rebase
|
1 月之前 |
clanker
|
b878a9178c
feat: /start carries git_identity {name, email} from the saddle row — omitted entirely when unset so the daemon's fallback identity applies
|
1 月之前 |
clanker
|
32a9554c9d
feat: per-saddle git identity + ssh key storage — migration (git_name, git_email, ssh_public_key), poller and refresh persist the daemon-reported ssh_public_key, saddles page shows the key (copy button, deploy-key hint) with an inline identity edit form
|
1 月之前 |
clanker
|
e818ee4c25
fix: lossless raw-log ingestion — cursor advances only over chunks actually stored (daemon next trusted only when the array was fully consumed; duplicates consumed; failures stop advancement for re-fetch), whitespace-only chunks store as separators; audit test proves the full seq 1..6 corpus (CRLF-only chunk included) lands exactly once and streams unfiltered through SSE
|
1 月之前 |
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 月之前 |
clanker
|
8223c8d4d2
feat: 409-aware dispatch — machine-readable conflicts recover zombies (abort, bounded idle wait, one retry, narrated), live-task conflicts fence and alert; failed pushes mark the session push_failed and retries reuse the row instead of churning new ones
|
1 月之前 |
clanker
|
e53b6c03b5
feat: cancel/requeue/stop reaches the daemon — POST /abort with narrated outcome; a failed abort fences the saddle as 'recovering' (not dispatchable) until an idle probe clears it or three failed probes escalate to offline
|
1 月之前 |
clanker
|
5e08dc201b
feat: stranded-assignment recovery — assigned/working tasks with an open session, zero stored output past the grace period (SADDLE_STRAND_GRACE_S, default 120s), on a demonstrably idle daemon requeue with a bot comment; extends the stale-busy healing
|
1 月之前 |
clanker
|
e654f61840
fix: raw-log capability probe retries on later polls (throttled, SADDLE_RAW_PROBE_INTERVAL_S default 60s) instead of one seed-time failure stripping the session's raw terminal view
|
1 月之前 |
clanker
|
40b7ad1713
fix: refresh maps parked daemon states (blocked/suspended) to logically-free saddles — only 'working' maps to busy, reconciled against the web's open-session records instead of corrupting busy bookkeeping
|
1 月之前 |
clanker
|
c6af578198
fix: no daemon request may hang the dispatcher — Soup session timeouts (SADDLE_HTTP_TIMEOUT_S, default 30s, idle-pool reaping) plus a 60s tick watchdog that force-resets the latch; request paths already retry transport blips once
|
1 月之前 |
clanker
|
5c140cb383
test: raise the meson timeout to 900s — the suite has grown past 420s with rounds 4-5
|
1 月之前 |
clanker
|
7c2b3e00b5
feat: task-reading API for the daemon CLIs — GET /api/saddle/tasks (project_id filter, q over title/description/plan) and GET /api/saddle/task/{id} (parent title joined), callback-token authenticated; harness pins LD_LIBRARY_PATH empty so the binary's RUNPATH always resolves the dev stack
|
1 月之前 |
clanker
|
04b636e258
feat: /start gains the parent object for subtask dispatches — id, title, description, plan (clamped ~4000 chars), status; absent for root tasks
|
1 月之前 |
clanker
|
d96b06883a
feat: dispatch-failure observability — saddle abandons carry the reason into a bot comment (push failure / repeated poll failures), and tasks caught on offline saddles requeue with a bot comment each tick (extends stale-busy healing)
|
1 月之前 |
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 月之前 |
clanker
|
7625609d95
feat: POST /api/saddle/subtask callback — synchronous subtask creation (parent's project/branch, task_dependencies with exists+ancestor-cycle validation, timeline entry, idempotent on parent+title); entry-poll creation kept as dedup fallback
|
1 月之前 |
clanker
|
2906a94cc5
fix: floating comment-on-selection covers the raw PTY terminal too, not just the legacy entry log
|
1 月之前 |
clanker
|
73d860e2ed
fix: terminal ANSI base palette lifted for the dark background (blue #000080 was unreadable)
|
1 月之前 |
clanker
|
b490d6e102
feat: heal stale-busy saddles each tick (busy@0 and daemon-idle contradiction) so a stranded saddle never blocks dispatch; test fake daemon moves to a time-based lifecycle (poll-count conflated dispatcher polls with heal/refresh probes and raced the subtask-retry window), plus crash diagnostics (gdb wrap, early-crash restart, FD/stack/returncode dumps at teardown)
|
1 月之前 |
clanker
|
55848be0b3
feat: subtask status push — POST /subtask-status to the parent's live/parked-session daemon on creation and every status change, coalescing best-effort queue retried per tick (mirrors pending comments)
|
1 月之前 |
clanker
|
0614417826
feat: suspended state + per-subtask parent resume — /status 'suspended' parks the task and frees the saddle (suspended_at stamps the parking window), the dispatcher resumes a suspended parent on each terminal subtask event with a coalesced markdown report as /start resume_notice, subtasks array in every /start payload (wire contract)
|
1 月之前 |
clanker
|
b0df1634cf
feat: client-side ANSI rendering in the raw terminal view — SGR bold/italic/8-16-256 colour fg+bg as styled spans, partial escape sequences buffered across chunks, other CSI codes stripped, plain-text fallback
|
1 月之前 |
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 月之前 |
clanker
|
7a2d2f49c9
feat: required-capabilities multi-select on the task create form (validated before create; detail-page attach/detach unchanged)
|
1 月之前 |