Full deployment history for this project.
Merge pull request #94 from mbarbine/deduplicate-use-mobile-hook-16841819285971756138
Merge pull request #110 from mbarbine/test-theme-provider-7271746408162373963
Merge pull request #88 from mbarbine/test/add-ph3ar-modal-tests-7770790142435062784
Merge pull request #89 from mbarbine/optimize-mcp-totaltasks-reduce-18393745517397133351
Merge pull request #86 from mbarbine/refactor/deduplicate-use-toast-hook-6857204804075110743
Merge pull request #87 from mbarbine/test/automation-rules-component-16786138912040523399
Merge pull request #111 from mbarbine/jules-18001943285364204447-d26501d4
🔒 Fix overly permissive CORS origin auth bypass in proxy and platform API Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
test: add unit tests for ThemeProvider component Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Optimize array traversals in MCP sync_project_calendar Replaced chained flatMap, filter, and map intermediate array allocations with a single-pass loop that calculates totalTasks and collects tasksWithDueDates simultaneously. Benchmark results demonstrate up to an 8.58x speedup on small boards and a 1.70x speedup on large boards. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #91 from mbarbine/test/column-component-tests-11701537459126043474
Merge pull request #93 from mbarbine/test/faq-component-tests-4271852804874320286
Merge pull request #96 from mbarbine/test/import-board-json-catch-block-543615524140246916
Merge pull request #97 from mbarbine/deduplicate-use-mobile-hook-18146151125260387432
Merge pull request #99 from mbarbine/test/untested-catch-export-as-ascii-13444654981200345354
Merge pull request #100 from mbarbine/test-calendar-integration-coverage-4371650937644863298
Merge pull request #102 from mbarbine/optimize-total-tasks-mcp-route-5497088179962142529
Merge pull request #104 from mbarbine/fix/json-ld-xss-prevention-12040047207249199945
Merge pull request #105 from mbarbine/jules-3366851562551357674-a78838ec
Merge pull request #107 from mbarbine/jules-5585197174083380978-759419aa
Merge pull request #85 from mbarbine/test-task-card-component-11600207902331216547
chore: add auto PR approve+merge workflow
Propagate correlated Kanban trace headers
chore: reconcile and restore pnpm build
⚡ Bolt: Optimize Kanban Drag and Drop Performance
⚡ Bolt: defer search query filtering
Merge branch 'main' into micro-ux-a11y-improvements-18316976175382081478
⚡ Bolt: Prevent Unnecessary Column Re-renders Fix React.memo bailouts on the Column component. - Eliminate inline arrow functions by passing columnId directly via props. - Introduce `columnsRef` to prevent stable callbacks from re-triggering child renders when board state changes. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [HIGH] Fix timing attack vulnerability - Add `secureCompare` function in `lib/utils.ts` for constant-time string comparison. - Replace direct string equality checks (`!==`) with `secureCompare` for API token authentication in `proxy.ts`, `app/api/v1/tasks/route.ts`, and `app/api/v1/tasks/[id]/route.ts`. - Fix duplicate loop declarations in `app/api/v1/tasks/[id]/route.ts`. - Fix mock assertion bug in `__tests__/lib/mcp-register.test.ts`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge branch 'main' into jules-perf-opt-movetask-3860597114753349278
fix: add missing ARIA labels and fix test syntax errors - Added `aria-label` attributes to icon-only buttons in kanban-board, column, task-detail-sidebar, and automation-rules components. - Fixed syntax/parsing errors in `__tests__/components/user-settings.test.tsx` and `__tests__/lib/mcp-register.test.ts`. - Replaced unescaped quotes with `"` in `app/faq/page.tsx` to clear React warnings. - Updated README.md to mention Accessibility as a feature. - Appended learning about icon button accessibility to `.jules/palette.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Add React.memo to TaskCard and Column to prevent unnecessary re-renders Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat(ux): add aria-labels and focus states to icon buttons Added `aria-label`s and `focus-visible:ring-2` to the clear search button and column action buttons to improve screen reader support and keyboard navigation. Also added a journal entry in `.Jules/palette.md` for this learning. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Memoize TaskCard and defer search query - Used `React.memo` with a custom equality function for the `TaskCard` component to prevent unnecessary re-renders during drag and drop operations. - Added `useDeferredValue` for the search query in `kanban-board.tsx` to keep the UI highly responsive by deferring the heavy filtering operations. - Added explanatory inline comments for the performance impacts. - Fixed two syntax errors inside `user-settings.test.tsx` and `mcp-register.test.ts` to get tests to pass correctly. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Add aria-label to delete rule button Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🧪 Add tests for useToast hook and reducer Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [CRITICAL] Fix Timing Attack in Bearer Token Auth - Mitigated timing attack vulnerability in `proxy.ts` Bearer token checking by using constant-time evaluation (XOR comparison). - Added `__tests__/proxy.test.ts` cases to verify length and exact match checks without timing leaks. - Resolved unrelated ESLint warnings in `components/kanban-board.tsx`, `components/user-settings.tsx`, `hooks/use-keyboard-shortcuts.ts`, `app/faq/page.tsx`, and `__tests__/components/user-settings.test.tsx`. - Recorded vulnerability analysis in `.jules/sentinel.md` journal. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Optimize sequential network requests in MCP sync This commit improves the performance of the `sync_project_calendar` tool call in the MCP API route. By replacing a sequential loop of `fetch` requests with `Promise.all()`, multiple calendar sync requests are now executed concurrently. - Reduced sync latency for projects with many tasks (e.g., 10 tasks with 100ms delay now takes ~100ms instead of ~1000ms). - Preserves individual error handling for each task within the results array. - Maintains consistency with existing tool call response structures. Verified using a synthetic benchmark with ~90% improvement measured. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: add api/health, faq, breadcrumbs, mcp registrations and claws Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>