Skip to content

Rozwój

kauczu edited this page Oct 16, 2026 · 1 revision

Uruchomienie ze źródeł

Wymagany Node.js 22+.

npm install
npm run dev          # serwer :3000 + Vite :5173 (proxy /ws)

Otwórz http://localhost:5173 w dwóch kartach i dołącz do tego samego pokoju.

Wersja produkcyjna lokalnie:

npm run build
npm start            # http://localhost:3000 (tylko P2P)
node packages/server/dist/index.js --sfu   # z SFU na porcie 40000 (udp+tcp)

Aplikacja desktopowa:

npm run desktop

Jeśli npm run desktop zgłasza brak pliku binarnego Electrona: node node_modules/electron/install.js.

Testy

npm test             # serwer: sygnalizacja, polityka trybu, moderacja, SFU z prawdziwym workerem mediasoup; klient: format klatek E2EE
npm run build && npm run test:e2e   # end-to-end w Chromium (Playwright)

Testy end-to-end (packages/e2e) uruchamiają prawdziwy serwer i kilku uczestników w osobnych kontekstach Chromium z fałszywą kamerą i mikrofonem (--use-fake-device-for-media-stream). Sprawdzają m.in. wideo w obie strony, czat, przesłanie pliku (SHA-256), mesh 3 osób, przełączanie P2P ⇄ SFU, automatyczne przejście na SFU i powrót do P2P, awarię serwera w trakcie rozmowy, szyfrowanie, moderację, profile jakości, obraz w obrazie i to, że kamera i mikrofon nie działają poza rozmową. Drogę mediów weryfikują po statystykach getStats() każdego RTCPeerConnection (połączenie z SFU rozpoznają po ice-lite w SDP). Pierwsze uruchomienie wymaga przeglądarki: npx playwright install chromium.

CI (.github/workflows/ci.yml): typecheck, build, testy serwera i E2E na Linuksie, testy serwera na Windowsie, budowanie i test dymny obrazu Dockera. Po zielonym CI image.yml publikuje obraz ghcr.io/kauczu/tutaj.

Instalator Windows

npm run desktop:dist     # → packages/desktop/release/Tutaj-Setup-<wersja>.exe (~120 MB)

Instalator NSIS (x64, po polsku): wybór katalogu, skrót na pulpicie i w menu Start, instalacja dla bieżącego użytkownika (bez uprawnień administratora). Klient WWW jest dołączony jako zasób, a mediasoup-worker.exe leży poza app.asar, bo musi być uruchamiany jako osobny proces.

Wydania

  1. Podnieś version i wersje zależności @tutaj/* we wszystkich package.json, uruchom npm install (lockfile).
  2. Wypchnij zmiany i poczekaj na zielone CI.
  3. Wypchnij tag (git tag -a v0.7.5 -m "Tutaj 0.7.5" && git push origin v0.7.5).

Tag uruchamia release.yml (instalator, latest.yml i .blockmap w Releases – z nich korzysta autoaktualizacja aplikacji desktopowej) oraz image.yml (obraz Dockera z tagami X.Y.Z i X.Y). Ręczne uruchomienie release.yml zapisuje instalator tylko jako artefakt.

Wygląd

Motyw opiera się na grafice autora (Ziemia o świcie i Księżyc, brand/background.jpg): granat kosmosu jako tło, błękit atmosfery (#4d9aca) jako akcent, poświata horyzontu (#a8c4d8) na wyróżnieniach, szklane panele nad sceną i logo „Tutaj.eu.org by Lorem Ipsum”. Grafika jest dołączona do aplikacji jako WebP (packages/client/public/background.webp 1920 px, background-mobile.webp 1080 px), więc działa też offline. Kolory są zmiennymi CSS na początku packages/client/src/style.css.

Marka (nazwa, logo, grafiki) nie jest objęta licencją kodu – fork musi mieć własną, zob. NOTICE.md.

Clone this wiki locally