From eef1d14492987f3132e16cc20d35d140a1074089 Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Sat, 12 Sep 2026 11:55:22 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20EC=20fork=20now=20on=20upstream=20v0.25?= =?UTF-8?q?.0=20=E2=80=94=20Node=2024=20/=20pnpm=2011=20/=20oxlint=20toolc?= =?UTF-8?q?hain?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Records the toolchain decisions taken with the 2026-09 upstream sync of LotusGuild/element-call (accept upstream: pnpm 11 + Node >= 22.13, oxlint/oxfmt replacing eslint/prettier, matrix-js-sdk develop pin), the tag-driven publish flow, and the pending 0.25.0-lotus.1 bundle. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA --- LOTUS_TODO.md | 6 ++++-- README.md | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index 244f939ca..640474dfc 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -372,9 +372,11 @@ Re-run `/_matrix/client/versions` + `unstable_features` after each Synapse upgra ### Element Call fork — operational reference -Fork = `LotusGuild/element-call` (branch `lotus`, from upstream tag `v0.20.1`); cinny consumes the npm package `@lotusguild/element-call-embedded` (built bundle copied into `public/element-call/`). +Fork = `LotusGuild/element-call` (branch `lotus`, upstream base **v0.25.0** since the 2026-09 sync — was v0.20.1); cinny consumes the npm package `@lotusguild/element-call-embedded` (built bundle copied into `public/element-call/`). -**Publish a new version (manual; needs the Gitea npm token):** bump `embedded/web/package.json` (current unpublished `0.20.1-lotus.2`) → `pnpm run build:embedded` (Node 24, pnpm 10.33) → `cd embedded/web && npm version --no-git-tag-version && npm publish` (Gitea registry) → in cinny bump the `@lotusguild/element-call-embedded` pin (currently `0.20.1-lotus.1`) → `npm install` → build. +**Toolchain (upstream-driven, accepted 2026-09):** Node ≥ 22.13 (`.node-version` = 24) and **pnpm 11** via `corepack` (`packageManager` field) — pnpm 10 rejects the lockfile and Node 20 cannot build. Lint is **oxlint + oxfmt** (upstream dropped eslint/prettier in v0.25.0): `pnpm lint` (tsc + oxlint + knip) and `pnpm format:check` / `pnpm format`. `matrix-js-sdk` is pinned to a `matrix-org/matrix-js-sdk#develop` commit in the lockfile, as upstream ships it. Fork CI (`.gitea/workflows/ci.yml`) hard-gates lint + format + `pnpm test:unit` before build, with `concurrency: cancel-in-progress`. + +**Publish a new version (CI on tag push; needs the `GITEA_NPM_TOKEN` secret):** the published version is derived from the git tag — bump `embedded/web/package.json` (currently `0.25.0-lotus.1`, tag `v0.25.0-lotus.1` created locally, unpublished until pushed), push `lotus`, then `git push lotus v0.25.0-lotus.1`; the `publish` job builds and publishes to the Gitea registry. Always push (never delete) the annotated `vX.Y.Z-lotus.N` tag for every published version. Then in cinny bump the `@lotusguild/element-call-embedded` pin (currently `0.20.1-lotus.1`) → `npm install` → build. Manual fallback: `pnpm run build:embedded && cd embedded/web && npm version --no-git-tag-version && npm publish`. **`io.lotus.*` widget actions** (add new toWidget actions to the enum + `LOTUS_TO_WIDGET_ACTIONS` in `src/lotus/lotusActions.ts`; only send AFTER call-join or a 10s timeout fires): diff --git a/README.md b/README.md index 685d7330e..30c76d686 100644 --- a/README.md +++ b/README.md @@ -196,7 +196,7 @@ The dev server defaults to **port 8080** (`vite.config.js`); if 8080 is already ### 🔱 Element Call fork ("Lotus Call") — LIVE Voice/video channels embed **Element Call**, which is now our **self-built fork** -(`@lotusguild/element-call-embedded` `0.20.1-lotus.1`, source at +(`@lotusguild/element-call-embedded` `0.20.1-lotus.1`; `0.25.0-lotus.1` is built and tagged on the fork, pending publish — source at `LotusGuild/element-call`), published to our private Gitea npm registry and served same-origin. We no longer depend on the upstream prebuilt bundle, so in-call behavior is editable source instead of fragile DOM/widget hacks.