Pazy Go - zegarek i widgety
Recepcjonistka na nadgarstku, cztery skróty na ekranie głównym.
Wiktoria ma ręce w lakierze przez 90% dnia, telefon leży pod ręcznikiem, a pochłaniacz szumi. Zegarek, widgety, ekran blokady i StandBy to jedyne miejsca, w których Pazy odzywa się samo. Każda z tych powierzchni dostaje jedną informację, jeden duży glif i najwyżej jedno tapnięcie. Wszystkie makiety pokazują ten sam moment co pozostałe trzy pliki wariantu: wtorek, 28 lipca 2026, godzina 10:42, przy fotelu Weronika Zielińska.
01 / 12
Aplikacja na zegarku: sześć ekranów, zero czytania
Maksymalnie trzy poziomy informacji na ekran, 12 px marginesu po bokach, 8 px pod paskiem czasu, przycisk pełnej szerokości 52 px. Czerń jest tu sprzętem, nie decyzją estetyczną, więc akcenty biorą jasne warianty palety: malinowy #FF6FB1, miętowy #4FD8C4, cytrynowy #FFD84D. Malina #DA0F73 nigdy nie ląduje jako tekst na czarnym.
Teraz
63 min
Weronika Zielińska
Manicure kombinowany
10:15-11:45
W01 · Teraz
Wizyta w toku
Licznik minut jest największym glifem, bo to jedyna liczba, którą Wiktoria czyta w rękawiczce. Nazwisko drugie, usługa trzecia, godziny czwarte.
Następna
12:00
220 zł
Martyna
Regeneracja IBX + hybryda
W02 · Następna
Kto za chwilę siada
Godzina i imię, kwota po prawej w miętowym, bo pieniądze mają w całym wariancie jeden kolor. Dwa przyciski po 52 px, żeby trafić kciukiem w rękawiczce.
Wysłane
Martyna wie, że jesteś w drodze
Będę o 12:00
W03 · Jadę
Potwierdzenie jednym tapnięciem
Jedyny ekran, na którym gradient wychodzi poza kartę i zajmuje cały ekran. To nagroda za akcję, widoczna z odległości metra, i jedyne miejsce, gdzie na zegarku pojawia się malina #DA0F73 - jako tło, nie jako tekst.
Dziś w kasie
480 zł
z 860 zł planu
56% planu dnia, 5 wizyt
W04 · Dziś w kasie
Podsumowanie dnia
Utarg, plan, napiwki i zaliczki. Pasek u dołu to obłożenie planu dnia: 480 zł z 860 zł, czyli 56%. Kwota dnia jest tu miętowa, nigdy malinowa, żeby pieniądze miały jeden kolor w całym produkcie.
Wtorek, 5 wizyt
W05 · Plan dnia
Pięć wizyt, jedna kropka koloru
Wiersze po 44 px, godzina po lewej, kropka koloru usługi po prawej. Zakończona wizyta ma 45% krycia i przekreśloną godzinę, trwająca ma malinowe podświetlenie. Lista przewija się koronką, nie palcem.
Napiwek
20 zł
Kręć koronką
W06 · Napiwek
Kwota z koronki, krok 5 zł
Ekran bez pola tekstowego i bez klawiatury. Wersja działająca, z obsługą koronki, kółka myszy i strzałek, stoi w sekcji 06.
Dlaczego licznik, a nie nazwisko
Wiktoria wie, kto siedzi w fotelu - patrzy na tę osobę. Nie wie, ile jeszcze zostało, bo lampa i frez zjadają poczucie czasu. Dlatego największy glif na W01 to 63 min, a nie „Weronika Zielińska”. Ten sam porządek trzyma się na komplikacjach, w Live Activity i w widgecie small.
Trzy poziomy i koniec
Każdy ekran ma jeden bohater, jedną linię kontekstu i najwyżej jedną akcję. Kiedy projekt zaczyna potrzebować czwartego poziomu, informacja idzie na telefon, a nie na nadgarstek. Zegarek nie jest zmniejszonym telefonem, tylko powiadomieniem, które da się dotknąć.
Kolor na czarnym
Na czerni działają wyłącznie jasne warianty: #FF6FB1 daje 6,6:1, #4FD8C4 daje 11,2:1, #FFD84D daje 13,4:1. Malinowy #DA0F73 na czarnym ma 2,4:1, więc występuje tylko jako tło pełnoekranowego potwierdzenia, gdzie tekst jest biały.
02 / 12
Trzy tarcze, na których Pazy już siedzi
Komplikacja jest ważniejsza od aplikacji, bo aplikację trzeba otworzyć, a komplikację widać przy podniesieniu ręki. Poniżej te same dane w trzech różnych układach tarczy, żeby było widać, jak znak i liczba zachowują się w cudzym otoczeniu.
Tarcza 1 · Modular Duo
Duży slot należy do Pazy
Wielka godzina w cytrynowym, pod nią duża komplikacja prostokątna, na dole pierścień kasy i data. Przełącz zawartość dużego slotu:
Tarcza 2 · Infograph
Trzy pierścienie i cztery rogi
Pierścienie czytamy jako wizyty (2 z 5), kasa (56%) i napiwki (20 zł ze 100 zł celu). Lewy górny róg to komplikacja Pazy: łuk malinowy, godzina następnej wizyty i inicjały MD. Pozostałe trzy rogi należą do systemu: data u góry po prawej, bateria i kroki na dole, każdy z podpisem, bo sama liczba na tarczy nic nie znaczy.
Tarcza 3 · analogowa
Komplikacja inline na godzinie 6
Wskazówki pokazują 10:42, sekundnik malinowy. Na godzinie 12 pierścień kasy, na godzinie 6 najkrótsza możliwa forma Pazy: jedna linia tekstu. Tarcza z cyframi to najtrudniejszy test dla komplikacji, bo nie wolno jej zasłonić wskazówek.
03 / 12
Pięć rodzin komplikacji, każda w skali 1:1
Renderujemy wszystko jako inline SVG: pierścień 6 px, końce zaokrąglone, przerwa 40 stopni u dołu. Podglądy w tabeli mają rozmiar rzeczywisty, taki jaki trafia na tarczę - nic tu nie jest powiększone „dla czytelności”.
| Podgląd 1:1 | Rodzina | Co niesie | Nota dla inżyniera |
|---|---|---|---|
|
|
circularSmall koło 44 px |
Pierścień postępu dnia i liczba wizyt. 56% planu, 5 wizyt w kalendarzu. |
Odśwież przy każdej zmianie stanu wizyty. reloadTimeline po zamknięciu wizyty i po dodaniu nowej. Poza tym wpis co 30 min. |
|
|
graphicCorner narożnik 76 x 76 |
Godzina następnej wizyty na łuku i inicjały klientki. Łuk wypełnia się w miarę zbliżania terminu. |
Łuk liczony jako czas do wizyty w oknie 90 minut. Wpis co 5 min w tym oknie, poza nim jeden wpis na godzinę rozpoczęcia. |
|
|
graphicRectangular 160 x 54 |
Pełna następna wizyta w trzech liniach. Godzina i imię, usługa, kwota. |
Jedyna rodzina, w której pokazujemy kwotę na tarczy. Odświeżana razem z narożną, ten sam wpis timeline. |
|
|
inline jedna linia, utility |
Najkrótsza forma: nazwa, godzina, imię. Bez kwoty, bez usługi, bez ikony statusu. |
Tekst obcinamy po 22 znakach, nigdy nie skracamy imienia do inicjału. Jeden wpis na wizytę. |
|
|
graphicCircular koło 52 px, wariant kasa |
Utarg dnia jako pierścień i kwota bez separatora. 480 z 860 zł planu, pierścień 56%. |
Kwoty powyżej 999 skracamy do 1,2k, bo w kole nie mieszczą się cztery cyfry. Odświeżenie po każdej zamkniętej wizycie. |
Który glif jest największy i dlaczego
W rodzinach czasowych największy glif to godzina, bo pytanie brzmi „kiedy wstaję od kawy”. W rodzinie kasowej największy glif to kwota, bo pytanie brzmi „czy dzień się spina”. Nigdy nie mieszamy tych dwóch pytań w jednej komplikacji - to jedyny powód, dla którego mamy dwie rodziny okrągłe zamiast jednej z przełącznikiem.
Stan pusty komplikacji
Kiedy nie ma następnej wizyty, komplikacja nie znika i nie pokazuje zera. Pokazuje „Wolne” w rodzinach tekstowych i pusty pierścień z kreską w graficznych. Po 18:00 przełącza się na jutro i mówi „Jutro 09:30”.
Budżet odświeżeń
System daje około 50 odświeżeń na dobę na aplikację. Rozdajemy je tak: 30 wpisów na godziny wizyt i okna 90-minutowe, 10 na zmiany stanu pchane z serwera, 10 w rezerwie na dni z przesunięciami. Po wyczerpaniu budżetu komplikacja pokazuje ostatni znany stan ze znacznikiem czasu, nigdy pustego pola.
04 / 12
Smart Stack: karta, która sama się wpycha na 90 minut
Karta w stosie nie jest miniaturą aplikacji, tylko jednym zdaniem z jednym przyciskiem. Pojawia się 90 minut przed wizytą i znika w chwili zamknięcia. Reszta doby to cudzy czas: pogoda, muzyka, timer.
Za 78 min
12:00 Martyna
Smart Stack · w stosie
Tak wygląda na nadgarstku
Pod kartą Pazy widać krawędź następnej karty w stosie. Obrót koronki w dół przewija stos, przytrzymanie pozwala przypiąć kartę na stałe.
Za 78 min
12:00 Martyna
Regeneracja IBX + hybryda, 220 zł
Smart Stack · 320 x 108 pt
Karta w rozmiarze rzeczywistym
Płótno karty 320 x 108 pt jeden do jednego, na czerni ekranu zegarka, która prześwituje przez mleczne tło. Reguła pokazywania, wprost z copy: „Pokazuję się 90 minut przed wizytą i znikam, kiedy ją zamkniesz.” Jeżeli wizyta jest dojazdowa, karta wchodzi 120 minut wcześniej i przycisk zmienia się na „Jadę”.
Kiedy karta ma prawo wejść
Trzy warunki naraz: jest wizyta w ciągu 90 minut, nie została jeszcze zamknięta i nie jest to blokada ani przerwa. Brak któregokolwiek warunku oznacza brak karty. Nie mamy „karty powitalnej”, „karty z poradą” ani „karty z nowościami”.
Relevance score liczony jako 1 - (minuty_do_wizyty / 90), przycinany do zera poza oknem. Wpisy timeline: T-90, T-60, T-30, T-15, T-5, T-0 oraz natychmiastowy push przy zmianie terminu. Po zamknięciu wizyty reloadTimeline i relevance na zero.
Jeden przycisk, nie trzy
Na karcie mieści się jedna akcja i jest nią „Jadę”, bo to jedyna rzecz, którą Wiktoria robi z podniesioną ręką i zajętymi palcami. „Napisz”, „Przesuń” i „Odwołaj” wymagają decyzji i czekają w aplikacji, gdzie jest miejsce na potwierdzenie.
05 / 12
Powiadomienie: klientka potwierdziła termin
Long look, czyli widok po podniesieniu ręki. Pierwszy ekran ma odpowiedzieć na jedno pytanie: kto i kiedy. Reszta, łącznie z akcjami, dojeżdża koronką. Krótki look, którego tu nie rysujemy, to tylko znak Pazy i nazwa - system pokazuje go przez ułamek sekundy.
Natalia potwierdziła termin
czw 30.07, 16:00
Zdobienia autorskie, 4 palce
60 zł
Long look
Kto, kiedy, ile, dwie akcje
Drugi przycisk jest celowo przycięty krawędzią ekranu. To poprawne zachowanie long looka: sygnalizuje, że treść jedzie dalej, i uczy kręcenia koronką bez tłumaczenia.
Treść powiadomienia to zdanie, nie etykieta
„Natalia potwierdziła termin” zamiast „Nowa rezerwacja”. Wiktoria zna swoje klientki po imieniu, a system, który mówi jak system, każe czytać dwa razy. Nazwisko dopisujemy tylko wtedy, gdy w bazie są dwie osoby o tym samym imieniu.
Czego nie wysyłamy na zegarek
Nie wysyłamy: podziękowań po wizycie, informacji o wysłanym SMS-ie, statystyk tygodnia, nowości produktowych. Zegarek dostaje tylko to, co zmienia najbliższe dwie godziny: potwierdzenie, odwołanie, wpłatę zaliczki i spóźnienie.
Kategorie powiadomień: rezerwacja, zaliczka, odwołanie. Wszystkie z akcjami UNNotificationAction na poziomie systemu, żeby działały bez odblokowania telefonu. Grupowanie po dniu wizyty. Cisza nocna 22:00-07:00 zbiera je w jedną paczkę o 07:00, bo Natalia pisze po 23:00.
06 / 12
Koronka cyfrowa: jedyny precyzyjny element sterujący
Palec w rękawiczce nitrylowej jest gruby i mokry, a ekran zegarka ma 208 punktów szerokości. Koronka jest jedynym miejscem, gdzie da się coś ustawić dokładnie, więc oddajemy jej wszystkie liczby: kwotę napiwka, przewijanie listy i przewijanie treści powiadomienia. Poniżej wersja, która naprawdę działa - kliknij kwotę i kręć kółkiem myszy, użyj strzałek albo przycisków obok.
Napiwek
20 zł
Kręć koronką
W06 · wersja działająca
Napiwek Weroniki
Po zapisaniu ekran mówi „Dopisane. Dziś 90 zł napiwków”, czyli podaje licznik całego dnia, a nie samą dopisaną kwotę. Wciśnij „Cofnij”, żeby wrócić do stanu wyjściowego.
Dwadzieścia jeden detentów od 0 do 100 zł. Pasek pokazuje, gdzie stoi kwota - to jedyny wskaźnik, którego nie ma na zegarku, bo tam jego rolę pełni haptyk.
Nota o koronce dla inżyniera
Mapowanie. Koronka jest podpięta wyłącznie do jednej wartości na ekran. Na W06 to kwota napiwka, na W05 pozycja listy, na long looku pozycja treści, na W01 nic - tam kręcenie nie robi nic poza przewinięciem do przycisku.
Detent i haptyk. Krok 5 zł z zatrzaskiem, haptyk .click na każdym kroku i .stop na krańcach 0 i 100 zł. Bez zatrzasku kwota się rozjeżdża i trzeba patrzeć na ekran, a to znaczy odłożyć frez.
Kierunek. Kręcenie do góry zwiększa, zawsze. Nie odwracamy kierunku dla leworęcznych ani nie dodajemy przyspieszenia - przyspieszenie przy kwotach kończy się napiwkiem 65 zł zamiast 20 zł.
Bezczynność. Po 8 sekundach bez ruchu wartość zostaje, ale znika podpowiedź „Kręć koronką”, żeby nie robić hałasu na ekranie.
07 / 12
Widgety na ekranie głównym, w towarzystwie innych ikon
Widget czytany jest przez ćwierć sekundy, między odłożeniem telefonu a podniesieniem frezu. Dlatego każdy z trzech rozmiarów odpowiada na jedno pytanie i ma dokładnie jedną liczbę większą od reszty. Tło zawsze --elevated z plamą mesh w prawym górnym rogu, promień 26 px z zestawu ramek.
Ekran główny · strona 1
Medium u góry, dwa small pod nim
Widget medium zajmuje pełną szerokość siatki (4 kolumny), dwa small stoją obok siebie w tym samym rytmie co ikony. Ikona Pazy siedzi w docku, bo Wiktoria wchodzi do aplikacji kilkanaście razy dziennie.
Ekran główny · strona 2
Large: cały dzień na jednym ekranie
Karta „Teraz” w malinowym, pod nią pięć wizyt dnia z zakończoną wyszarzoną i przekreśloną, na dole trzy pastylki podsumowania. To jedyny widget, który zamiast odpowiadać na jedno pytanie, zastępuje otwarcie aplikacji. Druga strona ma własny komplet ikon, dok zostaje ten sam co na stronie pierwszej.
Te same widgety w rozmiarze rzeczywistym
Small · 170 x 170
„Następna”
Odpowiada na jedno pytanie: kiedy wstaję od kawy. Godzina jest największa, imię skrócone do inicjału nazwiska, chip mówi, ile zostało.
Small · 170 x 170
„Kasa dnia”
Wariant drugi tego samego rozmiaru. Kwota w zieleni --success, pasek 8 px wypełniony gradientem pieniędzy, podpis tłumaczy skalę.
Medium · 364 x 170
„Dzień”
Dwie kolumny rozdzielone włoskową linią: po lewej pieniądze, po prawej trzy pozostałe wizyty z kropką koloru usługi. Więcej niż trzy wiersze się nie mieszczą i nie próbujemy ich upychać.
Large · 364 x 382
„Cały dzień”
Nagłówek z datą i liczbą wizyt, karta „Teraz”, pełna lista dnia, stopka z trzema pastylkami. Zakończona wizyta ma 42% krycia i przekreśloną godzinę, tak samo jak na zegarku.
Który glif jest największy na ekranie głównym
W widgecie „Następna” wygrywa godzina, nie imię i nie kwota. Wiktoria zna klientkę i zna cennik, ale nie wie, ile ma jeszcze czasu na kawę. W widgecie „Kasa dnia” wygrywa kwota, bo to jedyna liczba, której nie da się zgadnąć z pamięci.
Medium łączy oba pytania, więc daje im równą wagę i rozdziela je włoskową linią, zamiast pchać jedno pod drugie. Large jest wyjątkiem: tam największym elementem nie jest liczba, tylko karta „Teraz”, bo widget tej wielkości ma zastępować wejście do aplikacji, a nie tylko przypominać.
Stany, które muszą wyglądać dobrze
Dzień pusty: „Cały dzień wolny” i chip „Napisz do listy oczekujących”. Po ostatniej wizycie: widget przechodzi na jutro i mówi „Jutro 09:30 Klaudia”. Brak sieci: ostatnie dane plus znacznik „stan z 10:42”, nigdy pusty prostokąt ani spinner.
Timeline. Wpisy co 15 minut w godzinach 8:00-20:00 plus dodatkowy wpis na każdą godzinę startu i końca wizyty. Poza tym oknem jeden wpis na 07:30, żeby o poranku dane były świeże.
Wymuszenia. reloadTimeline natychmiast po: zamknięciu wizyty, zaksięgowaniu zaliczki, dodaniu lub przesunięciu wizyty, odwołaniu. Sygnał idzie pushem, aplikacja nie musi być otwarta.
Budżet. Zakładamy 40-70 odświeżeń na dobę. Nie animujemy, nie odliczamy sekund. Chip „za 78 min” liczymy z wpisu timeline, a nie z licznika w widgecie.
08 / 12
Ekran blokady: biel na szkle i nic więcej
Tu nie ma naszych kolorów i to nie jest kompromis, tylko zasada systemu: widgety ekranu blokady są monochromatyczne. Cała robota projektowa polega na wyborze jednej liczby i jednego słowa, które przejdą przez brak koloru, brak tła i 72 punkty wysokości.
wtorek, 28 lipca
10:42
Weronika Zielińska
Manicure kombinowany
Ekran blokady · komplet
Inline, dwa okrągłe, prostokątny i Live Activity
Tapetę dobieramy ciemną, bo to jedyny sposób, żeby biały widget na szkle miał kontrast. Live Activity siedzi pod zegarem i zostaje tam do zamknięcia wizyty.
Rozmiar rzeczywisty
Circular 72 x 72 (dwa warianty), rectangular 160 x 72, inline
Circular z godziną trafia na ekran domyślnie. Wariant z liczbą wizyt jest dla tych, które wolą wiedzieć, ile jeszcze przed nimi. Rectangular to jedyne miejsce na ekranie blokady, gdzie mieści się kwota.
Który glif wygrywa na szkle
Na ekranie blokady nie ma koloru, więc hierarchię niesie wyłącznie rozmiar i grubość. W okrągłym największa jest godzina 12:00, mimo że mieści się o włos - alternatywa, czyli imię, przy tej średnicy zamienia się w „Marty...”, a to gorsze niż brak informacji.
W prostokątnym pierwsza linia to etykieta 10 px, druga godzina z imieniem 17 px, trzecia usługa z kwotą 12 px. Kwota jest ostatnia świadomie: na ekranie blokady widzi ją każdy, kto weźmie telefon do ręki.
Ten sam timeline co widgety ekranu głównego, ale wyższy priorytet w oknie 90 minut przed wizytą i podczas trwania. Pierścień liczymy od początku dnia pracy (9:00) do końca ostatniej wizyty, nie od północy. W trybie Always-On używamy wariantu bez wypełnienia pierścienia, żeby nie wypalać ekranu.
09 / 12
StandBy: telefon na ładowarce, plan na jutro
Tryb nocny na biurku albo na szafce. Odległość od oka to metr, kąt patrzenia jest boczny, a w pokoju jest ciemno. Dlatego dwie linie po 44 px, przygaszenie do 82% i żadnych kwot dnia - w nocy pieniądze nikogo nie obchodzą, a widzieć je może każdy, kto przejdzie obok.
Jutro, środa 29 lipca
09:30 Klaudia
11:30 Oliwia
Wolne okno 15:00, 3 osoby czekają
Zaliczka Oliwii: czeka, zostało 1 h 21 min
StandBy · 520 x 300
Plan jutra, nigdy kasa
Copy wprost z zasady wariantu: „W nocy nie pokazuję kasy. Nikt nie musi jej widzieć na twoim biurku.” Dwie wizyty jutra dostają największy stopień pisma, bo to jedyne, co ma znaczenie przed snem. Wolne okno w cytrynowym, bo to jedyna rzecz, którą jeszcze da się dziś naprawić.
Hierarchia w trybie nocnym
Największy glif to godzina z imieniem, w jednej linii, bo o 23:00 nikt nie parsuje dwóch kolumn. Druga w kolejności jest informacja, która wymaga decyzji („wolne okno”), trzecia ta, która ma termin („zaliczka, zostało 1 h 21 min”). Kwota utargu nie występuje wcale.
Stan bez jutra
Kiedy jutro jest wolne, StandBy pokazuje jedną linię: „Jutro wolne. Dobranoc.” i nic więcej. Nie proponujemy wtedy pracy, nie pokazujemy listy oczekujących i nie przypominamy o niczym.
Przełączenie na plan jutra o 19:00 lokalnie. Wpisy timeline co 30 minut do północy, potem co godzinę. Jasność i tak zbija system, więc nie wysyłamy osobnego wariantu nocnego, tylko trzymamy krycie 82% i kontrast minimum 7:1 na czerni. Bez odliczania sekund: licznik zaliczki pokazujemy w minutach i odświeżamy co 5 minut.
10 / 12
Live Activity: wizyta w toku od 10:15 do 11:45
Jedna sesja, cztery prezentacje: minimal, compact, expanded i karta na ekranie blokady. Wszystkie mają ten sam stan i tę samą liczbę - minuty do końca. Naciśnij „Odtwórz przebieg”, żeby zobaczyć, jak zachowuje się każda z nich, kiedy czas leci.
Compact
Ikona po lewej, minuty po prawej
Wyspa rozszerza się do 196 pt i dzieli na leading i trailing wokół kamery. Po lewej buteleczka w malinowym, po prawej jedna liczba. Nic więcej się tu nie mieści i nic więcej nie jest potrzebne.
Minimal · 37 x 37
Kiedy Pazy dzieli wyspę z kimś innym
Expanded · 370 x 160
Cztery regiony po przytrzymaniu wyspy
Leading: awatar WZ z imieniem. Trailing: minuty i godzina końca. Center: usługa i rozbicie kwoty. Bottom: pasek postępu i dwa przyciski po 40 px. „Zamknij wizytę” dostaje malinowe wypełnienie z czarnym tekstem, kontrast 6,6:1.
Weronika Zielińska
Manicure kombinowany
Live Activity · ekran blokady
Karta 358 x 104, rozmiar rzeczywisty
Ta sama sesja poza wyspą: nazwisko i usługa po lewej, minuty po prawej, pasek postępu na dole. Bez przycisków, bo z zablokowanego ekranu nie zamykamy wizyty ani nie dopisujemy napiwku.
Największy glif w każdej z czterech prezentacji
We wszystkich czterech wygrywa liczba minut. To jedyna wartość, która zmienia się w czasie i jedyna, której nie da się odtworzyć z pamięci. Nazwisko klientki jest stałe przez 90 minut, cena też, więc oba schodzą o stopień niżej. W minimalu, gdzie nie ma miejsca na tekst, tę samą informację niesie kąt wypełnienia pierścienia.
Koniec sesji
Live Activity kończy się w chwili zamknięcia wizyty, nie o 11:45. Jeśli wizyta przeciąga się o więcej niż 15 minut, licznik przechodzi na „+12 min” w cytrynowym i nie krzyczy - przeciąganie się zdarza i nie jest błędem. Po zamknięciu karta zostaje jeszcze przez 8 sekund z podsumowaniem „180 zł w kasie”, potem znika sama.
Model. Jeden ContentState: godzina końca, minuty pozostałe, postęp, kwota. Aktualizacja lokalna co 60 sekund, bez animowanego licznika sekund.
Push. Tylko przy zdarzeniach: dopisany napiwek, zmiana kwoty, przedłużenie wizyty, zamknięcie. Zakładany limit to 6 pushy na sesję.
Czas życia. staleDate = koniec wizyty + 30 minut, dismissalPolicy = 8 sekund po zamknięciu. Sesja nigdy nie przekracza 8 godzin, nawet jeśli ktoś zapomni zamknąć wizytę.
11 / 12
Pulpit macOS: ten sam widget, mniejszy promień
Wiktoria ma na zapleczu MacBooka, na którym stoi otwarta Pazy i przeglądarka z Instagramem. Widget w kolumnie Centrum powiadomień jest jedynym miejscem, w którym plan dnia widać bez przełączania okna. Płótno to dokładnie ten sam medium 364 x 170 co na iPhonie, tylko promień schodzi z 26 do 20 px, bo tak wyglądają widgety w macOS.
Pulpit macOS · kolumna 396 px
Widget w Centrum powiadomień, obok widgetów systemowych
Dwa sąsiednie widgety systemowe stoją tu wyłącznie po to, żeby skala i miejsce czytały się poprawnie: karta Pazy jest pierwsza od góry, bo Wiktoria wchodzi w tę kolumnę po jedną rzecz. Pasek menu i przyciemniona tapeta pokazują, że widget siedzi na szkle kolumny, a nie w oknie aplikacji.
Ten sam widget w rozmiarze rzeczywistym
macOS medium · 364 x 170
„Dzień na pulpicie”
Ta sama treść co medium na iPhonie, z dwiema różnicami wymuszonymi przez pulpit: godzina najbliższej wizyty dostaje własną pastylkę w --accent-soft, a w prawym dolnym rogu stoi przycisk „Otwórz kalendarz”, bo na Macu kliknięcie widgetu ma otwierać konkretny widok, nie samą aplikację.
macOS medium · po ostatniej wizycie
Widget przechodzi na jutro
Po 17:15 kwota zamyka się na 860 zł, a prawa kolumna przełącza się na plan jutra. Nie pokazujemy pustej listy ani zera, bo to wygląda jak awaria, a nie jak koniec dobrego dnia.
Który glif jest największy na pulpicie
Na Macu wygrywają dwie liczby naraz: kwota dnia w zieleni --success po lewej i godzina najbliższej wizyty po prawej. To jedyna powierzchnia w całym wariancie, na której dajemy dwa duże glify, bo pulpit ogląda się z 60 cm i z pełną uwagą, a nie kątem oka przy fotelu.
Reszta schodzi o stopień: dwie kolejne wizyty stoją w 15 px, a nazwiska są skrócone do imion, tak samo jak w medium na iPhonie. Kolumny rozdziela ta sama włoskowa linia --border-soft.
Czym pulpit różni się od iPhone'a
Promień 20 px zamiast 26 px i cień --sh-4 zamiast miękkiego cienia iOS, bo widget leży na szkle kolumny, a nie na tapecie. Jeden przycisk „Otwórz kalendarz” w stylu ghost 32 px, bo na Macu widget ma prowadzić do konkretnego widoku okna. Kolorów, kroju pisma i kolejności informacji nie zmieniamy w ogóle.
Timeline. Wpisy co 15 minut w godzinach 8:00-20:00 plus wpis na każdą godzinę startu i końca wizyty, czyli identycznie jak na ekranie głównym iOS. Poza tym oknem jeden wpis o 07:30. Przełączenie na plan jutra po zamknięciu ostatniej wizyty dnia.
Wymuszenia. reloadTimeline po zamknięciu wizyty, zaksięgowaniu zaliczki, dodaniu lub przesunięciu wizyty i odwołaniu. Jeżeli aplikacja Pazy jest w tej chwili otwarta na tym samym Macu, widget bierze dane z niej lokalnie i nie pyta serwera.
Budżet i stan zdegradowany. Ten sam limit co na iOS: 40-70 odświeżeń na dobę, bez animacji i bez odliczania sekund. Przy braku sieci zostaje ostatni znany stan z podpisem „stan z 10:42”, nigdy pusty prostokąt ani spinner.
12 / 12
Polityka odświeżania na jednej stronie
Wszystko z poprzednich sekcji zebrane w jedno miejsce, w formie, którą inżynier może przeczytać przed sprintem. Zasada nadrzędna: żadna powierzchnia nie pokazuje spinnera, pustego prostokąta ani zera. Zawsze ostatni znany stan ze znacznikiem czasu.
| Rodzina | Wpisy timeline | Wymuszone odświeżenie | Stan zdegradowany |
|---|---|---|---|
| Komplikacje zegarka 5 rodzin |
Co 30 min plus wpis na każdą godzinę startu wizyty. W oknie 90 min przed wizytą co 5 min. | Zamknięcie wizyty, zaliczka, przesunięcie, odwołanie. Push z serwera. | Ostatni stan plus kreska zamiast pierścienia. Po 18:00 przełączenie na jutro. |
| Smart Stack karta 320 x 108 |
T-90, T-60, T-30, T-15, T-5, T-0 względem godziny wizyty. | Zmiana terminu i zamknięcie wizyty. Relevance schodzi wtedy do zera. | Karta znika, zamiast pokazywać nieaktualną godzinę. |
| Widgety ekranu głównego small, medium, large |
Co 15 min w godzinach 8:00-20:00, poza tym jeden wpis o 07:30. | Zamknięcie wizyty, zaliczka, nowa lub przesunięta wizyta, odwołanie. | Ostatnie dane i podpis „stan z 10:42”. Nigdy pusty prostokąt. |
| Widgety ekranu blokady circular, rectangular, inline |
Jak wyżej, z podbitym priorytetem w oknie 90 min i w trakcie wizyty. | Te same zdarzenia co ekran główny. | W Always-On wariant bez wypełnienia pierścienia, żeby nie wypalać ekranu. |
| StandBy 520 x 300 |
Co 30 min do północy, potem co godzinę. Przełączenie na jutro o 19:00. | Nowa rezerwacja na jutro, wygaśnięcie zaliczki. | „Jutro wolne. Dobranoc.” Nigdy kwot dnia, o żadnej porze. |
| Widget na pulpicie macOS medium 364 x 170 |
Jak widgety ekranu głównego: co 15 min w godzinach 8:00-20:00, poza tym jeden wpis o 07:30. | Te same zdarzenia co na iOS. Przy otwartej aplikacji na tym samym Macu dane idą lokalnie, bez zapytania do serwera. | Ostatnie dane i podpis „stan z 10:42”. Po ostatniej wizycie przełączenie na plan jutra. |
| Live Activity minimal, compact, expanded, blokada |
Aktualizacja lokalna co 60 s, bez licznika sekund. | Napiwek, zmiana kwoty, przedłużenie, zamknięcie. Maks. 6 pushy na sesję. | Po staleDate licznik zamienia się w „Sprawdź w aplikacji”. |
Trzy rzeczy, których nie robimy nigdzie
Nie odliczamy sekund. Ani na zegarku, ani w Live Activity, ani w widgecie. Sekundy zjadają baterię i nie zmieniają żadnej decyzji.
Nie pokazujemy spinnera. Widget bez danych pokazuje ostatnie dane. Widget bez żadnych danych pokazuje jedno zdanie po polsku i przycisk.
Nie wysyłamy powiadomień marketingowych na żadną z tych powierzchni. Nadgarstek i ekran blokady są zarezerwowane dla najbliższych dwóch godzin pracy.
Pazy Go, wariant C. Makiety 1:1 na geometrii z _shared/frames.css: Apple Watch 46 mm 208 x 256 pt, iPhone 16 Pro 402 x 874 pt, widgety 170, 364 i 382 pt, Lock 72 x 72 i 160 x 72, StandBy 520 x 300, Dynamic Island 125 x 36, widget na pulpicie macOS 364 x 170 na kanwie pulpitu 680 x 420. Dane, godziny i kwoty pochodzą z tej samej bazy co pozostałe trzy pliki wariantu: wtorek, 28 lipca 2026, 10:42.