Live2D od A do Z: Wise One (ChatGPT + Cubism Editor PRO)

Kompletny proces: od jednego obrazka wygenerowanego w ChatGPT, przez warstwowy plik PSD, po ruszającą się postać Live2D na stronie ariku.pl i w Lunecie. Pisany na żywo przy pierwszym modelu — Wise One v1 (postać od pasa w górę), październik 2026.

Poradnik ma dwie części:

Program: Live2D Cubism Editor 5.3 (PRO, trial 42 dni od 2026-10-17). Plik wejściowy: C:\wise-one\wise-one-v1-3x.psd (3072×4608 px). Wynik: C:\wise-one\wise-one-v1.cmo3 (projekt) i C:\wise-one\runtime\ (pliki dla strony). Źródła pipeline'u: repo Luneta, katalog assets/design/live2d/ (README, scripts/, workflows/, chatgpt/PROMPTY.md). Zadania: Vikunja, projekt 15, epik 680.


CZĘŚĆ I — DLA POCZĄTKUJĄCYCH

1. Co w ogóle robimy

Live2D to nie animacja 3D ani film. Bierzemy płaski rysunek pocięty na warstwy (oczy, usta, włosy, ciało…) i każdą warstwę zamieniamy w gumową siatkę, którą da się wyginać. Potem uczymy program, jak ma wyglądać postać przy różnych ustawieniach suwaków („głowa w lewo”, „oczy zamknięte”, „usta otwarte”). Strona internetowa porusza tymi suwakami w czasie rzeczywistym — i postać „żyje”.

Cały proces w 7 krokach

# Etap Narzędzie Kto / ile czasu u nas
1 Obraz bazowy postaci ChatGPT (generowanie obrazów) właściciel, kilka podejść
2 Warianty (zamknięte oczy, usta A/I/U/E/O, miny, części zasłonięte) ChatGPT — edycje 1:1 obrazu bazowego właściciel, ~20 edycji
3 Pocięcie na warstwy ComfyUI + See-through + skrypty Pythona automat na ariku-pc
4 Plik PSD gotowy pod Live2D skrypt build_psd.py automat
5 Rigging (siatki, deformery, parametry) Live2D Cubism Editor ręcznie — to jest serce pracy
6 Eksport dla przeglądarki Cubism Editor → .moc3 + .model3.json kilka kliknięć
7 Osadzenie na stronie / w Lunecie pixi.js + pixi-live2d-display kod

Jeśli dopiero zaczynasz — etapy 1–4 możesz pominąć, bo PSD Wise One jest już gotowy. Zaczynasz od kroku 5 (sekcja 4 poniżej).

2. Słowniczek (5 pojęć, które trzeba znać)

Pojęcie Co to jest
ArtMesh Jedna warstwa z PSD zamieniona w „gumową” siatkę trójkątów. Ruszając punktami siatki, wyginamy obrazek.
Deformer Niewidzialny „uchwyt” na grupie ArtMeshy. Warp wygina jak siatka, Rotation obraca wokół punktu. Deformery można zagnieżdżać (głowa w ciele).
Parametr Suwak, np. ParamAngleX = obrót głowy w lewo/prawo. Program na stronie steruje właśnie suwakami.
Keyform (klucz) Zapamiętany kształt dla konkretnej wartości suwaka (np. głowa przy −30 i przy +30). Pomiędzy kluczami Cubism sam liczy płynne przejście.
Clipping (maska) Warstwa widoczna tylko w obrysie innej warstwy — tęczówka nie wychodzi poza białko oka.

Złota zasada: nazwy parametrów zostawiamy standardowe (ParamAngleX, ParamEyeLOpen…). Dzięki temu mruganie, oddech, patrzenie za kursorem i ruch ust działają na stronie bez pisania kodu.

3. FREE czy PRO?

Cubism Editor ma wersję FREE (darmową, z limitami) i PRO (płatną, z 42-dniowym trialem).

Plan na trial: tydzień 1 — rig twarzy i eksport, który działa na stronie. Reszta — szlify.

4. Pierwsze uruchomienie

  1. Uruchom C:\Program Files\Live2D Cubism 5.3\CubismEditor5.exe.
  2. Jeśli pojawi się okno o nowej wersji — kliknij Cancel (po japońsku キャンセル). Nie klikaj „Open” (開く) — to zamyka edytor i otwiera stronę pobierania. Wersja 5.3 wystarczy.
  3. Interfejs jest już przełączony na angielski. (Gdyby nie był: ustawienia programu → język → English, potem restart edytora.)
  4. Przy pierwszym uruchomieniu wybierz licencję PRO (trial).

5. Co jest w naszym PSD

Warstwy (od góry do dołu), wszystkie w pełnym rozmiarze płótna 3072×4608:

Grupa Warstwy Do czego
~variants (ukryta) ~eyelid_closed_l/r, ~eyes_left/right/up/down, ~brow_surprised/angry/sad_l/r, ~face_surprised/angry/sad/wink/blush, ~mouth_A/I/U/E/O, ~mouth_smile, ~mouth_pout, ~ears_flat_l/r Wzorce do kluczy: zamknięte oczy, miny, kształty ust. Nie są to stałe części postaci.
front_hair front_hair grzywka (jeden blok)
ears ears_l, ears_r uszy
eyes eyebrow_l/r, eyelash_l/r, irides_l/r, eyewhite_l/r brwi, rzęsy, tęczówki, białka
head mouth, nose, face, neckwear, head_bald twarz i „łysa” głowa pod włosami
body hand_l/r, sleeve_l/r, topwear, neck ciało
back_hair back_hair włosy z tyłu

Końcówki _l / _r to lewa / prawa strona postaci (nie nasza). Warstwy pod spodem (np. head_bald, skóra pod grzywką) są dorysowane — dzięki temu przy ruchu nie widać dziur.

6. Import PSD

  1. Przeciągnij wise-one-v1-3x.psd do okna edytora (albo File → Open i wybierz PSD). Cubism utworzy nowy model, a każda warstwa stanie się ArtMeshem.
  2. Sprawdź paletę Parts (lewa strona): czy jest grupa ~variants z ukrytymi warstwami. Jeśli jej nie ma — zatrzymaj się, bez niej nie zrobimy mrugania ani min.
  3. Od razu zapisz: File → Save As → C:\wise-one\wise-one-v1.cmo3. Od teraz Ctrl+S po każdym etapie.

Nowy model ma już gotowy zestaw standardowych parametrów (paleta Parameters po prawej). Nie twórz ich od nowa — używaj tych, które są.

7. Siatki (Auto Mesh)

Siatka decyduje, jak gładko obrazek się wygina. Więcej punktów = ładniejszy ruch, ale wolniej.

  1. Zaznacz wszystkie ArtMeshe (klik w obszar roboczy, Ctrl+A).
  2. Uruchom automatyczne generowanie siatki (menu Modeling → Mesh, ikonka siatki na pasku). Ustawienie standardowe wystarczy dla ciała i włosów.
  3. Dla oczu, ust i brwi powtórz z gęstszym ustawieniem (mniejszy rozstaw punktów) — te części ruszają się najbardziej i są małe.

8. Deformery (szkielet)

Układ, który chcemy dostać (od zewnątrz do środka):

Body (ruch ciała, ParamBodyAngleX/Y/Z)
 ├─ Breath (oddech, ParamBreath) ── topwear, sleeve_l/r, hand_l/r
 ├─ neck, back_hair
 └─ Head (obrót głowy, ParamAngleX/Y/Z) ── head, eyes, ears, front_hair

Szybka droga (PRO): automatyczna mimika

  1. Zaznacz części głowy.
  2. Uruchom Automatic Generation of Facial Motion (menu Modeling). Program sam tworzy deformery głowy i klucze dla ParamAngleX/Y/Z.
  3. Poruszaj suwakami ParamAngleX i ParamAngleY — głowa ma się obracać bez dziur i rozjazdów.
  4. Jeśli narzędzie nie rozpozna naszych warstw, robimy to ręcznie (niżej).

Ręcznie

  1. Zaznacz ArtMeshe głowy → Create Rotation Deformer → nazwij Head. Punkt obrotu ustaw na szyi.
  2. Wybierz ParamAngleZ, kliknij Add 3 keys (−30 / 0 / +30), na skrajnych kluczach przekręć deformer.
  3. Dla ParamAngleX/Y dodaj nad głową Warp Deformer i na skrajnych kluczach lekko „przesuń” twarz w stronę obrotu (bliższa strona szersza, dalsza węższa).
  4. Tak samo deformer Body dla ParamBodyAngleX (zakres ±10 — ciało rusza się mniej niż głowa).

9. Parametry krok po kroku

Schemat zawsze ten sam: zaznacz obiekt → wybierz parametr → Add 2 keys / Add 3 keys → ustaw suwak na skraj → zmień kształt / przezroczystość.

Mruganie: ParamEyeLOpen, ParamEyeROpen (0 = zamknięte, 1 = otwarte)

Patrzenie: ParamEyeBallX, ParamEyeBallY (−1 … +1)

  1. Najpierw maska: zaznacz irides_l → w Inspectorze w polu Clipping wpisz ID ArtMesha eyewhite_l. To samo dla irides_r ← eyewhite_r. Teraz tęczówka nie wyjdzie poza białko.
  2. Dodaj 3 klucze i przesuń tęczówki o tyle pikseli (wyliczone z wise-one-v1-3x-gaze.json, już ×3):
w lewo (X=−1) w prawo (X=+1) w górę (Y=+1) w dół (Y=−1)
lewe oko (irides_l) ok. −49 px ok. +53 px ok. −39 px ok. +50 px
prawe oko (irides_r) ok. −57 px ok. +44 px ok. −47 px ok. +42 px

(Wartości „w górę/w dół” to przesunięcie w pikselach obrazka — minus = w górę.) Warstwy ~eyes_left/right/up/down pokazują, jak to ma wyglądać.

Usta: ParamMouthOpenY i ParamMouthForm

Oddech: ParamBreath (0 … 1)

Na deformerze Breath: przy 1 lekko unieś ramiona i tors (kilka pikseli w górę). Mniej znaczy lepiej.

Dodatki (gdy podstawy działają)

Parametr Warstwy Jak
ParamBrowLY/RY, ParamBrowLAngle/RAngle, ParamBrowLForm/RForm eyebrow_* ↔ ~brow_surprised/angry/sad_* wzorce jako skrajne klucze
ParamCheek ~face_blush 0–1, sama przezroczystość
ParamEarFlat (własny parametr) ears_l/r ↔ ~ears_flat_l/r przy 1 ukryj zwykłe uszy
ParamHairFront, ParamHairBack front_hair, back_hair pod fizykę (sekcja 10)

10. Fizyka włosów (opcjonalnie)

  1. Na front_hair i back_hair dodaj klucze dla ParamHairFront / ParamHairBack (włosy lekko wychylone w lewo przy −1 i w prawo przy +1).
  2. Otwórz ustawienia fizyki (menu Modeling → Physics). Wejście: ParamAngleX, ParamBodyAngleX; wyjście: ParamHairFront, ParamHairBack. Sprawdź podglądem — włosy mają „dobiegać” za głową.
  3. Uwaga: grzywka jest w v1 jednym kawałkiem, więc kołysze się cała naraz. Pasma rozdzielimy w v2.

11. Miny i animacje

12. Eksport na stronę

  1. Ustaw grupy specjalne (żeby strona wiedziała, czym mrugać i ruszać ustami):

    • EyeBlink = ParamEyeLOpen, ParamEyeROpen
    • LipSync = ParamMouthOpenY

    W 5.3 robi się to w ustawieniach Eye Blink / Lip Sync (menu Modeling). Jeśli nazwa jest inna, szukaj pozycji ze słowem „Eye Blink”.

  2. File → Export For Runtime → Export as moc3 file:

    • rozmiar tekstury 4096 (dla Lunety wystarczy 2048),
    • zaznacz eksport fizyki i model3.json,
    • katalog: C:\wise-one\runtime\.
  3. Miny i animacje eksportujemy osobno (z trybu Animation) do tego samego katalogu.

  4. W katalogu powinny się znaleźć: *.moc3, *.model3.json, *.physics3.json, tekstury *.png, *.exp3.json, *.motion3.json.

  5. Gotowe pliki odbiera ariku-pc (scp z C:\wise-one\runtime\) i wstawia na ariku.pl / do Lunety.

13. Najczęstsze problemy

Objaw Przyczyna Co zrobić
Edytor zamknął się przy starcie kliknięto „Open” w oknie aktualizacji uruchom ponownie, wybierz Cancel
Brak grupy ~variants ukryte warstwy nie weszły przy imporcie sprawdź import PSD, nie idź dalej
Tęczówka wychodzi poza oko brak clippingu irides_* → Inspector → Clipping = eyewhite_*
Dziury przy obrocie głowy za mało siatki / za duży zakres gęstsza siatka, mniejszy wychył kluczy
Na stronie postać nie mruga brak grupy EyeBlink sekcja 12.1 i ponowny eksport
Usta nie ruszają się przy mowie brak grupy LipSync albo inna nazwa parametru parametr musi się nazywać ParamMouthOpenY

CZĘŚĆ II — DLA ZAAWANSOWANYCH

14. Architektura pipeline'u i podział ról

Decyzja z 2026-10-17: każde narzędzie robi to, w czym jest najlepsze, a człowiek zatwierdza każdy etap.

Co Narzędzie Dlaczego tak
Obraz bazowy i edycje 1:1 (oczy, usta, brwi, uszy, części zasłonięte) ChatGPT (generowanie/edycja obrazów), prompty w chatgpt/PROMPTY.md najlepiej trzyma styl i pozę przy edycji; właściciel pobiera wyniki do ~/Downloads
Maski warstw i głębia ComfyUI + See-through (scripts/comfy_run.py, workflowy w workflows/) rozkłada postać anime na semantyczne warstwy razem z częściami zasłoniętymi
Piksele warstw, poprawki, złożenie, PSD skrypty Pythona (scripts/), venv /mnt/nvme/ai/comfy-venv deterministyczne, powtarzalne, sprawdzalne liczbowo
Rig Cubism Editor 5.3 PRO, ręcznie siatek, deformerów, kluczy i fizyki nie da się sensownie zautomatyzować
Runtime pixi.js 6 + pixi-live2d-display 0.4 + Cubism Core stabilny, przetestowany stos dla Cubism 4/5 .moc3

Pliki robocze leżą poza gitem (/mnt/nvme/ai/wise-one/ na ariku-pc); assets/design/ w Lunecie również nie jest commitowany bez prośby właściciela.

Bramki (G) — bez akceptu nie idziemy dalej

Etap Wynik Bramka
E1 baza jedna postać, bez tekstu i tła, oczy w pełni otwarte, usta zamknięte zamrożona — od teraz wszystkie edycje robimy od niej
E2 edycje ChatGPT ~20 wariantów 1:1 każda edycja oceniona: sylwetka bez zmian?
E3 See-through warstwy na pełnym płótnie kontaktówka warstw
E4 czyszczenie poprawione twarz, szyja, tors, rękawy, łysa głowa compose_check.py: złożenie ≈ baza
E5 ruch i mimika warianty, tęczówki, powieki, brwi, usta, uszy, gaze.json kontaktówka + podgląd
E6 PSD wise-one-v1-3x.psd 3072×4608 import w Cubism, ~variants obecna
E7 rig .cmo3 + eksport runtime test na stronie

Do przeglądu każdej bramki: contact_sheet.py (kontaktówka warstw na szachownicy) + composite i diff.png.

15. ChatGPT — obraz bazowy i edycje

Obraz bazowy (E1) — wymagania

Edycje 1:1 (E2) — reguła numer jeden

Każda edycja ma zmieniać tylko jedną rzecz. Szablon promptu, którego się trzymamy:

Edytuj załączony obraz. Zmień TYLKO: <co dokładnie>.
Kadr, poza, proporcje, styl, kolory, oświetlenie, tło i wszystkie pozostałe szczegóły
mają pozostać identyczne piksel w piksel. Nie przesuwaj, nie skaluj, nie poprawiaj niczego innego.

Lista edycji, które robiliśmy (pełne prompty: chatgpt/PROMPTY.md w repo Lunety):

Grupa Edycje Po co
Oczy zamknięte powieki (edit-01), spojrzenie w lewo / prawo / górę / dół mruganie, zakresy ParamEyeBall*, gaze.json
Usta A, I, U, E, O, uśmiech, „dzióbek” (pout) lip-sync i ParamMouthForm
Brwi / twarz zdziwienie, złość, smutek, mrugnięcie, rumieniec miny .exp3.json
Uszy uszy położone płasko własny ParamEarFlat
Części zasłonięte bez grzywki (skóra czoła), bez włosów (łysa głowa), sama kurtka, tors bez rąk (edit-14), bez dłoni żeby przy ruchu pod spodem nie było dziur

Słaba edycja = odrzucić i powtórzyć mocniejszym promptem, nie łatać. Typowe błędy ChatGPT: lekko przesunięta lub przeskalowana postać, zmieniona fryzura, inna grubość konturu, „poprawione” dłonie. Drobne przesunięcie skrypty wyrównają (ECC), ale zmienionej sylwetki — już nie.

Wskazówki:

16. ComfyUI + See-through (E3)

See-through rozkłada pojedynczy obraz postaci anime na warstwy semantyczne (włosy przód/tył, oczy, twarz, ubranie…) i szacuje głębię, dorysowując części zasłonięte.

17. Czyszczenie warstw (E4)

Skrypt Co robi
fix_face.py skóra twarzy/czoła z edycji „bez grzywki” — żeby pod grzywką była prawdziwa skóra
fix_back_neck.py dorysowana tylna część szyi (widoczna przy obrocie głowy)
topwear_from_edit.py tors/kurtka z edycji „sama kurtka”
cut_arms_head.py rękawy, dłonie i łysa głowa wycięte z odpowiednich edycji
defringe.py usuwa jasne/ciemne obwódki na krawędziach alfy (halo po wycinaniu)
compose_check.py składa wszystkie warstwy i porównuje z bazą: średnia różnica ma być mała, diff.png do obejrzenia

Mechanizm „edycja → warstwa”: edycja z ChatGPT jest wyrównywana do bazy algorytmem ECC (OpenCV, dopasowanie afiniczne), potem liczona jest różnica i z niej powstaje maska nowej części. Dlatego edycje muszą być 1:1 — ECC skoryguje przesunięcie o kilka pikseli, ale nie inną pozę.

18. Ruch i mimika (E5)

Skrypt Wynik
diff_layers.py warianty (brwi, twarze, rumieniec) z edycji jako osobne warstwy ~...
eye_rig.py tęczówki oddzielone od białek, zamknięte powieki, brwi, gaze.json
mouth_shapes.py ~mouth_A/I/U/E/O/smile/pout
ears_flat.py ~ears_flat_l/r

gaze.json zawiera środki tęczówek i przesunięcia (left/right/up/down) zmierzone z edycji „patrzy w…”. Wartości są w pikselach płótna 1024 — dla PSD 3x mnożymy ×3 (stąd tabela w sekcji 9).

19. Budowa PSD (E6) — wymagania „Live2D-ready”

upscale_layers.py (RealESRGAN ×3 na XPU) → PSD_SRC=up3 build_psd.py OUT.psd.

Wymagania, które skrypt spełnia, a które warto znać przy ręcznym PSD:

20. Rig dla zaawansowanych

Siatki

Hierarchia deformerów

Body_Rotation (ParamBodyAngleZ)
 └─ Body_Warp (ParamBodyAngleX/Y)
     ├─ Breath_Warp (ParamBreath) ── topwear, sleeve_*, hand_*
     ├─ neck
     ├─ BackHair_Warp (ParamHairBack) ── back_hair
     └─ Head_Rotation (ParamAngleZ, pivot na szyi)
         └─ Face_Warp (ParamAngleX/Y)
             ├─ Eye_L_Warp / Eye_R_Warp ── eyewhite, irides, eyelash, ~eyelid_closed
             ├─ Brow_L / Brow_R ── eyebrow_*
             ├─ Mouth_Warp ── mouth, ~mouth_*
             ├─ ears_*
             └─ FrontHair_Warp (ParamHairFront) ── front_hair

Ładniejsze mruganie

Zamiast samej przezroczystości: przy EyeOpen=0 zgnieć siatkę rzęs w łuk zamkniętej powieki, białko i tęczówkę przytnij (clipping) do obrysu oka — przy wartościach pośrednich oko zamyka się płynnie, a nie „przenika”. Klucz pośredni 0.5 pomaga uniknąć „pustego” oka w połowie mrugnięcia. Opcjonalnie ParamEyeLSmile/RSmile — oczy-łuki przy uśmiechu.

Usta i lip-sync

Multiply / Screen color

ArtMesh może mieć kolor mnożony/ekranowy sterowany parametrem — tak robi się np. rumieniec bez osobnej warstwy albo przyciemnienie postaci w Lunecie. Runtime (pixi-live2d-display 0.4) obsługuje to tylko częściowo — testuj przed użyciem.

Fizyka

Template (PRO)

Gdy automatyczna mimika nie rozpoznaje warstw, można nałożyć szablon z gotowego modelu (np. Hiyori z Cubism SDK Samples) — przenosi deformery i klucze, które potem dopasowujemy ręcznie. Działa najlepiej, gdy podział warstw jest podobny do szablonu.

21. Animacje i miny

22. Eksport — szczegóły

23. Runtime: strona i Luneta

Stos (wersje przypięte): pixi.js@6.5.10 + pixi-live2d-display@0.4.0 (Cubism 4/5 .moc3)

// Core musi być załadowany przed importem (window.Live2DCubismCore).
await loadScript(coreUrl);            // <script src> z ariku.pl / asset protocol Tauri
import * as PIXI from 'pixi.js';
import { Live2DModel } from 'pixi-live2d-display/cubism4';
(window as any).PIXI = PIXI;           // pixi-live2d-display używa globalnego tickera

const app = new PIXI.Application({ view: canvas, backgroundAlpha: 0, autoStart: true, resolution: devicePixelRatio });
app.ticker.maxFPS = 30;                // tanio
const model = await Live2DModel.from('/live2d/wise-one/wise-one.model3.json');
app.stage.addChild(model);
Efekt Jak
Mruganie, oddech automatycznie, gdy model3.json ma grupę EyeBlink i parametr ParamBreath
Śledzenie kursora model.focus(x, y) na pointermove (ParamAngleX/Y, ParamEyeBallX/Y)
Idle model.motion('Idle')
Mina model.expression('surprised')
Lip-sync AnalyserNode → RMS co klatkę → coreModel.setParameterValueById('ParamMouthOpenY', v) w beforeModelUpdate
Pauza document.visibilitychange → app.ticker.stop()/start()

Luneta (Tauri): komponent src/components/Live2DView.tsx; model i Core z katalogu danych (convertFileSrc / asset protocol) — dopisać zakres w tauri.conf.json (assetProtocol.scope) i CSP (script-src dla Core). Brak Core lub modelu → statyczny obraz (splash), bez błędu. Nakładka nad grą tylko informacyjna — kliknięcia przechodzą do gry. Animacja tylko przy widocznym oknie, FPS ograniczony (ENGINEERING-RULES §36).

ariku.pl: model i Core jako pliki statyczne; ta sama inicjalizacja, autoInteract tylko na hover, prefers-reduced-motion → bez Idle.

Test: najpierw darmowy model przykładowy (Hiyori z Cubism SDK Samples), potem Wise One: renderuje się, śledzi kursor, mruga, przy ukrytym oknie FPS = 0.

24. Licencje — ważne

25. Jak to przebiegało u nas (dziennik Wise One v1)

Kiedy Gdzie Co
przed 2026-10-17 ChatGPT obraz bazowy Wise One (E1) zamrożony; ~20 edycji 1:1 (oczy, usta, brwi, miny, uszy, części zasłonięte)
ariku-pc (Linux, Intel Arc/XPU) See-through w ComfyUI (ciało + głowa, 1024), czyszczenie, mimika, gaze.json, upscale ×3, wise-one-v1-3x.psd
wnioski: 1280 w See-through pada w VAE na XPU; edycja „tors bez rąk” (edit-14) wyszła słabo; grzywka została jednym blokiem
2026-10-17 felix-pc (Windows) instalacja Cubism Editor 5.3, aktywacja triala PRO; UI po japońsku → przełączone na English (restart)
2026-10-17 felix-pc okno „nowa wersja” — kliknięcie 開く zamknęło edytor; od tej pory zawsze Cancel
2026-10-17 felix-pc próba riggingu przez asystenta (computer use) — okno Javy wymagało osobnej zgody; decyzja: rig robi właściciel sam, asystent pisze poradnik
2026-10-17 wiki ten poradnik

Co warto zrobić inaczej od początku (lekcje):

  1. Zaplanować warstwy przed bazą — np. grzywka na 3–5 pasm już w obrazie bazowym, ręce opuszczone.
  2. Robić edycje części zasłoniętych od razu, a nie dopiero przy czyszczeniu.
  3. Testować runtime na Hiyori, zanim rig Wise One będzie gotowy — błędy integracji wychodzą wcześniej.
  4. Trial PRO odpalać dopiero, gdy PSD jest gotowy — 42 dni szybko mijają.

26. Znane braki v1 i plan v2

27. Checklista końcowa


Revision #1
Created 2026-10-17 18:25:37 UTC by Ariku
Updated 2026-10-17 18:25:37 UTC by Ariku