Commit graph

105 commits

Author SHA1 Message Date
fullsizemalt
b6dd904adc feat: update Layout Designer with Linear design tokens - Use accent blue instead of emerald - Consistent neutral palette - Refined typography
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2025-12-12 15:03:45 -08:00
fullsizemalt
c9b58e0aee fix: improve walkthrough desktop layout with wider cards and grid
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2025-12-12 14:51:52 -08:00
fullsizemalt
f4e6e03ac0 fix: update DevTools login to use new auth signature
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2025-12-12 14:45:19 -08:00
fullsizemalt
fddd43fa4f fix: store refreshToken on login for proper auth flow
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2025-12-12 14:35:54 -08:00
fullsizemalt
71e58dd4c7 feat: Linear-inspired UI redesign with Space Grotesk headlines
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
- Complete UI refactor with charcoal/bone color palette
- Add Space Grotesk font for headlines, Inter for body
- Update all 24+ pages with new design system
- Add LinearPrimitives reusable components
- Improve dark mode support throughout
- Add subtle micro-animations and transitions
2025-12-12 14:29:47 -08:00
fullsizemalt
11e3fc9de8 chore(kiosk): update assetlinks.json with real SHA256 fingerprint
Some checks are pending
Deploy to Production / deploy (push) Waiting to run
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2025-12-11 23:16:52 -08:00
fullsizemalt
73958c5a5f fix(backend): add auth middleware to walkthrough routes
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 1s
2025-12-11 20:29:50 -08:00
fullsizemalt
046bb9361e feat(kiosk): add Android APK and PWA support
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 20:22:03 -08:00
fullsizemalt
f51a1072fe feat(pwa): Add PWA support for installable kiosk app
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added manifest.json for 'Add to Home Screen' installation
- Added service worker for offline caching
- Added app icons (192px, 512px)
- Updated index.html with mobile meta tags
- Created spec for Escort Handoff Mode (009)
2025-12-11 16:13:50 -08:00
fullsizemalt
b35c32279c fix(kiosk): Increase QR code size to 320px with fixed dimensions
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Removed maxWidth constraint that caused scaling
- Set explicit height/width to prevent shrinking
2025-12-11 15:59:49 -08:00
fullsizemalt
58d76fb158 feat(visitor): Enhanced badge & kiosk UX
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Larger QR code on kiosk success screen (280px)
- Redesigned badge page with card flip feature
  - Front: Visitor info, photo, badge number, duration
  - Back: QR code for security scan, checkout link
- Added photo capture to kiosk registration
  - Camera access with preview
  - Capture, retake, and submit photo
- Site branding on badge page (777 Wolfpack)
- Better status indicators and UI polish
2025-12-11 15:46:34 -08:00
fullsizemalt
43e65bfd4c fix(kiosk): Filter empty optional fields before API submission
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Prevents validation errors when email/phone/company are empty strings
- Only sends fields with actual values to backend
2025-12-11 15:31:37 -08:00
fullsizemalt
969397bae1 feat(kiosk): Require manual confirmation for badge
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Disabled auto-timeout on success screen when a badge is issued
- Updated 'Done' button to 'I have my badge' for clearer confirmation
2025-12-11 15:00:41 -08:00
fullsizemalt
284e972376 refactor(ui): Rename 'Visitor Panopticon' to 'Visitor Management'
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Reverted the naming change per user request to avoid the term 'Panopticon'
2025-12-11 14:58:46 -08:00
fullsizemalt
2ffc4edbcd fix(build): Resolve TypeScript and Import errors
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Fixed 'qrcode.react' import in VisitorKioskPage (named export)
- Added 'badgeExpiry' to VisitorLog interface in visitorsApi
- Added 'tiers' to LayoutSection interface in layoutStore
- NOTE: This fixes the build failure on nexus-vector
2025-12-11 14:50:42 -08:00
fullsizemalt
5ef61d09be fix(api): Remove double /api prefix from visitorsApi calls
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- The axios instance already has /api base URL
- Removed redundant /api prefix from all visitor and zone endpoints
2025-12-11 14:44:08 -08:00
fullsizemalt
26c2680b64 fix(types): Add REVOKED to VisitorLog status and include revoke method in visitorsApi
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 14:20:29 -08:00
fullsizemalt
9f41d6b413 feat(visitor): Implement Admin Panopticon View
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Renamed Management Page to Visitor Panopticon
- Added Revoke button to active visitors
- Added Revoke Modal with reason capture
- Updated status display to show REVOKED status
2025-12-11 14:16:14 -08:00
fullsizemalt
56c8e8bb8b fix(schema): Add REVOKED to VisitorStatus enum
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 14:11:28 -08:00
fullsizemalt
668e213cd8 fix(visitor): Remove global auth from Kiosk routes
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Removed global onRequest jwtVerify hook
- Added explicit auth check to secure routes (revoke, report)
- Kiosk check-in/out and create visitor are now public
2025-12-11 13:59:43 -08:00
fullsizemalt
15e1a8b199 feat(visitor): Implement Digital Badge System
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added public /badges/:id route with BadgePage component
- Updated VisitorKiosk to display QR code upon check-in
- Backend now returns visitId in check-in response
- Added qrcode.react dependency
2025-12-11 13:51:47 -08:00
fullsizemalt
0a631f462a docs: Add Phase 15 (3D Visualization) to Roadmap
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added spec for 'Cool 3D Views' using react-three-fiber
- Planned features: 3D volumes, tier stacking, walking mode
2025-12-11 13:30:50 -08:00
fullsizemalt
d2c2e0aeef feat(layout): Add Tiers input to Section Dialog
Some checks failed
Deploy to Production / deploy (push) Failing after 1s
Test / backend-test (push) Failing after 1s
Test / frontend-test (push) Failing after 0s
- Added Tiers configuration to AddSectionDialog
- Updated capacity calculations
- Updates saves to include tier count
2025-12-11 13:26:59 -08:00
fullsizemalt
2edb2dd100 feat(layout): Update frontend types and API to support Tiers
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added 'tiers' to LayoutSection
- Added 'tier' to LayoutPosition
- Included 'sections' in saveFloorLayout payload (fixes data loss bug)
2025-12-11 13:24:56 -08:00
fullsizemalt
ed36645cc8 feat(api): Update section creation routes to support Tiers
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 13:23:32 -08:00
fullsizemalt
3a11590795 feat(layout): Add Tiers to FacilitySection and Position
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added 'tiers' to FacilitySection for multi-level racks
- Added 'tier' to FacilityPosition for Z-axis addressing
- Updated unique constraint for positions
2025-12-11 13:21:05 -08:00
fullsizemalt
9cabd54718 docs: Update Roadmap
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added Phase 14: Facility Monitoring & Security Integration
- Marked Sprint 1 (Infrastructure) as Completed
- Marked Sprint 2 (Integration) as Roadmapped/Future
2025-12-11 13:09:15 -08:00
fullsizemalt
cfb3caabe7 fix(docker): Fix malformed docker-compose.yml
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Resolved duplicate 'frontend' service definition
- Resolved duplicate 'labels' key in go2rtc/frontend block
- Ensured valid YAML structure
2025-12-11 12:58:31 -08:00
fullsizemalt
225bf3608e feat(monitoring): Add go2rtc service for CCTV integration
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added go2rtc service to docker-compose.yml
- Configured Traefik routing at /monitor
- Created go2rtc.yaml with demo stream configuration
2025-12-11 12:56:50 -08:00
fullsizemalt
1ef3dc0d80 fix(seed): Adjust Nutrient Management for 16-gal Test Stock
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Updated seed.js task to reflect 16-gallon test stock protocol (scaling factor 0.32)
- Updated Spec 006 with 16-gallon protocol details
- Updated validation targets (EC ~2.9 for Part A, ~1.69 for Part B/PZ)
2025-12-11 12:47:31 -08:00
fullsizemalt
3dad07de03 feat(seed): Add Nutrient Management protocols and Supplies
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added Front Row Ag 3-2-2 Mixing Task to seed.js
- Added Front Row Ag nutrients and Phoszyme to demo supplies
- Created spec 013 (Facility Monitoring)
- Updated spec 006 (Cultivation) with nutrient protocols
2025-12-11 12:40:03 -08:00
fullsizemalt
efffe3fb94 fix(frontend): Fix TypeScript inference for AddFloorModal state
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 12:27:02 -08:00
fullsizemalt
da93320ccf feat(layout): Add Ceiling Height and Tiers to Floor creation
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added ceilingHeight and defaultTiers to FacilityFloor model
- Updated API routes and frontend client
- Updated AddFloorModal with new fields and clearer labels
2025-12-11 12:23:49 -08:00
fullsizemalt
0c970cadb7 fix(seed): Remove invalid createdById from Task creation in seed.js
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:57:42 -08:00
fullsizemalt
76703aa500 fix(seed): Update seed.js SupplyCategory Enum values (NUTRIENTS -> OTHER)
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:54:34 -08:00
fullsizemalt
9188d12475 fix(seed): Update seed.js with correct Role Enum values (GROWER, STAFF)
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:51:00 -08:00
fullsizemalt
deadb04803 fix(backend): Add Batch-FacilityPlant relation and fix Prisma queries
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added bi-directional relation between Batch and FacilityPlant in schema.prisma
- Fixed logic in insights.routes.ts to use simplified plant count query
- Fixed duplicate property in messaging.routes.ts findMany filter
- Fixed null/undefined type mismatch in audit.routes.ts extractClientInfo
2025-12-11 11:43:54 -08:00
fullsizemalt
e34df722bb feat: Add Building creation functionality to Layout Designer
Some checks failed
Deploy to Production / deploy (push) Failing after 1s
Test / backend-test (push) Failing after 1s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:36:31 -08:00
fullsizemalt
a4a7626637 fix: Correct API call signature for creating floors
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:34:41 -08:00
fullsizemalt
d05fcf6b74 fix: Update Quick Actions page with PageHeader and wizard flow
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:33:39 -08:00
fullsizemalt
f8a368be62 feat: Layout Designer enhancements (#1)
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Added ability to create new Floors and properties directly in Layout Designer
- Implemented AddFloorModal
- Updated FloorSelector to support adding properties/floors
- Fixed missing capabilities in PropertySetup
- Resolved circular dependencies and duplicate imports
2025-12-11 11:31:07 -08:00
fullsizemalt
35162d565d refactor: Code splitting, page templates, and PageHeader consistency
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Lazy load all pages for 24% bundle size reduction (575KB → 436KB)
- Created templates: PageTemplate, ComponentTemplate, WidgetTemplate
- Updated RoomsPage and IPMDashboardPage with PageHeader
- All routes wrapped in Suspense with PageLoader component
- Fixed malformed router.tsx structure
2025-12-11 11:18:29 -08:00
fullsizemalt
010ed94b31 ci: Add seed step to deployment workflow
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:08:48 -08:00
fullsizemalt
6808446ff0 fix: Enable DevTools on testing domains (*.runfoo.run)
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-11 11:08:05 -08:00
fullsizemalt
4663b0ac86 feat: Navigation refactor with RBAC, DevTools for quick user switching, enhanced seed data
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
- Refactored navigation with grouped sections (Operations, Cultivation, Analytics, etc.)
- Added RBAC-based navigation filtering by user role
- Created DevTools panel for quick user switching during testing
- Added collapsible sidebar sections on desktop
- Mobile: bottom nav bar (4 items + More) with slide-up sheet
- Enhanced seed data with [DEMO] prefix markers
- Added multiple demo users: Owner, Manager, Cultivator, Worker
- Fixed domain to runfoo.run
- Added Audit Log and SOP Library pages to navigation
- Created usePermissions hook and RoleBadge component
2025-12-11 11:07:22 -08:00
fullsizemalt
558e0ac1e2 feat: Full Spec Kit compliance implementation
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
Photo Management (per specs/photo-management.md):
- Sharp integration for 3-size compression (thumb/medium/full)
- WebP output with 80-90% quality
- Client-side compression with browser-image-compression
- PhotoUpload component with camera/drag-drop support
- Upload API with bulk support and stats endpoint

Testing:
- Backend: Jest tests for all major API endpoints
- Frontend: Vitest tests for utilities and API clients
- CI: Updated Forgejo workflow for test execution

Specs (100% coverage):
- visitor-management.md (Phase 8)
- messaging.md (Phase 9)
- audit-and-documents.md (Phase 10)
- accessibility-i18n.md (Phase 11)
- hardware-integration.md (Phase 12)
- advanced-features.md (Phase 13)

Documentation:
- OpenAPI 3.0 spec (docs/openapi.yaml)
- All endpoints documented with schemas
2025-12-11 09:53:32 -08:00
fullsizemalt
32fd739ccf feat: Complete Phases 8-13 implementation
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
Phase 8: Visitor Management
- Visitor/VisitorLog/AccessZone models
- Check-in/out with badge generation
- Zone occupancy tracking
- Kiosk and management pages

Phase 9: Messaging & Communication
- Announcements with priority levels
- Acknowledgement tracking
- Shift notes for team handoffs
- AnnouncementBanner component

Phase 10: Compliance & Audit Trail
- Immutable AuditLog model
- Document versioning and approval workflow
- Acknowledgement tracking for SOPs
- CSV export for audit logs

Phase 11: Accessibility & i18n
- WCAG 2.1 AA compliance utilities
- react-i18next with EN/ES translations
- User preferences context (theme, font size, etc)
- High contrast and reduced motion support

Phase 12: Hardware Integration
- QR code generation for batches/plants/visitors
- Printable label system
- Visitor badge printing

Phase 13: Advanced Features
- Environmental monitoring (sensors, readings, alerts)
- Financial tracking (transactions, P&L reports)
- AI/ML insights (yield predictions, anomaly detection)
2025-12-11 00:26:25 -08:00
fullsizemalt
e240ec7911 feat(phase2): Implement Phase 2 - Plant Touch Points & IPM
Added PlantTouchPoint and IPMSchedule models. Implemented touch-points and IPM controllers/routes. Updated frontend with Dashboard feed and IPM widgets.
2025-12-09 21:22:47 -08:00
fullsizemalt
f95b626724 feat: Shopping List UI + Roadmap Update
📦 Shopping List Feature (Phase 3A)
- Full SupplyItem model with Vendor & ProductUrl
- Shopping List / Inventory toggle
- Add Item Modal (Category, Thresholds, Vendor info)
- 'Order Now' external link logic
- 'Mark Ordered' tracking
- Quantity +/- adjustments

📅 Roadmap Update:
- Defined Unified Master Calendar (Phase 4)
- Added granular toggles (Emp Schedules, Taxes, Compliance, Plant Cycle, etc.)

🚀 Status:
- Backend deployed (Schema synced)
- Frontend deploying...
2025-12-09 15:26:35 -08:00
fullsizemalt
22574359ba feat: Shopping List Backend API Complete
📦 Supply Items Backend (Phase 3A)

 Controller (supplies.controller.ts):
- getSupplyItems() - List all items
- getShoppingList() - Items below threshold
- getSupplyItem() - Single item detail
- createSupplyItem() - Add new item
- updateSupplyItem() - Edit item
- deleteSupplyItem() - Remove item
- markAsOrdered() - Track last ordered date
- adjustQuantity() - Add/subtract stock

 Routes (supplies.routes.ts):
- GET /api/supplies
- GET /api/supplies/shopping-list
- GET /api/supplies/:id
- POST /api/supplies
- PATCH /api/supplies/:id
- DELETE /api/supplies/:id
- POST /api/supplies/:id/order
- POST /api/supplies/:id/adjust

 Server Integration:
- Registered supplies routes

Next: Frontend UI + Migration
2025-12-09 15:11:41 -08:00