summaryrefslogtreecommitdiff
path: root/.agent/worklog.md
blob: 563ce1887b4353b86012e10a0e71faf604cc0bad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Session State

## Current Focus
Cleaned Backlog

## Recently Completed
- **Google Tasks Unification & Multi-List Support** — implemented SQLite caching layer for Google Tasks, integrated with unified `Atoms` loop (now showing in Tasks tab), updated Planning tab to include Google Tasks, and enhanced Quick Add form with Todoist project selector. Fixed issue where only the default list was shown; now respects all enabled task lists and calendars from settings.
- **Agent Context API Phase 2 & 3** — Write operations (complete, uncomplete, update due, update task), create operations (task, shopping), and management UI in settings. Fixed SQLite timestamp scanning issue.
- **Sync log + clear cache feedback** — migration `016_sync_log.sql`, store methods `AddSyncLogEntry`/`GetRecentSyncLog`, handler changes, template partial `sync-log.html`
  - `HandleClearCache` now renders sync log HTML (replaces `hx-swap="none"`)
  - `HandleSyncSources` adds log entry after sync
  - `HandleSettingsPage` passes `SyncLog []store.SyncLogEntry` to template
  - Tests: `TestStore_AddAndGetSyncLog`, `TestStore_GetRecentSyncLog_LimitsResults`, `TestHandleClearCache_AddsLogEntry`, `TestHandleClearCache_ReturnsHTMLSyncLog`, `TestHandleSettingsPage_IncludesSyncLog`, `TestHandleSyncSources_AddsLogEntry`


- **Bug 1: Todoist incremental sync** — added 5 tests exercising the incremental merge path (upsert, delete completed/deleted, sync token storage/reuse, forceRefresh). Code was already correct, just untested.
  - Tests: `TestFetchTasks_IncrementalSync_UpsertsActiveTasks`, `TestFetchTasks_IncrementalSync_DeletesCompletedAndDeletedTasks`, `TestFetchTasks_IncrementalSync_StoresNewSyncToken`, `TestFetchTasks_IncrementalSync_UsesSavedSyncToken`, `TestFetchTasks_ForceRefresh_ClearsSyncToken`
- **Bug 2: Task completion response/headers** — added assertions for response body (`rendered:completed-atom`), Content-Type header, HX-Reswap/HX-Trigger headers, template data verification. Code was correct, assertions were missing.
  - Tests updated: `TestHandleCompleteAtom_Todoist`, `TestHandleUncompleteAtom_Todoist`
  - New test: `TestHandleCompleteAtom_RendersCorrectTemplateData`
- **Bug 3: Google Calendar cache layer** — calendar events now cached via `CacheFetcher` pattern, surviving API outages.
  - New migration: `migrations/015_calendar_events.sql`
  - New store methods: `SaveCalendarEvents`, `GetCalendarEvents`, `GetCalendarEventsByDateRange`
  - New cache key: `store.CacheKeyGoogleCalendar`
  - New handler method: `fetchCalendarEvents` (uses `CacheFetcher` with stale-cache fallback)
  - `BuildTimeline` now reads events from store (removed `calendarClient` param)
  - Tests: `TestBuildTimeline_ReadsCalendarEventsFromStore`, `TestFetchCalendarEvents_CacheFallbackOnAPIError`, `TestSaveAndGetCalendarEvents`
- All tests pass (`go test ./...`)

## Previously Completed
- Extracted project-agnostic dev methodology to `~/.claude/CLAUDE.md`
- Created `~/.claude/roles/` with architect.md, implementor.md, reviewer.md
- Slimmed task-dashboard `CLAUDE.md` (87→72 lines, references global for methodology)
- Trimmed `DESIGN.md` (removed Development Workflow, Git Practices, TDD methodology, ADR methodology, Config Reference duplication)
- Deleted `ARCHITECT_ROLE.md`, `IMPLEMENTOR_ROLE.md`, `REVIEWER_ROLE.md` from repo

## Previously Completed
- Build version footer with ldflags injection (`deploy.sh`, `index.html`)
- `assertTemplateContains` test helper, refactored existing template tests
- `scripts/logs` for fetching production journalctl
- Fix passkey registration: hide UI when WebAuthn not configured (WebAuthnEnabled flag)
- Added no-cache header tests for #66

## Completed Bugs (All Verified)
- **#74**: Feature toggles — tests: `TestHandleToggleFeature`, `TestHandleCreateFeature`, `TestHandleDeleteFeature`; docs: DESIGN.md §4.3
- **#56**: Box contents overflow — CSS-only fix, documented in DESIGN.md
- **#65**: Google Tasks — timeline tests cover integration; API client lacks dedicated unit tests
- **#66**: No-cache headers — tests: `TestHTMLResponse_SetsNoCacheHeaders`, `TestJSONResponse_SetsNoCacheHeaders`
- **#67**: Z-index — CSS-only fix, documented in DESIGN.md §z-index hierarchy
- **#68**: Track completion — tests: `TestHandleCompleteAtom_Todoist`, `TestHandleCompleteAtom_Trello`
- **#69**: Timeline calendar — tests: `TestCalcCalendarBounds`, `TestBuildTimeline_IncludesOverdueItems`; docs: DESIGN.md §Timeline View
- **#70**: Clear inputs — tests: `TestShoppingQuickAdd_Success`; docs: DESIGN.md §Quick Add UX
- **#71**: Shopping checkmarks — tests: `TestShoppingModeItemsTemplateFiltersChecked`
- **#72**: Inline add per store — tests: `TestShoppingQuickAdd_ShoppingModeReturnsStoreItems`
- **#73**: Store grouping — partial tests, partial docs

## Agent Context API
- Status: [COMPLETED] Phase 1, 2, & 3
- Tests: `internal/handlers/agent_test.go` (comprehensive)
- Docs: ADR-005, DESIGN.md §Agent Context API
- Write operations, Creation, and Management UI all implemented and verified.

## Known Gaps
- Google Tasks API client lacks dedicated unit tests (integration tested via timeline)
- WebAuthn passkeys require `WEBAUTHN_RP_ID` and `WEBAUTHN_ORIGIN` env vars in production

## Remaining Items (Feature Requests)
- #33-38: Shopping/timeline features

## Next Steps
1. Set `WEBAUTHN_RP_ID` and `WEBAUTHN_ORIGIN` in production to enable passkeys

## Process Improvements
- Extracted dev workflow to `~/.claude/CLAUDE.md` — reusable across projects
- Role definitions now in `~/.claude/roles/` — project-agnostic
- CLAUDE.md reduced from 87 to 72 lines — faster to parse
- DESIGN.md trimmed ~200 lines of duplicated methodology