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: точный originhttps://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
shared-rendererполучает текущий upstreammain, выдаёт его SHA для обоих платформенных заданий, применяет патчи и собирает общий renderer на Linux.- Windows и Linux скачивают тот же SHA, применяют ту же серию и собирают native
modules + Electron с
--use-shared-renderer. - Сохраняются существующие 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:
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.