merge: sync upstream duckietm/Dev (b2318b9) into feat/react19-modernization

Absorbs 10 upstream commits (JSON5 config support, user-settings reset
password/email/username, wear-badge popup fix, login screen fix, About
update, offer selection logic, client path fix).

Conflicts resolved by keeping the modernized React 19 / Zustand / Form
Actions structure and porting upstream intent surgically:

- bootstrap.ts: kept GetConfiguration().init() pre-init + useEffectEvent,
  added JSON5 import (already wired into the parse fallback)
- LoginView.tsx: kept Form Actions (useActionState/useFormStatus); the
  upstream persistAccessTokenFromPayload(payload) fix was already
  integrated in the modernized SSO branch
- App.tsx: kept useEffectEvent import + StrictMode/ErrorBoundary umbrella
- vite.config.mjs: kept sirv plugin + react-compiler babel; absorbed
  upstream's base: process.env.VITE_BASE || './'
- package.json: kept superset (sirv, Vitest, Zustand, react-colorful,
  React Compiler) + added json5
- User-settings views: accepted upstream (duplicate of local cherry-pick
  2053c8e); notification badge bubble: accepted upstream fix

Verification: yarn typecheck clean, 193/193 Vitest, yarn build green.
This commit is contained in:
simoleo89
2026-05-18 20:14:58 +02:00
12 changed files with 505 additions and 20 deletions
@@ -5,6 +5,7 @@ export class NotificationAlertType
public static MODERATION: string = 'moderation';
public static EVENT: string = 'event';
public static NITRO: string = 'nitro';
public static NITRO_INFO: string = 'nitro-info';
public static SEARCH: string = 'search';
public static ALERT: string = 'alert';
}