- Update color palette (emerald primary, cyan accent)
- Add new CSS variables for layout, radius, and semantic colors
- Update card styling with 16px radius and new shadow system
- Add pill badges and chip filter components
- Update Layout sidebar and topbar with new tokens
- Add stat-card component styles
- Cards now display in 2-column grid on desktop (md:grid-cols-2)
- Wider container (max-w-4xl) for better desktop layout
- Voice input button on notes fields using Web Speech API
- Tap mic to dictate notes hands-free, tap again to stop
- Use CSS variables (bg-primary, text-primary, etc.) instead of hardcoded colors
- Both pages now properly follow light/dark theme preference
- Larger touch targets (44px+) for tablet/phone use
- Simplified controls and cleaner visual hierarchy
- Toggle checkboxes replaced with large tap-friendly buttons
- Slider with step=5 for easier touch adjustment
- Add cn import to UserMenu.tsx
- Add Plus import to RoomDetailPage.tsx
- Fix MOCK_ROOMS strains readonly type in DashboardPage.tsx
- Refactor RoomsPage.tsx with Control Room aesthetic
- BatchDetailPage: lifecycle timeline, KPI strip, tabbed interface
- TasksPage: operational command board with filtering sidebar
- AuditLogPage: System Ledger with clinical styling
- BatchesPage: Production Inventory with KPI cards
- Updated color tokens and typography across components
- Implemented DataTable for high-density inventory tracking
- Modernized Visitor Management with Live Manifest and Access Logs
- Applied 777 Wolfpack theme and motion transitions
- Standardized metrics with MetricCard and StatusBadge
- Restored original 777 Wolfpack logos and titles
- Corrected terminology in Navbar, Breadcrumbs, and Login Page
- Reverted cyber-themed labels to project-appropriate operations terms
- Implemented global page transitions (Framer Motion)
- Unified Data Views with new high-density DataTable primitive
- Refactored Navbar and Layout for 'Ersen OS' branding
- Modernized Login Page with premium split-screen design
- Upgraded System Primitives for consistent operational aesthetics
- Created centralized DataTable component with sorting and mobile-responsive columns
- Refactored BatchesPage to use DataTable instead of card grid
- Improved information density and scannability for operational data
- Updated StageBadge styling to match new system
- Added BentoGrid and BentoCard components for modular widget layout
- Refactored DashboardPage to use the new command center grid
- Improved visual hierarchy with large KPI cards and operational activity feeds
- Maintained responsive layout for mobile and desktop
- Implemented new Header 6 style Navbar with dropdowns
- Replaced Sidebar in Layout with Navbar
- Retained Mobile Bottom Nav for floor operations
- Updated visual theme to light/dark glassmorphism
- Implemented self-contained UserDropdown in Navbar
- Added ChevronDown icon for better UX
- Adjusted padding to prevent text overlapping with floating label
- Fixed floating label position for non-empty select element
- Restored missing AlertTriangle import
- Extracted VisitorKioskShell from VisitorCheckIn
- Updated VisitorKioskPage to use shell for Home, Returning, and Success modes
- Implemented light-mode glassmorphism styles for Kiosk buttons
- Ensured consistent user experience across the entire Kiosk flow
- Implemented AuraUI 'Sign Up 1' as new Visitor Check-In flow
- Integrated high-tech split-screen layout with 'Secure Facility' branding
- Moved camera and form logic to self-contained VisitorCheckIn component
- Updated VisitorKioskPage to route to new experience
- Fixed malformed object structure where 'plugins' array was orphaned outside the export
- This resolves the 'Unexpected token' build error
- Re-enables the new Stone/Lime design system
- Renamed back to tailwind.config.js (ESM)
- Used export default with hardcoded Design OS palette
- This avoids both CJS/ESM interop issues and module resolution errors
- Created /product directory with Design OS definition files (overview, colors, etc)
- Updated tailwind.config.js to widespread Stone/Lime palette (Design OS default)
- Removed custom Linear-inspired colors in favor of standard Tailwind utilities
- Created reusable LODText component with distance-based opacity controls
- Integrated LODText into SmartRack for section, row, and column labels
- Labels now fade out gracefully as the camera moves away to reduce clutter
- Added historical stage calculation logic to PlantSystem
- Wired TimelineSlider date to 3D scene props
- Plants now visually progress through lifecycle stages (Clone -> Veg -> Flower) based on selected date
- Mocked planting dates deterministically based on plant ID seed
- Implemented responsive header with collapsible sidebar toggle
- Added mobile-optimized styles for PlantDataCard (full-width bottom sheet)
- Adjusted positioning of map controls and legend for mobile screens
- Added mobile interaction improvements (auto-close sidebar on select)
- Refined typography and spacing for touch targets
- PlantDataCard.tsx: Deterministic mock data seeding via plant ID
- Added Batch ID, Batch Name, and Last Updated timestamp
- Improved sparkline history generation for realism
- Enhanced UI with glassmorphic refinements and animations
- Contextual actions styling
- SummaryOverlay: Increased distanceFactor for better scaling at distance
- Added animations and glassmorphic refinements
- Enhanced room badges with pulsing alert indicators
- Section summary is now more prominent on hover
- SummaryOverlay.tsx: New component for room and section summaries
- Integrated SectionSummary in SmartRack with hover interaction
- Integrated RoomSummaryOverlay in RoomObject for room-level counts
- Aggregated plant counts and health scores per section/room
- VitalGauge.tsx: New component with:
- SVG sparkline charts showing historical trend
- Gradient fill under sparkline
- Trend arrows (up/down/stable)
- Pulsing current value dot
- Hover tooltips with optimal/range info
- Color-coded status (green/yellow/red)
- VitalsGrid: Convenient wrapper for common vitals
- VitalGaugeMini: Compact version for lists
- Consistent mock values per plant (seeded by ID)
- LifecycleTimeline.tsx: Full SVG-animated component
- 6 stage nodes with connecting lines
- Current stage pulsing animation w/ glow
- Completed stages show checkmarks
- Day tracking and harvest estimation
- LifecycleTimelineMini: Compact version for lists
- Updated PlantDataCard to use new component
- Add sectionId to SearchResult interface
- Search handler now looks up section by ID first
- Falls back to code/name lookup for backwards compatibility
- Fixes beacon offset in Room B (duplicate section codes)
- Create coordinates.ts with centralized SCALE constant
- Add calculatePlantCoords() helper matching SmartRack grid logic
- Refactor all beacon position calcs to use helper
- Uses col*colSpacing where colSpacing = width/(maxCols+1)
- This matches how plants are actually rendered in PlantSystem