v1.4.1
Patch release fixing upgrade-safety regressions found in a breaking-change audit of v1.4.0.
Fixed
- Skill management on upgraded installs. v1.4.0 added the
routing_tag_ids/routing_department_idsskill columns by editing the originalcreate_escalated_skills_tablemigration, which never re-runs on an existing install — so apps upgraded from an earlier version were missing the columns and every skill create/edit failed (Skill::saving()always writes them). Adds aSchema::hasColumn-guarded backfill migration (no-op on fresh installs). AssignTicketRequest(Admin/Agent assign endpoints) again validates thatagent_idexists, so unknown/garbage input returns a clean422instead of a500. UUID/string keys are still accepted.AssignmentService::__construct()$skillRoutingServiceis now optional (container fallback), restoring the v1.3.0new AssignmentService($manager)single-argument signature.
Upgrade notes (from < 1.4.0)
- The
int → int|stringwidening for UUID/string user-key support touches the publicTicketDriver::assignTicket()contract andTicketmethods (assign,follow,unfollow,isFollowedBy,scopeAssignedTo). If you implementTicketDriveror subclassTicketwithint-typed parameters, widen them toint|stringto avoid a PHP "must be compatible" fatal. Callers are unaffected. TicketAssigned::$agentIdis nowint|string(a string for UUID/string-keyed apps). Integer-keyed apps are unchanged.
Full changelog: v1.4.0...v1.4.1