Changelog - Dev - 06.11.2026 โ
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased] - 2026-06-11 โ
Added โ
- Black basemap with optimized map legibility โ VenuesMap now defaults to OpenFreeMap dark style with pure-black background, two-tier label brightness with black halos, 12px street names, and faint road fills. Flames now read clearly as lanterns against the dark backdrop. (#581)
enhancementdesign - Soft red gradient promoted to canonical danger variant โ Establishes a unified danger CTA treatment across the application, replacing hand-rolled destructive button styles with a canonical primitive. (#581)
enhancementdesign - Storybook extinguish tone controls and audition story โ In-context tone controls on ActiveLanternScreen and LanternHub stories, plus ExtinguishTones audition story comparing solid, soft tint, and retired gradient treatments. (#581)
enhancementdesign - Public site workspace with motion and MPA architecture โ Ported 'What Lantern Is' deck as a public site with sticky nav/footer chrome, scroll reveals, living flame animation, embers, and parallax motion. Includes default-deny SEO lockout with empty launch allowlist. (#581)
enhancementdesign - Tabbed Venue Config layout with routed sub-pages โ Admin interface now uses PageHeader/PageTabs idiom for venue configuration, organizing settings into logical tabs with independent routing. (#581)
enhancementdesign - Realistic strip-cluster density and dashboard grouping for map โ VenuesMap Storybook story now includes realistic venue clustering density and dashboard grouping controls for accurate visual testing. (#581)
enhancementdesign - Sponsored hero in Places Nearby with reserved-slot skeleton โ Moves sponsored hero placement into Places Nearby section with a reserved skeleton slot, improving cold-load experience and content flow. (#581)
enhancementdesign - Dynamic venue config with Firestore overrides โ Venues API now supports per-venue configuration overrides stored in Firestore, enabling dynamic behavior customization without code deployment. (#581)
enhancement - Feature Flags config page with maintenance toggle โ Admin interface includes new Feature Flags page with maintenance mode toggle, driven by systemConfig/maintenance for operational control. (#581)
enhancement - ToggleSwitch primitive replaces hand-rolled switches โ Introduces canonical ToggleSwitch primitive that consolidates four previously hand-rolled switch implementations across the codebase. (#581)
enhancement - VenuesMap theming playground story โ Storybook story with interactive controls for VenuesMap theming (styleUrl, backgroundColor, flameTierColors) enabling design exploration and testing. (#581)
enhancementdesign - Install & Build Extension action in Quickstart โ Quickstart Maintenance section now includes Install & Build Extension action for improved developer onboarding. (#581)
enhancementdevops - Public Site added to Start Workspace quickstart โ Developer quickstart now includes Public Site workspace with ports table for easier local development setup. (#581)
enhancementdevops - lint:stories enforces title nesting depth โ New linting rule prevents floating sidebar leaves in Storybook, enforcing proper title hierarchy for better organization. (#581)
enhancementdevops - lint:ctas ratchet for hand-rolled destructive CTA classes โ Linting rule prevents new hand-rolled destructive CTA classes, enforcing use of canonical danger variant primitive. (#581)
enhancementdevops - useVenueConfig hook with shared refresh-threshold defaults โ New hook provides consistent venue configuration access across components with shared refresh-threshold defaults. (#581)
enhancement - systemConfig read/write rules for dynamic config โ Firestore security rules now govern systemConfig access, enabling safe dynamic configuration management. (#581)
enhancement - Venue config merge, defaults builder, and config-aware helpers โ Shared utilities for merging venue configs, building defaults, and config-aware coal helpers enable consistent configuration handling. (#581)
enhancement - CI build and dev-deploy for public site โ CI pipeline now builds and dev-deploys the public site workspace automatically. (#581)
enhancementdevops
Changed โ
- Consolidate button primitive onto DashboardButton โ Refactors button implementations to use unified DashboardButton primitive, reducing code duplication and improving consistency. (#581)
enhancement - One extinguish treatment and one extinguish handler โ Consolidates extinguish logic into canonical treatment and handler, eliminating duplicate implementations. (#581)
enhancement - Derive venue filter chips from UI_CATEGORY_MAP โ Filter chips now derive from centralized UI_CATEGORY_MAP, improving maintainability and consistency. (#581)
enhancement - Unify filter-chip active fill and canonical error CTAs โ Standardizes filter chip active state and error CTA styling across the application. (#581)
enhancement - Split style layers and wire MPA page inputs โ Public site refactored to separate style layers and properly wire multi-page architecture inputs. (#581)
enhancement - Maintenance mode gate driven by systemConfig โ Application now respects systemConfig/maintenance flag for operational maintenance mode control. (#581)
enhancement
Fixed โ
- Address 15 confirmed findings from pre-PR xhigh code review โ Resolves 15 high-priority code review findings across map, config, and site components. (#581)
bug - Admin config section icon flex-alignment with title โ Fixes visual alignment of section icons with titles in admin config interface. (#581)
bugdesign - Repair stale MerchantSwitcher mock path in test โ Updates MerchantShell test to use current MerchantSwitcher mock path. (#581)
bug - Show sponsored hero on cold loads with venues-anchored gate โ Fixes sponsored hero visibility on initial page load using venues-anchored gate, late-fill, and parallel selection. (#581)
bug - Dark-theme maplibre popup and navigation controls โ Applies dark theme styling to maplibre popup and navigation controls for consistency with black basemap. (#581)
bugdesign - Make dark maplibre overrides win the cascade โ Ensures dark theme CSS overrides properly cascade over default maplibre styles. (#581)
bug - Correct GITHUB_COPILOT_PLAN to pro_plus for ingest-github โ Fixes CI environment variable for GitHub Copilot plan configuration. (#581)
bugdevops - Blend live GitHub estimate with BQ receipt-day actuals โ Admin billing now correctly blends live GitHub API estimates with BigQuery receipt-day actual costs. (#581)
bug - Pick full-month subscription fee, not pro-rata row โ Analytics API billing calculation now selects full-month subscription fees instead of pro-rata rows. (#581)
bug - Replace GitHub subscription proration with receipt-day rows โ Dataform billing model now uses receipt-day rows instead of GitHub subscription proration for accurate cost tracking. (#581)
bug - Nest ToggleSwitch under Components/Primitives โ Fixes Storybook organization by properly nesting ToggleSwitch component. (#581)
bug