summaryrefslogtreecommitdiff
path: root/SESSION_STATE.md
blob: 08f6409f1bfda3b3b545b62d99da05b811e354e9 (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
78
79
80
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