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
fullsizemalt
deadb04803
fix(backend): Add Batch-FacilityPlant relation and fix Prisma queries
...
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
558e0ac1e2
feat: Full Spec Kit compliance implementation
...
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
...
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
fullsizemalt
e538227458
feat: Daily Walkthrough Backend API Complete
...
✅ Backend API Implementation (Phase 1.5)
📁 Files Created:
- backend/src/controllers/walkthrough.controller.ts
- backend/src/routes/walkthrough.routes.ts
🔌 API Endpoints:
- POST /api/walkthroughs - Start new walkthrough
- GET /api/walkthroughs - List walkthroughs (with filters)
- GET /api/walkthroughs/:id - Get walkthrough detail
- POST /api/walkthroughs/:id/complete - Mark complete
- POST /api/walkthroughs/:id/reservoir-checks - Add reservoir check
- POST /api/walkthroughs/:id/irrigation-checks - Add irrigation check
- POST /api/walkthroughs/:id/plant-health-checks - Add plant health check
✨ Features:
- Full CRUD for walkthroughs
- Nested check creation
- User authentication required
- Query filters (status, date range, user)
- Includes related data (user, all checks)
- Error handling
- TypeScript types
🔐 Security:
- Requires authentication (userId from JWT)
- User attribution on creation
- Proper error responses
📊 Response Format:
- Includes user details (name, email, role)
- Includes all checks (reservoir, irrigation, plant health)
- Ordered by date (desc)
⏭️ Next: Frontend UI (4-5 hours)
Build: ✅ Successful
2025-12-09 14:10:14 -08:00
fullsizemalt
9dc0586d67
feat: Sprint 2 Phase 1 - Auth Core Complete
...
✅ Implemented:
- Password hashing with bcrypt (salt rounds = 10)
- JWT token generation (access 15m, refresh 7d)
- Updated login endpoint to return access + refresh tokens
- Added refresh and logout endpoints
- Updated seed script with hashed passwords
- Added test users for all roles (OWNER, MANAGER, GROWER, STAFF)
📝 Files Added/Modified:
- backend/src/utils/password.ts (NEW)
- backend/src/utils/jwt.ts (NEW)
- backend/src/controllers/auth.controller.ts (UPDATED)
- backend/src/routes/auth.routes.ts (UPDATED)
- backend/prisma/seed.js (UPDATED - now hashes passwords)
- CREDENTIALS.md (UPDATED - all test users documented)
🔐 Test Users:
- admin@runfoo.run (OWNER)
- manager@runfoo.run (MANAGER)
- grower@runfoo.run (GROWER)
- staff@runfoo.run (STAFF)
All passwords: password123
⏭️ Next: Auth middleware + RBAC
2025-12-09 13:52:54 -08:00
fullsizemalt
5890732667
fix: Align health check path with Nginx proxy
2025-12-09 11:56:04 -08:00
fullsizemalt
d06bf0defa
fix: Switch to @fastify/jwt for proper types
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-09 10:57:54 -08:00
fullsizemalt
6b724386ba
feat: Phase 1 Complete (Backend + Frontend)
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-09 09:24:00 -08:00
fullsizemalt
9c5ffec28d
fix: Add missing project files for backend/frontend build
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
2025-12-09 00:23:28 -08:00