From b007fee8fb5b39a5f9b369c59af71ac9e795ceaf Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Fri, 17 Jul 2026 22:22:37 +0000 Subject: Implement linear task chains and recurring maintenance buckets Backend, web timeline, and Android widget wiring for the last two unimplemented items from doot-future-task-scheduling-ideas. Chains: task_chains table + chain_id/chain_position/chain_unlocked on native_tasks (migration 026), WIP-limit-1 advancement hooked into CompleteNativeTask, locked tasks excluded from all date-based queries, 5 new /api/widget/chains* endpoints, an N/M position badge on web and Android widget rows. Buckets: maintenance_buckets table + bucket_id/bucket_state/ bucket_last_active_at on native_tasks (migration 027), staleness-then-priority selection scoring, a new RunBucketCycleCheck scheduler loop, 5 new endpoints including the distinct Defer action, a Defer button on web and Android widget rows. Also corrected stale "not yet approved" status headers on the two already-shipped specs this work depended on (labels/projects, budgets/ availability) -- their headers were never updated after implementation. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EZ7ikw2ukGJFTHE3bJS7zL --- web/templates/partials/timeline-tab.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'web/templates/partials/timeline-tab.html') diff --git a/web/templates/partials/timeline-tab.html b/web/templates/partials/timeline-tab.html index d3b3fb6..d6f410e 100644 --- a/web/templates/partials/timeline-tab.html +++ b/web/templates/partials/timeline-tab.html @@ -103,6 +103,13 @@ padding: 1px 4px; border-radius: 3px; } + .chain-badge { + background: rgba(139,92,246,0.25); + color: #c4b5fd; + font-size: 0.65em; + padding: 1px 4px; + border-radius: 3px; + }
{{.Title}}{{multiDayLabel .}} {{if .IsOverdue}}overdue{{end}} + {{if .ChainTotal}}{{.ChainPosition}}/{{.ChainTotal}}{{end}} + {{if eq .BucketState "active"}}defer{{end}} {{if .URL}} @@ -195,6 +204,8 @@ class="h-4 w-4 rounded bg-black/40 border-white/30 text-white/80 focus:ring-white/30 cursor-pointer flex-shrink-0"> {{end}} {{.Title}} + {{if .ChainTotal}}{{.ChainPosition}}/{{.ChainTotal}}{{end}} + {{if eq .BucketState "active"}}defer{{end}}
{{.Time.Format "3:04 PM"}}{{if .EndTime}} - {{.EndTime.Format "3:04 PM"}}{{end}}
@@ -245,6 +256,8 @@ {{.Title}}{{multiDayLabel .}} {{if and (eq .MultiDayVariant "") .EndTime}}– {{.EndTime.Format "3:04 PM"}}{{end}} + {{if .ChainTotal}}{{.ChainPosition}}/{{.ChainTotal}}{{end}} + {{if eq .BucketState "active"}}defer{{end}} {{if .URL}}
-- cgit v1.2.3