Audamir

časť 35

Jedno okno, karta za cárstvo: register stránok, päta, štatistiky, nastavenia a čo ukázal prehliadač

Cárstvo povie v manifeste, aké stránky má, a platforma postaví jedno okno s kartou za cárstvo. Hrany jadra voči balíkom klesli zo 107 na 94, presunuté záložky dali rovnaký výstup a dve chyby sa ukázali až v prehliadači.

· 10 min čítania

Okná domovskej obrazovky hry Audamir (rebríček, pravidlá a skóre, návod, štatistiky a nastavenia) prestali 1. novembra 2026 byť oknami Kastgardu. Každé je teraz jedno okno na stránku s kartou za cárstvo a aké stránky cárstvo má, hovoria dáta v jeho manifeste. Hrany z jadra do kódu balíkov klesli zo 107 na 94 a deväť presunutých záložiek štatistík Kastgardu dalo v 25 z 26 porovnaní rovnaký výstup. Každý záznam nastavení stojí práve na jednom mieste. Dve chyby, ktoré žiadna kontrola nevidela, sa ukázali až v prehliadači.

Cárstvo povie dátami, platforma postaví okno

Rebríček a pravidlá boli v panels.js, deväť záložiek štatistík v profileview.js (prvý súbor pomenúval päť vecí z kódu Kastgardu, druhý jedenásť). Pri rozhodnutí z 1. novembra sa dohodlo, že rebríček, pravidlá, návod a štatistiky sú vždy jedno okno s kartou za každé cárstvo, ktoré stránku registruje. Model má tri časti:

  • Dáta. Manifest má pole pages so šiestimi možnými stránkami: scores, rules, howto, stats, hero a settings. Pole keys smie mať len settings. Neznáme id, duplicita, viac než šesť stránok alebo čokoľvek, čo nie sú čisté dáta, je chyba manifestu a cárstvo sa odmietne.
  • Kód. Manifest nemá funkcie, preto má cárstvo v API hák page(id, host, ctx), ktorý naplní prvok dodaný platformou. Jadro nepozná meno žiadneho cárstva.
  • Okno (js/ui/page-window.js, 133 riadkov) nepozná ani cárstvo, ani jeho správcu. Okno nemá vlastné mená: test číta jeho zdroj a hľadá ich. Karta sa postaví až pri prvom výbere a päta okna je päta zobrazenej karty.
Tvorba okna od manifestuŠtyri kroky: manifest s id stránok, správca, ktorý overí dáta, hák cárstva, ktorý naplní prvok, a okno s kartou za každé cárstvo, ktoré stránku registruje.Manifestpages: zoznamstránok s ida čisté dátaSprávcaoverí id, tvara duplicity;chyba: cárstvosa odmietneHák cárstvapage(id, host,ctx) naplníprvok; jadronepozná menoOknojedno oknona stránku,karta za každécárstvoCárstvo povie len dáta; platforma postaví okno a jadro nepozná žiadne cárstvo.
Tvorba okna od manifestu: dáta v manifeste, overenie, naplnenie háku a okno s kartami

Cárstvo bez stránky nemá kartu a nikdy nie je záložkou „pripravujeme“. Ktorá karta sa otvorí: z hubu cárstva jeho vlastná (ak stránku má, inak prvá), z domovskej obrazovky karta Všetky cárstva, ak ju okno má, inak karta cárstva poslednej dohratej hry. Skúšobný test pridá tri hračkové cárstva len manifestom a súborom pages.js; nová karta sa objaví bez úpravy aplikácie. Jedna výhrada: karty domovskej obrazovky sa berú z tabuľky režimov, takže nové cárstvo tam zatiaľ potrebuje aj riadok (dlh kroku M9, DESIGN §116.3).

Prvý krok (H5a) nebol vidieť: okná ešte nemali obsah a test to pripínal (DESIGN §116.4).

Stav zostavy s dvoma cárstvami (manifesty js/realms/*/data/realm.js, 1. novembra 2026 večer) je na obrázku:

Stránky okna a ich karty v zostave s dvoma cárstvamiŠesť stránok okna v riadkoch, dva stĺpce cárstiev. Zvýraznené je to, čo je v hre; sivé chýba. Kastgard má rebríček, pravidlá, lekcie, štatistiky, nastavenia aj obrazovku hrdinu. Rokgard má návod, štatistiky a hrdinu, bez rebríčka, pravidiel a nastavení.StránkaKastgardRokgardRebríčekánoniePravidlá a skóreánozatiaľ nieAko sa hrálekciestručný návodŠtatistikydeväť záložiekKolónia a ČiaryVzhľad a ovládanie (⚙)karta s ôsmimi záznamamibez kartyTvoj hrdinablok kockyblok žetónuv hrechýba
Stránky a karty v zostave s Kastgardom a Rokgardom: zvýraznené je to, čo je v hre

Päta: odkaz je tam, kde je stránka

Krok H5b dal oknám obsah. Päta domovskej obrazovky ukáže odkaz len na stránku, ktorú niektoré cárstvo registruje. Záloha, „Čo je nové“ a nahlásenie chyby sú v päte vždy. Zostava len s Rokgardom má z troch odkazov na okná jediný, Ako sa hrá. Kód sa presunul do js/realms/kastgard/ui/pages.js:

  • Panels.openScores → scores(host) v Kastgarde; z panels.js odišiel rebríček.
  • Panels.openRules a päť obrázkov → rules(host, ctx).
  • LessonRunner.openList → LessonRunner.fillList(host, realm), teda „Ako sa hrá“ pre každé cárstvo.

Stručný návod Rokgardu nemá žiadny nový text: je to päť riadkov pravidiel Kolónie a štyri riadky Čiar, ktoré už ukazujú obrazovky nastavenia hier. Test pripína kľúče aj ich poradie. Hráč vidí toto: Ako sa hrá má pri oboch cárstvách dve karty, hub Rokgardu má tlačidlo Ako sa hrá a rebríček sa volá len Rebríček.

Hrany jadra tým klesli zo 107 na 105: panels.js z 5 na 3, lebo Rules, Stats a Bonuses patria živým štatistikám partie a ostali. Premenovalo sa 20 kľúčov textov v deviatich jazykoch bez zmeny znaku a zmizli tri názvy okien, ktoré už nič nepísalo.

Krok našiel veci, ktoré dokumenty nevedeli. Hák musí byť v API už pri require v Node, lebo správca odmietne cárstvo s pages bez háku. Kláves S nie je dvere do stránky, lebo otvára živé štatistiky partie. Tlačidlo „Vymazať rebríček“ ostáva v päte aj po vymazaní, lebo okno si pätku číta raz pri otvorení.

Štatistiky: tri karty a deväť záložiek

Krok H6 dal štatistikám karty:

  • Všetky cárstva (platforma, ProfileView.allRealms; prvá, keď sú odhalené dve): odohrané a vyhraté hry, reputácia v Asgarde, minca každého cárstva a tabuľka „Podľa cárstva“. Čísla idú z registra, nie z kódu cárstiev.
  • Kastgard: deväť záložiek bez zmeny, presunutých slovo od slova z profileview.js.
  • Rokgard: všeobecná karta s doskovými hrami: pás hier, výhry, prehry, remízy, skúsenosti a žetóny, podľa úrovne AI, posledné hry.

Ťažisko kroku je presun. Záložky tabAll, tabConfig, tabClassic, tabMinis, tabPuzzles, tabCampaign, tabIron, tabGames a tabRivals odišli z profileview.js do pages.js Kastgardu slovo od slova. Čísla karty Všetky cárstva idú z registra: špecifikácia cárstva v Economy dostala voliteľné won(profile) a Economy.recordOf(realm, profile) vráti { played, won }.

Hrany jadra klesli z 105 na 94: profileview.js z 11 hrán na nulu, súbor z 533 riadkov na 272.

Návrh odhadoval až 16 hrán (5 z panels.js a 11 z profileview.js); zmizlo 13 (2 + 11). Dnešných 94 je 58 z jadra do Stacks, 24 do Campaign, 4 zo Stacks do Campaign, 2 z jadra do Kastgardu a 6 do ostatných.

Hrany z jadra do kódu balíkov podľa krokovPočet hrán z jadra do kódu balíkov: 120 na konci októbra, 107 pred krokom H5a, 105 po kroku H5b a 94 po kroku H6 (dnes). Každý krok ubral hrany, ktoré patrili do jadra.31. októbra120pred krokom H5a107po kroku H5b105po kroku H6, dnes94
Hrany z jadra do kódu balíkov: 120 na konci októbra, 94 dnes

Dôkaz, že sa výstup nezmenil: jeden profil vyrobený skutočnými zaznamenávacími funkciami sa vykreslí starým a novým kódom a DOM každej záložky sa porovná ako text. Profil obsahuje 24 hier všetkých režimov, minihry, hlavolamy, Kampaň, Železný beh, rivalov a záznam; starý strom je z verzie 0.73.0. Z 26 výsledkov je 25 rovnakých. Líši sa pätka okna, ktorá má teraz slot platformy s tým istým tlačidlom. Rovnaké sú deväť záložiek, rozmery Konfigurátora, tri úrovne Železného behu, pás kariet, slovenčina aj záložka vyžiadaná dverami. K tomu 17 mutácií kópie stromu, všetkých 17 zachytených, a 108 stavov v prehliadači (9 jazykov, dve veľkosti, tmavá a svetlá téma, 3 karty) bez vodorovného posunu.

Dlaždica Štatistiky je v hube každého cárstva, odhalí sa raz a odznak NEW zmizne po otvorení kdekoľvek. DESIGN §121.4 píše, že taká dlaždica neexistuje a že pridať ju je rozhodnutie; po pohľade na hotové štatistiky sa rozhodlo, že tam bude. Dlaždica má jedno id na troch miestach (domovská obrazovka, hub Kastgardu, hub Rokgardu); v zostave jedného cárstva hub zároveň slúži ako domov, takže sa druhá dlaždica vynechá. Poznámky z 1. novembra žiadali, aby dlaždica v hube existovala, a aby koleso myši v štatistikách posúvalo okno, nie len posuvník. Presety Kolónie zapisujú počty len podľa úrovne AI; Čiary majú päť presetov alebo vlastnú dosku. Čo hra zapíše:

HraČo sa zapisujeZ čoho sa dá urobiť rozpis
Kolóniapočty podľa úrovne AIdoska hex58 a hex61
Čiarypočty podľa úrovne AIpäť presetov alebo vlastná doska

História je orezaná na 1 500 riadkov za všetky režimy dokopy, preto nie je trvalým súčtom. Z toho vyšlo rozhodnutie bez migrácie: záznam byPreset sa vedie odteraz popri počtoch podľa úrovne AI a profil, ktorý ho ešte nemá, sa rozpíše z histórie len pri čítaní. Čo história nemá (hry pred jej začiatkom, poškodený kód, zrušený preset), je riadok „Staršie alebo iné hry“, takže riadky a zvyšok sú vždy súčet karty.

Dôkaz (DESIGN §125.5): fixtúra vyrobená starým kódom sa načíta bez pridania čohokoľvek, pribudlo sedem testov, osem mutácií bolo zachytených a v prehliadači jedna skutočná hra Čiar dohraná klikmi zapísala byPreset správne.

Nastavenia: každý záznam na jednom mieste

Okno ozubeného kolieska je okno stránky settings: karta Všetky cárstva, karta každého cárstva, ktoré vymenúva vlastné kľúče, a žiadna karta pre cárstvo, ktoré nič nevymenúva. Pravidlo je funkcia Settings.lookCards(claims): záznamy look rozdelí na hrdinove, cárstvové a zvyšok, ktorý patrí karte Všetky cárstva. Spolu je 24 záznamov (pri kroku H4 ich bolo 23). Jadro nevymenúva nič pre Všetky cárstva a nepozná meno cárstva. Test pripína, že každý záznam je práve na jednom mieste, a nový bez priradenia padne.

Počty záznamov skupiny look po miestach:

Miestopri kroku H4dnes
Tvoj hrdina57
Všetky cárstva99
Kastgard98
spolu2324

Rozdiel je v tom, že záznam „Avatar v rohu“ sa stal nastavením hrdinu a pribudol záznam „Avatar motion“. Riadok „Tvoj hrdina“ stojí nad kartami. Okno sa otvorí na karte cárstva z obrazovky, z ktorej sa otvára, a z domova na karte Všetky cárstva.

Rokgard v ⚙ kartu nemá, lebo nevymenúva žiadne svoje nastavenie. Číta len záznamy hrdinu a rýchlosť, ktorú majú spoločnú všetky cárstva. Karta sa objaví s prvým kľúčom; kandidáti na nastavenie (kruhy dosiahnuteľných políčok Kolónie, duch kameňa v Čiarach) sa ešte nezmerali ani nenavrhli. Pri editore voľnej hry sa zmeralo, že ani jeden z 23 záznamov nie je nastavenie jednej hry: všetky číta živý objekt nastavení hráča a ukladajú sa s profilom. Päť hrdinových záznamov preto z editora odišlo; záložka začína riadkom „Tvoj hrdina“ a ostatných 18 ostalo. Je to samostatný commit, ktorý sa dá vrátiť jedným revertom.

Dve veci zostali otvorené. V zostave bez Kastgardu nemá deväť záznamov kocky, kto ich vymenovať. A orezané štítky na 375 px nie sú nové; patria do kontroly zmrazenia (H7).

Prehliadač našiel dve veci

Koleso. Každá záložka Kastgardu mala overscroll-behavior: contain z čias, keď bola posúvačom vlastného okna. V zozname kontrol je šípka, Esc, tlačidlá a 108 stavov rozloženia; koleso tam nie je, lebo tie stavy hľadajú preliatie, nie posúvanie. Meranie so skutočným kolieskom: po piatich otočeniach ostalo okno na nule; s overscroll-behavior: auto došlo na koniec, 96 px. V okne stránky sa posúva okno, takže koleso sa pri záložke zachytilo a nedostalo sa na okno. Oprava je pravidlo v style.css; test ho pripína čítaním CSS, nie otáčaním kolesa.

Ako sa hrá v päte. Odkaz v päte otváral kartu Rokgardu bez ohľadu na obrazovku, takže v hube Kastgardu bol nesprávny. Oprava: z hubu sa otvorí karta jeho cárstva. Okno sa navyše pri prepnutí karty zmenšilo a pás kariet ušiel spod kurzora, lebo zoznam lekcií Kastgardu je dlhý a návod Rokgardu krátky. Oprava je jeden riadok: minimálna výška, ktorú štatistiky mali už predtým.

Cielený beh (tools/test.js --changed) pustí len testy dotknutých balíkov; celé overenie trvá približne štvrť hodiny.

Chyby sa našli aj pri práci. Pri kontrole dverí sa zistilo, že „Späť na lekcie“ otvárala kartu poslednej hry, nie kartu cárstva lekcie.

Celá sada našla ďalšie veci v každom kroku. Pri H4 tri piny (dva testy stránok Kastgardu a test bodiek na kocke), pri presetoch test fasády, ktorý nepripínal zoznam členov. Najpoučnejší je H6b: pripnuté zoznamy dlaždíc zlyhali, čo bolo očakávané, a rozdiel ohlásili aj štyri nástroje, ktoré porovnávajú usporiadanie so starým kódom (home-layout-migration, home-panels-migration, rokgard-migration, sections-migration). Rovnosť so starým kódom je dôkaz len dovtedy, kým sa povie, čo sa smie líšiť; každý z nich dostal výnimku pre dlaždicu Štatistiky.

Čo ostáva

  • Rokgard nemá kartu Pravidlá a skóre ani rebríček. Jeho manifest registruje howto, stats a hero.
  • Tabuľky na telefóne sa na 375 px posúvajú vodorovne vo svojom ráme; je to samostatný krok.
  • Zmrazenie hlavnej stránky (H7) nie je hotové; test štruktúry tests/ui/hub.test.js neexistuje.
  • Hráč, ktorý hral len Kolóniu, štatistiky nevidí, lebo pravidlo odhalenia číta hry Kastgardu.
  • Dlaždica úspechov v hube nie je; požiadavka sa týkala len štatistík.
  • Náhľady v nastaveniach (docs/SETTINGS-PREVIEW.md) sú analýza a maketa, nie kód.
  • Úspechy Rokgardu, šatník za žetóny a tituly na výber nie sú hotové.

Čo sa nepodarilo overiť: dôkazy (25 z 26 výstupov, mutácie, 108 stavov, koleso a hra Čiary klikmi) sa pri písaní nespustili znova; sú z dokumentácie a poznámok vývoja. Offline režim a tlač neboli overené. Nevedno, či sa odkaz v päte skúšal z hubu pri kroku H5b; dokument ho opisuje bez cárstva a test vznikol až pri oprave. Rozpis, ktorý krok znížil hrany zo 120 na 107, sa nezisťoval. Ruský názov tabuľky po presetoch je strojový návrh.

Zdroje

docs/HOME-FINAL.md (časti 3 až 6 a 9), docs/DESIGN.md §116 až §127 a docs/SETTINGS-PREVIEW.md. Počty hrán sú z nástroja tools/packages.js --check na hre 0.81.2.