fix for main origin 575a5adbeff0b46390fb08901c7166649255204c

This commit is contained in:
gandc committed 2026-10-11 03:11:48 +03:00
1 parent 703bf076e2
commit eef54a61cc
11 files changed
+1008 -703

No files matched your search

+86
View File
@@ -0,0 +1,86 @@
# GSCORD Desktop CI
Workflow собирает Fluxer Desktop для Windows x64 (portable EXE) и Linux x64
(AppImage, DEB). Патчи находятся в `patches/`, порядок — в `patches/series`.
`node scripts/apply-patches.mjs fluxer-src` сначала проверяет всю серию через
`git apply --check`, затем применяет её через `git apply`.
## Изменения
- `0001-self-hosted-instance.patch`: `STABLE_APP_URL`, `CANARY_APP_URL`, desktop
homepage и адреса миграции — `https://ds.gandc.ru`. Новый встроенный renderer
начинает discovery с этого сервера; явный launch override сохраняет приоритет.
- `0002-sso-navigation.patch`: точный origin `https://sso.gandc.ru` и возврат на
`https://ds.gandc.ru` разрешены для navigation/redirect. Проверка доверия к IPC
и разрешениям остаётся upstream: внешняя SSO-страница не становится локальным
доверенным renderer.
- `0003-webrtc-livekit.patch`: `relay → all` в main world для конструктора
`RTCPeerConnection` и `setConfiguration()`. Сохранён существовавший workaround
LiveKit offer-with-join через `CompressionStream`/`WebSocket`.
- `0004-gitea-updates.patch`: проверка последнего релиза через Gitea API,
ссылки на реальные assets с учётом платформы и архитектуры. Windows и Linux,
включая AppImage, используют ручное скачивание обновления. Для DEB не
предлагаются отсутствующие RPM/tar.gz assets. Пустой список ведёт на releases.
Проверок, валящих сборку при новых дефолтных Fluxer hostnames, нет. Неизменённые
upstream-адреса могут оставаться в исходниках. Если upstream изменит строки,
затрагиваемые патчами, обычный конфликт `git apply` остановит сборку.
## Workflow
1. `shared-renderer` получает текущий upstream `main`, выдаёт его SHA для обоих
платформенных заданий, применяет патчи и собирает общий renderer на Linux.
2. Windows и Linux скачивают тот же SHA, применяют ту же серию и собирают native
modules + Electron с `--use-shared-renderer`.
3. Сохраняются существующие runner labels и Linux Nexus/RAM-настройки.
Node.js — 26, как в текущем upstream build workflow. Версия pnpm читается из
upstream `package.json` (`11.27.0` на проверенном commit), а зависимости ставятся
с `--frozen-lockfile --prod=false`, чтобы `NODE_ENV=production` не исключал
инструменты сборки. Rust stable обновляется перед сборкой; для renderer нужен
`wasm32-unknown-unknown`, clang с WASM backend и llvm-ar. Путь `$CARGO_HOME/bin`
добавлен в RAM action, поскольку upstream устанавливает туда `wasm-bindgen`.
`FLUXER_MODULES=0` сохраняет полный локальный renderer: Gitea releases не являются
сервером Fluxer module manifests. `FLUXER_OFFLINE=0` сохраняет обычный сетевой
клиент. Теперь web-renderer обновляется вместе с desktop-сборкой, а не просто
подгружается как страница сервера. Совместимость renderer с API вашего сервера
нужно проверить запуском готового клиента.
В Windows добавлен checkout CI-репозитория и явные проверки exit code внешних
команд. `.gitattributes` сохраняет LF в патчах на Windows.
## Локальная проверка
Из корня этого репозитория с Node.js 24+ и Git:
```sh
node scripts/prepare-upstream.mjs
node scripts/apply-patches.mjs fluxer-src --check
node scripts/apply-patches.mjs fluxer-src
node --test scripts/customizations.test.mjs
```
`prepare-upstream.mjs` требует отсутствия `fluxer-src`, чтобы не затереть чужие
изменения. Для проверки конкретной версии передайте `UPSTREAM_SHA` с полным SHA.
Для тестов против другой директории можно задать `FLUXER_SOURCE`.
## Проверено 11 октября 2026
- Исходный GSCORD commit: `703bf076e2fe3a253cb6cf6591d64f6ddad54343`.
- Upstream `main`: `575a5adbeff0b46390fb08901c7166649255204c`.
- Все четыре патча прошли `git apply --check --whitespace=error-all` и реальное
применение на чистом checkout этого upstream commit.
- 12 проверок: адреса/начальный сервер, SSO allowlist, ICE constructor и
setConfiguration, subclass/default behavior, LiveKit, Gitea assets/архитектуры,
download links и выбор manual updater.
- YAML workflow и composite action разобраны; Bash-блоки прошли `bash -n`.
- Workflow прошёл actionlint 1.7.12. Для этого GitHub-ориентированного валидатора
только в временной копии заменён `gitea.run_number` на `github.run_number` и
указаны два пользовательских runner label; shellcheck/pyflakes отключены.
- JavaScript helper scripts и изменённый TypeScript проверены на синтаксис.
Полная установка зависимостей, TypeScript typecheck, native-сборка, упаковка и
живые проверки SSO/звонков здесь не запускались. Их нужно выполнить на ваших
CI runner; успешное применение патчей не подтверждает совместимость серверного
API или наличие всех системных библиотек в builder image.