Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .ai-docs/learnings.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
{"date":"2026-01-20","session":"20260120-193522-resolve-issue-37","task":"Add source filters to duplicate cleanup feature","outcome":"success","keywords":["filter","cleanup","duplicate","validation","ui","backend","podio"],"insight":"Reusing existing filter infrastructure (ItemMigrationFilters, convertFilters) accelerates feature development. Reviewers caught 8 important issues including missing date validation, filter state handling bugs, and backwards compatibility gaps. Sequential worker pattern (backend→frontend→coherence) ensures clean layer separation. Filter persistence in job metadata enables reproducibility.","files_touched":["lib/migration/cleanup/types.ts","lib/migration/cleanup/service.ts","lib/migration/cleanup/executor.ts","app/components/migration/CleanupPanel.tsx","app/api/migration/cleanup/route.ts"]}
{"date":"2026-01-21","session":"20260121-145015-resolve-issue-45","task":"Persist cleanup job state across page refresh","outcome":"success","keywords":["localStorage","persistence","SSR","TTL","auto-reconnect","job-history","cleanup","pagination","AbortController","race-condition"],"insight":"localStorage persistence requires SSR safety (typeof window check), QuotaExceededError/SecurityError handling, and schema validation for JSON parsing. Auto-reconnect logic needs AbortController to prevent race conditions on mount. useMemo is better than useEffect for derived state like pagination. Following existing patterns (MigrationContext for storage, ItemMigrationPanel for job history UI) accelerates development significantly.","files_touched":["app/hooks/useCleanup.ts","app/components/migration/CleanupPanel.tsx","lib/migration/cleanup/types.ts","lib/migration/cleanup/service.ts"]}
{"date":"2026-01-22","session":"20260122-fix-comment","task":"Fix race conditions and type duplication from code review","outcome":"success","keywords":["AbortController","race-condition","stale-closure","useEffect","dependency-array","interface","extends","Partial","code-review","gemini-code-assist"],"insight":"Code review bots (gemini-code-assist) catch valid race condition issues. Three patterns validated: (1) async useEffect needs AbortController + isMounted guard, (2) props in effect body must be in deps array - dont suppress eslint, (3) extend interfaces with Partial<Base> instead of duplicating fields. Following existing patterns in same file accelerates fixes.","files_touched":["app/components/migration/CleanupPanel.tsx","app/hooks/useCleanup.ts","lib/migration/cleanup/types.ts"]}
{"date":"2026-01-22","session":"20260122-144008-resolve-issue-49","task":"Resolve issue #49: Add master checkbox for bulk selection","outcome":"success","keywords":["checkbox","tri-state","useMemo","useRef","accessibility","react-hooks","indeterminate","bulk-selection","hive","multi-agent"],"insight":"Session guidelines codification upfront prevents implementation issues. Sequential workers (Opus->Gemini->GLM->Codex) execute cleanly when each follows shared guidelines. Tester phase catches edge cases missed by code reviewers (empty groups visibility). Key pattern: strong upfront guidelines + sequential layered approach + testing = clean implementation with zero reviewer issues.","files_touched":["app/components/migration/DuplicateGroupsPreview.tsx"]}
{"date":"2026-01-22","session":"resolveprcomments-50","task":"Resolve PR comments","outcome":"success","keywords":["aria-checked","accessibility","native-checkbox","multi-agent-verification","PR-review","W3C","MDN","consensus-logic"],"insight":"Multi-agent verification (4 OpenCode models) with 2-2 tie resolution by Claude orchestrator works well for nuanced accessibility questions. Key finding: aria-checked should NOT be added to native HTML checkboxes - only to ARIA role='checkbox' elements. Native checkboxes expose indeterminate state automatically to assistive tech. Adding aria-checked to native inputs creates inconsistencies. Web standards research (W3C/MDN) essential for tie-breaker decisions.","files_touched":[]}
{"date":"2026-01-22","session":"resolveprcomments-50","task":"Resolve PR comments","outcome":"success","keywords":["ARIA","accessibility","native-elements","project-dna","documentation"],"insight":"Multi-agent verification (4 OpenCode models) confirmed CodeRabbit comment was VALID: the ARIA guideline was too broad. Updated from 'Don't add ARIA to native HTML elements' to more specific guidance about not overriding native semantic state. Valid ARIA usage (aria-label, aria-describedby) is allowed for supplementary info, but state attributes (aria-checked, aria-selected) should not duplicate native semantics. Codex GPT-5.2 further simplified the wording for clarity.","files_touched":[".ai-docs/project-dna.md"]}
Loading