phpvms/app
Nabeel Shahzad 370c2f6fdf
feat(routeforge): admin batch flight composer + lint pipeline
New Filament page at /admin/route-forge: compose dozens of scheduled
flights across five topologies (Hub→Spokes, Spokes→Hub, Hub & Spokes,
Mesh, Chain), preview rows live, lint for operational issues, commit
as one Flight Bundle in a single atomic transaction.

Frontend: TypeScript + Preact 10 + @preact/signals + @date-fns/tz.
Separate Vite entry, 26.69 KB gzip (well under the 60 KB target).
Client-side generator + 12 lint rules; localStorage draft resume.

Backend: RouteForge service + 12 PHP lint rule classes + duplicate
checker + commit orchestration (Flight::withoutEvents + single
bundle-level activity log). Six endpoints under
/admin/route-forge/api/, gated by permission:create:flight.

Bundle picker is dual-mode — type a new name to create, or pick an
existing bundle to append flights to (read-only summary, server skips
the bundle persist step and stamps the existing id onto new flights).

Airport picker: click-to-open dropdown with 50-result alpha pages,
checkbox rows for multi-select, prefix-only search via new
searchMode=prefix opt-in on the shared AirportSearchQueryV1
(/api/airports default substring behavior preserved).

Quality: tsc strict mode clean, oxlint 0/0, phpstan no errors,
pint passing. Pest scaffolding deferred per workflow.

Tracking: openspec/changes/route-forge — 66/106 tasks complete
(sections 1, 2, 4, 5, 6, 7, 8; Pest 4.6/5.3/6.4 + sections 9–12
remaining).

# Conflicts:
#	package-lock.json
#	package.json
2026-05-24 11:55:33 -05:00
..
Casts [8.x] refactor: use native php enum instead of class (#2210) 2026-05-12 16:29:41 -05:00
Console/Commands refactor: migrate to Laravel 13 attribute syntax 2026-05-24 10:40:26 -05:00
Contracts refactor: remove VaCentral package and update airport lookup implementation 2026-05-22 18:27:54 +02:00
Cron refactor(schema-modernization): apply PR #2215 review feedback 2026-05-23 12:05:09 -05:00
Enums Updating styling and looks of the installer/admin/system filament pages (#2211) 2026-05-20 11:05:32 -05:00
Events [8.x] feature: upgrade to Laravel 13 (#2204) 2026-05-06 11:27:21 -05:00
Exceptions [8.x] refactor: use native php enum instead of class (#2210) 2026-05-12 16:29:41 -05:00
Filament feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
Http feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
Jobs feat(schema-modernization): foundations for RouteForge 2026-05-23 12:05:09 -05:00
Listeners [8.x] refactor: use native php enum instead of class (#2210) 2026-05-12 16:29:41 -05:00
Livewire/Filament Updating styling and looks of the installer/admin/system filament pages (#2211) 2026-05-20 11:05:32 -05:00
Models feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
Notifications [8.x] refactor: use native php enum instead of class (#2210) 2026-05-12 16:29:41 -05:00
Observers feat(schema-modernization): foundations for RouteForge 2026-05-23 12:05:09 -05:00
Policies/Filament Updating styling and looks of the installer/admin/system filament pages (#2211) 2026-05-20 11:05:32 -05:00
Providers refactor: remove VaCentral package and update airport lookup implementation 2026-05-22 18:27:54 +02:00
Queries feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
Services feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
Support feat(routeforge): admin batch flight composer + lint pipeline 2026-05-24 11:55:33 -05:00
Traits [8.x] feature: upgrade to Laravel 13 (#2204) 2026-05-06 11:27:21 -05:00
Utils [8.x] refactor: migrate to the new modern laravel structure (#2207) 2026-05-07 14:58:11 -05:00
Widgets [8.x] refactor: use native php enum instead of class (#2210) 2026-05-12 16:29:41 -05:00
helpers.php [8.x] fix(helpers): add back deprecated public_mix and public_url functions (#2208) 2026-05-12 16:35:02 -05:00