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
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
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
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
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
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
...
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
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
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
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
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
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
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)
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
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
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
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
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
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)
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
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
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
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
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
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
...
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
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
...
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
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
...
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
...
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
...
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)
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)
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
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
...
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
...
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
...
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
...
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
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
...
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
...
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
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
...
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