TradeService Field Service Manager
PHP/MySQL licensed edition 3.15.0

Version 3.3 adds reliable email delivery and automatic reminders:
- authenticated SMTP with TLS/SSL and a test-email workflow;
- SMTP credentials managed by administrators without exposing the saved password;
- delivery log with real server errors instead of false success messages;
- document emails use the shared authenticated delivery service;
- appointment reminders before scheduled visits;
- quote follow-ups after a configurable number of days;
- overdue invoice reminders based on the remaining balance;
- protected hourly cron URL and duplicate-reminder prevention.

Version 3.2 adds customer quote approval:
- customers can approve or decline an issued quote from its secure link;
- approval requires an authorization confirmation and customer name;
- response time, comment and unique confirmation code are saved;
- approved/declined status appears in the manager and printed document;
- expired quotes no longer accept a response;
- an invoice can be created directly from an approved quote;
- quote tokens and response history are removed from the new invoice copy.

Version 3.1.1 adds central update discovery:
- administrators can check the installed version from Settings;
- the app reads the public release catalog from tradeservice.ca;
- available update packages download from the official release center;
- no business or customer data is sent during the update check.

Version 3.1 adds team and dispatch foundations:
- administrator, dispatcher and technician roles;
- automatic safe migration of existing user accounts;
- team member creation, editing, password reset and activation;
- active-user limits enforced from licensed seat count;
- technician assignment on jobs;
- schedule search and filtering by technician;
- assigned technician displayed in job lists;
- technician financial and settings restrictions enforced server-side;
- existing clients, jobs and documents remain unchanged during upgrade.

Version 3.0 adds white-label installation and offline digitally signed licenses:
- Ed25519 signature validation;
- exact-domain and wildcard-subdomain binding;
- expiration or perpetual licenses;
- customer, plan and seat metadata;
- activation screen and license information in Settings;
- generic company branding, initials and document footer/service area;
- selectable Canadian time zone during installation;
- separate private license-issuing console for the product owner.

All functional improvements from Appliance Repair Pro 2.10 are retained.

Version 3.0.1 adds RSA/OpenSSL FSM2 licenses for shared hosting without PHP Sodium while retaining compatibility with older FSM1 keys.

Version 3.9.0: administrator-only deletion for clients, requests, jobs, draft documents, payments and expenses, plus invoice voiding, dependency checks, job file cleanup, payment balance recalculation and retained audit events.

Version 3.10.0: optional weekly working hours, full-day time off and server-side scheduling checks for team members.

Version 3.11.0: optional per-install Stripe Checkout card payment links for issued invoices and deposits, signed webhook confirmation and payment reconciliation flags.

Version 3.12.0: parts catalog, suppliers, immutable stock movements, job reservations, purchase orders, low-stock indicators and automatic invoice part lines.

Version 3.12.1: emergency hosting compatibility fix; inventory migration is isolated from core startup, purchase-order JSON uses compatible LONGTEXT storage, exports and record deletion tolerate a pending inventory migration.

Version 3.13.0: expanded expense capture, period-based accounting dashboard, GST/PST bookkeeping summary, cash collections, operating result, accounts-receivable aging and accountant-ready CSV exports. Existing expense records remain compatible and no database import is required.

Version 3.13.1: shared-hosting inventory repair. Inventory tables now use conservative quoted MySQL/MariaDB DDL, optional indexes cannot block setup, partial migrations resume safely and the exact failing table is reported to administrators. Existing records and tables are never removed.

Version 3.13.2: full stability audit. Strict calendar and time validation prevents invalid visits and purchase orders, failed attachment database writes no longer leave orphan files, dashboard receivables exclude drafts, invalid application URLs cannot crash Settings, and browser assets use fresh cache versions. No database import is required.

Version 3.14.0: secure one-click updates. Administrators can check and install the latest signed TradeService update directly from Settings. Packages are downloaded server-side from tradeservice.ca, verified with the licensing RSA key and SHA-256, checked for unsafe paths, backed up and installed with automatic rollback on failure. Protected data and uploads are never included in an update.

Version 3.15.0: expanded work orders. Jobs now include a unique work-order number, priority, source, job type, promised date and customer reference. Administrators and dispatchers can use quick workflow transitions, status and priority filters, operational KPI cards and overdue indicators. Existing jobs remain compatible and receive defaults when next saved.
