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
33 lines
885 B
JavaScript
33 lines
885 B
JavaScript
import { defineConfig } from "vite";
|
|
import laravel, { refreshPaths } from "laravel-vite-plugin";
|
|
import tailwindcss from "@tailwindcss/vite";
|
|
import preact from "@preact/preset-vite";
|
|
// import react from '@vitejs/plugin-react';
|
|
// import vue from '@vitejs/plugin-vue';
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
tailwindcss(),
|
|
preact(),
|
|
laravel({
|
|
input: [
|
|
"resources/css/filament/admin/theme.css",
|
|
"resources/js/admin/app.js",
|
|
"resources/js/admin/routeforge/main.tsx",
|
|
// "resources/js/frontend/app.js",
|
|
// "public/assets/global/js/jquery.js",
|
|
// "public/assets/global/js/simbrief.apiv1.js",
|
|
],
|
|
refresh: [...refreshPaths, "app/Filament/**", "modules/**/**"],
|
|
}),
|
|
],
|
|
// server: {
|
|
// hmr: {
|
|
// host: "localhost",
|
|
// },
|
|
// watch: {
|
|
// usePolling: true,
|
|
// },
|
|
// },
|
|
});
|