48 Commits

Author SHA1 Message Date
gitea-actions[bot] 4d4bd0c906 chore(release): build 01.08.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
2026-06-21 16:05:06 +00:00
gitea-actions[bot] 1bbba00200 chore(version): pre-release bump to 01.07.02-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 3s
2026-06-21 15:57:53 +00:00
gitea-actions[bot] 54a9f10630 chore(version): auto-bump patch 01.07.01-dev [skip ci] 2026-06-21 15:57:45 +00:00
Jonathan Miller 4ec90d38f2 feat: CustomerSatisfactionHelper — post-service NPS, technician ratings, survey management
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
2026-06-21 10:57:33 -05:00
gitea-actions[bot] 5e815dd945 chore(release): build 01.07.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 24s
2026-06-21 15:00:40 +00:00
gitea-actions[bot] 1983d1c4ef chore(version): pre-release bump to 01.06.02-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
2026-06-21 14:22:27 +00:00
gitea-actions[bot] e01a08c664 chore(version): auto-bump patch 01.06.01-dev [skip ci] 2026-06-21 14:22:18 +00:00
Jonathan Miller 3ca55ac09c feat: GpsTrackingHelper — fleet positions, drive history, speed alerts
Universal: Auto Version Bump / Version Bump (push) Successful in 10s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 10s
2026-06-21 09:22:02 -05:00
gitea-actions[bot] 3f73e680f0 chore(release): build 01.06.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 26s
2026-06-21 14:05:54 +00:00
gitea-actions[bot] a772f4b872 chore(version): pre-release bump to 01.05.02-dev [skip ci] 2026-06-21 13:50:00 +00:00
gitea-actions[bot] e6ba7ade71 chore(version): auto-bump patch 01.05.01-dev [skip ci] 2026-06-21 13:49:51 +00:00
Jonathan Miller f9eb1153e6 feat: TechnicianSkillHelper — skill matrix, best-match dispatch, cert expiry tracking
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 11s
2026-06-21 08:49:40 -05:00
gitea-actions[bot] 0bfca03942 chore(release): build 01.05.00 [skip ci] 2026-06-21 05:27:40 +00:00
Jonathan Miller eeaef928b5 fix: safety checklist — verify pending+unchecked before marking, auto-complete status
Universal: Auto Version Bump / Version Bump (push) Successful in 14s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 13s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 18s
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 1s
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-21 00:25:13 -05:00
gitea-actions[bot] 4ce4814e50 chore(version): pre-release bump to 01.04.02-dev [skip ci] 2026-06-21 05:05:20 +00:00
gitea-actions[bot] bc0fb961b5 chore(version): auto-bump patch 01.04.01-dev [skip ci] 2026-06-21 05:05:09 +00:00
Jonathan Miller 9136156034 Add SafetyChecklistHelper — trade-specific pre-job safety checks, compliance gating
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 14s
2026-06-21 00:04:55 -05:00
gitea-actions[bot] 347063c298 chore(release): build 01.04.00 [skip ci] 2026-06-21 04:40:59 +00:00
gitea-actions[bot] b2472ddcdc chore(version): auto-bump patch 01.03.03-dev [skip ci]
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 18s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 2m4s
2026-06-21 04:39:45 +00:00
Jonathan Miller c8b1b32b71 fix: warranty claim operator precedence bug + WO validation
Universal: Auto Version Bump / Version Bump (push) Successful in 10s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 4s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 13s
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-20 23:39:33 -05:00
gitea-actions[bot] ec1618c425 chore(version): pre-release bump to 01.03.02-dev [skip ci] 2026-06-21 04:25:58 +00:00
gitea-actions[bot] 2a1ca75d2c chore(version): auto-bump patch 01.03.01-dev [skip ci] 2026-06-21 04:25:50 +00:00
Jonathan Miller ed8365df49 Add WarrantyHelper — warranty status, claim processing, expiry alerts
Universal: Auto Version Bump / Version Bump (push) Successful in 9s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 9s
2026-06-20 23:25:37 -05:00
gitea-actions[bot] 31b7b47e47 chore(release): build 01.03.00 [skip ci] 2026-06-21 01:17:23 +00:00
Jonathan Miller 3cd36b94bf fix: feedback token race condition (FOR UPDATE), generic error for public users
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Project CI / Lint & Validate (pull_request) Successful in 6s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 6s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 7s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 7s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 16s
Generic: Project CI / Tests (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-20 20:14:31 -05:00
gitea-actions[bot] f33012cb90 chore(version): auto-bump patch 01.02.01-dev [skip ci] 2026-06-21 01:01:13 +00:00
Jonathan Miller a5bc28cd8a Add CustomerFeedbackHelper — post-service surveys, NPS scores, token-based feedback
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 7s
2026-06-20 20:00:21 -05:00
gitea-actions[bot] 41307be688 chore(release): build 01.02.00 [skip ci] 2026-06-20 21:35:40 +00:00
Jonathan Miller 52c7684c6a Add FieldReportsController API — tech performance, revenue by trade, parts usage, SLA compliance
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 15s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 2m33s
2026-06-20 15:50:54 -05:00
Jonathan Miller 5911e97a26 Add PartsHelper — common parts by trade, usage tracking, stock deduction, low stock alerts 2026-06-20 13:21:17 -05:00
Jonathan Miller 6ad31dd8c0 Add FieldSchedulingController API — appointment slots, booking, daily schedule, tech routes 2026-06-18 11:43:16 -05:00
Jonathan Miller 78e172a50d Add SchedulingHelper — appointment slots, tech availability, daily schedule 2026-06-18 11:12:40 -05:00
Jonathan Miller efae025a2f fix: Address PR review findings — CSRF, status guards, SQL safety, transactions
- Add CSRF token validation on EstimateView approve/reject forms
- Add status guard on reject branch (prevent reversing approved estimates)
- Fix loc.* column collision in WorkOrdersModel::getWorkOrder (overwrote wo.id)
- Add (int) cast on all query parameter concatenations
- Wrap InvoiceHelper::generateFromWorkOrder in database transaction
- Replace magic 0.5 divisor with AVG_SPEED_MPH constant in RouteHelper
2026-06-18 09:03:19 -05:00
Jonathan Miller e1b885939a Add EstimateView site view — public estimate approval page with e-signature and decline option 2026-06-18 08:28:01 -05:00
Jonathan Miller 71b5166251 Add InvoiceHelper — generate CRM invoices from completed work orders (labor hours + parts), batch invoicing 2026-06-18 08:24:57 -05:00
Jonathan Miller 3ba79d4367 Add 7 admin models — WorkOrders, Technicians, Equipment, Vehicles, ServiceAgreements, Estimates, Dispatch
All use Joomla 6 BaseDatabaseModel with $this->getDatabase()
2026-06-15 00:50:26 -05:00
Jonathan Miller 5b923b4869 Add FieldEquipment and FieldEstimates API controllers
- FieldEquipmentController: equipment CRUD, vehicles, truck stock, service agreements
- FieldEstimatesController: estimates CRUD, convert-to-WO, route optimization API
2026-06-15 00:35:18 -05:00
Jonathan Miller 532e514106 Add RouteHelper — daily route building, nearest-neighbor optimization, GPS breadcrumbs, drive time estimates 2026-06-14 15:00:47 -05:00
Jonathan Miller d08648f2fc feat: customer service portal + mobile API (GPS, photos, time, parts) 2026-06-13 09:20:13 -05:00
Jonathan Miller ca513b61ee feat: mobile tech API — GPS, photos, time tracking, parts usage, equipment QR
FieldMobileController: 8 endpoints for field tech mobile app — my jobs
(priority-sorted with customer/location data), status updates with GPS,
photo upload with geotag, start/stop time entries, log parts from truck
stock (auto-deducts + adds WO line item), GPS heartbeat, equipment QR
code lookup. Auth requires technician profile linked to Joomla user.
2026-06-13 08:57:09 -05:00
Jonathan Miller a146c106a3 chore: CI workflow, language files, CSS, JS infrastructure 2026-06-13 08:37:43 -05:00
Jonathan Miller ceb03dba48 feat: equipment, dispatch, vehicles views + truck stock/vehicle helpers
TruckStockHelper: per-vehicle inventory, low stock, use/restock parts.
VehicleHelper: fleet overview, inspection due dates.
Admin views: Equipment list with service due alerts, Dispatch board
with date picker and tech assignments, Vehicles fleet with low stock
indicators and inspection tracking. All with templates.
2026-06-13 08:14:33 -05:00
Jonathan Miller 00b1cacceb feat: technician mobile view + public service booking page
TechMobile: tablet/phone view for field techs — today's jobs sorted by
priority, current job card with address/access notes/phone link, GPS
status updates (en route/arrived/start/complete), Google Maps navigation.
BookService: public form for customers to request service — trade
selector, priority, description, auto contact + work order creation.
2026-06-13 08:01:56 -05:00
Jonathan Miller 96c42ccf6d feat: wire config.xml params + ACL permission checks
WorkOrderHelper: reads wo_prefix and default_trade from config.xml.
FieldWorkOrderController: requireAuth() checks on list (core.manage),
create (core.create), dispatch (field.dispatch) endpoints.
2026-06-13 07:33:07 -05:00
Jonathan Miller e9f0bf85a4 chore: comprehensive config.xml settings + access.xml permissions 2026-06-13 07:20:14 -05:00
Jonathan Miller b39abf8bd5 feat: webservices plugin, task scheduler, router, config, access
FieldAutomation task plugin: service reminders, agreement renewal alerts,
equipment warranty expiry, truck stock reorder.
MokoSuiteFieldApi webservices: 6 CRUD routes (workorders, technicians,
equipment, agreements, estimates, locations). Router, config.xml, access.xml.
2026-06-13 07:10:18 -05:00
Jonathan Miller a03b584b67 feat: service agreements, equipment, estimates, work orders list, technicians, API
ServiceAgreementHelper: active agreements, expiring, revenue summary.
EquipmentHelper: location equipment, QR lookup, service due, warranty expiry.
EstimateHelper: create, send, accept with signature, auto-convert to WO.
FieldWorkOrderController API: CRUD + dispatch + board + available techs.
Admin views: WorkOrders list, Technicians list, ServiceAgreements with
recurring revenue dashboard. All with templates.
2026-06-13 06:53:05 -05:00
Jonathan Miller b05234ef1a feat: initial scaffold — MokoSuiteField service management
Layer 2 add-on for MokoSuite CRM. Field service operations for
plumbing, electrical, HVAC, and general trades.

Schema (12 tables):
- Technicians (trade, certifications, GPS, service radius, vehicle)
- Service Locations (customer properties with access notes, GPS)
- Work Orders (full lifecycle: new > dispatched > en_route > on_site >
  in_progress > completed > invoiced, with priority/trade/category)
- WO Line Items (labor, parts, materials, flat rate, permits)
- WO Photos (before/during/after with GPS coordinates)
- Service Agreements (recurring maintenance contracts with SLA)
- Equipment (HVAC units, panels, water heaters with serial/warranty)
- Vehicles (fleet tracking with mileage, inspection, GPS)
- Truck Stock (per-vehicle parts inventory with reorder points)
- Dispatch Log (assignment and routing history with GPS)
- Estimates (on-site quoting with token-based customer acceptance)
- Time Entries (per-WO labor tracking with overtime/travel flags)

Helpers:
- DispatchHelper: find best tech by trade/location/workload, dispatch
  board, auto-assignment, unassigned queue
- WorkOrderHelper: create, status lifecycle, completion with signature,
  dashboard stats

Infrastructure:
- Joomla 6 (PHP 8.3+), admin dashboard with dispatch board
- Git submodules: MokoSuite + MokoSuiteCRM
- GPL-3.0 license
2026-06-13 06:23:59 -05:00