summaryrefslogtreecommitdiff
path: root/.agent/worklog.md
diff options
context:
space:
mode:
Diffstat (limited to '.agent/worklog.md')
-rw-r--r--.agent/worklog.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/.agent/worklog.md b/.agent/worklog.md
new file mode 100644
index 0000000..08f6409
--- /dev/null
+++ b/.agent/worklog.md
@@ -0,0 +1,81 @@
+# Session State
+
+## Current Focus
+Sync log + clear cache feedback
+
+## Recently Completed
+- **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: [REVIEW_READY] Phase 1 Complete
+- Tests: `internal/handlers/agent_test.go` (comprehensive)
+- Docs: ADR-005, DESIGN.md §Agent Context API
+- Phase 2 (Write Operations) and Phase 3 (Create + Management) pending
+
+## 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)
+- #12: Research task durations
+- #28: Bugs as first-class atoms
+- #30: Consistent background opacity
+- #31: PlanToEat ingredients
+- #33-38: Shopping/timeline features
+
+## Next Steps
+1. Set `WEBAUTHN_RP_ID` and `WEBAUTHN_ORIGIN` in production to enable passkeys
+2. **Phase 2**: Agent write operations (complete, uncomplete, update due date)
+3. **Phase 3**: Create task/shopping item, agent management UI
+
+## 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