Full deployment history for this project.
🎨 Palette: Add focus-visible styles to custom buttons Added `focus-visible` outline styles to custom buttons in the table list (search filter clear button) and table viewer (table column sort headers) for improved keyboard accessibility.
Merge pull request #26 from mbarbine/palette-a11y-icon-buttons-15575598901940243093 🎨 Palette: [UX improvement] Add accessible names to icon-only buttons
🎨 Palette: [UX improvement] Fix missing ARIA names for mobile buttons Replaced `hidden sm:inline` with `sr-only sm:not-sr-only sm:inline` on button labels in header and table-viewer components to maintain screen reader accessibility when text is hidden visually on smaller screens. Also fixed a flaky unit test in `mcp-client.test.ts`.
🎨 Palette: [UX improvement] Fix screen reader accessibility for responsive icon buttons Replaced `hidden sm:inline` with `sr-only sm:not-sr-only sm:inline` on button text spans. This visually hides the text on mobile devices (keeping them as icon-only buttons) while ensuring the text remains in the accessibility tree for screen readers. Also fixes a pre-existing flaky test in mcp-client.test.ts to ensure test stability. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #31 from mbarbine/bolt-optimize-array-allocations-11205230033120321312 ⚡ Bolt: [performance improvement] Optimize redundant array allocations in graph and tree views
Merge pull request #26 from mbarbine/palette-a11y-icon-buttons-15575598901940243093 🎨 Palette: [UX improvement] Add accessible names to icon-only buttons
Merge branch 'main' into palette-a11y-icon-buttons-15575598901940243093
Merge pull request #28 from mbarbine/palette-table-viewer-a11y-15484017761038112699 🎨 Palette: [UX improvement] Add screen reader labels to table actions
Add screen reader labels to table viewer icon buttons Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Fix SQL injection vulnerability in export API - Wrapped table and column identifiers in double quotes and escaped internal double quotes in `app/api/v1/export/route.ts` `generateSQL`. - Fixed failing test in `lib/__tests__/mcp-client.test.ts`. - Documented learning in `.jules/sentinel.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Optimize redundant array allocations in graph and tree views Extracted `table.rows.filter(r => !r.deleted)` calculations out of repeated map loops in `components/msi/tree-view.tsx` and `components/msi/graph-tree-viewer.tsx` to significantly reduce O(N) array allocations and memory overhead during rendering. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Add screen reader labels to icon-only buttons Added visually hidden span elements inside the 'Edit', 'Copy', and 'MoreVertical' (Row actions) icon-only buttons in the table viewer to ensure they are accessible to assistive technologies. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: [UX improvement] Add accessible names to row action buttons Adds visually hidden screen-reader-only labels (`<span className="sr-only">`) to icon-only buttons (Edit, Copy, and MoreVertical row actions) in the `TableViewer` component, improving accessibility. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Add sr-only labels to TableViewer icon buttons Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: [UX improvement] Use semantic label for file upload region\n\n- Replaced div with semantic label to fix accessibility issues for screen readers.\n- Added block class to label to preserve previous rendering.\n- Used htmlFor to trigger input element instead of Javascript fileInputRef.current?.click().\n- Changed inner `<Button>` to a `<span>` to avoid invalid nested interactive elements while preserving the UI rendering. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Add sr-only accessible text to icon-only buttons * Add `sr-only` span text to table-viewer row action buttons (Edit, Copy, Row Actions) * Add `sr-only` span text to integration-panel export buttons (Webhook, MCP) Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Update package-lock.json and package.json to sync ESLint dependencies Synchronized `package.json` and `package-lock.json` via `npm install`. This fixes the `npm ci` EUSAGE error occurring in the CI pipeline which happened because the package manager lock files were out of sync after the addition of ESLint dependencies. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Fix ESLint issues and add eslint.config.mjs Added `eslint.config.mjs` to resolve the missing configuration file issue and fixed minor lint errors (`prefer-const` for `results` in `lib/__tests__/msi-parser.test.ts` and `stringPool` in `lib/msi-parser.ts`). Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Fix duplicate variable declaration in table-list.tsx Removed the duplicate `tableStats` declaration in `components/msi/table-list.tsx` and ensured the `rowCounts` property is correctly typed and assigned. This resolves the CI Type Check failures. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
perf: resolve duplicate tableStats useMemo causing CI type check error Removed a duplicate `tableStats` declaration in `components/msi/table-list.tsx` that was causing TypeScript compilation errors in CI. The correct declaration was retained to preserve the performance optimization for row counting. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: optimize array filters in render loops - Refactor `table.rows.filter(...).length` into pre-calculated variables or `useMemo` hooks. - Fix duplicate `tableStats` declaration in `table-list.tsx`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
perf(table-list): memoize table row counts Refactors `components/msi/table-list.tsx` to memoize the calculation of active and modified row counts across the entire MSI database. This prevents expensive `.filter().length` and `.reduce()` operations from running on every single re-render (e.g., during search input keystrokes), vastly improving list performance while retaining O(1) cache reads. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #11 from mbarbine/jules-bolt-table-perf-17821774369401877731 ⚡ Bolt: [performance improvement] O(N) single-pass pre-calculation for table row counts
⚡ Bolt: Optimize MSI table row count loops with useMemo Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #9 from mbarbine/bolt-early-return-search-2099178682201908392 ⚡ Bolt: Add early return to database search to prevent full scans
Merge branch 'main' into bolt-early-return-search-2099178682201908392
Merge pull request #10 from mbarbine/bolt-optimize-search-4663515474509019549
Merge pull request #7 from mbarbine/fix-and-enhance-discovery-files-13414083506404881035 Fix and enhance discovery files, LLM discovery, AI plugins, and sitemap
Merge pull request #4 from mbarbine/copilot/enhance-ui-ux-msi-viewing feat: comprehensive tooltip coverage + component test fixes + CSV/SQL parser corrections
initial: outline plan for UI/UX enhancements and tests Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #1 from mbarbine/v0/mbarbine-82123ced Launch PH3AR MSI database editor v0.0.1
feat: update branding and documentation for PH3AR v0.0.1 Add PH3AR branding across app, update docs, test suite, SEO, and metadata. Co-authored-by: Michael Barbine <3211492+mbarbine@users.noreply.github.com>