Adds new "deploy" job in .gitea/workflows/ci.yml that runs on push
to main (after PR is merged). Builds production bundle and rsyncs
it to /var/www/rublox-studio/build/ on both production servers
(S1 VM 124 via NAT 1998, S2 VM 124 directly via runner network).
Uses Gitea Secrets:
- DEPLOY_SSH_KEY: dedicated ed25519 key for CI, pubkey already
on ~min/.ssh/authorized_keys on both VM 124
- KNOWN_HOSTS: host-keys of both targets to prevent MITM
Also updates CONTRIBUTING.md:
- Maintainer workflow section explaining why even Lead works via PR
- Hotfix flow (always via PR, never direct push to main)
- DevPanel as fallback if CI deploy is broken
3 блокера перед запуском opensource-контрибьюторов:
1. CI Lint+Format убран format:check (206 файлов студии не
соответствуют prettier — отдельная задача формат-недели).
Build/Lint/Secret-scan/PR-size остаются.
2. Ассеты (93 МБ kubikon-assets/) теперь в Gitea Releases:
https://git.rublox.pro/rublox/studio/releases/tag/assets-v1
Скачка через scripts/fetch-assets.js (npm run fetch-assets +
автозапуск через postinstall).
3. Dev-login:
- IS_DEV расширен до 127.0.0.1 (vite на Windows слушает там)
- PleeseReg в dev показывает «Войти как гость» (?standalone=1)
или «Вставить JWT»; в prod — редирект на rublox.pro
- AuthContext поддерживает ?standalone=1 URL-параметр
- ModelThumbnails кеш v19→v20 чтобы старые failed-превью
не блокировали рендер после фикса IS_DEV