Full deployment history for this project.
chore: merge open PRs into main
chore: merge open PRs into main
Merge PR #78: 🎨 Palette: Add accessible aria-label to batch ingest progress bar
Palette: Add explicit ARIA label to batch ingestion progress bar
fix(analytics): remove duplicate coverage variable declaration Remove duplicate declaration of `coverage` in `getAnalyticsSnapshot` to fix a compilation syntax error when building with Vite/oxc.
🎨 Palette: Ensure explicit aria-labels on submission page SelectTriggers I've added explicit aria-label attributes to the category and audience SelectTriggers on the submission page for screen reader accessibility, along with corresponding unit tests.
⚡ Bolt: optimize updateAllDocumentsSEO with bulk update queries Refactor `updateAllDocumentsSEO` in `lib/seo-generator.ts` to delegate directly to `updateDocumentsSEOBatch`. This eliminates sequential O(N) database SELECT and UPDATE round-trips when regenerating SEO metadata across all published documents, replacing it with a single bulk SELECT and a single bulk UPDATE query (`json_to_recordset`).
🎨 Palette: Add accessible quick-clear button to search form - Created client component SearchForm in app/search/search-form.tsx with input state. - Added interactive clear button with type="button" and aria-label="Clear search query". - Suppressed native webkit search cancel button to prevent duplicate UI elements. - Updated app/search/page.tsx to render SearchForm. - Added unit tests in __tests__/unit/components/search-form.test.tsx.
⚡ Bolt: parallelize DB reads in llms-full.txt endpoint Parallelized getBaseUrl, documents SQL query, and categories SQL query using Promise.all in app/llms-full.txt/route.ts. This eliminates sequential DB round-trip latency, reducing database wait time from O(D1 + D2 + D3) to O(max(D1, D2, D3)).
🎨 Palette: Add dynamic ARIA label to batch ingestion progress bar
⚡ Bolt: Optimize list_categories MCP tool using getCategoriesWithCounts helper Refactor list_categories in lib/mcp-server.ts to use the optimized getCategoriesWithCounts() helper function from @/lib/db. This eliminates duplicated inline correlated subqueries and reuses the single aggregated LEFT JOIN query.
🎨 Palette: Smooth copy feedback animation in full ShareButtons variant Add entrance animation classes (`animate-in fade-in zoom-in-50 duration-150`) to the check mark icon in the full ShareButtons component variant, matching the visual feedback behavior used in the compact and ShareDialog variants. Also update unit tests to verify aria-label transition.
⚡ Bolt: Replace correlated scalar subquery in getTrendingContent with CASE expression
🎨 Palette: Localize AccessibleThemeSwitcher close button ARIA label Improve accessibility by updating the AccessibleThemeSwitcher panel close button ARIA label from generic 'Close' to localized descriptions ('Cerrar ajustes de apariencia' for es, 'Fermer les paramètres d'apparence' for fr, and 'Close theme settings' for en). Added unit tests in __tests__/unit/components/accessible-theme-switcher.test.tsx.
Fix duplicate coverage variable declaration in lib/analytics.ts
feat(ux): add accessible aria-label and live region to BulkIngestConsole progress
⚡ Bolt: optimize list_categories MCP tool using getCategoriesWithCounts
🎨 Palette: Add quick clear button and enhance screen reader copy feedback - Add accessible quick clear button (`aria-label="Clear URL input"`) to the URL ingestion page input field when non-empty - Update copy button `aria-label` state feedback for screen readers - Add unit test suite for the URL ingestion page under `__tests__/unit/app/`
perf: replace correlated subquery on documents primary key in trending discovery Replace the scalar correlated subquery in `getTrendingContent` with a conditional expression `(CASE WHEN published_at > ${daysAgo} THEN 1 ELSE 0 END)::int`. This eliminates per-row database primary key index lookups during trending discovery queries while maintaining exact response compatibility.
🎨 Palette: Add accessible aria-label to batch ingest progress bar Add an explicit, dynamic aria-label to the Progress bar component in BulkIngestConsole to ensure screen readers accurately announce progress details during batch ingestion runs. Add corresponding unit test coverage.
perf: reuse getCategoriesWithCounts in MCP list_categories tool
chore: consolidate all open PRs into one merge (#71) * ⚡ Bolt: optimize getCategories queries by delegating to centralized getCategoriesWithCounts helper * 🎨 Palette: prevent screen reader double-announcements Remove redundant `<span className="sr-only">` child blocks inside interactive `<Button>` elements that already have explicit, identical `aria-label` attributes. This fixes a common accessibility redundancy issue where modern screen readers would announce the label twice. Modifications: - components/locale-switcher.tsx: Removed sr-only span from Globe button. - components/attribution.tsx: Removed sr-only span from compact copy Button. - components/docs-layout.tsx: Removed sr-only spans from Toggle theme, Refresh categories, Toggle menu, Search, and Clone on GitHub buttons. - .jules/palette.md: Documented this accessibility learning. * perf: optimize homepage category document count query Refactor getCategories() in app/page.tsx to use getCategoriesWithCounts() from @/lib/db. Replaces O(N) correlat
chore: auto-close PR #58 via merge path
chore: auto-close PR #57 via merge path
chore: auto-close PR #54 via merge path
chore: auto-close PR #53 via merge path
chore: stack PR #58
chore: stack PR #57
chore: stack PR #54
chore: stack PR #53
Merge pull request #52 from mbarbine/consolidate/platphorm-opencontent-20260811-cont3 consolidate 32 PRs into one commit
Merge pull request #18 from mbarbine/palette-locale-switcher-ux-8447135550757394860 🎨 Palette: Add localized tooltip to LocaleSwitcher and suppress when open
Merge pull request #19 from mbarbine/jules-10382304418582945310-32e12d27 ⚡ Bolt: avoid redundant database status queries in getWebFingerprints
Merge remote-tracking branch 'origin/main'
Merge pull request #17 from mbarbine/bolt-parallelize-handle-stats-queries-11320408280470788839 ⚡ Bolt: Parallelize handleStats database queries in automation endpoint
Merge pull request #16 from mbarbine/palette/theme-switcher-tooltip-16486159952033621840 🎨 Palette: Localized tooltip for AccessibleThemeSwitcher
feat: align OpenContent platform contract v0.4.0
Consolidate 1 open pull request Merged consolidation of open PRs: #14
Merge pull request #13 from mbarbine/palette/interactive-copy-code-buttons-16660315631100484415 🎨 Palette: Interactive copy-code buttons and copy transitions
Merge pull request #12 from mbarbine/jules-16205555164838687723-8390cb38 ⚡ Bolt: Optimize settings endpoint by parallelizing database queries with Promise.all
Merge pull request #11 from mbarbine/jules-11439570198310460016-6b56f651 🎨 Palette: copy-to-clipboard accessibility and UX improvements
fix: support Vercel alias compliance status
feat: expose canonical route compliance
chore: reconcile and restore pnpm build
Merge pull request #10 from mbarbine/bolt-content-health-optimization-5097297702095358699 ⚡ Bolt: Optimize content health cron with concurrency-controlled chunking
Merge pull request #9 from mbarbine/palette/micro-ux-improvements-14165832097186477145 🎨 Palette: Micro-UX and accessibility improvements for copy feedback and loading spinners
Merge pull request #8 from mbarbine/bolt-optimize-content-queries-12438239833418845727 ⚡ Bolt: Optimize content list queries concurrently with Promise.all
Merge pull request #7 from mbarbine/jules-3211156313635622929-30f92f48 🎨 Palette: Add contextual copy-to-clipboard feedback in settings