<feed xmlns='http://www.w3.org/2005/Atom'>
<title>doot.git/internal/models/atom.go, 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-06T00:00:59+00:00</updated>
<entry>
<title>feat: remove Todoist integration entirely</title>
<updated>2026-07-06T00:00:59+00:00</updated>
<author>
<name>Doot Agent</name>
<email>agent@doot.local</email>
</author>
<published>2026-07-06T00:00:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=945c34590677e161a711ccaff0e1077197b1b178'/>
<id>urn:sha1:945c34590677e161a711ccaff0e1077197b1b178</id>
<content type='text'>
Native tasks (native_tasks table) fully replace Todoist. All Todoist
API code, store functions, handlers, routes, templates, and tests have
been removed. Migration 021 drops the now-unused tasks cache table.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: native tasks missing from Tasks tab and blank title on completion</title>
<updated>2026-07-05T08:22:17+00:00</updated>
<author>
<name>Doot Agent</name>
<email>agent@doot.local</email>
</author>
<published>2026-07-05T08:22:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=8ca820b05e9e699a7b563a2e37ff2a0629a5505a'/>
<id>urn:sha1:8ca820b05e9e699a7b563a2e37ff2a0629a5505a</id>
<content type='text'>
Bug 1: BuildUnifiedAtomList never called GetNativeTasks(), so doot-sourced
tasks were absent from the web Tasks tab. Added GetNativeTasks() fetch and
NativeTaskToAtom conversion (new model helper, SourceDoot constant).

Bug 2: handleAtomToggle called getAtomDetails after CompleteNativeTask, but
GetNativeTasks filters WHERE completed=0, so the task was already gone and
the title came back blank. Moved getAtomDetails call to before the completion
switch so all sources (including doot) capture title/dueDate first.

Also fixed widget_test.go compile error: TestHandleWidgetComplete_NonTodoist
called HandleWidgetComplete as a package-level function but it is a method on
*Handler. Rewrote the file as package handlers (internal) and construct
&amp;Handler{} directly.

Regression tests added for both bugs in atoms_test.go and handlers_test.go.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: add Claudomator stories as atom source in Doot tasks tab</title>
<updated>2026-03-25T05:17:35+00:00</updated>
<author>
<name>Claude Agent</name>
<email>agent@doot.local</email>
</author>
<published>2026-03-25T05:17:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=b58787cfec0bd07abc316c66dc9be6c10b8113c6'/>
<id>urn:sha1:b58787cfec0bd07abc316c66dc9be6c10b8113c6</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: unify Google Tasks with main system via caching and integrated UI</title>
<updated>2026-03-23T08:13:02+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-23T08:13:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=b2d8fc460be3105ac383098e7cdc92171e5026ec'/>
<id>urn:sha1:b2d8fc460be3105ac383098e7cdc92171e5026ec</id>
<content type='text'>
- Implement SQLite caching layer for Google Tasks
- Integrate Google Tasks into unified Atoms loop (showing in Tasks tab)
- Update Planning tab to include cached Google Tasks
- Enhance Quick Add form with Todoist project selector
- Remove orphaned HandleTasksTab/HandleRefreshTab methods
- Update tests to reflect new BuildTimeline signature and data structures
</content>
</entry>
<entry>
<title>fix: parse Todoist local datetimes, show near-future tasks, add undated tasks to timeline</title>
<updated>2026-03-23T00:42:44+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-23T00:42:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=6c767194d9470b368f8d337e0719795f235f683c'/>
<id>urn:sha1:6c767194d9470b368f8d337e0719795f235f683c</id>
<content type='text'>
- parseDueDate: handle date field containing "YYYY-MM-DDTHH:MM:SS" (local time,
  no tz offset) — Todoist REST API v1 uses this format for recurring tasks with
  a set time, causing due dates to silently parse as nil
- IsFuture threshold: widen from tomorrow to 7 days out so tasks due this week
  show in the main tasks section with dates visible (not collapsed)
- BuildTimeline: include undated Todoist tasks in the Today section (mirrors
  existing Google Tasks behavior)
- GetUndatedTasks: new store method for tasks with due_date IS NULL

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: Phase 1 — remove bug feature and dead code</title>
<updated>2026-03-21T21:24:02+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-21T21:24:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=764d4d2d07449aec72c87afe941b7c63ea05e08c'/>
<id>urn:sha1:764d4d2d07449aec72c87afe941b7c63ea05e08c</id>
<content type='text'>
- Delete Bug struct, BugToAtom, SourceBug, TypeBug, TypeNote
- Remove bug store methods (SaveBug, GetBugs, ResolveBug, etc.)
- Remove HandleGetBugs, HandleReportBug, bug branches in handlers
- Remove bug routes, bugs.html template, bug UI from index.html
- Remove AddMealToPlanner stub + interface method
- Migration 018: DROP TABLE IF EXISTS bugs

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Use configured timezone throughout codebase</title>
<updated>2026-01-27T02:49:44+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-01-27T02:49:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=42a4e32daca13b518e64e5821080ff3d6adf0e39'/>
<id>urn:sha1:42a4e32daca13b518e64e5821080ff3d6adf0e39</id>
<content type='text'>
- Add config/timezone.go with timezone utilities:
  - SetDisplayTimezone(), GetDisplayTimezone()
  - Now(), Today() - current time/date in display TZ
  - ParseDateInDisplayTZ(), ToDisplayTZ() - parsing helpers

- Initialize timezone at startup in main.go

- Update all datetime logic to use configured timezone:
  - handlers/handlers.go - all time.Now() calls
  - handlers/timeline.go - date parsing
  - handlers/timeline_logic.go - now calculation
  - models/atom.go - ComputeUIFields()
  - models/timeline.go - ComputeDaySection()
  - api/plantoeat.go - meal date parsing
  - api/todoist.go - due date parsing
  - api/trello.go - due date parsing

This ensures all dates/times display correctly regardless
of server timezone setting.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix bugs and add bug management scripts</title>
<updated>2026-01-25T21:56:29+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-01-25T21:56:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=ec8a9c0ea46dec7d26caa763e3adefcaf3fc7552'/>
<id>urn:sha1:ec8a9c0ea46dec7d26caa763e3adefcaf3fc7552</id>
<content type='text'>
Bug fixes:
- #36: Hide recurring tasks until due day (add IsRecurring to Task/Atom)
- Trello cards missing: change filter=visible to filter=open
- Build fix: add missing fmt import in atom.go

Infrastructure:
- Add scripts/bugs and scripts/resolve-bug for DB bug tracking
- Remove issues/ directory (bugs now tracked in DB)
- Add timeline_logic_test.go

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Implement 10 UI/UX improvements and bug fixes</title>
<updated>2026-01-22T08:53:37+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-01-22T08:53:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=583f90c5dedf0235fa45557359b0e6e7dd62b0f0'/>
<id>urn:sha1:583f90c5dedf0235fa45557359b0e6e7dd62b0f0</id>
<content type='text'>
- Fix outdated Todoist task URL format (showTask -&gt; app/task)
- Fix quick-add date defaulting to tomorrow in evening (client-side JS)
- Add tap-to-expand for task descriptions with checkbox completion
- Add visual differentiation: overdue (red), future (gray), today (normal)
- Sort tasks by urgency: overdue &gt; today-timed &gt; today-allday &gt; future
- Keep completed tasks visible with strikethrough until refresh
- Add random Unsplash landscape background with content overlay
- Hide future tasks behind collapsible fold with count badge
- Unified modal menu for Quick Add + Bug Report (Ctrl+K shortcut)
- Click task title to edit description in modal

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>UI improvements and bug fixes</title>
<updated>2026-01-21T07:38:18+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-01-21T07:38:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=dd4689a71de8f1c0b5a2d483827411a9645ad66a'/>
<id>urn:sha1:dd4689a71de8f1c0b5a2d483827411a9645ad66a</id>
<content type='text'>
- Gray out overdue tasks (past today)
- Sort tasks with specific times before midnight-due tasks
- Fix timezone bug in quick add (use local timezone)
- Remove "Personal Dashboard" header, minimal refresh/logout bar
- Change Todoist icon from checkmark to red circle
- Show due time when set (not just date)
- Compact task list styling

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
