mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-08-02 23:18:40 +08:00
Flight model (ground/air physics, SELECTED/NAV/APPR/AUTOLAND autopilot with STAR sequencing and ILS capture), bridge client that feeds the existing /api/bridge/* endpoints so /live-atc can't tell it apart from a real bridge, and the cockpit UI (PFD reuse, FCU, radio panel, Leaflet ND, three.js exterior, spawn presets at EDDF/EDDS). Design doc: docs/plans/2026-07-16-websim-design.md. Also adds a local-dev-only auto-login (/dev-login, server/api/dev/login.post.ts) that bypasses the invite-only login and MongoDB entirely via a fixed in-memory user, so require-auth pages are reachable for local testing even when the dev DB is unreachable. Hard-disabled outside development. Status: unit tests green (yarn test) and typecheck clean (yarn typecheck). Browser walkthrough of the actual cockpit (flying a preset, confirming telemetry reaches /live-atc) is not yet done — picking up from a fresh dev server + /dev-login?redirect=/flightlab/websim confirmed the spawn screen renders past auth, but full instrument/map/exterior verification is still outstanding. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
53 lines
1.5 KiB
JSON
53 lines
1.5 KiB
JSON
{
|
|
"name": "opensquawk",
|
|
"ssr": false,
|
|
"type": "module",
|
|
"private": true,
|
|
"license": "AGPL-3.0-only",
|
|
"scripts": {
|
|
"build": "nuxt build",
|
|
"dev": "nuxt dev",
|
|
"generate": "nuxt generate",
|
|
"preview": "nuxt preview",
|
|
"start": "node .output/server/index.mjs",
|
|
"postinstall": "nuxt prepare && (git config core.hooksPath .githooks 2>/dev/null || true)",
|
|
"typecheck": "vue-tsc --build",
|
|
"sharp:rebuild": "SHARP_IGNORE_GLOBAL_LIBVIPS=1 yarn rebuild sharp",
|
|
"import:decision": "tsx --tsconfig tsconfig.scripts.json scripts/import-decision-tree.ts",
|
|
"test": "tsx --tsconfig tsconfig.tests.json --test \"tests/**/*.test.ts\" \"server/**/*.test.ts\" \"shared/**/*.test.ts\""
|
|
},
|
|
"dependencies": {
|
|
"@nuxt/image": "^2.0.0",
|
|
"@nuxtjs/tailwindcss": "^6.14.0",
|
|
"@pinia/nuxt": "^0.11.3",
|
|
"dotenv": "^17.3.1",
|
|
"fluent-ffmpeg": "^2.1.3",
|
|
"leaflet": "^1.9.4",
|
|
"modern-screenshot": "^4.7.0",
|
|
"nodemailer": "^8.0.1",
|
|
"nuxt": "^4.3.1",
|
|
"nuxt-aos": "^1.2.6",
|
|
"nuxt-module-hotjar": "^1.3.4",
|
|
"nuxt-mongoose": "^1.0.6",
|
|
"openai": "^6.22.0",
|
|
"pinia": "^3.0.4",
|
|
"three": "^0.183.1",
|
|
"vue": "^3.5.28",
|
|
"vue-router": "^5.0.2",
|
|
"vuetify": "^3.11.8",
|
|
"vuetify-nuxt-module": "^0.19.5"
|
|
},
|
|
"engines": {
|
|
"node": "22.x"
|
|
},
|
|
"packageManager": "yarn@4.9.4",
|
|
"devDependencies": {
|
|
"@types/fluent-ffmpeg": "^2.1.28",
|
|
"@types/leaflet": "^1.9.21",
|
|
"@types/three": "^0.183.0",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5.9.3",
|
|
"vue-tsc": "^3.2.4"
|
|
}
|
|
}
|