Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
테이블 게임용 점수 계산기 – 브리지·마작·도미노·피시피리크 등 라운드·총점·순위·정산을 오프라인으로 휴대폰에 저장합니다
Numërues pikësh për lojërat e tavolinës — bridzh, magarec, domina, pishpirik: raundet, totalet, renditja dhe shlyerja. Punon pa internet, të dhënat rrinë në telefon.
게임TypeScript · JavaScriptGitHub @rilindkycyku온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Numërues pikësh për lojërat e një tavoline. Zëvendëson fletën e Google Sheets-it: shënon pikët e secilit raund dhe nxjerr vetë totalet, renditjen dhe shlyerjen. Pishpiriku është i vetmi që fitohet nga ana tjetër, dhe ekrani e thotë atë me fjalë: renditja, kurora dhe fjalia e fundit e lexojnë drejtimin nga vetë loja.README 전문 보기 ↗
Numërues pikësh për lojërat e një tavoline. Zëvendëson fletën e Google Sheets-it: shënon pikët e secilit raund dhe nxjerr vetë totalet, renditjen dhe shlyerjen.
Katër lojëra, një grup, një bazë:
| Loja | Raundi | Mbaron | Fiton |
|---|---|---|---|
| Bridzh — xhin-rami kosovar me 14 letra, hapja me 51 pikë | pikët e secilit, ose llogaritësi hant/normal | pas dy raundeve për lojtar | totali më i vogël |
| Magarec — loja e shkronjave | një prekje: kush e humbi | kur dikujt i mbushet fjala „MAGAREC" | më pak shkronja |
| Domina — gurët e mbetur në dorë | pikët e secilit | kur dikujt i mbushet kufiri | totali më i vogël |
| Pishpirik — 25 pikë për dorë, plus 10 për çdo pishpirik | pikët e dorës | kur dikush arrin kufirin | totali më i madh |
Pishpiriku është i vetmi që fitohet nga ana tjetër, dhe ekrani e thotë atë me fjalë: renditja, kurora dhe fjalia e fundit e lexojnë drejtimin nga vetë loja.
Grupe dhe lojtarë — shoqëria futet një herë, e tërë me një shkrim («alfa, beta, gama, delta»), dhe radha e emrave ruhet.
Zgjedhje para lojës — grupi mund të ketë gjashtë të rregullt dhe sonte të luajnë katër.
Shtim mes lojës — kush ulet te tavolina në raundin e pestë shtohet aty për aty, nga grupi ose si emër krejt i ri; raundet e shkuara nuk i preken dhe totali i tij nis nga hera e parë që shënon.
Futje e raundit — një numër për lojtar, ose përmes llogaritësit hant/normal, i cili e ruan raundin vetë me një prekje. Kush mbylli zgjidhet duke prekur emrin, jo nga një listë e shpalosur.
Mbledhësja e dorës — çdo fushë pikësh ka një kuti me tastierë të vetën që i mbledh letrat ose gurët një nga një («10 + 15 + 5»), sepse tastiera numerike e telefonit nuk ka «+». Termat rrinë të dukshëm derisa të shtypet «Gati».
Data ditë/muaj/vit — shkruhet me numra dhe vijat dalin vetë; poshtë saj rri data me fjalë, që të mos ngatërrohet ditë me muaj.
Rregullat brenda aplikacionit — çdo lojë i ka të vetat te një panel i mbledhur, te ekrani ku zgjidhet çka luhet dhe te ai i lojës: si shënohet raundi, sa vlen çka, dhe me çka mbaron mbrëmja. Deri ku luhet nuk shkruhet atje — atë e zgjedh tavolina për çdo mbrëmje.
Çka luhet — zgjidhet para lojës, dhe çelësi nis te loja e fundit e grupit. Te magareci raundi ka një pyetje të vetme: kush e humbi. Prekja e emrit e ruan raundin, shkronja shkon te ai, e rrjeti M-A-G-A-R-E-C tregon ku janë të gjithë.
Domina dhe pishpirik — i njëjti rrjet fushash si te bridzhi, pa llogaritës: numri numërohet te tavolina, ku janë gurët e letrat. Mbrëmja mbaron kur dikush e arrin kufirin që u zgjodh kur nisi — ose kurrë, nëse u nis «pa kufi» — dhe fjalia e fundit e thotë se kush e arriti.
Renditja — sipas totalit, në drejtimin që e fiton loja: i pari është ai me më pak pikë kudo veç pishpirikut. Kur nuk kanë luajtur të gjithë njësoj, shtohet kolona „raunde" dhe një shënim. Barazimi te kreu nuk fshihet: kurora u shkon të gjithëve që e ndajnë totalin më të vogël.
Dy raunde për lojtar — aq zgjat një lojë bridzhi, pra tavolina rrotullohet dy herë. Kreu tregon «4 nga 8 raunde», dhe kur mbushen futja mbyllet me fituesin, si te magareci kur mbushet fjala. Raundi i shënuar gabim rregullohet nga lista, dhe kush u ul vonë shtohet te lojtarët — mbrëmja zgjatet vetvetiu.
Kush përzien — radha e emrave është radha e tavolinës, prandaj krah titullit të raundit rri kush i përzien letrat; kalon një vend çdo raund.
Sa zgjat mbrëmja — kreu tregon orën kur u hap fleta dhe sa kohë ka që luhet («nisi 20:45 · 2 orë e 15 min»); sapo mbrëmja mbaron, numri ngrin te sa zgjati vërtet («20:45–23:55 · 3 orë e 10 min») dhe historiku i grupit e mban atë gjatësi. Fundi është raundi i fundit i shënuar e jo çasti kur u shtyp «Mbyll» — fleta mbyllet ndonjëherë gjysmë ore më vonë, dhe ajo gjysmë orë nuk u luajt. Kur ora nuk dihet — një fletë e kthyer nga një kopje e vjetër, ose një mbrëmje e rihapur pas një jave — nuk shkruhet numër fare.
Parashikimi — kush e arrin dot ende vendin e parë me raundet që kanë mbetur, dhe brenda sa raundeve. Tabela jep vendin më të mirë e më të keq që mund të arrijë secili, për raundin tjetër ose deri në fund. Numrat vijnë nga vetë rregulli: një raund mbyll 240 pikë diferencë te bridzhi, dhe një shkronjë te magareci. Te domina e pishpiriku blloku nuk del fare: sa bën një dorë atje nuk e thotë rregulli, dhe një parashikim pa kufij do të ishte numër i shpikur.
Shlyerja — matrica N×N e diferencave, matrica[i][j] = total[i] − total[j],
me lojtarët sipas renditjes. Del te bridzhi e te domina; te magareci e te
pishpiriku jo, sepse atje diferenca nuk paguhet me para.
Historik sipas ditës — një grup ka shumë lojëra, edhe dy të njëjtën ditë, secila me renditjen e vet përfundimtare aty për aty.
Të përgjithshmet — një tabelë për secilën lojë që grupi ka luajtur: lojëra, fitore dhe totali mesatar, e llogaritur nga vetë raundet. Tabelat rrinë të ndara sepse numrat nuk janë të njëjtë lloj — pikë bridzhi, pikë domine, shkronja, pikë pishpiriku.
Redaktim dhe fshirje — çdo raund ndryshohet pas ruajtjes; gjithçka rillogaritet vetvetiu.
Pikët drejtpërdrejt — kush rri rreth tavolinës i shikon pikët në telefonin e vet, dhe raundi i ri del vetë. Lidhja bëhet drejt mes telefonave me një kanal WebRTC, në dy mënyra:
Ose një fotografi e çastit — rezultati shkon brenda vetë adresës dhe adresa bëhet kod QR. Punon edhe atje ku rrjeta i ndan pajisjet nga njëra-tjetra, dhe edhe nëpër mesazh.
Të dyja hapen edhe në një telefon që nuk e ka aplikacionin, dhe asnjëra nuk lexon as shkruan në bazën e tij. Pamja që hapet nis me përmbledhjen — kush prin, sa vjen i dyti prapa, sa raunde kanë mbetur dhe kush përzien — dhe ka «Unë jam …»: prek emrin tënd, dhe del rreshti yt i matricës, kujt sa i del.
Mbrëmja e luajtur te telefoni — bridzhi tani luhet edhe drejtpërdrejt mes telefonave, me bridzh-online, dhe kur mbaron atje nxirret si skedar. Paneli «Sill një mbrëmje» te ekrani i grupit e hap atë skedar dhe i shton raundet e tij te ai grup. Shton, nuk zëvendëson — ndryshe nga kopja rezervë, e cila e kthen tërë bazën. Ndarja mbetet ajo që ishte: atje ndahen letrat, këtu numërohen pikët.
Kopje rezervë — nxjerrja dhe kthimi i tërë historikut si një skedar JSON.
Sinkronizim mes pajisjeve, i zgjedhur — nëse i do të njëjtat mbrëmje te telefoni dhe te tableti, lidh projektin tënd Supabase: adresën dhe çelësin i shkruan vetë, baza është e jotja, llogaria ekziston vetëm brenda saj, dhe Tavolina nuk ka server të vetin as atëherë. Asnjë projekt nuk vjen i gatshëm me aplikacionin — pa ato dy fusha nuk niset asnjë kërkesë. Rri e fikur derisa ta lidhësh me dorë; pajisja e sapolidhur vetëm lexon derisa t'i thuash cila anë është e vërteta.
Punon pa internet, dhe instalohet — një punëtor shërbimi i ruan skedarët e faqes me hapjen e parë, prandaj aplikacioni hapet i plotë edhe në «mënyrë avioni», dhe shtohet te ekrani kryesor i telefonit si aplikacion më vete. Kur del një version i ri, ai pret: fundfaqja e thotë, dhe kalimi bëhet me një prekje — kurrë nën këmbët e një loje që po shënohet.
Punon pa internet. Të dhënat rrinë në shfletuesin e pajisjes — dhe, vetëm nëse e lidh vetë, edhe te projekti yt Supabase.
Pikët, emrat dhe raundet rrinë te telefoni, dhe dalin vetëm kur i nxjerr vetë përdoruesi — një kopje rezervë, një kod QR, një lidhje e drejtpërdrejtë.
Tri gjëra të tjera prekin një server, dhe të tria thuhen te ekrani aty ku përdoren:
/loja/[id] ose /shiko, e asgjë tjetër. Adresa e vërtetë nuk del kurrë:
brenda saj rri mbrëmja e ndarë, prandaj pastrohet para se të nisë. Pa cookie
dhe pa asgjë të mbajtur mend për vizitorin.row level security i skriptit bën që rreshtat e një llogarie t'i shohë vetëm
ajo. Kërkon ta lidhësh me dorë; pa këtë, asnjë kërkesë nuk del.Për ta pasur atë numërim, «Web Analytics» ndizet një herë te paneli i projektit
te Vercel; skripti vjen nga vetë domeni (/_vercel/insights/…), prandaj asnjë
host i huaj nuk kërkohet me hapjen e faqes.
Nuk të duhet një projekt për çdo aplikacion. Tavolina i shkruan mbrëmjet vetëm
te tavolina_records, dhe politika, trigger-i e indeksi e mbajnë emrin e asaj
tabele — pra nuk përplasen dot me tabelën e një aplikacioni tjetër te e njëjta
bazë. Skripti i konfigurimit e krijon atë tabelë e nuk prek asgjë tjetër që
gjendet aty, dhe ekzekutimi i dytë nuk ndryshon gjë.
Pra një projekt i vetëm mban njëkohësisht Tavolinën (tavolina_records),
FinanCarePersonal
(financare_records) dhe GuestSeat
(guestseat_records). Rreshtat i ndan kolona user_id dhe i njëjti rregull
row level security, prandaj një llogari e vetme — i njëjti email e fjalëkalim —
hyn te të tria: te i pari shtypet «Krijo llogari», te dy të tjerët «Hyr».
Dy gjëra duhen ditur:
redirect_to), prandaj mjafton ta shtosh atë adresë te Redirect URLs.Cili rresht i kujt është e thotë vetë emri i tabelës, prandaj asnjë nga të
tre nuk mban një kolonë që e përsërit — do të ishte vlerë e derivuar e ruajtur
(pika 2). Kur ajo kolonë duhet vërtet, për ta lexuar bazën si një e tërë, skripti
sql/tri-aplikacionet.sql
te FinanCarePersonal e nxjerr kur lexohet: dy pamje mbi tri tabelat, njëra me
kolonën app dhe tjetra me kohën kur secili aplikacion e preku projektin së
fundi. Ekzekutohet një herë te SQL Editor-i dhe nuk prek asnjë rresht.
Anash kësaj ka edhe një përfitim që nuk ka të bëjë me kodin: plani falas i Supabase-it e ndal një projekt që rri disa ditë pa u prekur. Një projekt që e përdorin disa aplikacione nuk rri pa u prekur — prandaj mbrëmjet e një shoqërie që luan një herë në muaj rrinë gjallë mbi shpinën e një libri llogarish që hapet çdo ditë.
Hapja lejohet me 51 pikë kombinimesh prej një dore me 14 letra. Raundin e mbyll ai që i ka hedhur të gjitha letrat dhe e mbaron me letrën e fundit, pa i mbetur asnjë në dorë. Dy mbyllje:
| Mbyllësi | Të tjerët që s’hapën | Të tjerët që kishin hapur | |
|---|---|---|---|
| Hant — mbylli pa hedhur e pa shitur asnjë letër | −40 | +200 | 2 × pikët në dorë |
| Normal — kishte hapur më parë | −20 | +100 | pikët në dorë |
„I hapur" është lojtari që ka hedhur së paku një letër ose i ka shitur një letër dikujt atë raund.
Llogaritësi i zbaton këto rregulla dhe e ruan raundin ashtu si i llogarit — një prekje për raundin që bie brenda tyre. Fushat e numrave mbeten gjithmonë të redaktueshme, dhe «Vendosi te fushat» i shkruan pikët aty pa i ruajtur: te fletët e vjetra ka raunde që nuk dalin nga rregullat, dhe një aplikacion që pranon vetëm kombinimet e lejuara nuk do t’i shënonte dot.
Asnjëra nuk ka llogaritës: numri vjen i numëruar nga tavolina.
| Raundi | Deri te | Fiton | |
|---|---|---|---|
| Domina | sa gurë i mbetën secilit në dorë | 100 a 250 pikë | totali më i vogël |
| Pishpirik | pikët e dorës — 25 gjithsej, plus 10 për çdo pishpirik (15 me fant) | 101, 120 a 151 pikë | totali më i madh |
Deri ku luhet zgjidhet kur nis mbrëmja, sepse kjo është marrëveshje e tavolinës e jo rregull i lojës — dhe «Pa kufi» rri krah numrave, për mbrëmjen që mbaron kur ngrihet shoqëria. Ndërrohet edhe mes lojës, nga rreshti «Deri te …»: nëse dikush e ka kaluar tashmë numrin e ri, fleta mbyllet aty për aty, dhe rihapet po aq lehtë.
Te pishpiriku një dorë e plotë ndan 25 pikë: nga një për secilin as, dam, mbret, fant e dhjetë (22 me dhjetën e bastunit dy e dyshin e lules një), dhe tri për shumicën e letrave — 27 a më shumë, e askujt kur tavolina ndahet baras. Një pishpirik vlen 10, dhe 15 kur letra që e bën është fant. Ata numra rrinë shkruar nën fushat, që një dorë e numëruar gabim të bjerë në sy para se të ruhet.
Një shkronjë për raund, dhe shtatë shkronja e mbarojnë mbrëmjen:
| E humbi raundin | merr shkronjën e radhës nga „MAGAREC" |
| E mbushi fjalën | e humbi mbrëmjen; loja mbaron aty |
Shkronjat nuk ruhen askund: raundi shkruhet si 1 për humbësin e 0 për të
tjerët, dhe fjala del nga numri. Prandaj fshirja ose ndërrimi i një raundi të
mesit i rinumëron vetvetiu të gjitha shkronjat pas tij.
npm install
npm run dev # serveri i zhvillimit
npm run build # tsc --noEmit && vite build && vite build -c vite.punetori.config.ts
npm run preview
npm test # node --test — 257 prova, pa framework provash
npm test para çdo commit-i.
src/
main.tsx pikënisja
App.tsx shpërndarja e rrugëve
rruga.ts rrugëtimi me hash
tipet.ts tipet e të dhënave
lojerat.ts regjistri i katër lojërave: kush fiton, me çka mbaron
mbrëmja, a ka llogaritës, a shlyhet — pa DOM, pa bazë
llogaritjet.ts totalet, renditja, matrica, gjatësia e lojës dhe kush
përzien — pa DOM, pa bazë;
`permbledhja` i jep totalet, raundet e luajtura dhe
barazinë e pjesëmarrjes me një kalim të vetëm
pikezimi.ts rregullat hant/normal — pa DOM, pa bazë
magareci.ts shkronjat, fjala dhe magareci i mbrëmjes — pa DOM, pa bazë
parashikimi.ts vendi më i mirë e më i keq i arritshëm, raundet që duhen
për vendin e parë, dhe sa raunde i kanë mbetur mbrëmjes —
pa DOM, pa bazë
ruajtja.ts IndexedDB përmes `idb`
kopja.ts nxjerrja dhe leximi i kopjes rezervë
bashkimi.ts rregullat e sinkronizimit: kush fiton, çka dërgohet, çka
zbatohet — pa DOM, pa bazë, pa rrjetë
skema.ts migrimet SQL të projektit të përdoruesit — pa DOM
projekti.ts adresa, çelësi dhe mesazhet e gabimit — pa DOM, pa rrjetë
identiteti.ts `uid`-i i një regjistri dhe emri i një pajisjeje — pa DOM
supabase.ts klienti i vogël mbi `fetch`, dhe konfigurimi i ruajtur
sinkronizimi.ts shkarko, zbato, dërgo — dhe katër format e një lidhjeje
pajisja.ts emri e id-ja e këtij shfletuesi
koha.ts ora e hapjes, fundi i mbrëmjes dhe sa zgjati — pa DOM,
pa bazë
fusha.ts teksti i fushës së pikëve, shenja e tij dhe data
mbledhja.ts mbledhja e dorës: termat, fshirja prapa dhe shuma —
pa DOM, pa React
versioni.ts versioni i `package.json`-it, i futur gjatë ndërtimit
qr.ts kodues QR i shkruar me dorë (byte, niveli L, v1–20)
paketa.ts base64 i sigurt për adresa, dhe nënshkrimi
kodi.ts kodi tetëkarakterësh i bashkimit, dhe shkrimi i tij sa
shtypet — pa DOM, pa rrjetë
ndarja.ts rezultati i paketuar brenda një adrese
sinjalizimi.ts SDP-ja e ngjeshur brenda një adrese — pa DOM, pa WebRTC
lidhja.ts kanali WebRTC dhe rruga e sinjalit mes skedave
lidhjaMeServer.ts mënyra me kod, përmes një serveri të huaj
takimi.ts adresat e sinjalizimit tonë dhe kontrolli i tyre —
pa DOM, pa rrjetë
lidhjaMeTakim.ts mënyra me takim: i njëjti kanal, sinjalizimi ynë
ngarko.ts lexo-nga-baza si hook
sherbimi.ts çka ruhet për punë pa internet, dhe çka nuk preket —
pa DOM, pa `caches`
analitika.ts emri i rrugës që i shkon matjes, dhe pastrimi i adresës —
pa DOM, pa rrjetë
matja.ts numërimi i hapjeve te strehuesi: skripti dhe ndërrimi i
rrugës, asnjë vendim
punetori.ts punëtori i shërbimit: tri ngjarje, asnjë vendim
instalimi.ts regjistrimi, dhe njoftimi kur del një version i ri
tema.ts sistemi · dritë · terr — pa DOM, pa `localStorage`
ndricimi.ts tema e vënë te faqja, dhe e mbajtur mend
ikonat.tsx ikonat SVG inline
style.css sistemi i stilit
pamjet/ Grupet · Grupi · Loja · Shiko · Lidhu · Pergjigja
Bashkohu · Sinkronizimi
pjeset/ Renditja · Raundet · Shlyerja · TabelaEPergjithshme
FutjaERaundit · Mbledhesja · LojtaretELojes
FushaEKodit · PanelaEKopjes
RregullatELojes · Kohezgjatja
Ndarja · Drejtperdrejt · PaServer · MeServer
PamjaERezultatit · KodiQR
FutjaEMagarecit · RrjetiIMagarecit · RaundetEMagarecit
PergjithshmetEMagarecit · Parashikimi
PermbledhjaEPamjes · Vetja · Ndricimi · Gardhi
test/
llogaritjet.test.mjs totalet, renditja, matrica — kundër `logic.json`-it
lojerat.test.mjs regjistri: shkronjat e paketës, drejtimet, kufijtë
fundi.test.mjs kur mbaron mbrëmja e secilës lojë, dhe mbyllja me dorë
fusha.test.mjs futja e pikëve negative pa tastierë me minus, dhe
data ditë/muaj/vit sa shkruhet
mbledhja.test.mjs termat e mbledhur, «+» i shtypur dy herë dhe fshirja
prapa mbi një term të mbyllur
pikezimi.test.mjs rregullat — kundër raundeve të vërteta
magareci.test.mjs shkronjat, fjala e mbushur dhe tabela e grupit
parashikimi.test.mjs kufijtë e një raundi, dhe ligjet që vendi i mundshëm
nuk i thyen dot — mbi totalet e `logic.json`-it
kopja.test.mjs nxjerrja dhe refuzimi i skedarëve të dëmtuar
qr.test.mjs matrica të ngrira, të verifikuara me një dekodues
ndarja.test.mjs paketimi, dhe refuzimi i adresave të prera
sinjalizimi.test.mjs SDP-ja e ngjeshur — kundër SDP-ve të vërteta, dhe
refuzimi i rreshtave të futur brenda një adrese
kodi.test.mjs kodi i bashkimit, shkronjat që ngatërrohen, dhe çka
mbetet te fusha pas çdo prekjeje
sherbimi.test.mjs lista e asaj që ruhet, koshët e vjetër, dhe kërkesat
që punëtori nuk i prek fare
tema.test.mjs leximi i temës së ruajtur, dhe ngjyrat që rrinë të
shkruara te tre skedarë
bashkimi.test.mjs kush fiton një përplasje, çka shtyhet, çka refuzohet
skema.test.mjs migrimet: numrat, rregulli i sigurisë, dhe se
përsëritja e skriptit nuk prish gjë
projekti.test.mjs adresa, çelësi sekret që refuzohet, dhe përkthimi i
gabimeve
identiteti.test.mjs `uid`-et që nuk përsëriten, dhe emri i pajisjes
logic.json fleta origjinale, si burim provash
sdp.json SDP të vërteta të Chromium-it, si burim provash
Katër dëshmitarë rrinë jashtë npm test, sepse kërkojnë Playwright dhe një ndërtim
të gatshëm:
deshmitare/
supabase-i-rreme.mjs një Supabase sa për të provuar shtresën e rrjetit
rrjeti.mjs hyrje → skript → verifikim → dërgim → pajisja e dytë
lidhja-me-kod.mjs lidhja me kod kundër një `peerjs-server` lokal, i cili
vritet në mes të mbrëmjes dhe kthehet
takimi.mjs shtrëngimi i plotë mes dy shfletuesve, dy skanime
njëkohësisht, dhe serveri që nuk preket më pas
Mënyra «Takim» e mban gjendjen e shtrëngimit te një Redis i vogël: te Vercel-i
shtohet nga paneli (Storage → Upstash), dhe atëherë KV_REST_API_URL e
KV_REST_API_TOKEN vijnë vetë. Pa të, serveri bie te kujtesa e çastit dhe
lidhja del herë po e herë jo — ekrani e thotë me fjalë, dhe dy mënyrat e tjera
punojnë si gjithmonë.
Arsyetimi pas zgjidhjeve rri te CLAUDE.md.
Paleta, kartelat dhe tabelat vijnë nga Kujdestaria — e njëjta paletë blu-nate me smerald e cian, dhe numrat tabelorë te kolonat. Dy gjëra ndryshojnë me qëllim:
public/shkronja/. Nuk merret nga Google Fonts
gjatë hapjes: faqja duhet të hapet e plotë pa internet.Kontrasti mbetet WCAG AA në dritë e në terr: teksti mbi veprimin kryesor del 5.5:1 dhe 7.6:1, dhe kufijtë e kontrolleve mbi 3:1 sipas WCAG 1.4.11.
Tableta e mbajtur anash i merr dy shtylla. Te telefoni gjithçka rri një kolonë e vetme dhe lexohet nga lart poshtë. Sapo ekrani ka gjerësi, ajo për të cilën hapet faqja rri majtas — grupet, historiku, futja e raundit, renditja — dhe çka preket a lexohet një herë kalon djathtas: kopja rezervë, sinkronizimi, përgjithshmet, rregullat, lojtarët, parashikimi, shlyerja. Te ekrani i lojës futja ngjitet me rrëshqitjen, pra raundi shënohet me renditjen para syve; te fleta që shikon dikush tjetër, e tëra hyn në një ekran pa rrëshqitur. Ekranet me një pyetje të vetme — kodi, pritja e lidhjes — qendërzohen në vend që të rrinë ngjitur te qoshja. Radha e leximit mbetet e njëjta te çdo gjerësi.
Ndriçimin e zgjedh tavolina, nga çelësi te fundfaqja e ekranit të parë: «Sistemi», «Dritë», «Terr». Hapet te drita; tema e errët rri e plotë një prekje larg, dhe «Sistemi» e kthen ndërrimin automatik të telefonit. Zgjedhja mbahet mend te vetë shfletuesi, jo te baza: nuk është e dhënë loje, nuk hyn te kopja rezervë dhe nuk del nga pajisja.