docs: CI additions, localization decision, upstream-merge path now CI-gated
CI / Build & Quality Checks (push) Successful in 1m25s
CI / Secret scan (gitleaks) (push) Failing after 6s
CI / Trigger Desktop Build (push) Successful in 6s
CI / Docker image build & smoke test (push) Failing after 5s
CI / Playwright smoke (e2e) (push) Successful in 2m12s
CI / Build & Quality Checks (push) Successful in 1m25s
CI / Secret scan (gitleaks) (push) Failing after 6s
CI / Trigger Desktop Build (push) Successful in 6s
CI / Docker image build & smoke test (push) Failing after 5s
CI / Playwright smoke (e2e) (push) Successful in 2m12s
Refs #53 #94 #95 #98 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
+19
-2
@@ -26,8 +26,9 @@ Last updated: July 2026.
|
|||||||
17. [Notifications](#notifications)
|
17. [Notifications](#notifications)
|
||||||
18. [Server Integration](#server-integration)
|
18. [Server Integration](#server-integration)
|
||||||
19. [Infrastructure](#infrastructure)
|
19. [Infrastructure](#infrastructure)
|
||||||
20. [Desktop App Features](#desktop-app-features)
|
20. [Localization](#localization)
|
||||||
21. [Key Custom Files](#key-custom-files)
|
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/<lng>.json` like the existing localized files, then (2) drop (or
|
||||||
|
extend) `supportedLngs` in `src/app/i18n.ts` — a one-line change.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Desktop App Features
|
## 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).
|
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).
|
||||||
|
|||||||
+2
-1
@@ -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.
|
- [ ] **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).
|
- [ ] **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).
|
- [ ] **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).
|
||||||
|
|||||||
@@ -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
|
- 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)
|
- Homeserver support contact displayed in Help & About (MSC1929)
|
||||||
- Server notice rooms are visually distinct from regular DMs
|
- 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
|
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`).
|
||||||
|
|||||||
Reference in New Issue
Block a user