<feed xmlns='http://www.w3.org/2005/Atom'>
<title>doot.git/docs/superpowers/plans, branch master</title>
<subtitle>doot — personal productivity web app
</subtitle>
<id>https://git.terst.org/doot.git/atom?h=master</id>
<link rel='self' href='https://git.terst.org/doot.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/'/>
<updated>2026-07-17T22:46:18+00:00</updated>
<entry>
<title>Extend chain creation to accept per-task description and priority</title>
<updated>2026-07-17T22:46:18+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-17T22:46:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=be4d606e9a1f5b068abcc21bbac58d1e4705ea1f'/>
<id>urn:sha1:be4d606e9a1f5b068abcc21bbac58d1e4705ea1f</id>
<content type='text'>
CreateChain and POST /api/widget/chains previously only took bare
title strings, with priority hardcoded to 1 -- narrower than the
spec's "an ordered list of task titles/descriptions" API line. Now
accepts []models.ChainTaskInput{Content, Description, Priority} per
position, priority defaulting to 1 when omitted.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01EZ7ikw2ukGJFTHE3bJS7zL
</content>
</entry>
<entry>
<title>Implement linear task chains and recurring maintenance buckets</title>
<updated>2026-07-17T22:22:37+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-17T22:22:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=b007fee8fb5b39a5f9b369c59af71ac9e795ceaf'/>
<id>urn:sha1:b007fee8fb5b39a5f9b369c59af71ac9e795ceaf</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01EZ7ikw2ukGJFTHE3bJS7zL
</content>
</entry>
<entry>
<title>Add implementation plan for task budgets and availability</title>
<updated>2026-07-16T17:17:58+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-16T17:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=533e8ac3aa2d0a3a1bda50a984356c9fcc40076d'/>
<id>urn:sha1:533e8ac3aa2d0a3a1bda50a984356c9fcc40076d</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01PQaPGQVSfmKUiHXB87qRTC
</content>
</entry>
<entry>
<title>Add implementation plan for task labels and projects</title>
<updated>2026-07-16T02:54:17+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-15T18:03:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=194c1aa3ff6adc086dad8b2257c29b6e1c374977'/>
<id>urn:sha1:194c1aa3ff6adc086dad8b2257c29b6e1c374977</id>
<content type='text'>
Nine tasks: schema/model + project_id wiring, Projects CRUD,
label-color CRUD, HTTP endpoints, TimelineItem/WidgetItem
project-color threading, Android data layer, task-detail popup UI
(project picker + label editor), widget grid color accent,
build/deploy.
</content>
</entry>
<entry>
<title>Add implementation plan for task recurrence and detail popup editing</title>
<updated>2026-07-16T02:44:02+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-14T18:50:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=7605e59f6d4524f4a0bf5d573916c8728ad0bfdb'/>
<id>urn:sha1:7605e59f6d4524f4a0bf5d573916c8728ad0bfdb</id>
<content type='text'>
Nine tasks: recurrence schema/model, ComputeNextOccurrence, iteration
creation on completion, periodic due-date trigger, HTTP endpoints,
Android WidgetRepository additions, description linkification,
TaskDetailActivity redesign, build/deploy.
</content>
</entry>
<entry>
<title>docs: fix exclusive all-day end-date bug in multi-day plan's Android task</title>
<updated>2026-07-16T02:42:31+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-13T18:17:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=08ded9fc1114c86b7a748c589aa2b6e8d8202c1c'/>
<id>urn:sha1:08ded9fc1114c86b7a748c589aa2b6e8d8202c1c</id>
<content type='text'>
MD-Task 2's review caught that Google Calendar's all-day End.Date is
exclusive (a single-day all-day event's End is one day past its own
day), which isMultiDayEvent/multiDayVariant didn't account for. Task 4
(Android, not yet implemented) had the same flaw copied into its
Kotlin code -- fixed here before dispatching, mirroring the Go-side fix.
</content>
</entry>
<entry>
<title>docs: add multi-day calendar events implementation plan</title>
<updated>2026-07-16T02:42:31+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-13T18:01:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=c901a6ea512088991bb2b2d5d1daebb5d90e000e'/>
<id>urn:sha1:c901a6ea512088991bb2b2d5d1daebb5d90e000e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: add widget text-size + tomorrow-section fix implementation plan</title>
<updated>2026-07-16T02:39:57+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-13T09:15:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=99b9e252eaaadac7790788bdf9e1efb52afab53a'/>
<id>urn:sha1:99b9e252eaaadac7790788bdf9e1efb52afab53a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: add widget recurrence-display implementation plan</title>
<updated>2026-07-12T10:23:43+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-12T10:23:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=620ae57f05c6bac49e606771b21230c58b8418d9'/>
<id>urn:sha1:620ae57f05c6bac49e606771b21230c58b8418d9</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01VTUSAEKfsPc6WGDq45yPHD
</content>
</entry>
<entry>
<title>docs: add widget refresh button implementation plan</title>
<updated>2026-07-12T10:21:14+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-07-12T10:21:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=c0454371a044ef4f20bfe44ee9f183fb336656dd'/>
<id>urn:sha1:c0454371a044ef4f20bfe44ee9f183fb336656dd</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01VTUSAEKfsPc6WGDq45yPHD
</content>
</entry>
</feed>
