TradeService Field Service Manager
PHP/MySQL licensed edition 3.3.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.
