Přehled změn prototypu a design systému PhoneCopy. Nejnovější nahoře. Štítky: Přidáno Opraveno Změněno. U jednotlivých dnů je odpracovaný čas — celkem 117 h.
Průchod balíčkem před předáním vývoji: správa propojených počítačů, ruční zadání párovacího kódu, potvrzení e-mailu při registraci, právní dokumenty, prohozené pořadí oprávnění, sjednocené hlavičky a doplnění dokumentace o oblasti, na které vývojář narazí hned.
PROTO.plan znal jen hodnotu premium, natvrdo svázanou s 200 GB. Přidána osa PROTO.tier (50 / 200), která se promítá do paywallu, úložiště i dashboardu..pc-linkbtn, jehož odsazení pro odkaz pod obsahem sheetu se sečetlo s mezerou skupiny. Zrušeno uvnitř .acts; všech sedm modálů má teď shodných 8 px.CONTEXT.md (HANDOFF přitom uváděl správné, takže si dokumenty odporovaly navzájem), chybný cíl po registraci, odkaz na neexistující režim restore a názvy barevných tokenů, které v CSS nejsou (soft, amber, safeBg). Vývojář by podle nich postavil tok obráceně. Vše opraveno proti skutečnému kódu.-9 px, takže začínalo na 13 px, zatímco karty, seznamy i přepínač na 22 px. Ten posun je iOS zvyk pro opticky vyrovnaná kulatá tlačítka, jenže tady má tlačítko výplň i obrys — jeho hrana je vidět a nelícování bije do očí všude, kde pod hlavičkou začíná seznam. Odsazení zrušeno v hlavičce i u plovoucího tlačítka, protiváha upravena ze 33 na 40 px, aby nadpis zůstal na středu. Ověřeno napříč všemi obrazovkami a stavy.legal) — právní doložka v onboardingu a v auth sheetu dosud nikam nevedla a v Nastavení obě položky jen zobrazily toast. Nová obrazovka nese oba dokumenty s přepínačem nahoře: uživatel mezi nimi přeskakuje (podmínky odkazují na soukromí a naopak), takže dvě samostatné obrazovky by znamenaly cestu tam a zpět. Hlavička i přepínač jsou přilepené — u dlouhého dokumentu by jinak přepnutí znamenalo doscrollovat zpátky nahoru. Zpět vede tam, odkud se přišlo. Texty jsou zkrácené shrnutí podle znění na phonecopy.com se zachovanou strukturou sekcí, aby šly v implementaci nahradit 1:1; plné znění patří na server, ať jde měnit bez vydání aplikace.PERM, cíl po registraci, ukazatel průběhu, alias větve se zálohou na serveru a popisky v railu..pc-dhead jako zbytek aplikace, jen místo nadpisu nese ukazatel — hlavičky tak sedí na stejné lince napříč celou appkou. Obrazovky bez návratu tlačítko prostě vynechají. Vedlejší efekt: hlavička je přilepená, takže ukazatel průběhu už neodroluje pryč na delších obrazovkách (oprávnění ke kontaktům, výběr alb)..pc-dhead + .pc-sec, .body > .pc-sec:first-child) horní margin první sekci ruší — nad ní není co oddělovat. Rytmus mezi sekcemi navzájem zůstává 24 px. Ověřeno, že je mezera pod hlavičkou jednotných 20 px na všech obrazovkách.photos, contacts, settings, empty_media); podstránky jako Úložiště nebo Účet si ji nechaly. Zbytek z doby, kdy se do médií a kontaktů chodilo z dashboardu jako do podstránek..pc-dhead h2 má teď vlastní výšku 40 px, shodnou s tlačítkem. Ověřeno, že hlavička měří 147 px a nadpis sedí na 60 px na všech obrazovkách ve všech stavech.desktop_detail) se systémem, poslední aktivitou, místem a časem propojení. Odpojení potvrzuje sheet — je vratné, takže nevyžaduje opisování slova; data na serveru zůstávají. Počítačů může být víc (pracovní i domácí notebook), drží je pole DESKTOPS a nadpis se mění podle počtu. Do limitu zařízení podle tarifu se nepočítají — nezálohují, jen čtou zálohy.CONTEXT.md, HANDOFF.md, katalogu i CSS teď popisují skutečnost a varují, ať se v portu neobarvuje červeně nic dalšího jen kvůli logu.ILUSTRACE-PROMPTY.md smazán (ilustrace vznikají jinou cestou, návod by sváděl k dogenerování místo vyžádání finálních). RESUME-PROMPT.md přepsán pro vývojářský tým: hlavní varianta míří na port do RN/Flutter, úpravy prototypu zůstaly jako varianta B.desktop_code) — tlačítko „Zadat kód ručně" u oprávnění ke kameře dřív jen hlásilo, že věc není vyřešená. Přitom je to záložní cesta pro uživatele, kterému kamera nefunguje nebo ji nechce povolit — tedy přesně situace, kdy ji potřebuje nejvíc. Nová obrazovka bere osmiznakový kód, sama doplní velká písmena a formát ABCD-1234 a ústí do stejného párování jako sken. Když je kamera dostupná, nabídne se pod polem i návrat ke skenování.HANDOFF.md nově pokrývá chování při výpadku sítě a obnovu přerušeného přenosu, push notifikace, lokalizaci (prototyp má formáty čísel, dat a měny natvrdo česky), přístupnost nad rámec kontrastu, časování animací a analytiku včetně toho, co se kvůli slibu soukromí měřit nesmí. Doplněn obsah s odkazy a opraveny zastaralé počty (36 → 39 obrazovek, 28 → 45 ikon).Nová sada ilustrací a jejich usazení do obou motivů, volba vzhledu přímo v aplikaci a průchod celým kódem s cílem předat prototyp k implementaci.
ghost, ale pravidlo .pc-card.blue .pc-cta ji přebíjelo, takže obě vypadala úplně stejně — stejné pozadí i barva textu. Ghost varianta na modré kartě teď má jemnou průsvitnou výplň (bez obrysu, jako ghost všude jinde v systému) a kontrast 5,8 v tmavém motivu.screenshot.mjs čísluje soubory podle pořadí v toku, ale složku před generováním nemazal. Po každé změně počtu obrazovek tak vedle nové sady zůstala ležet stará: 176 souborů místo 64 (66 MB), včetně snímků obrazovek, které už neexistují (restore_hard), a dvojic jako 35-media_albums vs 36-media_albums. Kdo by balíček dostal, nepoznal by, která sada platí. Skript teď složku před během vyprázdní.ic-[a-zA-Z]+ neuměl pomlčku uvnitř názvu. Z ic-check-c tak přečetl jen ic-check a ikonu pak označil za přebývající. Tatáž chyba způsobila, že se ic-spinner (vkládá se z JS při běžící záloze) dřív jevil jako nepoužitý — ve skutečnosti se používá. Správný počet je 45 ikon, všechny se používají.--brand-dark, --danger-soft), sloučena duplicitní pravidla .pc-sheet.auth a .pc-linkbtn[hidden] a poslední dvě inline barvy nahradila třída .pc-list .row .val .i. Systém má nově 106 tokenů a 237 tříd — všechny se používají, žádné duplicitní selektory ani inline barvy.aspect-ratio..onb-back smazána — pět pravidel v CSS, ale v prototypu ani jedno použití; zbyla po dřívější verzi onboardingu..exp tím dostala místo v hlavním toku — dosud žila jen na obrazovkách obnovy, které jsou mimo tok..i:not([href*="apple"]), jenže href nese <use>, ne <svg>. Podmínka proto platila vždy a barevná loga přišla o výplň, zatímco stroke z .i jim kreslil obrys. Selektor míří na <use>; loga jsou bez obrysu, čárová ikona e-mailu si výplň nebere..pc-card.cf) — pět pravidel a ukázka v katalogu zbyly po obrazovce řešení konfliktů, kterou jsme odstranili 28. 7. Token --pc-sel zůstává, nese ho zvýraznění aktivního tarifu.ic-check, takže vypadaly jako obarvitelné symboly. Nově mají vlastní sekci s ukázkou na skutečných tlačítkách a poznámkou, že mají oficiální barvy značek a nesmí se stylovat přes currentColor.library.html zduplikovaný, takže zaostával: 13 ikon chybělo (ic-trash, ic-download, ic-qrcode, ic-search, ic-chevrons…) a 4 přebývaly. Kopie smazána, katalog teď čte sprite přímo z prototypu — jediný zdroj pravdy, který nemůže zastarat.ic-user, ic-dot, ic-logo a ic-auto. Poslední zbyla po přepsání přepínače motivu na rozbalovací nabídku; zbylé tři se nepoužily nikdy. Sprite má nově 44 ikon, všechny se prokazatelně vykreslují.--fw-medium (500) a pravidlo .pc-ch .amt small, které ho drželo naživu — .amt ale nikde <small> neobsahuje, takže se váha nikdy nepoužila. Zbylých 32 tokenů se prokazatelně vykresluje, včetně těch s jediným použitím: --fs-hero (hero číslo), --fs-3xl (procenta v kruhu průběhu), --r-phone (rám telefonu) a --sp-safe (bezpečná zóna home-indicatoru).--pc-head-bg, --pc-tabbar-bg…) se shodnými hodnotami v obou motivech. Sloučeno do --pc-glass a --pc-glass-line: jeden materiál, jedno místo změny..pc-cta.brand (červené CTA) nebyla v prototypu ani jednou; princip „trezor, ne požární hlásič" navíc říká, že červená na akcích nemá co dělat, takže by ji implementace neměla brát jako platnou volbu. Dál třída .perm-icon (zbyla po nahrazení ilustrací u kamery) a token --pc-on-accent-soft.object-fit:contain, takže se různé poměry stran srovnají a galerie drží rytmus. Doplněny i perm_camera.png a backup_not_found.png, které v katalogu chyběly, a jejich prompty do ILUSTRACE-PROMPTY.md.package.json odkazoval na neexistující index.js — pole main odstraněno, prázdný test skript nahrazen užitečnými: npm run screenshots a npm run serve.app.phonecopy.com, jako by kód ukazoval web. Rozhodnuto: app.phonecopy.com je stránka, odkud se aplikace stahuje, a párovací kód zobrazuje nainstalovaná aplikace. Texty na obou obrazovkách to teď říkají shodně.forgot_sent.png ležela ve složce a byla jen v katalogu, přestože pro ni existuje přesné místo: pohled „Ověřit kód" v obnově hesla. Obálka s fajfkou potvrzuje, že e-mail odešel, dřív tam byl jen text..screen.pc, jenže auth sheet žije mimo obrazovky, takže na něj nedosáhlo. Selektor rozšířen o .pc-sheet; všech 61 ilustrací má teď shodný stín v obou motivech.README.md, CONTEXT.md i HANDOFF.md doplněno, že ilustrace jsou záměrně ve vysokém rozlišení (optimalizace patří do implementace podle cílové platformy) a že všechna čísla v UI jsou ukázková — počty, objemy, časy i ceny se nahradí daty z API a nemají se kopírovat jako výchozí hodnoty.HANDOFF.md, hlavní dokument pro implementaci, mluvil o 21 obrazovkách (prototyp jich má 38) a odkazoval na home_premium, home_trial a restore_hard, tedy obrazovky sloučené nebo zrušené při refaktoru 31. 7. Vývojář by podle něj stavěl strukturu, která neexistuje. Přepsána mapa obrazovek, stavový model (PROTO, data-when, data-plan), vrstva tokenů pro AA kontrast a 10 komponent, které v katalogu chyběly.design-system.css, katalog, changelog, ilustrace ani screenshot.mjs; kdo dostal balíček, netušil, co ty soubory jsou. Přibyl i popis ovládacího panelu a upozornění, že prototyp se musí spouštět přes HTTP kvůli localStorage. RESUME-PROMPT nově obsahuje technické konvence, aby na ně asistent nenarazil až po chybě.CONTEXT.md, kde je implementace najde spolu s ostatním kontextem; dva zastaralé (výběr alb, který je hotový) odstraněny a dva nové doplněny — sdílení aplikace za kredity a rozhodnutí, jestli se počítač páruje s webem, nebo s nainstalovanou aplikací..pc-tick, .pc-pill, .pc-menu, .pc-search, .pc-hint, .pc-permwarn, .err-icon, hledáček QR, pruh úložiště, profil účtu a zvýraznění v textu. Vznikly během posledních dní a v katalogu chyběly, takže je implementace neměla kde najít. Přibylo i 20 tokenů (povrchy, sklo hlavičky, splash)..err-icon.soft (zbylo po nahrazení ilustrací na prázdném stavu médií), toast dostal token místo #fff. Do CONTEXT.md doplněny obrazovky acc_email a error, které v mapě chyběly.--pc-head-bg), aby prototyp neměl dvě různá průhledná pozadí; obsah pod nabídkou prosvítá. Nese role="listbox" a aria-selected.--splash-halo a --splash-shadow.firstsync, firstsync_merge a restore_found měly ilustraci obalenou v <div class="pc-illus">, takže záři dostal obal i obrázek. Vedle uvítací obrazovky s jednou vrstvou to vypadalo nekonzistentně. Obal byl zbytečný a zmizel.flex:1 je roztahovalo podle toho, kolik místa zbylo po textu, takže perm_photos (o odrážku delší) mělo 180 px a perm_bg 260. Nově drží 220–239 px na všech obrazovkách oprávnění.media_sources_login, kde může být i dvacet zařízení.perm_camera.png na obrazovku oprávnění, backup_not_found.png na stav „zatím nic nezálohováno" a perm_photos.png na stav bez přístupu k médiím.desktop_app a desktop_scan chyběl priming, ačkoli u fotek i kontaktů ho máme. Systémový dialog na kameru tak přišel bez varování. Nová obrazovka perm_camera vysvětluje, že kamera slouží k jedinému úkonu a nic se z ní neukládá, a nabízí únik: kód jde opsat ručně. Ptá se jen jednou za relaci..ring má pevných 188 px, ale párování v něm kreslí kruh o 120 px a nic ho necentrovalo, takže seděl 34 px vlevo od osy nadpisu. U průběhu je kruh přesně 188 px, proto se to nikde jinde neprojevilo.pairDesktop(), takže při příchodu odjinud zůstal viset na poslední hodnotě a tvrdil, že kód platí, i když čas dávno vypršel. Nově ho řídí router: nastartuje při vstupu a zastaví se při odchodu, aby neběžel na pozadí.NOTIFS), ne z pevného HTML — seznam i detail tak mají jeden zdroj a nemůžou se rozejít. Zvoneček nese tečku jen dokud je co číst.contactsOnly; týkalo se to i první zálohy bez přístupu k médiím, kterou dosud zachraňovala jen shoda okolností..pc-hint: 11 px v nejlehčí váze, uprostřed velké prázdné plochy. Nově vlastní stavová hláška (15 px, semibold) s aria-live, aby ji oznámila i čtečka.ic-qr je řádková ikona kreslená tahem, takže ve velkém rámečku působila jako drátěný náčrt. Přibyl ic-qrcode: výplňová grafika se třemi polohovacími značkami a datovými moduly, tedy tvar, který lidé z QR kódů znají. Řádková ikona zůstává pro seznamy.prefers-reduced-motion vypínalo jen přechody — pravidlo rušilo transition, ale ne animation, takže skenovací linka běhala dál i uživateli, který si pohyb vypnul. Nově se zastaví obojí.--focus-ring, který se obrací s motivem — žádná jedna fialová neprojde v obou. K barvě přibyl prstenec, aby změnu poznal i ten, kdo barvy rozlišuje hůř: nově 5,26 / 4,17 (dark) a 5,70 / 4,06 (light) vůči poli i klidovému rámečku.Průchod celým design systémem: kolik tokenů se opravdu používá, jestli něco nechybí a jestli barvy splňují kontrast. Audit odhalil 33 míst pod prahem WCAG AA — nejzávažnější na obrazovkách s oprávněními, tedy v nejcitlivějším místě celého toku.
OBNOVIT nebo ZÁLOHOVAT, jinak zůstane CTA neaktivní. Stávající appka tohle řeší verzálkami a červenou stěnou („SMAŽE VŠECHNY kontakty“) — to varuje, ale nevysvětluje. Místo toho je tu konkrétní bilance: kolik kontaktů zmizí, kolik přibude a co přesně je nevratné.ic-trash a ic-download plus barevné varianty řádkové ikony (.em.danger, .em.ok) — mazání a stahování musí být čitelné z tvaru, ne až z textu. Přibyl token --danger-ink: plná --danger-dark má na světlém podkladu jen 2,35, tokenizovaná varianta 4,31..pc-cta:disabled mělo ztlumení jen uvnitř auth sheetu, jinde se vykreslovalo plnou sytostí. U nevratné akce to svádí ke kliknutí dřív, než uživatel splní podmínku. Pravidlo zobecněno na celý design systém.--safe-ring s poměrem jen 3,01 místo 4,5. Týkalo se to nejcitlivějšího místa toku — obrazovek s oprávněními. Dál propadal zlatý akcent v light motivu (1,92), čas u notifikací (2,51) a stav „Aktivní" u předplatného (3,01).--safe-ring, --gold pro grafiku (práh 3:1 — fajfky, přepínače, ukazatele) a --safe-solid / --safe-ink / --gold-ink pro čtený text (4,5:1). --safe-ink a --gold-ink se obracejí s motivem: na tmavém musí být světlé, na světlém tmavé — jedna hodnota pro oba motivy nestačí. V light se ztmavil i --pc-fg-4 a --pc-fg-5. Po opravě prochází 792 kombinací obrazovka × stav × motiv bez jediného podprahového textu.style="color:var(--gold)" nahradily třídy .amt-warn (text) a .i.gold (ikona); applyState() místo el.style.color přepíná třídu. Styl patří do stylesheetu, navíc jen tak mohla zlatá dostat variantu podle motivu.--pc-kicker zůstal definovaný ve třech blocích i s komentářem tvrdícím, že ho .kicker používá, ačkoli ten dávno přešel na --violet-ink. Dál zrušeny --safe-bg, --logo-grad, --brand-rgb, --page-1/2, --page-glow a --shell-line-2 — bez jediného použití a bez záznamu v katalogu.Řádek „Konkrétní alba" byl na obou obrazovkách výběru slepý — kliknutí jen vyhodilo toast. Tím se nedala dokončit volba, kterou si uživatel na předchozí obrazovce zvolil: vypnul „Všechna alba", ale vybrat konkrétní už nešlo.
media_album_pick) — seznam 67 alb systémové knihovny s hledáním (ignoruje diakritiku), akcí Vybrat vše / Zrušit výběr a průběžným objemem v patičce. U každého alba je počet položek a velikost, řazeno sestupně: velká alba rozhodují o objemu nejvíc. Otevírá se z onboardingu i z Nastavení a pamatuje si, kam se vrátit..pc-tick) — přepínač znamená „zapnout funkci", výběr položek ze seznamu je jiná operace a potřebuje jiný ovládací prvek. Řádek je celý klikací, ovladatelný z klávesnice (mezerník i Enter) a nese role="checkbox".max-width a max-height ho ořezávaly nezávisle na sobě. Na 1366×768 byl o 26 % plošší, na 1280×720 o 35 %. Nešlo jen o tvar: ořezávala se výška, takže obsah dostal míň místa a obrazovky rolovaly jinde než na reálném zařízení — firstsync se na velkém monitoru vešla, na notebooku už ne. Nově si telefon rozměr drží a celý se proporcionálně zmenší (zoom, počítá fitPhone()), takže je prototyp na notebooku k nerozeznání od prototypu na velkém monitoru. Přepočítává se při změně velikosti okna i po sbalení railu, který uvolní 264 px..pc-search) a ikona lupy ic-search — první seznam v prototypu, který je dost dlouhý na to, aby se v něm hledalo..pc-linkbtn — nová definice pro akci v řádku se srazila s existující, která má width:100% (textový odkaz pod CTA). Pozdější pravidlo vyhrálo a tlačítko „Vybrat vše" zabralo celý řádek přes hledací pole. Vyřešeno modifikátorem .inline místo druhé definice téže třídy.Doladění po sloučení obrazovek: nová obrazovka Úložiště, rozdělení Účtu a Nastavení podle pravidla „kdo jsem vs. jak to funguje", výběr alb zařazený před první zálohu a série oprav, které vyplynuly z testování.
no_media byla natvrdo odvozená z Free a přebírala i popisek tarifu. Teď se staví na aktuálním plánu; totéž platí pro limit úložiště (Premium má 200 GB, i když se nic nespotřebovává).data-when="free media-on", jenže víc hodnot znamená OR, takže svítila i v Premium, kde stavy nezálohováno / 1 GB plné nedávají smysl a přepínač byl mrtvý. Přibyl klíč free-media pro AND.storage) — kolik místa zabírají fotky, videa a kontakty, se složeným pruhem a legendou. Segmenty odděluje vlas v barvě pozadí (fialová a modrá si jsou podobné); u jediné hodnoty se nekreslí a prázdné položky do pruhu ani legendy nejdou. Dřív byla karta na dashboardu i řádek v Nastavení slepé (šipka nikam nevedla). Kontakty se do limitu nepočítají, ale ukazují se — právě ony jsou zdarma navždy..body.onb je flex sloupec a seznamy v něm neměly flex:none, takže se při přetečení obsahu stlačily.media_albums_onb) — nejdřív uživatel určí, co se má zálohovat, teprve pak se začne nahrávat. Dřív se výběr dal změnit až v Nastavení, kdy už byla první záloha hotová. Zařazeno v obou větvích (prázdný server i data na serveru), bez přístupu k médiím se přeskočí; volba se propisuje do Nastavení.Z produktového callu vyplynulo, že přenosy jsou tři, ne jeden, a že fotky a videa se chovají jinak než kontakty. Prototyp to dosud modeloval jako jednosměrnou zálohu a jeden souhrnný sklad bez vazby na zařízení.
Stav účtu se řešil duplikací obrazovek — home / home_trial / home_premium a tak dál, ~20 obrazovek a přes 700 řádků. Každá změna se musela dělat třikrát. Měření ukázalo, že zkušební verze a placené Premium se u pěti ze sedmi rodin nelišily obsahem vůbec, jen cíli navigace.
.proto-panel) vpravo nahoře, výchozí zavřený — drží stav prototypu: uživatel, tarif (včetně zrušené zkušební verze), zálohy na serveru, úložiště, počet zařízení. Pod přepínači je shrnutí, aby bylo při testování vidět, kde jste. Persistuje do localStorage stejným vzorem jako motiv a rail._trial, _premium, acc_devices_free, paywall_trial_cancelled). Co se ukáže, řídí data-when (skrývá sekce) a data-plan (plní texty z PLAN_DATA). Soubor se zmenšil o 154 řádků i po přidání panelu.normalizeProto() teď takové kombinace srovná při zápisu a panel dotčené volby zamkne s vysvětlením.conflicts a conflict i s funkcemi resolveAll() a pickConf(). Nevedla na ně žádná cesta z aplikace, jen z railu.media_sources_login, kde si vybere, jestli do nového telefonu stáhnout i obsah z dřívějších zařízení. Předvybraná jsou všechna (na novém telefonu lidé nejčastěji chtějí své fotky zpátky) a objem ke stažení je vidět nad tlačítkem. Na známém zařízení se neptáme — volba padla dřív. Podle výběru pak tlačítko buď spustí synchronizaci („Stáhnout do telefonu"), nebo jde rovnou na dashboard („Pokračovat bez stahování").backup_contacts) — bez přístupu k médiím se zálohují jen kontakty, ty se do 1 GB vejdou, takže průběh doběhne na 100 % zeleně se štítem místo žlutých 30 %. Texty mluví výhradně o kontaktech; nabídka desktopu (lákající na prohlížení fotek) se v tomhle stavu neukáže.applyState() mění obsah, ne aktivní obrazovku, takže allowMedia() teď přepne i ji.CFG.restore.dest a CFG.backup_premium.dest měly natvrdo 'home_trial'. Tři volání startProgress navíc spoléhala právě na ten vadný default.openDevices() zapamatuje, odkud se přišlo.hidden nefungoval na sekcích — .pc-feed a .pc-actions mají display:flex, což přebilo výchozí display:none. Upsell tak svítil i v Premium a dashboard měl čtyři rychlé akce místo tří. Doplněno [hidden]{display:none!important}.AUTH_NEXT vedlo přihlášení vždy do Premium bez ohledu na stav.baseScreen() v go() přemapuje uložené odkazy typu #home_premium na sloučenou obrazovku.CONTEXT.md, že „additivní obnova je potvrzená jako správná", tím padá — additivní chování je synchronizace.serverHasData rozhodne mezi zálohou (prázdný server → firstsync) a synchronizací (media_sources_onb → firstsync_merge). Uživatel si nevybírá, systém rozhodne a vysvětlí. V railu jsou obě větve pro demo.media_sources) — ze kterých zařízení se stahuje do tohoto telefonu. Volba je per-zařízení a nesymetrická: C může přijímat z A i B, zatímco A jen ze sebe. Zapnutí zdroje stáhne i historii, proto se objem („Stáhne se 1 240 položek, ~3,2 GB") ukazuje předem.media_albums) — druhá osa, co jde z telefonu nahoru. Vychází z existující obrazovky „Synchronizovat alba", přepsané do našeho tónu: popisky jsou tvrzení místo otázek, „Všechna alba" je výchozí zapnuté a schová detailní volby, dokud je uživatel nepotřebuje.restore_hard) — destruktivní varianta jen v Nastavení → Pokročilé. Jantarové varování (ne červené), konkrétní počet mazaných položek, neutrální CTA a druhé potvrzení bez primary, aby destruktivní volba nebyla vizuálně přitažlivější než ústup.sync v startProgress — zelený prstenec, kicker „Synchronizace", dokončení „Máte všechno na obou stranách."restore_pick/restore_found/restore_select popisoval additivní chování pod názvem obnova. Texty přeznačeny na „Doplnit", 8× tlačítko na dashboardech taky. Slovo „obnova" zbylo destruktivní variantě, resetu hesla a renewalu předplatného.isRestore v startProgress — deklarovaná, nikde nepoužitá. Odstraněna..pc-permwarn.always — varianta varování viditelná trvale, ne až po odmítnutí oprávnění. Pro destruktivní akce.Panel je vývojářský nástroj, do reálné aplikace se nepřenáší — screenshot.mjs ho ve snímcích skrývá stejně jako rail a přepínač motivu.
Nové obrazovky nejsou v ONB_STEPS — pole určuje procenta progressbaru a přidání by je posunulo všem. Mapuje je ONB_ALIAS.
Kompletní přestavba vstupu do aplikace: registrace jako plná obrazovka, přihlášení v bottom sheetu, obnova hesla přes ověřovací kód bez opuštění kontextu. Nová komponenta pro simulované systémové dialogy podle reálného iOS.
.nat-alert, .nat-sheet) — simulované systémové dialogy s rozměry odečtenými z reálného iOS. Nahrazují starý .sysalert; dialogy oprávnění je používají s primary tlačítkem „Povolit".signup — rozcestník metod (Apple / Google / Facebook / e-mail) jako plná obrazovka. Všechny metody rovnocenné, žádná není primární..auth-view): přihlášení → e-mail → ověřovací kód → nové heslo. Obrazovka pod sheetem se nemění. Po 3 pokusech o zaslání kódu se odkaz uzamkne na 30 s..onb-progress) — jeden ukazatel přes celý proces: registrace → 4× oprávnění → první záloha. Pořadí drží ONB_STEPS..pw-wrap / .pw-eye) a pole pro ověřovací kód (.code-input) s filtrem na číslice.id blokovalo validaci — obrazovka registrace sdílela ID s auth sheetem, takže getElementById četl prázdná pole ze skryté obrazovky a tlačítko zůstávalo zamčené.z-index:70, sheety 90/92. Zvednuto na 100, takže je vidět i nad otevřeným sheetem..kicker používal --pc-kicker (červená), zatímco onboarding fialovou. Sjednoceno na --violet-ink; červená zůstává značce a chybám.--violet-2 měl 3.12 (pod AA). Nový token --violet-ink: dark 5.7, light 5.21.z-index:-1) místo ubírání výšky obsahu.--fs-lg), klikatelná část akcentní fialovou. Varianta .solo pro odkazy bez <b>.SIGNUP_NEXT), přihlášení rovnou do aplikace (AUTH_NEXT).signin, forgot, forgot_sent, account_create — nahradily je sheety. Uklizena i navigace a mrtvé CSS třídy.:hover po tapnutí „uvízne". Devět pravidel nahrazeno :active se zmenšením na scale(.97).what.png nově 16:9 (vyplní šířku při stejné výšce). Glow za ilustracemi odstraněn.restore_found měla jiný vzhled než na zbylých 22 obrazovkách (42px, plné pozadí, bez blur)..auth-forgot splynula s .pc-linkbtn, poslední .cta s .pc-cta. Odstraněny nepoužívané .pc-or, .pc-social, .wlc-*, .iconbtn.app.phonecopy.com a párováním přes QR kód. Kód zobrazuje desktop a skenuje ho telefon (jako WhatsApp Web). Vstup z nastavení, z detailu Média a po dokončení první zálohy.transition se teď na okamžik vypne, takže záloha i obnova vždy startují z nuly bez zpětného pohybu.Přilepené hlavičky napříč aplikací, URL routing pro pohodlnější vývoj, sjednocení komponent s design systémem a série theme oprav.
Kompletní audit tokenizace, úklid mrtvého kódu, opravy navigace (úniky, větvení obnovy), přístupnost a mapa obrazovek s todo listem.
Katalog reprodukoval komponenty s hardcoded dark barvami — v light byly nečitelné. Převedeno na tokeny, sjednoceno s prototypem.
--danger-dark byla světlá červená (AA 2.53). V light přepsáno na sytější #C41822 (AA 5.49). Dotýká se signout, validace, sheet, dialog.--pc-track, aktivní část --safe-ring.--note-fg (light tmavý, dark světlý).--pc-surface-2, --pc-tabbar-*). V light viditelné.pc-cta ghost + oficiální loga (jako v prototypu).signin má šipku zpět místo loga (konzistentní s onboardingem). firstsync má „Teď ne, přejít do aplikace".home, trial → home_trial, premium → home_premium (přes restoreDest). Dřív vždy trial.enterRestore() — 8 tlačítek dřív obcházelo výběr zálohy a plnění dat.rgba() převedeno na RGB tokeny (--danger-rgb, --violet-rgb ...). Barvy obalu prototypu (rám, iOS dialog) označeny komentářem „nepřenášet"..screen.dark a .dark selektory (po převodu progressu na tokeny se už nikde nepoužívaly).aria-label na všechna ikonová tlačítka (zpět, zvonek), aria-live na toast.#settings). Refresh drží místo, odkazy jsou sdílitelné, funguje zpět/vpřed v prohlížeči. Předjímá reálný routing při portu do frameworku..pc-cta.ghost včetně hoveru..back / .onb-back) sjednocena na poloprůhledný styl s blurem.--pc-kicker, teď 4.63 (light) / 8.61 (dark).opacity:0) překrýval tlačítka a polykal kliky. Přidáno pointer-events:none. Řeší to na všech obrazovkách.Zbývá do product-ready: reálné ceny + logo (čeká na produkt), chybové a prázdné stavy, ořezávání obsahu. Viz mapa obrazovek (samostatný artefakt).
Otevřené z auditu: obnova obchází výběr zálohy (pickBackup), vždy končí v triálu, chybí chybové stavy, warn karta je v dark olivová. Ořezávání obsahu na restore_found / privacy / what zmírněno, ale ne vyřešeno.
Vlastní rastrové ilustrace, dvě velikosti podle role, a doladění light tématu napříč prototypem.
.compact když pod ní soupeří obsah.max-width, ilustrace vyplní tělo obrazovky.Starší historie viz git log a CONTEXT.md.