When multiple profiles share a display_name (Michael Carter, Alex
Rivera, etc.), .maybeSingle() blew up with PGRST116, returning 404.
Switched to ordered limit(1) so the earliest-created profile wins
and the route resolves deterministically.
Adds a neon-green horizontal line across the very top of the site,
spanning from the left vertical rail to the right vertical rail, so
the header reads as a closed bracket instead of two floating lines.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The sticky main nav at z-50 was painting its background over the
z-5 rails, so the line only showed on the top bar. Bumped rails to
z-60 (above the sticky stacking context) and widened to 2px with
stronger glow so the bracket reads continuously.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- SVG logo at public/brand/logo.svg with pink-magenta BROADCAST,
cyan BEAT, cyan heartbeat waveform underline, ™ mark, and
"THE PULSE OF PRODUCTION INTELLIGENCE" tagline
- PNG renders at 1x (1200x320), 2x (2400x640), small (600x160)
- Header swapped from /assets/images/logo.png to /brand/logo.svg
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- New DualSpeedTicker component (CSS keyframes, GPU-accelerated,
pause on hover, 28px rows, 17s BEAT / 40s FORUM, refresh 5min)
- /api/ticker/beat-news: last 7 days from bb.native_articles
- /api/ticker/forum-posts: latest threads + replies interleaved
- Mounted at the bottom of Header so every page gets it
- Scoped .bb-neon palette on homepage root: section heads +
text-shadow glow, neon-tinted card borders, emerald→cyan button
gradient, cyan hover state on links, subscribe boxes neon-bordered
- CSS-only — no layout changes
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- API: require auth on thread+reply POST (401 if !user); lazy-create
forum_user_profile via service-role; author_name = display_name
- UI: surface API errors (kill silent catch); auto-redirect to login
on 401; gate new-thread + reply forms with "Sign in to post" CTA
- /forum/login + /forum/register: forum-themed Supabase Auth pages
with ?next= redirect support
- /forum/profile/edit + /api/forum/profile/me: edit own forum profile
(username, display_name, bio, role, company, location, avatar)
- Header: logout button + sign-in/join links when not authed
- forum/user/[username]: show Edit Profile button when viewing own
Fixes posting bug: RLS rejected anon inserts with cryptic message
that the UI silently swallowed; now blocked with friendly 401 + redirect.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previous state: '/' was 307-redirected to '/home-page', and the
home-page route declared canonical='/home-page'. Net effect on
SEO: Google indexed '/home-page' as the canonical homepage and
treated '/' as a transient redirect (no link equity passed).
Changes:
- next.config.mjs: replace the source:'/' destination:'/home-page'
temporary redirect with source:'/home-page' destination:'/'
permanent (301). Any existing crawler entry for /home-page now
consolidates onto '/'.
- src/app/page.tsx (new): re-exports default + metadata from
./home-page/page so '/' serves the homepage directly. No file
moves required, no relative-import breakage in the home-page
component subtree.
- src/app/home-page/page.tsx: canonical and openGraph.url
'/home-page' → '/'. The page still builds at /home-page but
the 301 above will redirect any hit before render.
- src/app/sitemap.ts: drop the duplicate /home-page entry — Google
shouldn't be told about a URL that just redirects.