Commit graph

62 commits

Author SHA1 Message Date
fullsizemalt
555a22b846 fix: Use hashPassword utility instead of dynamic bcrypt import 2026-01-12 15:35:13 -08:00
fullsizemalt
458913bdf8 fix: Use passwordHash field name (matches Prisma schema) 2026-01-12 15:25:44 -08:00
fullsizemalt
7607dff622 feat: Photo persistence and user creation
- Change STORAGE_PATH from /tmp to /app/photos
- Add photos_data volume to docker-compose.yml for persistence
- Add createUser controller with bcrypt password hashing
- Add POST /users route for employee creation
2026-01-12 15:21:37 -08:00
fullsizemalt
4894679357 Fix PDF and branding routes to use /api prefix
- Add /api prefix to PDF and branding route registration in server.ts
- Remove /api prefix from individual route definitions
- Fixes routing issue where PDF endpoints were not accessible through nginx

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 19:13:35 -08:00
fullsizemalt
9fe6823508 Fix branding service to use in-memory storage
Remove file system operations that were causing permission errors
in the Docker container. Branding configs now stored in memory only.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 15:46:08 -08:00
fullsizemalt
4bdbfc82ca Add tinypdf-plus integration with PDF generation and branding
Backend changes:
- Add tinypdf-plus dependency for TTF/OTF font support
- Create PDF service with text, certificate, and label generation
- Add PDF API endpoints (/api/pdf/*)
- Add branding service for custom fonts and styling
- Add branding API endpoints (/api/branding/*)
- Add font registration endpoint for custom fonts

Frontend changes:
- Add PDF library with download utilities
- Add PDFDownloadButton component for reusable PDF downloads
- Add branding API client for managing branding configs
- Update ReportsPage with PDF generation tab

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-08 12:07:35 -08:00
fullsizemalt
7386b5c6c5 fix(backend): Remove duplicate OPTIONS handler to resolve Startup Crash 2026-01-08 01:52:52 -08:00
fullsizemalt
3023155fde fix(pulse): Increase sparkline history to 24h
Some checks failed
Test / backend-test (push) Has been cancelled
Test / frontend-test (push) Has been cancelled
2026-01-07 22:46:23 -08:00
fullsizemalt
f97e8ea1d0 fix(backend): Add manual OPTIONS handler for legacy clients
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:53:32 -08:00
fullsizemalt
ed7b78be32 fix(backend): Enable permissive CORS to resolve WebView issues
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:45:44 -08:00
fullsizemalt
c74f37783f fix(backend): Add localhost origins for Capacitor CORS
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:14:35 -08:00
fullsizemalt
0723c93908 feat(backend): Add CORS support for Capacitor app
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 23:08:15 -08:00
fullsizemalt
57c70b91db feat(android): Add Capacitor for Android APK build
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
- Add Capacitor core, CLI, and Android platform
- Install plugins: camera, push-notifications, splash-screen, status-bar
- Configure capacitor.config.ts with app ID run.runfoo.veridian
- Update vite.config.ts with base: './' for Capacitor compatibility
- Update api.ts and SessionTimeoutWarning.tsx to detect Capacitor and use production API URL
- Generate Android project structure with Gradle build files
2026-01-06 21:56:28 -08:00
fullsizemalt
28532d4d9b feat: Environment Reports with alert response time analytics and PDF export
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 01:46:59 -08:00
fullsizemalt
c39abe5696 feat: Auto-resolve alerts + Resolve All button in Failsafe UI
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 00:58:53 -08:00
fullsizemalt
55bdef78e4 fix: Skip JWT auth for edge device endpoints
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-06 00:43:24 -08:00
fullsizemalt
e4c506d074 feat: Connect Pulse alerts to Edge failsafe
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 23:51:48 -08:00
fullsizemalt
6ae2b35f8d feat: Backend support for Edge commands/failsafe
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 23:17:03 -08:00
fullsizemalt
1abb972d37 feat: Pulse sparklines, sidebar updates, and WS fix
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 22:45:37 -08:00
fullsizemalt
fb5dba5019 fix: use correct Pulse API endpoints (/all-devices, data-range)
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 22:11:42 -08:00
fullsizemalt
afbd5c69aa feat: Pulse threshold alerts with WebSocket broadcasting
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 21:02:01 -08:00
fullsizemalt
215d24eb0e fix: use connection.socket for @fastify/websocket v8
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 20:44:06 -08:00
fullsizemalt
95af9e9f8d fix: log.error typing in websocket plugin
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 20:32:35 -08:00
fullsizemalt
54531a79d5 fix: TypeScript errors in websocket plugin and Prisma calls
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 20:25:22 -08:00
fullsizemalt
5c86b98628 feat: Pulse sensor integration with real-time WebSocket alerts
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-05 20:09:39 -08:00
fullsizemalt
2ca6fb01f4 feat: add edge device endpoints (ingest, heartbeat, alert)
Some checks failed
Test / backend-test (push) Has been cancelled
Test / frontend-test (push) Has been cancelled
2026-01-02 00:30:10 -08:00
fullsizemalt
b520ffc578 fix: remove duplicate accessZoneRoutes registration
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 23:27:18 -08:00
fullsizemalt
abaef138ba fix: use plantLifecycleEvent instead of non-existent plantLocationHistory
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 22:53:41 -08:00
fullsizemalt
2bc596c527 fix: backend syntax and frontend toast API
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 22:49:33 -08:00
fullsizemalt
133bf9ea3a feat(layout): lifecycle actions (harvest/destroy) + neutral styling
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 22:40:02 -08:00
fullsizemalt
7ec8b1fc57 feat: Implement persistence for plant placements in layout editor
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 16:29:45 -08:00
fullsizemalt
cbaa341553 fix: Add updateSection API and backend route, fix page title
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
- Add updateSection to layoutApi.ts
- Add PATCH /sections/:id route with smart resizing logic
- Fix default page title in index.html
2026-01-01 15:33:40 -08:00
fullsizemalt
f534c9818e fix: Fix z.record() Zod syntax for TypeScript compatibility
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2026-01-01 14:16:07 -08:00
fullsizemalt
d9d04045cb feat: Add Rackula-inspired layout system with 2D editor
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
- Add PlantType model with Zod validation
- Add PlantType CRUD API routes
- Add 2D Layout Editor components (TypeLibrary, RackVisualizer, LayoutEditor)
- Add seed script with 21 common cannabis strains
- Add /layout-editor/:floorId? route
2026-01-01 14:12:03 -08:00
fullsizemalt
1950651102 feat: Implement Parametric Room Generation and Volumetric Plants
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
2025-12-27 14:46:00 -08:00
fullsizemalt
820d345a0c fix: Tasks API - map assigneeId query param to assignedToId schema field
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
Root cause: Prisma schema uses 'assignedToId' but getTasks was passing
'assigneeId' directly to the where clause, causing PrismaClientValidationError
2025-12-27 13:56:54 -08:00
fullsizemalt
ca8a3e8cee refactor: Rebrand from 777wolfpack/CA Grow Ops to Veridian
Some checks are pending
Test / backend-test (push) Waiting to run
Test / frontend-test (push) Waiting to run
- Update all frontend branding (Login, Splash, Layout, Navbar, etc.)
- Update page titles and breadcrumbs
- Update visitor components (Badge, CheckIn)
- Update deploy.sh and README
- Update test fixtures with new email domain
2025-12-27 11:24:26 -08:00
fullsizemalt
bfa3cd21cc polish: Enhance demo data for Audit Logs and SOPs, fix photo delete bug
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
- Seed script now generates 100+ realistic audit logs
- Added Policy, Training, Form, and Checklist document types to seed data
- Fixed bug in photo deletion logic for older photos
2025-12-19 15:05:40 -08:00
fullsizemalt
f91fbc2237 feat: add Reseed Demo Plants button to DevTools (realistic plant layout)
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-18 12:00:22 -08:00
fullsizemalt
8916acbe4b fix: correct 3D facility view navigation path (/facility-3d → /facility/3d)
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-18 11:43:25 -08:00
fullsizemalt
2036011fdc fix: handle stale tokens by checking user existence before creating walkthrough
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 23:10:34 -08:00
fullsizemalt
1258aebb9f fix: remove /api prefix from audit, documents, messaging, upload APIs
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
Same double /api/api issue that was in layoutApi
2025-12-12 22:28:20 -08:00
fullsizemalt
c7f8bc8cec feat: walkthrough 'completed today' status + 3D viewer spec
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
- Added /walkthroughs/today API endpoint
- Show clear status when walkthrough is already completed
- Show 'Continue Walkthrough' for in-progress ones
- Added facility-3d-viewer.md spec
- Installed React Three Fiber dependencies
2025-12-12 22:17:10 -08:00
fullsizemalt
eb5ebc610f feat: room cards with color-coded headers + room detail page
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
- Room cards now have colored header backgrounds per type (VEG=green, FLOWER=purple, DRY=amber, CURE=orange, etc.)
- Cards are clickable, linking to /rooms/:id
- New RoomDetailPage with gradient header, sensor metrics with sparklines, active batches list
- Backend: GET /rooms/:id endpoint returns room with batches
2025-12-12 19:33:07 -08:00
fullsizemalt
e7be23cce4 feat: add batch detail endpoint and fix drill-down navigation
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
Backend:
- Add getBatchById controller with touch points and IPM schedule
- Add GET /batches/:id route

Frontend:
- Update Batch interface to include touchPoints
- BatchDetailPage now uses real touch points from API
- Better error handling on batch load failure
2025-12-12 19:04:16 -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
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
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
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