<feed xmlns='http://www.w3.org/2005/Atom'>
<title>doot.git/migrations, branch main</title>
<subtitle>doot — personal productivity web app
</subtitle>
<id>https://git.terst.org/doot.git/atom?h=main</id>
<link rel='self' href='https://git.terst.org/doot.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/'/>
<updated>2026-03-23T08:13:02+00:00</updated>
<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>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>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>
<entry>
<title>feat: sync log, cache clear endpoint, Todoist projects from cached tasks</title>
<updated>2026-03-04T21:12:44+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-03-04T21:12:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=0fd54eddc40f517cf491310d4f8a60b0d79dc937'/>
<id>urn:sha1:0fd54eddc40f517cf491310d4f8a60b0d79dc937</id>
<content type='text'>
- migration 016: sync_log table
- store: AddSyncLogEntry, GetRecentSyncLog, InvalidateAllCaches, GetProjectsFromTasks
- settings: HandleClearCache (POST /settings/clear-cache), SyncLog in page data
- settings: use GetProjectsFromTasks instead of deprecated Todoist REST /projects
- handlers: populate atom projects from store
- agent: log warning on registration failure instead of silently swallowing
- google_tasks: simplify URL literal
- tests: sync log CRUD, clear cache handler, settings page includes sync log,
  sync sources adds log entry, incremental sync paths, task completion
  response/headers, calendar cache fallback

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add calendar cache layer, incremental sync tests, completion assertions</title>
<updated>2026-02-18T00:43:42+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-02-18T00:43:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=ec7d895c00c571b37ad9255b99b2e1756776c9e1'/>
<id>urn:sha1:ec7d895c00c571b37ad9255b99b2e1756776c9e1</id>
<content type='text'>
- Google Calendar events now cached via CacheFetcher pattern with
  stale-cache fallback on API errors (new migration 015, store methods,
  fetchCalendarEvents handler, BuildTimeline reads from store)
- Todoist incremental sync path covered by 5 new tests
- Task completion tests assert response body, headers, and template data

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add passkey (WebAuthn) authentication support</title>
<updated>2026-02-06T01:35:01+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-02-06T01:35:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=0a1001eb0bd2d1f7c0624ae1ef8ae7ccdb3447d4'/>
<id>urn:sha1:0a1001eb0bd2d1f7c0624ae1ef8ae7ccdb3447d4</id>
<content type='text'>
Enable passwordless login via passkeys as an alternative to password auth.
Users register passkeys from Settings; the login page offers both options.
WebAuthn is optional — only active when WEBAUTHN_RP_ID and WEBAUTHN_ORIGIN
env vars are set.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Document multi-agent workflow, ADRs, and Agent API</title>
<updated>2026-02-05T20:37:09+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-02-05T20:37:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=223c94f52ebaa878f6951ebf7d08754e413bdca7'/>
<id>urn:sha1:223c94f52ebaa878f6951ebf7d08754e413bdca7</id>
<content type='text'>
- Add Development Workflow section to DESIGN.md documenting three-role
  system (Architect, Implementor, Reviewer) with handoff documents
- Update CLAUDE.md with Key Documents section pointing to DESIGN.md,
  role definitions, and ADRs
- Add ADR-first documentation policy across all role definitions
- Update REVIEWER_ROLE.md with comprehensive test quality checklist
- Document Agent API and completed tasks log in DESIGN.md
- Update database schema table with 5 missing tables
- Update endpoint reference with 10 missing routes
- Create ADRs 002-005 capturing key architectural decisions:
  - 002: Timeline aggregation architecture
  - 003: HTMX write operations pattern
  - 004: Concurrent data fetching with graceful degradation
  - 005: Agent API notification-based authentication
- Add migrations/README.md documenting schema history and 007 gap

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add feature toggles system with settings UI (#74)</title>
<updated>2026-02-01T06:16:12+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-02-01T06:16:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=cbb0b53de1d06918c142171fd084f14f03798bc1'/>
<id>urn:sha1:cbb0b53de1d06918c142171fd084f14f03798bc1</id>
<content type='text'>
- Add feature_toggles table (migration 012)
- Add source_config table for future source selection (migration 013)
- Create settings page at /settings with:
  - Feature toggle management (enable/disable/create/delete)
  - Data source configuration (sync and toggle boards/calendars)
- Add store methods for feature toggles and source config
- Add GetCalendarList and GetTaskLists to Google API clients
- Document feature toggle workflow in DESIGN.md

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Expand agent context API with completed log and calendar view</title>
<updated>2026-01-29T09:32:26+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-01-29T09:32:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=d39220eac03fbc5b714bde989665ed1c92dd24a5'/>
<id>urn:sha1:d39220eac03fbc5b714bde989665ed1c92dd24a5</id>
<content type='text'>
- Add completed_tasks table to log task completions with title, due date,
  and completion timestamp
- Extend agent context date range: 7 days back to 14 days forward
- Add completed_log to API response (last 50 completed tasks)
- Add day_section field to timeline items (overdue/today/tomorrow/later)
- Add calendar-style view for today's schedule (6am-10pm hourly grid)
- Add tabbed interface for Timeline vs Completed Log in HTML view

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add Agent Context API for external agent integration</title>
<updated>2026-01-29T08:19:28+00:00</updated>
<author>
<name>Peter Stone</name>
<email>thepeterstone@gmail.com</email>
</author>
<published>2026-01-29T08:19:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/doot.git/commit/?id=05b1930e04ac222d73ffb2f45c1b1febb69f893d'/>
<id>urn:sha1:05b1930e04ac222d73ffb2f45c1b1febb69f893d</id>
<content type='text'>
Phase 1: Authentication and read-only context
- POST /agent/auth/request - request access with name + agent_id
- GET /agent/auth/poll - poll for approval status
- POST /agent/auth/approve|deny - user approval (browser auth required)
- GET /agent/context - 7-day timeline context (agent session required)

Phase 1.5: Browser-only agent endpoints (HTML pages)
- GET /agent/web/request - request page with token
- GET /agent/web/status - status page with polling
- GET /agent/web/context - context page with timeline data

WebSocket notifications:
- GET /ws/notifications - push agent requests to browsers
- Approval modal with trust indicators and countdown timer

Database:
- agents table for registered agent tracking
- agent_sessions table for pending/active sessions

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