Remove the transitional website auth, admin hooks, SEO and hosted analytics together, then align the app routes, runtime configuration, tests and dependencies. These changes form one atomic cleanup because the filtered app must switch its identity and runtime surfaces as a unit.
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>
- .githooks/pre-push: runs vue-tsc before every push; blocks TypeScript
regressions locally without any manual developer setup
- postinstall: git config core.hooksPath .githooks activates the hook
automatically on yarn install (yarn 4, enableScripts: true)
- tests/smoke/apiHandlers.smoke.test.ts: import-level smoke tests for all
bug-report handlers + 3 core admin handlers — catches broken exports and
top-level runtime errors without a DB or running server
- tests/server/bugReport.test.ts: 16 unit tests covering comment validation,
contact-string building, model schema fields, status enum, and patch logic
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Screenshots: html2canvas 1.4.1 only parses rgb/hsl and throws on color-mix(),
which the app uses app-wide; the throw was swallowed so no screenshot was ever
captured. Swap to modern-screenshot (native SVG foreignObject — supports
color-mix/oklch), capture before opening the dialog, surface failures instead of
hiding them, and show a capture spinner on the Bug button.
State restore: the old handler only patched local vars/flags and loaded the tree
— it never entered the monitor screen or created a backend session, so nothing
happened. New restoreBugReportState() reuses startMonitoring() to spin up a real
session for the same flight/scenario from the snapshot, overlays saved
variables/flags, and replays the captured comm log. The Python backend has no
mid-session resume, so the session restarts at the flow start and the captured
state id is surfaced in a banner.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- New BugReport MongoDB model (comment, contact, userId, screenshot, pmState, status)
- POST /api/bug-reports — authenticated submit; emails emanuel@faktorxmensch.com on receipt
- GET/PATCH /api/admin/bug-reports + /[id] — admin list, detail with screenshot, status toggle
- /pm: "Bug" button in HUD captures viewport screenshot (html2canvas), shows annotation
canvas where testers can draw arrows; submits comment + contact + state snapshot
- /admin: new "Bug Reports" tab with open-count badge, screenshot expand, "Erledigt" toggle,
and "In /pm öffnen" link that restores captured engine state via ?restoreBugReport=<id>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The previous `vue-tsc --noEmit` step was a no-op: the root tsconfig uses
`files: []` with project references, so without `--build` it checks zero files
and always passes. Switch to `vue-tsc --build` (new `yarn typecheck` script)
and make the job blocking.
Fix the one error this surfaced: UsageEventDocument extended mongoose.Document,
whose `model` method collides with the `model: string` field. Use the
recommended pattern — a plain attrs interface passed to the Schema/Model
generics (hydrated docs still expose Document methods). Typecheck is now clean.
Bump actions/checkout@v5 and actions/setup-node@v5 to silence the Node.js 20
runtime deprecation (forced to Node 24 from 2026-06-16).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* Updated and with new company details (Faktor Mensch MEDIA UG), updated email to , and refreshed dates.
* Replaced references to old OpenSquawk UG with new entity information.
* Added module to for image optimization support.
* Adjusted dependencies: added , ensured is correctly listed.
* Regenerated to include new dependencies (, High performance, secure and easy-to-use image optimizer. (ipx v2.1.1)
USAGE ipx serve
COMMANDS
serve Start IPX Server
Use ipx <command> --help for more information about a command., Usage: svgo [options] [INPUT...]
Nodejs-based tool for optimizing SVG vector graphics files
Arguments:
INPUT Alias to --input
Options:
-v, --version output the version number
-i, --input <INPUT...> Input files, "-" for STDIN
-s, --string <STRING> Input SVG data string
-f, --folder <FOLDER> Input folder, optimize and rewrite all *.svg files
-o, --output <OUTPUT...> Output file or folder (by default the same as the
input), "-" for STDOUT
-p, --precision <INTEGER> Set number of digits in the fractional part,
overrides plugins params
--config <CONFIG> Custom config file, only .js is supported
--datauri <FORMAT> Output as Data URI string (base64), URI encoded
(enc) or unencoded (unenc)
--multipass Pass over SVGs multiple times to ensure all
optimizations are applied
--pretty Make SVG pretty printed
--indent <INTEGER> Indent number when pretty printing SVGs
--eol <EOL> Line break to use when outputting SVG: lf, crlf.
If unspecified, uses platform default.
--final-newline Ensure SVG ends with a line break
-r, --recursive Use with '--folder'. Optimizes *.svg files in
folders recursively.
--exclude <PATTERN...> Use with '--folder'. Exclude files matching
regular expression pattern.
-q, --quiet Only output error messages, not regular status
messages
--show-plugins Show available plugins and exit
--no-color Output plain text without color
-h, --help display help for command, etc.).