diff --git a/LOTUS_FEATURES.md b/LOTUS_FEATURES.md index ccbc8ff74..bbc6440e4 100644 --- a/LOTUS_FEATURES.md +++ b/LOTUS_FEATURES.md @@ -26,8 +26,9 @@ Last updated: July 2026. 17. [Notifications](#notifications) 18. [Server Integration](#server-integration) 19. [Infrastructure](#infrastructure) -20. [Desktop App Features](#desktop-app-features) -21. [Key Custom Files](#key-custom-files) +20. [Localization](#localization) +21. [Desktop App Features](#desktop-app-features) +22. [Key Custom Files](#key-custom-files) --- @@ -1408,6 +1409,22 @@ The session persists as ONE atomic `cinny_session_v1` JSON write (previously ~10 --- +## Localization + +Lotus Chat is **English-only for now**, by explicit decision (Sept 2026 audit, #53). The i18next +mechanism (`i18next-browser-languagedetector` + `public/locales/{en,de}.json`, wired in +`src/app/i18n.ts`) is real and still used by the ~11 upstream-inherited files that call +`useTranslation()`, but none of the Lotus-added UI (presence picker, calls/soundboard, avatar +decorations, seasonal settings, keyboard shortcuts help, toasts, etc.) is routed through it. Letting +the language detector pick a non-English browser locale therefore produced a UI that was only +partially translated. `src/app/i18n.ts` now sets `supportedLngs: ['en']` so the whole app renders +consistently in English regardless of browser locale, while leaving the detector/backend/`de.json` +in place. Re-enabling another language requires two things: (1) route Lotus strings through +`useTranslation()`/`public/locales/.json` like the existing localized files, then (2) drop (or +extend) `supportedLngs` in `src/app/i18n.ts` — a one-line change. + +--- + ## Desktop App Features Native capabilities of the Lotus Chat **Tauri v2** desktop app (Windows, macOS, Linux) on top of the shared web client. Web hooks live in `src/app/hooks/useTauri*.ts` (each no-ops in the browser) and call Rust commands in `cinny-desktop/src-tauri/src/native/*`. Windows-only pieces are `#[cfg(target_os = "windows")]`, compile-verified in CI (Windows runners). diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index 03953922b..4e50d4b05 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -411,4 +411,5 @@ Before marking a feature complete: `npx tsc --noEmit` (0 errors) · `npx eslint - [ ] **Dedicated `desktop-linux` runner** (infra) — concurrency only collapses _burst_ stacking; a single in-flight `build-linux` (Tauri, `ubuntu-latest`) still shares the runner with web CI and can queue a web CI/deploy up to ~30 min. Fix = register a 2nd Linux act_runner labelled `desktop-linux` (root, network, RAM for a Tauri build; do NOT also label it `ubuntu-latest`) and point only `build-linux: runs-on` at it. Relabeling without a matching runner hangs the job forever. - [ ] **Debounce the desktop trigger** — `trigger-desktop` fires a full desktop build on _every_ lotus commit; consider tag/`workflow_dispatch`/schedule-gating to decouple desktop cadence from web commits (biggest remaining runner-load source). - [ ] **Verify Gitea ≥ 1.24** actually honors workflow `concurrency` (older silently ignores it → safe no-op, but the change is then inert — confirm on a test burst). -- [ ] **Deferred (chosen-not-now):** build-once/deploy-the-artifact (kill the CI-then-deploy double build); CI-gate the `lotus-build.sh` upstream-merge path (currently builds+deploys+then pushes, bypassing CI). +- [ ] **Deferred (chosen-not-now):** build-once/deploy-the-artifact (kill the CI-then-deploy double build). +- [x] **CI-gate the `lotus-build.sh` upstream-merge path** — DONE (matrix repo, cinny#98): the script now merges, runs the local gates (npm ci, typecheck, eslint, prettier, tests), and pushes; CI + `lotus_deploy.sh` deploy exactly like any other lotus commit. A failed gate leaves the merge local (not pushed). diff --git a/README.md b/README.md index a3abe95d5..f95f14c4a 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,7 @@ The Lotus Chat logo (`public/res/Lotus.png`) is a derivative work based on the o - Pending knock requests shown in the members list for room admins with a live badge count on the Members button - Homeserver support contact displayed in Help & About (MSC1929) - Server notice rooms are visually distinct from regular DMs +- Known limitation: the UI is English-only for now — Lotus-added surfaces aren't yet localized, so language selection is restricted to English rather than showing a partially-translated UI (see [`LOTUS_FEATURES.md`](./LOTUS_FEATURES.md#localization)) --- @@ -229,3 +230,5 @@ NODE_OPTIONS=--max_old_space_size=6144 npm run build ``` edit → commit → git push → ~11 min → live at chat.lotusguild.org ``` + +CI (`.gitea/workflows/ci.yml`) also runs a gitleaks secret scan, builds and smoke-tests the Docker image (`docker build`, boot + security-header checks against `docker-nginx.conf`), and dependency updates are proposed weekly by Renovate (`.gitea/workflows/renovate.yml`, config in `renovate.json`).