AUTH PIVOT (user, 2026-09-23, per #106): no Gitea OIDC — simple local account creation in the DB instead; keep it minimal.
Add a session helper (getSessionPlayer()) and wrap every /api/* route (state, sim, planes, packages, market) to return 401 without a session. When unauthenticated, show a sign-in/account-creation screen instead of the dashboard.
UI PLACEMENT DECISION (user, 2026-09-23): additional panels — login/account, leaderboards, etc. — are opened from an "additional panels" button in the top-right of the map area's top bar.
Part of the #101 multiplayer plan.
AUTH PIVOT (user, 2026-09-23, per #106): no Gitea OIDC — simple local account creation in the DB instead; keep it minimal.
Add a session helper (getSessionPlayer()) and wrap every /api/* route (state, sim, planes, packages, market) to return 401 without a session. When unauthenticated, show a sign-in/account-creation screen instead of the dashboard.
UI PLACEMENT DECISION (user, 2026-09-23): additional panels — login/account, leaderboards, etc. — are opened from an "additional panels" button in the top-right of the map area's top bar.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of the #101 multiplayer plan.
AUTH PIVOT (user, 2026-09-23, per #106): no Gitea OIDC — simple local account creation in the DB instead; keep it minimal.
Add a session helper (getSessionPlayer()) and wrap every /api/* route (state, sim, planes, packages, market) to return 401 without a session. When unauthenticated, show a sign-in/account-creation screen instead of the dashboard.
UI PLACEMENT DECISION (user, 2026-09-23): additional panels — login/account, leaderboards, etc. — are opened from an "additional panels" button in the top-right of the map area's top bar.