<feed xmlns='http://www.w3.org/2005/Atom'>
<title>doot.git/web/templates/partials/task-detail.html, 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-08-12T23:35:47+00:00</updated>
<entry>
<title>Add task title editing/deletion, timeline click-to-open, widget app launch</title>
<updated>2026-08-12T23:35:47+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-08-12T23:35:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=2509dde6aa372a505b186657706f4d21bd391807'/>
<id>urn:sha1:2509dde6aa372a505b186657706f4d21bd391807</id>
<content type='text'>
Task-detail modal was description-only with no delete affordance;
HandleUpdateTask now saves the title too and a Delete button hits a new
DELETE /tasks/{id} route backed by store.DeleteNativeTask, which repairs
chain_position/unlocks the successor when the deleted task belongs to a
chain. Timeline tab task/card/gtask rows now open the same detail modal
as the Tasks tab. Android widget's "TODAY" header is now a tap target
that launches DashboardActivity, since nothing previously opened the
full app from the widget.
</content>
</entry>
<entry>
<title>Wire the Tasks tab into nav; fold in buckets/projects/labels and recurrence</title>
<updated>2026-08-07T10:39:28+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-08-07T10:39:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=eadd17df2946a1219fdf02f2ee0a0ac19734e56d'/>
<id>urn:sha1:eadd17df2946a1219fdf02f2ee0a0ac19734e56d</id>
<content type='text'>
The Tasks tab (/tabs/tasks) existed server-side and was tested, but
nothing in the nav linked to it -- it was pure dead weight in the other
direction. Wiring it up as the natural home for everything that was
either misplaced in Settings or missing a web UI entirely:

- Maintenance Buckets, Projects, and Labels moved out of Settings and
  into the Tasks tab (restyled from Settings' opaque slate cards to the
  glass/backdrop-blur look already used by the tab's chain/atom cards --
  they're now embedded in index.html's page shell, not a standalone
  page, so the shared bg-card/bg-input classes from that shell apply).
  Settings keeps only what's actually settings: Passkeys, Trusted
  Agents, Data Sources.
- Added a Recurrence section to the task-detail modal (freq/interval/
  weekday form, posting to a new POST /tasks/recurrence -- the HTMX
  counterpart to the widget API's HandleWidgetTaskRecurrence). Native
  task recurrence previously had zero web UI at all, only reachable via
  the Android widget's RecurrenceEditDialog.

Also fixed a real bug found while touching this code: HandleGetTaskDetail's
source switch only had a case for "trello" -- opening any native ("doot")
task's detail modal, which is most tasks in this tab, showed a blank
title and description. Factored both call sites (initial GET and the
re-render after a recurrence edit) through one loadTaskDetailData helper
and added the missing "doot" case. Also fixed task-detail.html's styling,
which was still using pre-dark-theme classes (text-gray-900 etc.) --
functionally invisible text on the modal's dark background.

Verified with a throwaway local server (real templates + real DB, not
the MockRenderer the unit tests use) seeded with a recurring task,
a bucket, a project, and a label -- confirmed all five touched routes
render 200 with the expected content, including the populated
Buckets/Projects/Labels sections and a real weekly-recurrence form
with the correct weekdays pre-checked. Caught and fixed a copy bug
this way too ("every 2 weeklys" -&gt; "every 2 weeks"). Not committed;
deleted after use.

go build ./..., go vet ./..., and go test ./... all clean.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01EZ7ikw2ukGJFTHE3bJS7zL
</content>
</entry>
<entry>
<title>chore: autocommit uncommitted changes</title>
<updated>2026-03-18T07:06:03+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator</email>
</author>
<published>2026-03-18T07:06:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=e3195a6534bae000a63e884ff647fac95d9d2498'/>
<id>urn:sha1:e3195a6534bae000a63e884ff647fac95d9d2498</id>
<content type='text'>
</content>
</entry>
</feed>
