Full deployment history for this project.
Merge pull request #21 from mbarbine/copilot/consolidate-and-merge-prs Consolidate 14 open PRs into single mergeable branch
Merge pull request #21 from mbarbine/copilot/consolidate-and-merge-prs Consolidate 14 open PRs into single mergeable branch
Merge PR#9: Palette - Inline validation feedback and field error state tracking Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: enhance form accessibility with ARIA attributes and required states - Add explicit `required` attributes to required form inputs in `RegistrationForm` - Add `aria-describedby` linking inputs to their respective helper text - Wrap visual required asterisks with `<span className="text-destructive" aria-hidden="true">*</span>` to hide them from screen readers while maintaining visual cues
🎨 Palette: Enhance form accessibility for screen readers - Wrapped visual asterisks in visually-hidden `span` tags with `aria-hidden="true"`. - Added the `required` attribute to all mandatory input fields. - Linked helper text elements to inputs using `aria-describedby` with matching IDs.
⚡ Bolt: Parallelize independent Neon Postgres queries Optimizes pagination queries in `events`, `registrations`, and `webhooks` API endpoints to execute `COUNT(*)` and data fetches concurrently using `Promise.all()`. This eliminates the compounded database round-trip latencies common with Neon serverless Postgres. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Concurrent DB queries for pagination and independent data Updated API routes in app/api/v1/registrations, app/api/v1/events, app/api/v1/webhooks to run sequential pagination queries (COUNT query and data query) and independent parallel queries concurrently via Promise.all(). This optimization reduces compounded round-trip latencies associated with the Neon serverless DB. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve accessibility of registration form inputs 💡 What: Added explicit `required` and `aria-describedby` attributes to mandatory inputs in the registration form. Wrapped required asterisks in a hidden span to prevent screen readers from reading them out loud. 🎯 Why: Helper texts were disconnected from their inputs, so screen reader users wouldn't know about them. The asterisks were also being read as literal text instead of clearly conveying that a field was required. 📸 Before/After: Visual asterisks now style correctly as `text-destructive`, screen readers will interpret the inputs directly as required. ♿ Accessibility: Improved form accessibility by ensuring context description (helper text) is directly read upon input focus. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve mobile menu accessibility 💡 What: Added `aria-expanded` and `aria-controls` to the mobile menu toggle button, and added an `id` to the menu container. 🎯 Why: Disclosure widgets like mobile menus need these ARIA attributes so screen readers can announce the current state (open/closed) and know which content the button controls. ♿ Accessibility: Improved screen reader navigation for the mobile menu. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Add dynamic ARIA labels and controls to mobile menu toggle 💡 What: Updated the mobile menu button in `components/header.tsx` to include `aria-expanded`, `aria-controls`, and a dynamic `aria-label` ("Open menu" vs "Close menu"). Added `id="mobile-menu"` to the dropdown container. 🎯 Why: Hardcoded labels like "Toggle menu" don't inform screen reader users of the current state or the result of their action. These changes provide necessary context and associate the toggle with the content it controls, making navigation accessible and predictable. ♿ Accessibility: Improves WCAG compliance by properly associating controls with content and announcing state changes to assistive technologies. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: [UX improvement] Add aria-expanded to mobile menu 💡 What: Added `aria-expanded` and `aria-controls` to the mobile menu toggle button, and added an `id` to the mobile menu container. 🎯 Why: To improve accessibility for screen reader users by indicating whether the mobile menu is currently open or closed, and what element the button controls. ♿ Accessibility: Improved screen reader support for the mobile navigation menu. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve form accessibility with `required` and `aria-describedby` - Added HTML `required` attributes to mandatory fields in the registration form. - Linked helper text to inputs using `aria-describedby` to ensure screen readers announce them on focus. - Styled the required asterisk indicator clearly using `text-destructive` class. - Documented these accessibility learnings in `.Jules/palette.md`. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
⚡ Bolt: Parallelize pagination database queries Refactored app/api/v1/*/route.ts to use Promise.all() for concurrent execution of the total count query and the paginated results query. This avoids sequential waterfall latencies, which is especially beneficial when connecting to serverless Postgres databases (Neon). Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Form UX and Accessibility Enhancements 💡 What: - Visually styled asterisks (`*`) in required field labels with `.text-destructive` to draw attention. - Hid asterisks from screen readers via `aria-hidden="true"` to prevent them from reading "star". - Explicitly marked `<Input>` fields with the `required` attribute. - Associated `<p>` helper text beneath inputs with the inputs themselves using `aria-describedby` and `id` references so screen readers announce the helper text on focus. 🎯 Why: To ensure form completion is an accessible and clear experience for all users, regardless of how they perceive or navigate the interface. ♿ Accessibility: - Inputs are properly announced as required. - Screen readers no longer unnecessarily read out the "star" symbol. - Helper text is now natively linked to input context. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: enhance registration form accessibility and validation feedback Added `aria-current`, visually hidden text for completed steps, `aria-describedby`, `aria-invalid`, and `required` attributes to the registration form components for better screen reader support and validation visibility. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🎨 Palette: Improve accessibility of form helper texts 💡 What: Added `id`s to helper paragraphs and `aria-describedby` attributes to inputs in `RegistrationForm`. 🎯 Why: Ensures screen reader users hear the helper text descriptions when navigating form fields. ♿ Accessibility: Improved form accessibility for screen reader users by properly associating help text with input fields. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
🛡️ Sentinel: [HIGH] Fix IP Spoofing via X-Forwarded-For Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #6 from mbarbine/jules-2725550030644366864-1f86073e feat: Add health checks, FAQ, and breadcrumbs
feat: Add health checks, FAQ, and breadcrumbs Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #5 from mbarbine/split-universal-schema-5279482413590830854 feat: split universal schema pack into domain-specific schemas and openapi bundle
feat: split universal schema pack into domain-specific schemas and openapi bundle Split the monolithic PlatPhorm Universal Schema Pack into smaller, domain-specific schemas (core, item, realm, agent, observability, podcast, docs, trace, evals) and added an `openapi.json` starter bundle reflecting the universal network API endpoints. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
feat: split universal schema pack into domain-specific schemas and openapi bundle Split the monolithic PlatPhorm Universal Schema Pack into smaller, domain-specific schemas (core, item, realm, agent, observability, podcast, docs, trace, evals) and added an `openapi.json` starter bundle reflecting the universal network API endpoints. Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>
Merge pull request #4 from mbarbine/feature/enhancements-2899369414006771889 feat: Enhance discovery, SEO, and accessibility
feat: Enhance discovery, SEO, and accessibility - Add .well-known endpoints for llms.txt, llms-index, and mcp - Update sitemap.ts, robots.ts, manifest.ts, and layout.tsx for improved SEO - Fix Next.js static build error when DATABASE_URL is missing - Improve accessibility in app/page.tsx with ARIA attributes and roles - Create ROADMAP.md for future network integrations - Add basic API tests using Node test runner - Document UX/A11y learnings in .Jules/palette.md Co-authored-by: mbarbine <3211492+mbarbine@users.noreply.github.com>