- Add live session timer with active duration display
- Add stats grid: today, this week, shifts, average
- Scaffold clock-in methods: manual (active), QR/NFC/GPS (coming soon)
- Modern shift history with method tracking
- Full CSS variable theming
- Framer Motion animations
- Remove italic styling from headers throughout app
- Reduce excessive font-black to font-bold
- Clean up tracking-widest to tracking-wider
- Normalize button styling across pages
- Copy logo file to /assets/logo-veridian.jpg
- Replace all hardcoded slate colors with CSS variables
- Input text now uses --color-text-primary
- Placeholders use --color-text-quaternary
- All elements now respect light/dark theme
- Remove italic styling from header and task titles
- Reduce excessive uppercase and tracking-widest
- Use cleaner font weights throughout
- Replace hardcoded emerald with CSS variables
- Boost text contrast in both themes
- Strengthen border visibility (subtle borders now visible)
- Convert 39 files from hardcoded dark:/light: to CSS vars
- Tertiary text now more readable on both backgrounds
- Replace uniform room cards with compact table view
- Only show elevated cards for WARNING/CRITICAL items
- Expandable rows for drill-down details
- Healthy systems shown as simple rows with status dots
- Trend indicators instead of all raw metrics upfront
- Much calmer overall visual hierarchy
- Replace all indigo references with emerald/primary tokens
- Use CSS variables for background, border, and accent colors
- Update button, inputs, and hover states
- 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
- 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
- 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
- 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
- Remove ROOM_FOCUS preset (wasn't rendering correctly)
- Keep Overhead and Isometric views which work well
- FocusTarget now zooms within current preset
- Text navigation provides room selection
- New HierarchyNav component with Facility→Building→Floor→Rooms path
- Back button and breadcrumb trail in nav header
- Replace old room list with drilldown navigation
- Each level shows children with chevron indicators
- Add sectionCode to PlantSearch SearchResult
- handleSearchSelect now passes room/section to selectedPlant.breadcrumb
- This makes breadcrumb visible in plant info panel
- Create HierarchyBreadcrumb component for navigation
- Fix SmartRack plant positioning within section bounds
- Add breadcrumb data to PlantPosition type
- Display breadcrumb path in plant selection panel
- Pass roomName through component hierarchy
- Create CameraPresets.tsx with preset views and UI selector
- Replace free camera controls with preset-based system
- Add smooth animated transitions between camera positions
- Update Facility3DViewerPage with preset selector buttons
- Remove unused WASD keyboard controls