Full deployment history for this project.
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>
perf: Memoize Column and TaskCard to prevent excessive re-renders 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>
๐งช Add tests for useToast hook and reducer Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #48 from mbarbine/fix-generateId-prng-2661487042418924522 ๐ก๏ธ Sentinel: [HIGH] Fix weak PRNG in generateId
๐ก๏ธ Sentinel: [HIGH] Fix weak PRNG in generateId Severity: HIGH Vulnerability: Math.random() is not cryptographically secure, leading to predictable IDs and potential collision risks. Impact: Predictable or colliding IDs could be exploited in URL parameters or DOM manipulations to guess or access unauthorized resources. Fix: Replaced Math.random().toString(36).substring(2, 9) with crypto.randomUUID() which provides standard, cryptographically secure v4 UUIDs. Verification: Tests updated to expect 36-character length and hyphens. Ran pnpm exec vitest run __tests__/lib/utils.test.ts successfully. 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>
feat: add health check, FAQ, and MCP network registration Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #39 from mbarbine/add-keys-integration-12231379121938949400 Support PLATPHORM-API-KEY and keys integration
feat: add support for PLATPHORM-API-KEY settings and Keys integration Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #38 from mbarbine/test/create-claws-mcp-client-12361025884867796955 ๐งช Add tests for createClawsMcpClient
Merge branch 'main' into test/create-claws-mcp-client-12361025884867796955
๐งช test: Add tests for createClawsMcpClient Adds missing unit tests for the createClawsMcpClient factory function and fixes a bug where providing custom headers through options completely overwrote the default 'X-Origin' header. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #37 from mbarbine/perf-optimize-readme-read-17069909451562082984 โก Optimize app/llms-full.txt/route.ts by replacing sync I/O with async I/O
Merge pull request #36 from mbarbine/test-use-keyboard-shortcuts-9776553933089269788 ๐งช [testing improvement] Add useKeyboardShortcuts hook tests
โก optimize app/llms-full.txt/route.ts by using async file read Swapped the blocking `fs.readFileSync` for non-blocking `fs.promises.readFile` in `app/llms-full.txt/route.ts` because it's handling a GET request within an asynchronous context. This change removes blocking file I/O operations from the event loop, ensuring the application remains responsive, especially under heavy concurrent loads. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
test: implement test suite for useKeyboardShortcuts hook Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
๐ก๏ธ Sentinel: [CRITICAL] Enforce Bearer token authentication on board endpoint - Added `/api/v1/board` to `PROTECTED_PATHS` in `proxy.ts`. - Verified that global board state mutation is now protected by `API_SECRET`. - Created security learning journal entry in `.jules/sentinel.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #33 from mbarbine/jules-3476919796250206600-cd1bb74f ๐งน [code health improvement description]
Merge pull request #34 from mbarbine/test/get-deployment-context-9095014822188068550 ๐งช [testing improvement] Add test coverage for getDeploymentContext
test: test coverage for getDeploymentContext helper Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #29 from mbarbine/test/proxy-middleware-9893560629030140258 ๐งช [testing improvement] Add proxy middleware tests
Merge pull request #30 from mbarbine/add-user-settings-tests-17249467674532795608 ๐งช Add comprehensive test suite for UserSettings component
๐งน Extract inline type to BoardData interface in mcp API ๐ฏ **What:** Extracted the inline type definition for Board response in `app/api/mcp/route.ts` to a reusable interface `BoardData`. ๐ก **Why:** This reduces visual noise in API route fetch lines and improves readability and maintainability when working with the `board` payload. โ **Verification:** Verified by running tsc locally (no new errors), linting (pre-existing rules check out), and running the full Vitest suite (all 520 tests passing). โจ **Result:** Cleaned up code health issue without changing API behavior. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge branch 'main' into add-user-settings-tests-17249467674532795608
Merge pull request #31 from mbarbine/test-create-cobol-mcp-client-17107275936071476190 ๐งช Add tests for createCobolMcpClient factory function
Merge pull request #32 from mbarbine/add-user-settings-test-11038022618302320305 ๐งช Add test for user-settings localStorage error path
๐งช Add tests for user-settings localStorage error handling ๐ฏ **What:** The testing gap addressed - Missing test coverage for the error path when `localStorage.getItem` returns invalid JSON data for UserSettings. ๐ **Coverage:** What scenarios are now tested - The `loadSettings` function (called by `useUserSettings`) now successfully recovers when local storage contains malformed JSON (`'{ invalid json }'`), ensuring it falls back gracefully to `defaultSettings`. - Verifies that `localStorage.getItem` is accessed exactly with the correct `platphormnews-kanban-settings` storage key. โจ **Result:** The improvement in test coverage - Added `__tests__/components/user-settings.test.tsx` which increases component/hooks level reliability without crashing on corrupted user data. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
๐งช Add tests for createCobolMcpClient factory function Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
๐งช Add comprehensive test suite for UserSettings component Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
test: add unit tests for createNetworkMcpClient - Update imports in __tests__/lib/mcp-client.test.ts to include createNetworkMcpClient. - Add describe block for createNetworkMcpClient to verify: - Client instantiation with the provided baseUrl. - Default X-Origin header inclusion in request headers. - Custom header overrides when provided in options. This improvement ensures the factory function used for network-wide MCP client initialization is correctly tested and follows the established patterns. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #28 from mbarbine/fix-health-cors-vulnerability-15491707729217181933 Restrict CORS origins for health check endpoint
Merge pull request #27 from mbarbine/fix-replace-console-warn-with-structured-logger-9069689515885234498 ๐งน replace console.warn with structured logger
Merge pull request #26 from mbarbine/discovery-ax-updates-10530739639168000856 feat: dynamic discovery files, advanced AX, and enhanced docs
chore: disable github actions due to billing issues Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: enhance Kanban Board with network registration and user settings Register with PlatPhorm News, add UserSettings, and improve UI with keyboard shortcuts Co-authored-by: Michael Barbine <3211492+mbarbine@users.noreply.github.com>
Add files via upload
Merge pull request #18 from mbarbine/copilot/enhance-ui-ux-and-features Add real MCP client, tool invocation, and enhanced network discovery
Merge pull request #17 from mbarbine/copilot/enhance-api-capability Add /api/v1/events proxy for jules.platphormnews.com + enrich OpenAPI calendar/events spec
Merge pull request #16 from mbarbine/copilot/support-multiple-project-ids Multi-project board support with per-project API, storage, docs, and footer selector
Merge pull request #15 from mbarbine/copilot/fix-kanban-endpoint-initialization fix: auto-initialize board on first task creation
Merge pull request #9 from mbarbine/copilot/fix-lost-local-store-data Fix: board tasks wiped on every page load due to premature persistence before localStorage hydration
Merge pull request #9 from mbarbine/copilot/fix-lost-local-store-data Fix: board tasks wiped on every page load due to premature persistence before localStorage hydration
Merge pull request #8 from mbarbine/copilot/fix-vercel-deployment-issues Fix Vercel build failures: JSX error, wrong DnD API, Next.js 16 proxy rename
Merge pull request #5 from mbarbine/feature/network-integration-v1-10972536517188391863 Enhance Kanban board with MCP integration, persistence, and network features