Was linking to /news?category=Featured which silently fell back to the
unfiltered /news listing because "Featured" isn't in CATEGORIES and the
filter is tag-based, not category-column-based.
Adds getLegacyFeaturedArticles() that mirrors FeaturedBento's query
(category ILIKE 'featured', featured-flag-first sort) at limit 200, and
a thin /news/featured route that reuses NewsPageClient.
next.config redirects fire before middleware/page.tsx, so /login still
307'd to /client-login (which bounces to distribute). Removing the
config rule lets src/app/login/page.tsx serve a real BB-direct sign-in
form for admin access.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Problem: /admin/* pages redirect unauthed users to /login or /account,
both of which then hit middleware redirecting to distribute.relevant
mediaproperties.com. Distribute is on a different domain, so its session
cookie doesn't carry to broadcastbeat.com — sign-in there left admins
stranded on distribute's dashboard.
Fix:
- Remove /login (and /register) from middleware REDIRECT_PATHS. wp-login,
wp-admin, client-login still bounce to distribute.
- /login is now a real BB sign-in form (was a redirect to /client-login).
- Admin pages preserve return path via /login?next=<encoded path>.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
New public routes:
/manufacturers - searchable index, filter by show + first letter
/manufacturers/[slug] - profile page with bio, categories, trade shows, news, JSON-LD
Data sourced from bb.tracked_companies + bb.trade_show_exhibitors,
seeded from the NAB Show 2026 Map Your Show exhibitor list.
Adds schema extensions on bb.tracked_companies (slug, logo_url, bio,
contact, social handles, press_url, ad_status, exhibits_nab/ibc) and
bb.press_releases (manufacturer_id FK, source_url, published_at, status).
Each profile page emits Organization JSON-LD for SEO + canonical URL.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Homepage / Industry News query filters wp_imported_posts to
ai_rewritten_at IS NOT NULL so raw press releases never surface on
the editorial feed (NewsArticle JSON-LD was already in place).
- New /news-sitemap.xml route emits a Google News sitemap covering
rewritten editorial published in the last 48 hours, with
news:publication + news:publication_date + news:title + keywords.
- robots.ts now points crawlers at both sitemap.xml and
news-sitemap.xml.
After deploy, submit broadcastbeat.com to Google News Publisher Center
to start serving in News.
Fires one impression per page render, per slot, server-side — mirrors
AdSanity's WP-level counting model. Picks one banner from each slot's
rotation pool per request. Edge-worker-cached pool refresh, 5min TTL.
Closes the structural gap with historical AdSanity numbers
(client-side counting was dropping 25-40% to ad blockers, plus the
beacon failed silently on fast navigations).
gear, technology, search, reading-list, show-coverage, authors/[slug],
forum/thread/[id] all now render the 300x600 + 300x250 stack as a
floating right column at the top of the content area. Existing
single-column page structure preserved (content wraps).
Maximizes impression count: every pageview across these pages now
counts 300x600 + every 300x250 in the stack, on top of the existing
728x90 in Header.
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>