From 5b0703aec540b17e264cbc6110fbabc7231d5d3e Mon Sep 17 00:00:00 2001 From: justinzeus Date: Thu, 5 Nov 2026 17:35:42 +0100 Subject: [PATCH 1/4] Build household requests under Settings --- app/src/debug/assets/wolfskin-requests.json | 217 ++++++++++++++++++ .../movie-12-years-a-slave-2013-poster.jpg | Bin 0 -> 14546 bytes .../movie-arctic-dogs-2019-poster.jpg | Bin 0 -> 31009 bytes ...vie-avengers-age-of-ultron-2015-poster.jpg | Bin 0 -> 33366 bytes .../movie-awake-2007-poster.jpg | Bin 0 -> 20978 bytes .../movie-die-my-love-2025-poster.jpg | Bin 0 -> 19472 bytes ...irl-who-leapt-through-time-2006-poster.jpg | Bin 0 -> 17007 bytes .../tv-anne-with-an-e-2017-poster.jpg | Bin 0 -> 22254 bytes ...e-abbott-and-costello-show-1952-poster.jpg | Bin 0 -> 24724 bytes .../wolfskin/tv/RequestsRefreshTest.kt | 52 +++++ .../wolfskin/tv/RequestsRefresh.kt | 33 +++ .../justinvisser/wolfskin/tv/ShellRequests.kt | 18 ++ .../justinvisser/wolfskin/tv/WolfskinApp.kt | 19 +- docker/README.md | 57 ++++- wolfskin-design/build.gradle.kts | 1 + wolfskin-design/generate_request_marks.py | 31 +++ wolfskin-design/request-marks.sha256 | 12 + wolfskin-design/request-marks/fresh.svg | 20 ++ wolfskin-design/request-marks/imdb.svg | 3 + wolfskin-design/request-marks/rotten.svg | 1 + wolfskin-design/request-marks/spilled.svg | 46 ++++ wolfskin-design/request-marks/tmdb.svg | 1 + wolfskin-design/request-marks/upright.svg | 1 + wolfskin-design/shell-tokens.json | 36 +++ .../wolfskin/design/ComingInFixture.kt | 23 ++ .../wolfskin/design/ComingInRatings.kt | 43 ++++ .../wolfskin/design/ComingInSheet.kt | 164 +++++++++++++ .../wolfskin/design/ComingInState.kt | 110 +++++++++ .../wolfskin/design/ComingInTypography.kt | 18 ++ .../org/justinvisser/wolfskin/design/Glyph.kt | 3 + .../wolfskin/design/SettingsList.kt | 4 +- .../wolfskin/design/ShellState.kt | 46 +++- .../wolfskin/design/ShellSurface.kt | 15 +- .../wolfskin/design/WolfskinTokens.kt | 36 +++ .../drawable-nodpi/coming_in_rating_fresh.png | Bin 0 -> 804 bytes .../drawable-nodpi/coming_in_rating_imdb.png | Bin 0 -> 813 bytes .../coming_in_rating_rotten.png | Bin 0 -> 964 bytes .../coming_in_rating_spilled.png | Bin 0 -> 1068 bytes .../drawable-nodpi/coming_in_rating_tmdb.png | Bin 0 -> 1638 bytes .../coming_in_rating_upright.png | Bin 0 -> 1023 bytes .../src/main/res/drawable/wolfskin_check.xml | 3 + .../src/main/res/drawable/wolfskin_clock.xml | 3 + .../main/res/drawable/wolfskin_download.xml | 3 + .../design/ComingInRatingsGateTest.kt | 84 +++++++ .../wolfskin/design/RequestsCaptureTest.kt | 70 ++++++ .../wolfskin/design/RequestsKeysTest.kt | 150 ++++++++++++ .../test/resources/requests-press-paths.json | 21 ++ .../src/test/resources/wolfskin-requests.json | 217 ++++++++++++++++++ .../movie-12-years-a-slave-2013-poster.jpg | Bin 0 -> 14546 bytes .../movie-arctic-dogs-2019-poster.jpg | Bin 0 -> 31009 bytes ...vie-avengers-age-of-ultron-2015-poster.jpg | Bin 0 -> 33366 bytes .../movie-awake-2007-poster.jpg | Bin 0 -> 20978 bytes .../movie-die-my-love-2025-poster.jpg | Bin 0 -> 19472 bytes ...irl-who-leapt-through-time-2006-poster.jpg | Bin 0 -> 17007 bytes .../tv-anne-with-an-e-2017-poster.jpg | Bin 0 -> 22254 bytes ...e-abbott-and-costello-show-1952-poster.jpg | Bin 0 -> 24724 bytes wolfskin-design/tokens.css | 31 +++ wolfskin-design/tokens.sha256 | 6 +- 58 files changed, 1575 insertions(+), 23 deletions(-) create mode 100644 app/src/debug/assets/wolfskin-requests.json create mode 100644 app/src/debug/assets/wolfskin-requests/movie-12-years-a-slave-2013-poster.jpg create mode 100644 app/src/debug/assets/wolfskin-requests/movie-arctic-dogs-2019-poster.jpg create mode 100644 app/src/debug/assets/wolfskin-requests/movie-avengers-age-of-ultron-2015-poster.jpg create mode 100644 app/src/debug/assets/wolfskin-requests/movie-awake-2007-poster.jpg create mode 100644 app/src/debug/assets/wolfskin-requests/movie-die-my-love-2025-poster.jpg create mode 100644 app/src/debug/assets/wolfskin-requests/movie-the-girl-who-leapt-through-time-2006-poster.jpg create mode 100644 app/src/debug/assets/wolfskin-requests/tv-anne-with-an-e-2017-poster.jpg create mode 100644 app/src/debug/assets/wolfskin-requests/tv-the-abbott-and-costello-show-1952-poster.jpg create mode 100644 app/src/test/java/org/justinvisser/wolfskin/tv/RequestsRefreshTest.kt create mode 100644 app/src/wolfskin/java/org/justinvisser/wolfskin/tv/RequestsRefresh.kt create mode 100644 app/src/wolfskin/java/org/justinvisser/wolfskin/tv/ShellRequests.kt create mode 100755 wolfskin-design/generate_request_marks.py create mode 100644 wolfskin-design/request-marks.sha256 create mode 100644 wolfskin-design/request-marks/fresh.svg create mode 100644 wolfskin-design/request-marks/imdb.svg create mode 100644 wolfskin-design/request-marks/rotten.svg create mode 100644 wolfskin-design/request-marks/spilled.svg create mode 100644 wolfskin-design/request-marks/tmdb.svg create mode 100644 wolfskin-design/request-marks/upright.svg create mode 100644 wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInFixture.kt create mode 100644 wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt create mode 100644 wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt create mode 100644 wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInState.kt create mode 100644 wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInTypography.kt create mode 100644 wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png create mode 100644 wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png create mode 100644 wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png create mode 100644 wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png create mode 100644 wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_tmdb.png create mode 100644 wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png create mode 100644 wolfskin-design/src/main/res/drawable/wolfskin_check.xml create mode 100644 wolfskin-design/src/main/res/drawable/wolfskin_clock.xml create mode 100644 wolfskin-design/src/main/res/drawable/wolfskin_download.xml create mode 100644 wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/ComingInRatingsGateTest.kt create mode 100644 wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsCaptureTest.kt create mode 100644 wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsKeysTest.kt create mode 100644 wolfskin-design/src/test/resources/requests-press-paths.json create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests.json create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/movie-12-years-a-slave-2013-poster.jpg create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/movie-arctic-dogs-2019-poster.jpg create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/movie-avengers-age-of-ultron-2015-poster.jpg create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/movie-awake-2007-poster.jpg create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/movie-die-my-love-2025-poster.jpg create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/movie-the-girl-who-leapt-through-time-2006-poster.jpg create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/tv-anne-with-an-e-2017-poster.jpg create mode 100644 wolfskin-design/src/test/resources/wolfskin-requests/tv-the-abbott-and-costello-show-1952-poster.jpg diff --git a/app/src/debug/assets/wolfskin-requests.json b/app/src/debug/assets/wolfskin-requests.json new file mode 100644 index 00000000..507ebd65 --- /dev/null +++ b/app/src/debug/assets/wolfskin-requests.json @@ -0,0 +1,217 @@ +{ + "source": "Locked Opus fixture/fixture.json; index.html EXAMPLES() pool order", + "items": [ + { + "id": "x1", + "mediaType": "tv", + "tmdbId": 11821, + "title": "The Abbott and Costello Show", + "requesterKey": "justin", + "requesterName": "Justin", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Downloading", + "poster": "tv-the-abbott-and-costello-show-1952-poster.jpg", + "ratings": [ + { + "mark": "tmdb", + "score": 7.2, + "percentage": false + } + ] + }, + { + "id": "x2", + "mediaType": "movie", + "tmdbId": 13483, + "title": "Awake", + "requesterKey": "mindel", + "requesterName": "Mindel", + "actorKey": "justin", + "actorName": "Justin", + "stage": "AlmostReady", + "poster": "movie-awake-2007-poster.jpg", + "ratings": [ + { + "mark": "rotten", + "score": 23, + "percentage": true + }, + { + "mark": "spilled", + "score": 55, + "percentage": true + }, + { + "mark": "imdb", + "score": 6.5, + "percentage": false + } + ] + }, + { + "id": "x3", + "mediaType": "tv", + "tmdbId": 70785, + "title": "Anne with an E", + "requesterKey": "shared", + "requesterName": "Shared", + "actorKey": "mindel", + "actorName": "Mindel", + "stage": "Searching", + "poster": "tv-anne-with-an-e-2017-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 63, + "percentage": true + } + ] + }, + { + "id": "x4", + "mediaType": "movie", + "tmdbId": 99861, + "title": "Avengers: Age of Ultron", + "requesterKey": "justin", + "requesterName": "Justin", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Waiting", + "poster": "movie-avengers-age-of-ultron-2015-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 75, + "percentage": true + }, + { + "mark": "upright", + "score": 82, + "percentage": true + }, + { + "mark": "imdb", + "score": 7.3, + "percentage": false + } + ] + }, + { + "id": "x5", + "mediaType": "movie", + "tmdbId": 1033148, + "title": "Die My Love", + "requesterKey": "mindel", + "requesterName": "Mindel", + "actorKey": "mindel", + "actorName": "Mindel", + "stage": "Failed", + "poster": "movie-die-my-love-2025-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 74, + "percentage": true + }, + { + "mark": "spilled", + "score": 45, + "percentage": true + }, + { + "mark": "imdb", + "score": 6, + "percentage": false + } + ] + }, + { + "id": "x6", + "mediaType": "movie", + "tmdbId": 416153, + "title": "Arctic Dogs", + "requesterKey": "shared", + "requesterName": "Shared", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Ready", + "poster": "movie-arctic-dogs-2019-poster.jpg", + "ratings": [ + { + "mark": "rotten", + "score": 13, + "percentage": true + }, + { + "mark": "upright", + "score": 60, + "percentage": true + }, + { + "mark": "imdb", + "score": 4.9, + "percentage": false + } + ] + }, + { + "id": "x7", + "mediaType": "movie", + "tmdbId": 76203, + "title": "12 Years a Slave", + "requesterKey": "justin", + "requesterName": "Justin", + "actorKey": "shared", + "actorName": "Shared", + "stage": "Waiting", + "poster": "movie-12-years-a-slave-2013-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 95, + "percentage": true + }, + { + "mark": "upright", + "score": 90, + "percentage": true + }, + { + "mark": "imdb", + "score": 8.1, + "percentage": false + } + ] + }, + { + "id": "x8", + "mediaType": "movie", + "tmdbId": 14069, + "title": "The Girl Who Leapt Through Time", + "requesterKey": "mindel", + "requesterName": "Mindel", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Waiting", + "poster": "movie-the-girl-who-leapt-through-time-2006-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 87, + "percentage": true + }, + { + "mark": "upright", + "score": 90, + "percentage": true + }, + { + "mark": "imdb", + "score": 7.6, + "percentage": false + } + ] + } + ] +} diff --git a/app/src/debug/assets/wolfskin-requests/movie-12-years-a-slave-2013-poster.jpg b/app/src/debug/assets/wolfskin-requests/movie-12-years-a-slave-2013-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff1f55e6a01a7dce14cc37b53f682145d8481874 GIT binary patch literal 14546 zcmb7r1yCJ9x8}tyKuChS2M_KR0t63ok&C-s^x`hTEw~fh-QC^YT`ukp2`vBrzy06a zSNpbVXR5lUrl(GyIeq#_pRZpRUpE2or6r^!05C8B0L2KP5)z_j{w5_R@SR&w zi2ol%U{KM}FwilG-oGc}|4i|j|Nr}X?F3*U!*s(i!og4gV6kA}uwY($0Yv{`6X751 z{`*3Jg@Z>#f%~I&K+cLNs)+QFLf?+fH#)28 z;uGapr7rBLtxE%Tdt?r=7#v(GF2C&VHyZeF#Nqyr0RS*>G!Wjp=&;`2!@|PC0RRXH z|6&0K77LF21M5doMG7|k=qz|U->HkO*JZ#vxVJB{;III~fRn*spWtBRe>S0sf@Qc= z@Yobxu{gPU7sI5^#uur_?w(ecs`4CTGI&PtNbKb1|&%YnX35tHIZYRgozV}=JmXIG& zkWo;;{=b{7>8eO{ND9j0$08th*R$02I~@}G!oq@cLOHCnq=6Wa2X#4Dd)kQu-$6F=Pni)SuX7%+sEPg2>Tr_ZE(?BiV9{O)IHBN zduZj#q=2_GCkwV$lXkBpn2$j4ZO^o}M$G#*J3p%;`tGA(-!K0-QZ^}}25RL2hEwYt zx8IQmDFc1-Lo4v7h~GyGz7l65WOpudoMyqFS;w_%4TqDDMoeza1nFSGF|E~~Is|pE zN$jFq*)WvBOhYX-^%!{(PJnFP+Xw6FVDXh~58G>Nb;(Z#?62e-*^l z`VmQH=c^x;F|UQ8Za)cdA$Beg?Hb8q4Nr=g+u~fT@1m*e+;eFrAoX$Z|2mzPQ%zjhy#d?p01@k{Oh!_kyqkI7~yki(toXPb~T9hHjq@ml& zb25hOe9xdB{j2Kr7P;Qtn06vIT0p;8#t+w3Kctq=LbqcKM-obt+vjXe*CTD*I|F6e zd7)e_-3U*G7Sr#bE9jp}HX!Y33FzAVxxCAqPx&}Dbu|g&NytCd7q7%8p(;HFHRNtx zYT0i2%9cAy7bBJkzu(K`%TrL{tk&1pvHDn8UMsx!#frOl<) z<^PH&yaNkXt4-|A?4MtfPzl&VqR=3 zKQ7l81CR|1eD!QFS*k1gk zWPE;WUYJCMJtaA#)WaD?EbGB<-{8NA{11)zx9V!--;9ByhB9exFwGcN%jI8|(1nn@ zkxA3Je;mJ`y6EU-R#e1~*otULuCkjgdZ8;##qB$)l88-EOO)u^CT{__nPnDQ60?&m z5pE+6WNEpst+jkfNl{y6`&`RS3k;w#g0q^}8mGR0V8E~=J1pRoD-S3Pc%1NA(JRRf zA0VgB)l61`Kduj5B4JACpstaHestFkiEhuk#v55n=xot9wvY}I638FWBm^VHR37Fx z{v13zduE~Xb{c`H9~Mwu9@FeuM!1{PU(<3wKPoFvGs#bDTAPz|MLWRgwT+eP{;xx{Z`YO<(oqHkUs(7<0ixQ#g`AHN~jhxIA*e-PI{ zsly*1)+%NRpYhyE%D=`Gr{h)BBBqb(t2@D^bn)p5jSa3Hc^H@2q1aQ#s#! zQCSb><|3WJ$L$1*89-RJ8JXdapy?%Dh4n7Zdkhjw6V!>TGk&#+9$UqZ8Xt zmQ4ADvt|IkWf(t4&u%#(K#tF9tH_b!6OH=R%J!tz;=D> zKR2#&#KI{K{!jn;e|ZvM2)px_i=4YeSGk>>^@2rVQzi;(2KZVM*Fjy=d6_56RA%~s za!dlF7?G+tg1Kg*IP}RodmQcfE^F;3$v(K~IE>-L+)8y0kT+wgz^>p9w?^1?gdR0z z*dEuRZwtHQ=q~P?BIimU3|d!dyABi78W>P(3!F`)@rvEy)oCJ_zyB)Z*m7sU+?D5h?3rbUqaqzLBw z)Rto#Ta}SuS>{boAFUPAxlEhEGVXkWm3$RDZ7RsfCu@YNhi^fq{Mtwfp}l{s#N=e} z6H%zS&KB35m;Z7#Loo}Z%a{z)9O^<={w}{17ks#yvWp|MtgA4*c`Qg*2+QdkxUnt_ zr4>0TH!(*R>Y@S&<$)a*+euZ3^h!b=)k!vqmD)tyVtj_4q{_^`j(Ql<#+`9zA11`LMLz3Ih##_h{7RT zHdu{(W<7NnIF3OJDNB{@90;4@tfuP5+;HbZLJBio&C`aTZpUg7r$Jkh`|~3-Db)lC z4{~YfVe*@WpG!Vh;X_uHfmmC~sieA5kBae3y|&>lLzF~Eyjly%%O2$Wb_+@<_a&}C zhjlDaU{);GsjX0e78Q(R`J7u=rzkFh+rLA!|EglGI@#zDoJ|i>>~crT#RpUG`h&rm z2_?P~tUG6)FX{sfA>7Op23{~$--|AH+74|PJ3w)NQ}sT4)BI@q^NK0v?jc}|rz23; z$G|%X(lWTZdfC1{*FYE6Qnzb3Y4yi+@~T$KNPVNypu@ye$J_Arf)V0ILFOS?9Fz<{Mi-Ixgw{$ zlfH8gXCQEDP}p60Nkk!WxDFunN^Af5Jdah@V#G(&2dHZEMcS++fZJ_?$Hd4{Xp8gJ z!$Le`KHn@=l_1&#gX9yh7oMq$4~-{}QTu)t2riJcE?h4YT=Jx(bnO=aN_R&oUOXx03_F)K=|FixSLouv9XmT)5N88K$c zvN@}ZLV>a3Czr%h|Fe4?iN!9PV8tJfv&)sv7bS1Q-7+@S z{u!yr7L?+c6kC}cUY$vYjjsZs@&4fy#TbVAOtDI<`Sp)H^xX6JX=5qUWc zn_x9qylu18c__XC-fY{egf4>7GQDzPesh&kI_je~@d+27)zDXi(;5r8E}Y5hy<7U3 zw0(5X0`yZ$;(;sN=)r||9ot5HI2D%wkI<9B*HPmX}jqXi3=j%U=+;G9C@ z6DJHxN#cshn_D$%XBUEFSS^3~OwKCwm=elxM-6sx{u2a@Vs8lz zl!t*?=5?WJ`^M?BG}S`YZpBA>ex|`$87sfZ3sI&oq8%~Q@En}e_yF3xLhV&bCJ$fV z8be*lCGSbUnUcdliSLYVVEUAg-^->nIz`7~HffRh(|2^Dtp6xP3#}XmKj3yZ=8(YQ zk1&2-FQvKRRcnO0GdySqn#;^r&NJLpv`YG^+|YLvO)i+sJD$aV=OLCBOi|S5FM=_@ zaK2iX)=~VxXK<@Ot%lNxVGi$WI9S?O+VbO@INATsIR9nN{QHXSWZ6|!zD^2LR|C%3 z?-cs1ELd?Py~EeCDt){R%MMEJysMwZ<%QG}_ca1|M#-;v+dbLEuoH|_$D;@;X~G)sX+8{r zTshwIS8TQ{Bn1`tY`RwR&8jtI;XQ?FgRCt)uOk_O~rLlg%Lcvod;cEU%`0!Zy-WwvLq)3O^!$ONq6F_A6^(%|<`>Donww?9W#}5XUpp&o$SBxzXr+ES0u0U&i=pf4KL@Jzg&r z^ps&)L0H&-H>6Xd*m2YH6?-nXMdiOKf`Fn+pURJ3a<6mSdpaO~#7sz$zYo4IL9yu} z&$FoNmwPW_^iC4DsLjt7ovVGltG-sAsy$kr{olB&a38SYLfGBSoYgh*V=@aMa98NT z2;$=&RM(Wt8u4T()j@<-wmExTe6UhD1m|PMAo1`4RxUnA`k6C`&Qt0VFn!F)$JgD) z*lL362Hq^o_}5BD#yqY>^&QuWcZc8YcoiU`Jv2r;)z0#W>3#}Pi?x9(d%%$r&cK`y zQydfDRp6}VaG70uUuJz6zJy*w{_-;|^Elj5J*q_!J$ZN!jFk_58o16L?;xGf%H2!> zSiK2k`i*Xh_6lGVhAS^1wb*UZRp7O8r%XX8GYKdc;u6<7)HrF&bt8=Ga9b)d5*&?i z>eR3}6?{k_&*Jlk=HDvvhl8cL74R*c>rH;MR(Ix=oKxabVT~jyUBey(+g9O{yxFtt zh2k2ed8C!MIhWtRd^!47LV}Ub>-qPf++@ZIW(G+5Y448g6k5UcRY2qvn#GXUH_;^I zU%YtXZB@Q%R`+CrAEs?1W?Z8m&6~gnQ$_4C>(1aFYI6V1$s5azc24!EpS5kvmZ`pe zH%A{UkfXsJ#?ko9or+CT-vGv(|9Hrz9wamJ!#H>d2BFgf_=Gw?CvN$$a*9yitYN;f zp&T3E(>qh8Mt2E=;1ZvL3m}<}6;vLutD|UmH=4mpiQc7#E5rI2S1??ynESuuPklB4kiPJJ#d9QR}?m z$x!9HQPt_PM{m0R5uc87SkPHvb$@?foO>b{xZyoqybMcR@OxwJmm5a*a_O-9HJNMa zd-;Xug=YjeT*P0_MHw-WldW6yoN|2vaV0j*oPbg<3wkqdn4#0 z$Z&+m^?W8D6C(dpWM&A-Sm1cd5H~dZ1RvG=b)_wJCF!8Jhn|123*(+HS7AzmdAi@% zvkO{Jj|gWHUA#c|+nzwK*{!IUZr8BKvvkG0xJc7Mu~H0=;1@#hDhs`N5>$Jg!ZlI` zp$-#XJ-uA=N419P5>mq!VL<)Tp$ShOL~DUV%l`PjnD6JHi0A20&)2!%@(;UQ)&s^F zWaf^K#D8W-og%6#d3HnDRv(i+Z5owPF~0BRxI(mS@LvI|0<*nrAz9#vrS4;S{`vSJ zJ1mzvV3eA+g2bfBFRmxFYx-ihMhlp;brb?D&xEpNbYh1jv(ns$%$2)(01_a;`fKy6?X2_K1u)p#r#y<_yD_OyuEznZc}Hw2)SfPe?H zZS#zrUc{-Fy|D}kt^zLc_)SpT0F$e3N-Z?n0EXg;hxp}2V>HK6=C>lliUP9Z5T(ow zYBK$SAwYQs#j(Maj;bZ&O_2niXH#{zk4G2^qsTiC7;Q3PpGt?1a1@o5gFYC!YZ+PH ztsFX1D`4}J{jma4{V=}d2-_G@$d2rnS<_h}`ZMZa@qvKW` z#XSL=jZl8#1U(n`MUlTq51@1KP1DzbzAv+laEZF!51R1Y%lD`>Xe~}F$@g>?sy^&C z?%L)*Rm>@BN2xlnst!Jtz%$t_8ueW}fk+&nXG}lhGgm$ zKyz#pvSgsY7!O3y^_Jn!c9+pYbNyw_v0q4v5V8AIRl0rbGT)`5`STK8mIr*rS$mBm zNvR7dNP3>KazVnK@IH#(w&^mfogm;(=F2En;#YrPm27b{!|2TK)JPlZ zlFF#WdEzvVc(0}=yam>pno+53Y^tjHV#?UN=uNwtXPZGDBddQY{|Xq2dl3CgGg3pM z;n~DYU}e?{|2_;zl6|ROS{fLbeETs5Z`^M;HWO|%{gWounry|>;z?R>3;>vLI0lhp?znU6NmME%;RNe)Z)f#ko!z`|`1S?5 zs6YtRVa@jXO50Ux;pLXNm56O`$NK!?_qpQk5&I(68Lm2e<*fXC+dPJ_xA&4Muy4(X z%1qPHtA0iyv6T@eT~Ds-7N<&Gf536ivwjyk03o8in7HaG$tx{!MGvl~aZx9-ugf_< z7yqU^Q#oJ)SyATUL$v6BzI$HMEM~DIANVpG-v0`4D|~@US@0(%?c)-1^>}%E-3k-W zmmNG7Bqs3O|8;+vO3x_3Ewdy!bE`$i1UgNOkru!p8=p)}i%zJeeNw=SHc`L{?;Uyqo z-!gpfeTcDu!_U=uAYO;`_s?HdF%xS&S-qC%`eQZ$dirph6p-1mX|F|CxWg2O0Nyg# zXyyltQxsQ57;1h>4Z6EwXTeqYpF}R^>fPpnuoHRU4S6gvz!aJZDX3Bsa zv)6(_`};C|;_Md_2MSu;TG#pos1SXVnWb4C7Enn+jxwN!I=r&c5fGtbQIK!M#@kze zhhS7K7E4P}Wt>x*2_aOI;pFuyJvU?=MX0cR`ZKqfa$j|BNTi8}(2Ex6XH_BR@bGyu zCNifj6GBbWgC^R(Y<>+IJ!ARR-rs3nyja;xYv5?`Q($1Du7_Rx$_IsJ^#)0tR8v%D zjWdp>a^88HQc{4tn$S-a9X{3_ohk26cWXkQ^D7U{k{K#<%YeQ+zJU0kN#LxPEJw}YBVoF4G*2Se9Tk8R7pLP#N$#nAa#qxWw&Md+ zMxaEWoISIBhPRhADkERJj1V7v5bMO*HF7%m*|@EtJ@ji+d@VSlW=2kSA+3x}0t&rp zyjCuwm`ziT=KNt-$vk;YK&QnEb?HwAyFQf}WSCRwy9fNHv!(j$WoeWJ2?tvu_UsA| z8=iua10^C5hMG_%(wZh~*B8`3fh`Si2@Yxs*Y}5^v0F9_Ze`o?=?OibfxddJsClj7 zlWE$%L%l@8obYV*yfvJcyelS%cS4fJ{SQJp@0~v=E6pfSxn{^z3od~GO?H6A1HmUp z?T4^1M=i~e2STi^2h&m;M@3OWAIve+T3mHl-XqC5{gJ2@FUIx~hDaB@7aR|#5@JX` zK{N;DweC=+e?gB7GX!oBW&^unVeHc%3ggle$gUy0!)#gHGTLz}OHxDc%Ut2to}~Jf zQl`Y2Y#G74qJ7xzBLh?)4fm@b98)}KsYUek&cL|=8N%RE57WC^YcJFkIdJ2*auZ^z z#A$P8q*!a1heXE4T=XQYth#w#CNnVDT78j`a1uU0wlzl4Qv`13{z@%AzyZ(hEjAN# zm~f8pXX%I;%;|-owLWlli07qLe|e-plD{By^RA-~S^)I3p4G@7n-4in^fhs*uhn$j zSIBExWIaE~h?)}+`tg>ix49Zqw!~;%p{F{!k5H|t>bDeD5cTck<$*u#v=VX=9{0-i_?3KbpvNd)TrcQGAn~u&nLI7ypus~a_^>xwd@zq z_Id4$(}qW{kFUJX8?wGMj`a0$KYM#W#GV@#=RiPzPHjgA&27BbD*=8Mz5#_d1&7=PKDshdzf?H;=V1tap0M+3&`UTipby&VqX%4%pZNwy zjJVtWVw(uly6SXL%KYw{$6NBYscTT6x@wzgZ9ChyQkB3|GsautRVqbVntnQwmi{W=b7w;ccC;Zl??=Z`oU(v@sv6mJ!7`;L+jNeS3K zLx*)Dkwizx^)04xIA+iz&Jzb&(xr+KJ?6w$H?)97-UI5F?KgBecZL1DIK?ytRY{3d zY?FmiuzxUOno~zurpZ^>j@r1Rj}1q>6#2f@@=g=nUifUzT3>Q}a2g}=Yx;ugDXD#L zHlXz@#I(PagXH=eC4`ARIkXQgk2R>pWU}4GL%0AgDTqB@i8`}$lhUgs0z&P`+1cf- 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

rMggQ8wrW8RGrqp0}cW8=jvx%PKR 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 UtJUgMW_S3&?V9a+y+jB9*_+|;asU7T literal 0 HcmV?d00001 diff --git a/app/src/debug/assets/wolfskin-requests/movie-awake-2007-poster.jpg b/app/src/debug/assets/wolfskin-requests/movie-awake-2007-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32595897ce45022b93a18393e861fb76c19e6f9c GIT binary patch literal 20978 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 NCnT>gCXZl8|Jl>Z-ZTIJ literal 0 HcmV?d00001 diff --git a/app/src/debug/assets/wolfskin-requests/movie-the-girl-who-leapt-through-time-2006-poster.jpg b/app/src/debug/assets/wolfskin-requests/movie-the-girl-who-leapt-through-time-2006-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ded6cd2ad9df9483f1be7ff22fc21babf70dd3fb GIT binary patch literal 17007 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 bazYS+k#HB;G4de^53y0$p6Vz<38Vknb5MA0 literal 0 HcmV?d00001 diff --git a/app/src/debug/assets/wolfskin-requests/tv-anne-with-an-e-2017-poster.jpg b/app/src/debug/assets/wolfskin-requests/tv-anne-with-an-e-2017-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55d443b4e150b70b6716604b19cf25528e441428 GIT binary patch literal 22254 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 Unit) { + val owner = LocalLifecycleOwner.current + LaunchedEffect(state, owner) { + owner.lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { + refreshRequestsWhileStarted(state, refresh) + } + } +} + +/** Cancellation on leaving STARTED stops polling; reentry performs a fresh foreground read. */ +internal suspend fun refreshRequestsWhileStarted(state: ShellState, refresh: () -> Unit) { + refresh() + while (currentCoroutineContext().isActive) { + delay(WolfskinTokens.Behaviour.requestsPollSeconds.toLong() * 1000L) + if (state.requestsVisible || state.requests.snapshot.openCount > 0) refresh() + } +} diff --git a/app/src/wolfskin/java/org/justinvisser/wolfskin/tv/ShellRequests.kt b/app/src/wolfskin/java/org/justinvisser/wolfskin/tv/ShellRequests.kt new file mode 100644 index 00000000..a5b32953 --- /dev/null +++ b/app/src/wolfskin/java/org/justinvisser/wolfskin/tv/ShellRequests.kt @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.tv + +import android.content.Context +import com.github.damontecres.wholphin.BuildConfig +import org.justinvisser.wolfskin.design.ComingInSnapshot +import org.justinvisser.wolfskin.design.ComingInStatus +import org.justinvisser.wolfskin.design.readComingInFixture + +/** Release stays unavailable until Conductarr sign-in supplies an authenticated generated client. */ +fun readShellRequests(context: Context): ComingInSnapshot { + if (!BuildConfig.DEBUG) return ComingInSnapshot() + val json = context.assets.open("wolfskin-requests.json").bufferedReader().use { it.readText() } + val items = readComingInFixture(json) { name -> + context.assets.open("wolfskin-requests/$name").use { it.readBytes() } + } + return ComingInSnapshot(items.take(6), ComingInStatus.Ready, signedIn = true) +} diff --git a/app/src/wolfskin/java/org/justinvisser/wolfskin/tv/WolfskinApp.kt b/app/src/wolfskin/java/org/justinvisser/wolfskin/tv/WolfskinApp.kt index 068c029b..53db9ae6 100644 --- a/app/src/wolfskin/java/org/justinvisser/wolfskin/tv/WolfskinApp.kt +++ b/app/src/wolfskin/java/org/justinvisser/wolfskin/tv/WolfskinApp.kt @@ -72,6 +72,7 @@ class WolfskinShellViewModel @Inject constructor( private val libraries: LibraryReadFacade, ) : ViewModel() { val backdropFlow: StateFlow = backdrop.backdropFlow + private val requestsSnapshot by lazy { readShellRequests(context) } var libraryDestinations by mutableStateOf>(emptyMap()) private set var signedInPerson by mutableStateOf("") @@ -87,6 +88,7 @@ class WolfskinShellViewModel @Inject constructor( session.state = ShellState(people, signedInPerson) { session.onAction(it) } } session.onAction = { action -> handleAction(action, server, user) } + refreshRequests() try { libraryDestinations = libraries.readDestinations(user.id) } catch (exception: Exception) { @@ -97,6 +99,14 @@ class WolfskinShellViewModel @Inject constructor( fun clearBackdrop() { viewModelScope.launch { backdrop.clearBackdrop() } } + /** The debug fixture is the only Requests supplier until TV sign-in is enabled. */ + fun refreshRequests() { + viewModelScope.launch { + val snapshot = withContext(Dispatchers.IO) { requestsSnapshot } + session.state?.requests?.update(snapshot) + } + } + private fun handleAction(action: ShellAction, server: JellyfinServer, user: JellyfinUser) { when (action) { is ShellAction.Destination -> if (action.route == "settings") navigation.navigateTo(Destination.Wolfskin("settings")) else navigation.replace(if (action.route == "home") Destination.Home() else Destination.Wolfskin(action.route)) @@ -104,6 +114,8 @@ class WolfskinShellViewModel @Inject constructor( is ShellAction.HandOff -> navigation.navigateTo(handOffDestination(action.group)) is ShellAction.Person -> selectPerson(action.person, server, user) ShellAction.RetryPeople -> viewModelScope.launch { load(server, user) } + ShellAction.RetryRequests -> refreshRequests() + is ShellAction.RequestTitle -> navigation.navigateTo(Destination.Wolfskin("request-title/${action.request.mediaType}/${action.request.tmdbId}/${action.request.title}")) } } @@ -154,6 +166,7 @@ fun WolfskinApp( ShellState(listOf(ShellPerson(user.name.orEmpty().lowercase(), user.name.orEmpty(), user.name.orEmpty().take(1), false)), user.name.orEmpty().lowercase()).apply { peopleStatus = PeopleStatus.Loading } } val state = viewModel.session.state ?: loading + RequestsRefresh(state, viewModel::refreshRequests) WolfskinTheme { CompositionLocalProvider(LocalShellState provides state) { Box(modifier) { @@ -203,5 +216,9 @@ fun WolfskinApp( /** The single registered destination branch delegates Wolfskin-only screens back to the shell. */ @Composable fun WolfskinDestinationContent(route: String, modifier: Modifier = Modifier) { - if (route == "settings") SettingsList(LocalShellState.current, modifier) else ShellPlaceholder(route, modifier) + when { + route == "settings" -> SettingsList(LocalShellState.current, modifier) + route.startsWith("request-title/") -> ShellPlaceholder("Title: ${route.substringAfterLast('/')} (title slice integration pending)", modifier) + else -> ShellPlaceholder(route, modifier) + } } diff --git a/docker/README.md b/docker/README.md index 0ccf48aa..e592b320 100644 --- a/docker/README.md +++ b/docker/README.md @@ -83,8 +83,8 @@ padding includes it. The 6 px dash / 4 px gap follows the browser's 3:2 stroke-w ratios. Resting borders are white at 22% opacity; focused borders use ink at 40%. The small gear under the final person opens Settings with Requests focused. -Settings groups hand off to existing upstream pages; the Requests entry explicitly -has no request data yet. **Advanced settings → Wolfskin screens** is the persistent +Settings groups hand off to existing upstream pages; Requests opens the household +Coming-in sheet described below. **Advanced settings → Wolfskin screens** is the persistent rollout switch: turning it off renders upstream Home and library destinations with the upstream Backdrop and top scrim, while retaining Wolfskin's nav, picker and Settings list. Native Up traversal stays in content until the first focusable row, @@ -120,6 +120,59 @@ artifact provider and AAPT2. It checks all string, plural and array configuratio rejecting user-visible upstream branding while preserving the upstream legal attribution and project URL. The check does not depend on incremental merge files. +## Requests under Settings + +The Requests row and Coming-in sheet share one immutable household snapshot. +Ready requests do not count as open. Rows sort Failed, Downloading/Almost ready, +Checking/Searching, Waiting, Ready. The bounded window shows five rows, or four +with readiness expanded. Right expands Request/Download/Library/Playback; Left +collapses; Up/Down collapse while moving. Opening a title preserves the request +for Back, and closing the sheet restores its opener. Selecting a root or changing +person clears the title-return link. Shared's authenticated actor always reads +“by Shared”, never “by you”. + +The debug-only provider loads `app/src/debug/assets/wolfskin-requests.json` and +its eight local posters, projected from the locked prototype fixture. Six stage +rows feed the running debug shell; the Shared and focused-rating records feed +native acceptance states. The identical projection is in design-test resources. +No “sample” or “example stages” pill is drawn. Release builds package none of +these assets and show Requests unavailable until Conductarr sign-in supplies +the generated-client data path. There is no Seerr fallback or handwritten HTTP. +Foreground refreshes once; an open sheet or unsettled requests refresh every +30 seconds while started. The immutable debug projection is loaded once, not +decoded again on every poll. + +Uncached focused ratings wait 350 ms; moving away cancels the read. Read ratings +show immediately on return; sign-out clears visibility. This follows the frozen +page and spec 6.12, resolving the contradictory no-dwell sentence in spec 7.8. +Deterministic coroutine-clock tests cover cancellation, reentry, cached return, +sign-out and refreshed locale scores; a thin Compose test verifies actual Dutch +rendering and sign-out suppression. The approved nine-key Requests path is JSON +data replayed through the real shell. Home's hero content is not implemented +here: its launch-to-nav shell suffix is the acceptance seam. + +Sheet dimensions, padding, glyphs, scales, colours and durations are generated +tokens. Single-line sheet text retains CSS-style line-box leading. Platform +Roboto remains required: the host browser used DejaVu Sans, so its width, +wrapping, ellipsis and text-block positions are not a wrapping-parity target. +For example, the 44-pixel “Coming in” ink is 239 pixels wide in the reference +and 194 pixels in native captures. No per-title compensation or font bundle is +used. Native comparisons must report those structural differences explicitly. + +The six rating marks retain the exact locked SVG source in +`wolfskin-design/request-marks/`; native-size PNGs and their hashes are generated +from the JSON dimensions, avoiding differences in older upstream conversions: + +```sh +uv run --with cairosvg==2.9.1 python wolfskin-design/generate_request_marks.py +``` + +`RequestsCaptureTest` writes `st-081`…`st-086`, `st-088` and `st-111` at 1920×1080, +density 2.0. Title selection currently uses an explicitly labelled +`request-title/...` destination until the independent title screen is integrated; +this slice does not claim to implement title pages, TV sign-in, release or device +deployment. + ## Toolchain and disk use `Dockerfile` pins Temurin JDK `21.0.11+10` by image digest, command-line tools diff --git a/wolfskin-design/build.gradle.kts b/wolfskin-design/build.gradle.kts index 96fe9988..1881a544 100644 --- a/wolfskin-design/build.gradle.kts +++ b/wolfskin-design/build.gradle.kts @@ -59,6 +59,7 @@ dependencies { implementation(libs.coil.compose) debugImplementation(libs.androidx.compose.ui.test.manifest) testImplementation(libs.junit) + testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.robolectric) implementation(libs.androidx.compose.material3) testImplementation(libs.androidx.compose.ui.test.junit4) diff --git a/wolfskin-design/generate_request_marks.py b/wolfskin-design/generate_request_marks.py new file mode 100755 index 00000000..bba6a960 --- /dev/null +++ b/wolfskin-design/generate_request_marks.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +"""Rasterize locked prototype rating marks at the Coming-in row's native pixel size.""" +from pathlib import Path +import hashlib +import json +import cairosvg + +ROOT = Path(__file__).resolve().parent +SOURCE = ROOT / "request-marks" +OUTPUT = ROOT / "src/main/res/drawable-nodpi" + + +def main() -> None: + """Keep the original SVGs and record hashes alongside generated television-size PNGs.""" + OUTPUT.mkdir(parents=True, exist_ok=True) + tokens = json.loads((ROOT / "tokens.json").read_text()) + supplement = json.loads((ROOT / "shell-tokens.json").read_text()) + height = int(tokens["type"]["label"]["px"]) + wordmark_ratio = supplement["requests"]["ratingsWordmarkRatio"]["$value"] + manifest = [] + for source in sorted(SOURCE.glob("*.svg")): + target = OUTPUT / f"coming_in_rating_{source.stem}.png" + width = round(height * wordmark_ratio) if source.stem in ("imdb", "tmdb") else height + cairosvg.svg2png(url=str(source), write_to=str(target), output_width=width, output_height=height) + for path in (source, target): + manifest.append(f"{hashlib.sha256(path.read_bytes()).hexdigest()} {path.relative_to(ROOT)}") + (ROOT / "request-marks.sha256").write_text("\n".join(manifest) + "\n") + + +if __name__ == "__main__": + main() diff --git a/wolfskin-design/request-marks.sha256 b/wolfskin-design/request-marks.sha256 new file mode 100644 index 00000000..c29ddefc --- /dev/null +++ b/wolfskin-design/request-marks.sha256 @@ -0,0 +1,12 @@ +01aa8a3c3e9db48f0e1c6af25056940986784315bf66f48a8120a7317bf6d75a request-marks/fresh.svg +743b6139dc12019d0940568869065722593f44ce416a7e9c7b8d9ef92942bb3f src/main/res/drawable-nodpi/coming_in_rating_fresh.png +27f93b15a075b015e2448eca7949f7a3da03c37fbf26cecf6df3bdab45fda993 request-marks/imdb.svg +a738afd57519b1b4a38192927b48bd45755ce75e4673c6b12b9b3e0c2e388372 src/main/res/drawable-nodpi/coming_in_rating_imdb.png +510d0f9fb77d72190ebf03208f04215a4e86f71e165488518ac75aa49cf4a79d request-marks/rotten.svg +0aade711ba57b6b201c7395ece97108df928b6076d8120404cdf4155a4242632 src/main/res/drawable-nodpi/coming_in_rating_rotten.png +b8dcf4d27eba2446380980c96d82b1f64aa6859fa2ea1cdab867f849f9fec4fd request-marks/spilled.svg +fa4f50258009cd1d16f0d0f5a3c216dc88a57409b1bccc379512ae914cc9d714 src/main/res/drawable-nodpi/coming_in_rating_spilled.png +d537fb228cf3ded904ef09b136fe3fec72548ebc1fea3fbbd1ad9e36364db38b request-marks/tmdb.svg +8e1cb507f876f324bb5c53bf4e60775712f1fdddbffe94fd249e6e74099e045e src/main/res/drawable-nodpi/coming_in_rating_tmdb.png +2ad511c7a101a7f2f8810434911df8c13cc126fa691272242037237172600bc3 request-marks/upright.svg +6ff8a05501bc1c15b96c0130271c41baaa2ddb74f64916f58b9e7f918931d789 src/main/res/drawable-nodpi/coming_in_rating_upright.png diff --git a/wolfskin-design/request-marks/fresh.svg b/wolfskin-design/request-marks/fresh.svg new file mode 100644 index 00000000..977253a9 --- /dev/null +++ b/wolfskin-design/request-marks/fresh.svg @@ -0,0 +1,20 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/wolfskin-design/request-marks/imdb.svg b/wolfskin-design/request-marks/imdb.svg new file mode 100644 index 00000000..b2a908bc --- /dev/null +++ b/wolfskin-design/request-marks/imdb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/wolfskin-design/request-marks/rotten.svg b/wolfskin-design/request-marks/rotten.svg new file mode 100644 index 00000000..04bef05b --- /dev/null +++ b/wolfskin-design/request-marks/rotten.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wolfskin-design/request-marks/spilled.svg b/wolfskin-design/request-marks/spilled.svg new file mode 100644 index 00000000..af36063b --- /dev/null +++ b/wolfskin-design/request-marks/spilled.svg @@ -0,0 +1,46 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wolfskin-design/request-marks/tmdb.svg b/wolfskin-design/request-marks/tmdb.svg new file mode 100644 index 00000000..62a66055 --- /dev/null +++ b/wolfskin-design/request-marks/tmdb.svg @@ -0,0 +1 @@ +Asset 4 \ No newline at end of file diff --git a/wolfskin-design/request-marks/upright.svg b/wolfskin-design/request-marks/upright.svg new file mode 100644 index 00000000..bf1cc85a --- /dev/null +++ b/wolfskin-design/request-marks/upright.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wolfskin-design/shell-tokens.json b/wolfskin-design/shell-tokens.json index b24e8e97..eaab85ff 100644 --- a/wolfskin-design/shell-tokens.json +++ b/wolfskin-design/shell-tokens.json @@ -1,4 +1,40 @@ { + "requests": { + "sheetPaddingY": { "$type": "dimension", "px": 80, "dp": 40, "source": "index.html:227" }, + "sheetPaddingX": { "$type": "dimension", "px": 64, "dp": 32, "source": "index.html:227" }, + "sheetGap": { "$type": "dimension", "px": 18, "dp": 9, "source": "index.html:227" }, + "emptyMargin": { "$type": "dimension", "px": 20, "dp": 10, "source": "index.html:1905" }, + "rowPaddingY": { "$type": "dimension", "px": 14, "dp": 7, "source": "index.html:247" }, + "rowPaddingX": { "$type": "dimension", "px": 18, "dp": 9, "source": "index.html:247" }, + "rowGap": { "$type": "dimension", "px": 24, "dp": 12, "source": "index.html:247" }, + "listGap": { "$type": "dimension", "px": 6, "dp": 3, "source": "index.html:255" }, + "stageMargin": { "$type": "dimension", "px": 4, "dp": 2, "source": "index.html:252" }, + "stageGlyph": { "$type": "dimension", "px": 28, "dp": 14, "source": "index.html:152" }, + "stageGap": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:152" }, + "readinessGapX": { "$type": "dimension", "px": 22, "dp": 11, "source": "index.html:312" }, + "readinessGapY": { "$type": "dimension", "px": 10, "dp": 5, "source": "index.html:312" }, + "readinessMargin": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:312" }, + "readinessGlyph": { "$type": "dimension", "px": 26, "dp": 13, "source": "index.html:314" }, + "chevron": { "$type": "dimension", "px": 30, "dp": 15, "source": "index.html:317" }, + "chevronAlpha": { "$type": "number", "$value": 0.6, "source": "index.html:317" }, + "separatorAlpha": { "$type": "number", "$value": 0.4, "source": "spec 4.4 caption separator rule" }, + "receiptPaddingY": { "$type": "dimension", "px": 28, "dp": 14, "source": "index.html:243" }, + "receiptPaddingX": { "$type": "dimension", "px": 30, "dp": 15, "source": "index.html:243" }, + "receiptGap": { "$type": "dimension", "px": 10, "dp": 5, "source": "index.html:243" }, + "receiptGlyph": { "$type": "dimension", "px": 36, "dp": 18, "source": "index.html:245" }, + "buttonMargin": { "$type": "dimension", "px": 12, "dp": 6, "source": "index.html:241" }, + "skeletonTitleWidth": { "$type": "dimension", "px": 360, "dp": 180, "source": "index.html:1902" }, + "skeletonTitleHeight": { "$type": "dimension", "px": 34, "dp": 17, "source": "index.html:1902" }, + "skeletonSubtitleWidth": { "$type": "dimension", "px": 240, "dp": 120, "source": "index.html:1902" }, + "skeletonSubtitleHeight": { "$type": "dimension", "px": 26, "dp": 13, "source": "index.html:1902" }, + "skeletonGap": { "$type": "dimension", "px": 12, "dp": 6, "source": "index.html:1902" }, + "ratingsGap": { "$type": "dimension", "px": 20, "dp": 10, "source": "index.html:156" }, + "ratingsEntryGap": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:157" }, + "shadowBlur": { "$type": "dimension", "px": 80, "dp": 40, "source": "index.html:227" }, + "shadowOffset": { "$type": "dimension", "px": -30, "dp": -15, "source": "index.html:227" }, + "shadowColor": { "$type": "color", "$value": "#00000080", "source": "index.html:227" }, + "ratingsWordmarkRatio": { "$type": "number", "$value": 1.8, "source": "index.html:160" } + }, "shell": { "navLabelFade": { "$type": "duration", diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInFixture.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInFixture.kt new file mode 100644 index 00000000..50608f0b --- /dev/null +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInFixture.kt @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import org.json.JSONObject + +/** Debug assets and native screenshots consume the same projection of the frozen prototype. */ +fun readComingInFixture(json: String, poster: (String) -> Any?): List { + val items = JSONObject(json).getJSONArray("items") + return List(items.length()) { index -> + val item = items.getJSONObject(index) + val scores = item.getJSONArray("ratings") + ComingInRequest( + id = item.getString("id"), mediaType = item.getString("mediaType"), tmdbId = item.getLong("tmdbId"), + title = item.getString("title"), requesterKey = item.getString("requesterKey"), requesterName = item.getString("requesterName"), + actorKey = item.getString("actorKey"), actorName = item.getString("actorName"), stage = ComingInStage.valueOf(item.getString("stage")), + poster = poster(item.getString("poster")), + ratings = List(scores.length()) { scoreIndex -> + val score = scores.getJSONObject(scoreIndex) + ComingInRating(score.getString("mark"), score.getDouble("score"), score.getBoolean("percentage")) + }, + ) + } +} diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt new file mode 100644 index 00000000..1aebb97b --- /dev/null +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.tv.material3.Text +import java.util.Locale +import org.justinvisser.wolfskin.design.WolfskinTokens.Requests as T + +/** Percentages remain whole; ten-point scores use the television's locale. */ +fun formatComingInRating(rating: ComingInRating, locale: Locale = Locale.getDefault()): String = + if (rating.percentage) "${rating.score.toInt()}%" else String.format(locale, "%.1f", rating.score) + +/** This row always displays the full supplier set rather than the card plate's shortened prefix. */ +@Composable +fun ComingInRatings(ratings: List, color: Color) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.ratingsGap)) { + ratings.forEach { rating -> + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.ratingsEntryGap)) { + val mark = when (rating.mark) { + "fresh" -> R.drawable.coming_in_rating_fresh + "rotten" -> R.drawable.coming_in_rating_rotten + "upright" -> R.drawable.coming_in_rating_upright + "spilled" -> R.drawable.coming_in_rating_spilled + "imdb" -> R.drawable.coming_in_rating_imdb + else -> R.drawable.coming_in_rating_tmdb + } + val wide = rating.mark == "imdb" || rating.mark == "tmdb" + Image(painterResource(mark), contentDescription = rating.mark, + modifier = Modifier.height(T.readinessGlyph).width(T.readinessGlyph * if (wide) T.ratingsWordmarkRatio else 1f)) + Text(formatComingInRating(rating), style = ComingInTypography.rating, color = color) + } + } + } +} diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt new file mode 100644 index 00000000..4328325e --- /dev/null +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.clipToBounds +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.graphics.drawscope.drawIntoCanvas +import androidx.compose.ui.graphics.nativeCanvas +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.input.pointer.PointerEventType +import androidx.compose.ui.input.pointer.PointerEventPass +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.text.style.TextOverflow +import androidx.tv.material3.Text +import coil3.compose.AsyncImage +import org.justinvisser.wolfskin.design.WolfskinTokens.Color as C +import org.justinvisser.wolfskin.design.WolfskinTokens.Layout as L +import org.justinvisser.wolfskin.design.WolfskinTokens.Requests as T + +/** The overlay intercepts pointer input as well as the shell's virtual D-pad focus. */ +@Composable +fun ComingInSheet(shell: ShellState, modifier: Modifier = Modifier) { + val state = shell.requests + val data = state.snapshot + LaunchedEffect(state.focusedId, data.signedIn, data.status) { + state.awaitFocusedRatings() + } + Box(modifier.fillMaxSize().background(C.sheetScrim).clickable { shell.closeRequests() }.testTag("coming-in-scrim")) + Column(modifier.fillMaxHeight().width(L.sheetWidth) + .offset(x = WolfskinTokens.Shell.stageWidth - L.sheetWidth) + .drawWithCache { + val panel = android.graphics.Paint(android.graphics.Paint.ANTI_ALIAS_FLAG).apply { + color = C.surface.toArgb() + setShadowLayer(T.shadowBlur.toPx(), T.shadowOffset.toPx(), 0f, T.shadowColor.toArgb()) + } + onDrawBehind { + drawIntoCanvas { it.nativeCanvas.drawRect(0f, 0f, size.width, size.height, panel) } + } + }.pointerInput(Unit) { + awaitPointerEventScope { + while (true) awaitPointerEvent(PointerEventPass.Final).changes.forEach { it.consume() } + } + } + .padding(horizontal = T.sheetPaddingX, vertical = T.sheetPaddingY) + .testTag("coming-in"), verticalArrangement = Arrangement.spacedBy(T.sheetGap)) { + Text("Coming in", style = ComingInTypography.title, color = C.fg) + when { + data.status == ComingInStatus.Loading && data.items.isEmpty() -> { + LazyColumn(verticalArrangement = Arrangement.spacedBy(T.listGap)) { + items(3, key = { "request-skeleton-$it" }, contentType = { "skeleton" }) { ComingInSkeleton() } + } + SheetButton("Close") { shell.closeRequests() } + } + data.status == ComingInStatus.Unavailable && data.items.isEmpty() -> { + Column(Modifier.fillMaxWidth().background(C.listRowRest, RoundedCornerShape(WolfskinTokens.Radius.panel)) + .padding(horizontal = T.receiptPaddingX, vertical = T.receiptPaddingY), + verticalArrangement = Arrangement.spacedBy(T.receiptGap)) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.rowPaddingY)) { + Glyph("alert", C.warn, Modifier.size(T.receiptGlyph)) + Text("Requests unavailable", style = ComingInTypography.stateTitle, color = C.warn) + } + Text("Conductarr didn’t answer.", style = ComingInTypography.body, color = C.muted) + } + SheetButton("Try again", primary = true) { shell.retryRequests() } + } + data.items.isEmpty() -> Text("Nothing coming in.", Modifier.padding(top = T.emptyMargin), style = ComingInTypography.body, color = C.muted) + else -> { + if (data.partial) Text("Some requests may be missing: Conductarr answered only in part.", style = ComingInTypography.caption, color = C.warn) + val start = state.windowStart + val visibleRows = remember(data, start, state.windowSize) { + data.ordered.subList(start, (start + state.windowSize).coerceAtMost(data.ordered.size)) + } + LazyColumn(Modifier.clipToBounds(), verticalArrangement = Arrangement.spacedBy(T.listGap)) { + itemsIndexed(visibleRows, + key = { _, item -> item.id }, contentType = { _, _ -> "request" }) { _, item -> + ComingInRow(item, shell.person, item.id == state.focusedId, state.expanded && item.id == state.focusedId, + state.ratingsVisible && data.signedIn && item.id == state.focusedId, + onFocus = { state.focus(item.id) }, onClick = { state.focus(item.id); shell.activateRequest() }) + } + } + } + } + } +} + +@Composable +private fun SheetButton(label: String, primary: Boolean = false, onClick: () -> Unit) { + Box(Modifier.padding(top = T.buttonMargin)) { PickerButton(label, true, primary, onClick) } +} + +@Composable +private fun ComingInSkeleton() { + Row(Modifier.fillMaxWidth().padding(horizontal = T.rowPaddingX, vertical = T.rowPaddingY), + verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.rowGap)) { + Box(Modifier.size(L.thumbWidth, L.thumbHeight).background(C.surface3, RoundedCornerShape(WolfskinTokens.Radius.thumb))) + Column(verticalArrangement = Arrangement.spacedBy(T.skeletonGap)) { + Box(Modifier.size(T.skeletonTitleWidth, T.skeletonTitleHeight).background(C.surface, RoundedCornerShape(WolfskinTokens.Shell.skeletonRadius))) + Box(Modifier.size(T.skeletonSubtitleWidth, T.skeletonSubtitleHeight).background(C.surface, RoundedCornerShape(WolfskinTokens.Radius.card))) + } + } +} + +/** Thumbnail slots do not resize when the text or the readiness block grows. */ +@OptIn(androidx.compose.ui.ExperimentalComposeUiApi::class, ExperimentalLayoutApi::class) +@Composable +fun ComingInRow(item: ComingInRequest, viewer: ShellPerson, focused: Boolean, expanded: Boolean, + showRatings: Boolean, onFocus: () -> Unit, onClick: () -> Unit) { + val foreground = if (focused) C.onFocus else C.fg + val secondary = if (focused) C.onFocus else C.muted + Row(Modifier.fillMaxWidth().focusScale(focused, WolfskinTokens.Focus.scaleRow) + .background(if (focused) C.fg else Color.Transparent, RoundedCornerShape(WolfskinTokens.Radius.panel)) + .pointerInput(item.id) { + awaitPointerEventScope { + while (true) if (awaitPointerEvent().type == PointerEventType.Enter) onFocus() + } + }.clickable(onClick = onClick) + .padding(horizontal = T.rowPaddingX, vertical = T.rowPaddingY).testTag("coming-row-${item.id}"), + verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.rowGap)) { + AsyncImage(model = item.poster, contentDescription = null, + modifier = Modifier.size(L.thumbWidth, L.thumbHeight).clip(RoundedCornerShape(WolfskinTokens.Radius.thumb)).background(C.surface3), + contentScale = androidx.compose.ui.layout.ContentScale.Crop) + Column(Modifier.weight(1f)) { + Text(item.title, style = ComingInTypography.listTitle, color = foreground, maxLines = 1, overflow = TextOverflow.Ellipsis) + Row { + Text("for ${item.recipient(viewer)}", style = ComingInTypography.caption, color = secondary) + Text(" · ", style = ComingInTypography.caption, color = secondary.copy(alpha = secondary.alpha * T.separatorAlpha)) + Text("by ${item.actor(viewer)}", style = ComingInTypography.caption, color = secondary) + } + FlowRow(Modifier.padding(top = T.stageMargin), horizontalArrangement = Arrangement.spacedBy(T.readinessGlyph)) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.stageGap)) { + Glyph(item.stage.glyph, secondary, Modifier.size(T.stageGlyph)) + Text(item.stage.label, style = ComingInTypography.label, color = secondary) + } + if (showRatings) ComingInRatings(item.ratings, foreground) + } + if (expanded) FlowRow(Modifier.padding(top = T.readinessMargin), + horizontalArrangement = Arrangement.spacedBy(T.readinessGapX), verticalArrangement = Arrangement.spacedBy(T.readinessGapY)) { + item.stage.readiness.forEachIndexed { index, word -> + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.stageGap)) { + val glyph = when (word) { "Done" -> "check"; "Failed" -> "alert"; "Not yet", "Unknown" -> null; else -> "clock" } + if (glyph != null) Glyph(glyph, secondary, Modifier.size(T.readinessGlyph)) + Text("${READINESS_NAMES[index]} · $word", style = ComingInTypography.readiness, color = secondary) + } + } + } + } + if (focused && !expanded) Glyph("right", foreground.copy(alpha = T.chevronAlpha), Modifier.size(T.chevron)) + } +} + +private val READINESS_NAMES = listOf("Request", "Download", "Library", "Playback") diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInState.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInState.kt new file mode 100644 index 00000000..86d6c5c3 --- /dev/null +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInState.kt @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue + +import kotlinx.coroutines.delay +/** Household acquisition stages, ordered independently from their display wording. */ +enum class ComingInStage(val label: String, val rank: Int, val glyph: String, val readiness: List) { + Failed("Failed", 0, "alert", listOf("Done", "Failed", "Not yet", "Not yet")), + Downloading("Downloading", 1, "download", listOf("Done", "Downloading", "Not yet", "Not yet")), + AlmostReady("Almost ready", 1, "download", listOf("Done", "Done", "Being added", "Not yet")), + Checking("Checking", 2, "clock", listOf("Checking", "Unknown", "Not yet", "Not yet")), + Searching("Searching", 2, "clock", listOf("Done", "Searching", "Not yet", "Not yet")), + Waiting("Waiting", 3, "clock", listOf("Waiting", "Not yet", "Not yet", "Not yet")), + Ready("Ready", 4, "check", listOf("Done", "Done", "Done", "Not checked yet")), +} + +/** Ratings have already passed the supplier's observed-score and vote checks. */ +data class ComingInRating(val mark: String, val score: Double, val percentage: Boolean = false) + +/** Requests carry authenticated actor evidence, never the current viewer as a substitute. */ +data class ComingInRequest( + val id: String, + val mediaType: String, + val tmdbId: Long, + val title: String, + val requesterKey: String, + val requesterName: String, + val actorKey: String?, + val actorName: String?, + val stage: ComingInStage, + val poster: Any? = null, + val ratings: List = emptyList(), +) { + val ratingKey = "$mediaType:$tmdbId" + fun recipient(viewer: ShellPerson): String = if (requesterKey == viewer.key) "you" else requesterName + fun actor(viewer: ShellPerson): String = when { + actorKey == "shared" -> "Shared" + actorKey != null && actorKey == viewer.key -> "you" + else -> actorName ?: "Unknown" + } +} + +enum class ComingInStatus { Ready, Loading, Unavailable } + +/** The provider retains saved rows when refresh fails; an unavailable empty result is not empty success. */ +data class ComingInSnapshot( + val items: List = emptyList(), + val status: ComingInStatus = ComingInStatus.Unavailable, + val partial: Boolean = false, + val signedIn: Boolean = false, +) { + val ordered = items.sortedBy { it.stage.rank } + val openCount: Int get() = items.count { it.stage != ComingInStage.Ready } +} + +/** A bounded window and stable request id preserve focus across refreshes and title round trips. */ +class ComingInState { + var snapshot by mutableStateOf(ComingInSnapshot()) + private set + var focusedId by mutableStateOf(null) + private set + var expanded by mutableStateOf(false) + private set + var ratingsVisible by mutableStateOf(false) + private set + private val cachedRatings = mutableSetOf() + val index: Int get() = snapshot.ordered.indexOfFirst { it.id == focusedId }.coerceAtLeast(0) + val focused: ComingInRequest? get() = snapshot.ordered.getOrNull(index) + val windowSize: Int get() = if (expanded) 4 else 5 + val windowStart: Int get() = (index - 2).coerceIn(0, (snapshot.ordered.size - windowSize).coerceAtLeast(0)) + + fun update(value: ComingInSnapshot) { + snapshot = value + if (!value.signedIn) cachedRatings.clear() + if (value.ordered.none { it.id == focusedId }) focus(value.ordered.firstOrNull()?.id) + ratingsVisible = value.signedIn && focused?.ratingKey in cachedRatings + } + + fun focus(id: String?) { + focusedId = id + expanded = false + ratingsVisible = snapshot.signedIn && focused?.ratingKey in cachedRatings + } + + /** Coroutine cancellation and the captured request id prevent stale focus reads from painting. */ + suspend fun awaitFocusedRatings() { + val item = focused ?: return + if (!snapshot.signedIn || snapshot.status != ComingInStatus.Ready || item.ratings.isEmpty() || ratingsVisible) return + delay(WolfskinTokens.Motion.ratingDwell.toLong()) + if (focusedId != item.id || !snapshot.signedIn || snapshot.status != ComingInStatus.Ready) return + cachedRatings.add(item.ratingKey) + ratingsVisible = true + } + + /** Return true only when a row requests a title; every direction remains trapped in the sheet. */ + fun key(key: ShellKey): Boolean { + when (key) { + ShellKey.Up -> focus(snapshot.ordered.getOrNull((index - 1).coerceAtLeast(0))?.id) + ShellKey.Down -> focus(snapshot.ordered.getOrNull((index + 1).coerceAtMost(snapshot.ordered.lastIndex))?.id) + ShellKey.Right -> if (focused != null) expanded = true + ShellKey.Left -> expanded = false + ShellKey.Ok -> return focused != null + else -> Unit + } + return false + } +} diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInTypography.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInTypography.kt new file mode 100644 index 00000000..a8f3b3e0 --- /dev/null +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInTypography.kt @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import androidx.compose.ui.text.style.LineHeightStyle +import androidx.compose.ui.text.font.FontWeight + +/** CSS line boxes retain their leading even on single lines; trimming changes sheet geometry. */ +internal object ComingInTypography { + private val lineBox = LineHeightStyle(LineHeightStyle.Alignment.Center, LineHeightStyle.Trim.None) + val title = WolfskinTokens.Type.sheetTitle.copy(lineHeightStyle = lineBox) + val listTitle = WolfskinTokens.Type.listTitle.copy(lineHeightStyle = lineBox) + val body = WolfskinTokens.Type.body.copy(lineHeightStyle = lineBox) + val label = WolfskinTokens.Type.label.copy(lineHeightStyle = lineBox) + val caption = WolfskinTokens.Type.caption.copy(lineHeightStyle = lineBox) + val stateTitle = WolfskinTokens.Type.stateTitle.copy(lineHeightStyle = lineBox, fontWeight = FontWeight.Bold) + val readiness = caption.copy(fontWeight = FontWeight.Bold) + val rating = WolfskinTokens.Type.label.copy(fontFeatureSettings = "tnum") +} diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/Glyph.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/Glyph.kt index 82fd5a45..997f4c2c 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/Glyph.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/Glyph.kt @@ -20,6 +20,9 @@ fun Glyph(name: String, color: Color, modifier: Modifier = Modifier) { "seerr" -> R.drawable.wolfskin_sparkle "advanced" -> R.drawable.wolfskin_sort "alert" -> R.drawable.wolfskin_alert + "clock" -> R.drawable.wolfskin_clock + "check" -> R.drawable.wolfskin_check + "download" -> R.drawable.wolfskin_download else -> R.drawable.wolfskin_right } Icon(painterResource(resource), contentDescription = null, modifier = modifier, tint = color) diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt index 91bf3bb3..a7c0c54e 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt @@ -52,7 +52,7 @@ val SETTINGS_GROUPS = listOf( SettingsGroup("advanced", "Advanced settings", "Ratings display · Backdrop style · Playback backend (ExoPlayer, MPV) · Max resolution and bitrate · Skip segments · Logs and image cache"), ) -/** Requests is intentionally a no-data Wolfskin entry until the Requests slice. */ +/** The household request count shares the sheet's snapshot and excludes Ready. */ @Composable fun SettingsList(state: ShellState, modifier: Modifier = Modifier, openRequests: Int? = null) { val list = state.view.listState @@ -77,7 +77,7 @@ fun SettingsList(state: ShellState, modifier: Modifier = Modifier, openRequests: } itemsIndexed(SETTINGS_GROUPS, key = { _, group -> group.key }) { index, group -> Box(Modifier.height(L.row_srow)) { - SettingsRow(group, !state.navFocused && index == state.settingsRow, + SettingsRow(group, !state.navFocused && !state.requestsVisible && index == state.settingsRow, if (group.key == "requests") openRequests else null, Modifier.offset(L.safeSide, S.settingsRowTop)) { state.navFocused = false; state.settingsRow = index; state.key(ShellKey.Ok) diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellState.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellState.kt index b1bffcba..abf40a28 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellState.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellState.kt @@ -16,6 +16,8 @@ sealed interface ShellAction { data class HandOff(val group: String) : ShellAction data object Pop : ShellAction data object RetryPeople : ShellAction + data object RetryRequests : ShellAction + data class RequestTitle(val request: ComingInRequest) : ShellAction } /** D-pad inputs are shared by Android events and deterministic JVM replays. */ @@ -48,6 +50,8 @@ class ShellState( var peopleStatus by mutableStateOf(PeopleStatus.Ready) var recoveryIndex by mutableStateOf(0) var requestsVisible by mutableStateOf(false) + val requests = ComingInState() + private var requestReturnRoute: String? = null var handOff by mutableStateOf(null) var settingsRow by mutableStateOf(0) private var rootRoute by mutableStateOf("home") @@ -63,6 +67,10 @@ class ShellState( route = destination if (destination in tabs) rootRoute = destination handOff = null + if (requestReturnRoute == destination) { + requestsVisible = true + requestReturnRoute = null + } } /** Pointer navigation uses the same transitions as D-pad selection. */ @@ -86,7 +94,12 @@ class ShellState( armedCard = null } if (requestsVisible) { - if (key == ShellKey.Back || key == ShellKey.Ok) requestsVisible = false + when { + key == ShellKey.Back -> closeRequests() + key == ShellKey.Ok && requests.snapshot.status == ComingInStatus.Unavailable && requests.snapshot.items.isEmpty() -> retryRequests() + key == ShellKey.Ok && requests.snapshot.status == ComingInStatus.Loading && requests.snapshot.items.isEmpty() -> closeRequests() + requests.key(key) -> activateRequest() + } return true } if (pickerVisible) pickerKey(key) else if (key == ShellKey.Back) back() else if (navFocused) navKey(key) else contentKey(key) @@ -135,6 +148,8 @@ class ShellState( navFocused = false navIndex = 0 rootRoute = "home" + requestReturnRoute = null + requestsVisible = false views[person.key to route] = RememberedView() onAction(ShellAction.Person(selected)) } @@ -172,6 +187,7 @@ class ShellState( gearFocused = false } else { val target = tabs[navIndex] + requestReturnRoute = null if (target == route) views[person.key to target] = RememberedView() route = target rootRoute = target @@ -180,15 +196,41 @@ class ShellState( } } else if (route == "settings") { val group = SETTINGS_GROUPS[settingsRow].key - if (group == "requests") requestsVisible = true else { + if (group == "requests") openRequests() else { handOff = group onAction(ShellAction.HandOff(group)) } } } + /** Requested buttons may name an existing request without changing its authenticated actor. */ + fun openRequests(requestId: String? = null) { + requests.focus(requestId ?: requests.snapshot.ordered.firstOrNull()?.id) + requestsVisible = true + navFocused = false + } + + fun closeRequests() { requestsVisible = false } + fun retryRequests() { onAction(ShellAction.RetryRequests) } + + fun activateRequest() { + val request = requests.focused ?: return + requestReturnRoute = route + requestsVisible = false + onAction(ShellAction.RequestTitle(request)) + } + /** Back never discards a root view, including the card below a focused nav. */ fun back() { + if (requestsVisible) { closeRequests(); return } + val returnRoute = requestReturnRoute + if (returnRoute != null && route != returnRoute) { + route = returnRoute + requestsVisible = true + requestReturnRoute = null + onAction(ShellAction.Pop) + return + } if (route == "settings") { route = pickerReturnRoute onAction(ShellAction.Pop) diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellSurface.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellSurface.kt index 7132111f..4b013cfb 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellSurface.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ShellSurface.kt @@ -82,20 +82,9 @@ fun ShellSurface( if (state.pickerVisible) { WhosWatching(state) } else { - if (state.route == "settings") SettingsList(state, openRequests = settingsOpenRequests) else content(Modifier.fillMaxSize().focusRequester(contentFocus).focusRestorer().focusGroup()) + if (state.route == "settings") SettingsList(state, openRequests = settingsOpenRequests ?: state.requests.snapshot.openCount) else content(Modifier.fillMaxSize().focusRequester(contentFocus).focusRestorer().focusGroup()) NavBar(state, state.view.listState.firstVisibleItemIndex > 0 || state.view.listState.firstVisibleItemScrollOffset > L.navSolidAfter.value * 2) - if (state.requestsVisible) { - Box(Modifier.fillMaxSize().background(C.sheetScrim)) { - Column(Modifier.offset(x = WolfskinTokens.Shell.stageWidth - L.sheetWidth) - .width(L.sheetWidth).fillMaxSize().background(C.surface).padding(L.safeSide), - verticalArrangement = Arrangement.spacedBy(L.buttonGap)) { - Text("Requests", color = C.fg, style = WolfskinTokens.Type.sheetTitle) - Text("Wolfskin screen", color = C.accentText, style = WolfskinTokens.Type.label) - Text("No request data yet. Conductarr sign-in is not available on this TV.", color = C.muted, style = WolfskinTokens.Type.body) - PickerButton("Close", true, true) { state.requestsVisible = false } - } - } - } + if (state.requestsVisible) ComingInSheet(state) } } } diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt index e4071964..1a48595a 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt @@ -229,6 +229,42 @@ object WolfskinTokens { const val requestsPollSeconds = 30.0f const val comingInVisibleRows = 5.0f } + object Requests { + val sheetPaddingY = 40.0.dp + val sheetPaddingX = 32.0.dp + val sheetGap = 9.0.dp + val emptyMargin = 10.0.dp + val rowPaddingY = 7.0.dp + val rowPaddingX = 9.0.dp + val rowGap = 12.0.dp + val listGap = 3.0.dp + val stageMargin = 2.0.dp + val stageGlyph = 14.0.dp + val stageGap = 4.0.dp + val readinessGapX = 11.0.dp + val readinessGapY = 5.0.dp + val readinessMargin = 4.0.dp + val readinessGlyph = 13.0.dp + val chevron = 15.0.dp + const val chevronAlpha = 0.6f + const val separatorAlpha = 0.4f + val receiptPaddingY = 14.0.dp + val receiptPaddingX = 15.0.dp + val receiptGap = 5.0.dp + val receiptGlyph = 18.0.dp + val buttonMargin = 6.0.dp + val skeletonTitleWidth = 180.0.dp + val skeletonTitleHeight = 17.0.dp + val skeletonSubtitleWidth = 120.0.dp + val skeletonSubtitleHeight = 13.0.dp + val skeletonGap = 6.0.dp + val ratingsGap = 10.0.dp + val ratingsEntryGap = 4.0.dp + val shadowBlur = 40.0.dp + val shadowOffset = -15.0.dp + val shadowColor = ComposeColor(0x80000000) + const val ratingsWordmarkRatio = 1.8f + } object Shell { const val navLabelFade = 200 val zero = 0.0.dp diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0a98a62277a71d5d68e73f9bdad141670bf2fa GIT binary patch literal 804 zcmV+<1Ka$GP)+K&+} zBw`mhn8|GvWGe2?*^IzVkT-ch^@Kc@x}=6L6+L5u+*LbgEUXrUiMq zXle=aI+KXWawf`&@q3HkKOT=aSo z?t&*YySMhpk8`uDGK%`*p8^N|>ol>=CyWU@ z{|qr}UcRbM`QzamB~Y}(>%=jWRGX{Kt6)W*N@Rj*1E7u>tOEqV5#<$%!3Flz0m5=@ zO#v89kp#Ba3j}lk7?N9j%6&yOlIrsC8nW{ttexaqNrZU-BN-k5)u-@(OQ+!9P8+Qs z$XqRf6#cwTltoX1^Cgf!9-RYj)S4oy!w*YSnj@>CZv(c5oEvT-I$B(meuH=>x+toL zs7(jnvdTW0WN8fuz?+Cp05M(cqEOV@&@U0O>+%O!GpUAF%j}1sW@p5kR88x;Y#Yc!l ixZ~!6sg-r8q<;VfMF#Q%@H8g?0000OLTbv literal 0 HcmV?d00001 diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7becf5ce94cab179e860b1c7028fdc1e69ec5d GIT binary patch literal 813 zcmV+|1JeA7P)6!~Me%_O3W6I&Tq(Hm zy-^o};6m%l?p)T5pr{CL1vf6Vl!}z9t)kFPAJ_+0+iF|W+@wvDaWT2vBsZZqH(=}! z!^}Bz&Y3@R&zzaS8ivr`(?E<)BrSy|V;O=$0oR^2uR6#q4ly1xC+h2 z2Bd?vNgO~pGijHi@MqDGOMIY(VQebZuC@}YH^Rtdsy#rHALfJbV^+y7C-}Tjj2gs|Zl>P1&^IYFk>x%q{{@c1RP-_K`t$cy~&IA{@=nX_hp z=Q1=l7;@K#d{&2yId2tXQ!p|CQd+Y=)CQxIFr4^eK`pc0;3zzQ1#>~zzY|U$O+6zz zY>{_3ARdR67YAA9WcoHOD z_o;sKrrhI1SIoNQC|p02s_PlZ>~D*_!vX$!HGcP5^?`ajk<6&Ag4>r=$<(2L1rrau zi)>Ah)gr3**V&Df3jK?EJ%%oxoo`G_6RSIKu`pSJ{j^Ej z`G7_8;fOIV_L}GQvKx=D9?SmDCz1EKp{8-DVGjk9)rb?!c`V4lE$Ic63Q1C(UML|IjM7*IOD0rc9wiPeL2hj$_Y&Jxq)@rRSqNG$>CD~1r*mU+g zK4g>bPIk6i5dSYT=lsw4{^xw(%=v_RFx20eaGTdmC!AAs`3rUBgdnxZcy4Eh*w|YF zcLD~O6V)fDQ<)bpRmjvNZEU~5_OiGZ6?vh3?C!4rOvuf7R{^(Fp`;i{-=zx0BALJ# zjIGXzS-Ith?rTak&h}f;7Hf;2pY8qdbU7W_QNDNZgupk|IAiRQayyaTeWlwp`@ISW z1$oyov14v_pkg;_p3y=>(W@dhGd1^DcG*%yDeeb0mc_WB?=jThSRs@cP493=yc2HL zQ#b1!c1OKi0p@Nvcxt+pt)jeBw#YGV9u6*a{wNX`kgsV%w zO(>tX<#Ct@9=Ygik)Y>?z=x0V`##+uemXD|U{68vdE}?yF_l9E8?ghP3At|t~ zPLW^Z%5|mfjYRcX_kriQ>-9NA9oVP+Km&#W<>mfFQ)4M|JPnFEWMXz;c%3YTKT>5^Hu~w!+~x#JqR)o zF0^QawM!S=`Vp^r#^@`k?5nJZ@A7fFO~|=IWYH}xRote*F>98L$&^2z@5wx%O1B^{ z0|!8!h+9&0`3uokc}1fP0oy|ElT&eXG#pz<`D4J?lASL-oqB}Mz4_C(%_qC2P&yF; mfv=0gy$hTDKkLc=U-2(4KQ`vj3~lNF0000|L-{`d6TyJu;;W*)3`KgnyeX}U(?Zb%ABCP z5D~Q9g^Cv<>WvqIcaDhzQS?%VUX)=wWezO8E8Yy*l!4+t80&1MAZwbMHXlv%bv|;= z<3+m6q^Xt_uk;Uxm-D{7&+qv^&-s1J&@Bp72J*MHu*_I$aH5!w- zYij1`r`#rpSSqFP-STB5D`_m3RaP?usD8bsyF0U6sn+GSS)f!D8fv(Qac$tI&2WPy1vrLLjp+_4?GX;9VLI!Ay=%-if$5*W)K>fVn}4!qs4 zV3LV~QEp7uGEl0j_%;7KPFd)yp%BbtKoitOYL@7n5u1`?+SC7#*KgeXx zq4}}QIjD3C({vN|x}$m@&yEZW78?g)z#%y!{x&5N?C{+e>hL4v>O-i*k5Gpndp$u& zf{5t!3*go=ZVg}AzM%{!#UXs~&!2*`2i-P93^S318ABMv!jdRN_O$g57K}n)M$6ew z2N&^*vI@pPpoZkLAV|dU#_s;G=f^}|NJb903y+^0oOkxxwU_`5gP;&Y0Dv1nj)2#8 m#rZoCL7RHv)^mY<+^H3aC%^R=Y{e?SH z{Bs*lf88QKwko$;HCPP38mtPbYpbTmcXFWLy2tqHC%c1mhJps2bNdBp6<7}}QPKN> zM3C-Q~hXU%{7478!v6N&P=sP^V4NtIhOMO)?eyo zJ1=L6^-T|P8=*&bf=0|Im6PF z?{|+K{*h>_fdNq|O zXceL{g-yUFNZb^pGf=!5O+7c~Ma_Kxp1QTb`Aol!$Lkgv8GkXvm z#ykjMz2rI|gfYJe$~&lja5wb!dNcYfW)|9tqC!^Qd@5`4!#vc0mdD=QcLO48fdiR# z=XBLLp)+(!!RL=e%Q{r4N4c-O?o3#P@1PuMTRQjrIB{v@=lk)z_=Sd0{9*$wEjg1G z57dJu^7_5)sFvb;FJ>CmjIB3P5YMF!zg@tz?(pTOfH@-i>HLS&+-) zAfMop*xJ9VmlN}l3wZkA6e{0e{D_+i3C+r!MOsNLxNnbjS zVkCyj@a;5yTQ(E^5FZpKYzltTvM-uMo=mElY1Jd$)?rAxbh}1U4gOFomr!r8ox==R zH7{Sym8XtJBG&*GG`4I=sJGcy!N*wNN!x&gp6OU#+LX$9W8K-)NlcMdqrS?2EapX9 zQ4~;ePf%6i+cc z`nT@6_@&ZAL(x-#f2zt}5h_r&Q2XvdR()(tO+UeDqgy7LT=tNaiyQwM$sEZI*{$u% z=KjFh@I0Us*gP_|yyM`H4&DNKQS%-F7+1WarSD&OD$5|34Bebw-&cUMU!HXZcpWGn z;V=3%PxPE9kE`+m1=G6%X~#{da_;}592_o?>r-`S!ocSkSu?2$ulOn@DpZQFfu7EX zg5t;B7HZsfeDgAs>-5L+pszOHRn`RHj4BRtH2lEqhBnV?|2LhQnWFk|W{f!UJt%g_ zEFVCmAc%Y1m4EEEZ@;1{t3lcr`3B7v-2%^rY;I-1e=a`*-3Ih2vf{#u*}orQ6_z5} kpsL#h{T*I-XHbIw0W#8`np7!anE(I)07*qoM6N<$f>4tnH~;_u literal 0 HcmV?d00001 diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png new file mode 100644 index 0000000000000000000000000000000000000000..2a2bfa89a3e128a2eb6fcb056d804eaae1abb01b GIT binary patch literal 1023 zcmVsXPJO4B1&Ir2*O%bES>o`nM;v8^8jl&dX+G|7IHx3Ij6a10+yglIE?3QPfOXUsL{yuI8SXo%}{auIEG_dj9{ zbkgA8a8jgo!2PXsJ9yiKAkTIr?C;Kn#wqL&dq9p^oY(xPG-_^b9*;fQ6y*7(Q}!#< zrb)y9j!wX#O;r1W(~;mn9G%f+q4ZG%Ii#59Eb@#+5(*tngf~HF1x*?3F9w}1mqO5~ zkalpOr`Wp{jjy5#>-n%?mm=*zdu3b%T?5txY+zli9ilPZ+=FiUgIskwR3jN8FMGSP z?#=s{cWRnvRnSF2Co9LiKt2pH7Y2xYGm69$`5>gu5rB81{f>JlcLq1g*6BwvZw_G2 zy@4)FLoSQ|#V6nuar)nf&MtWD33T{2_WCv4!8{m;((~QJ?%?W)pl+lVgzu+xe)^0Y zdK!uMf*9oFi`yC5Z@+}%Cg!~l|9xa+5cb6(;-ZVQXt6L}D_hrI0uyA?MuQig>bJuD{$keOu5cUy2Y%&IQT z8ySQBr4Zf#{8}7RNGFTspC*bcDG?yJ~B-s!oFivJ-yBxt5mm1J^5BZ#J3 z23bgHW)k-9gSL)v=hZet?jaZl*?)j?x0<@m+7uM^yj%A3k2mzeJkrw}-b)b|ae|JP zp*s%w9QL!T#gcEnZW$!^ShnfprBeTCPYY|X^j8Q}=g9XdT{`R8(c!l{MhcmRnvEu_ z;q|$FB63BIc}0$&jmgoI=&wJ62C#o{(}8SW5r^002ovPDHLkV1g|L=I#Ih literal 0 HcmV?d00001 diff --git a/wolfskin-design/src/main/res/drawable/wolfskin_check.xml b/wolfskin-design/src/main/res/drawable/wolfskin_check.xml new file mode 100644 index 00000000..3509d99c --- /dev/null +++ b/wolfskin-design/src/main/res/drawable/wolfskin_check.xml @@ -0,0 +1,3 @@ + + + diff --git a/wolfskin-design/src/main/res/drawable/wolfskin_clock.xml b/wolfskin-design/src/main/res/drawable/wolfskin_clock.xml new file mode 100644 index 00000000..8bbd323d --- /dev/null +++ b/wolfskin-design/src/main/res/drawable/wolfskin_clock.xml @@ -0,0 +1,3 @@ + + + diff --git a/wolfskin-design/src/main/res/drawable/wolfskin_download.xml b/wolfskin-design/src/main/res/drawable/wolfskin_download.xml new file mode 100644 index 00000000..4df16c9e --- /dev/null +++ b/wolfskin-design/src/main/res/drawable/wolfskin_download.xml @@ -0,0 +1,3 @@ + + + diff --git a/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/ComingInRatingsGateTest.kt b/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/ComingInRatingsGateTest.kt new file mode 100644 index 00000000..c79d10db --- /dev/null +++ b/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/ComingInRatingsGateTest.kt @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import java.util.Locale +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.advanceTimeBy +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.Assert.* +import org.junit.Test + +/** The fake coroutine clock proves the production dwell/cache decision without a Compose scheduler. */ +@OptIn(ExperimentalCoroutinesApi::class) +class ComingInRatingsGateTest { + private val first = ComingInRequest("first", "movie", 1, "First", "justin", "Justin", "justin", "Justin", ComingInStage.Waiting, + ratings = listOf(ComingInRating("imdb", 6.0))) + private val second = first.copy(id = "second", tmdbId = 2, title = "Second", ratings = listOf(ComingInRating("tmdb", 7.2))) + + @Test fun uncachedDwellCancelsOnLeaveAndReentryStartsAFreshRead() = runTest { + val state = ComingInState() + state.update(ComingInSnapshot(listOf(first, second), ComingInStatus.Ready, signedIn = true)) + val abandoned = launch { state.awaitFocusedRatings() } + runCurrent() + advanceTimeBy(100) + assertFalse(state.ratingsVisible) + abandoned.cancel() + state.focus(second.id) + val next = launch { state.awaitFocusedRatings() } + runCurrent() + advanceTimeBy(349) + runCurrent() + assertFalse(state.ratingsVisible) + advanceTimeBy(1) + runCurrent() + assertTrue(state.ratingsVisible) + next.join() + state.focus(first.id) + assertFalse(state.ratingsVisible) + launch { state.awaitFocusedRatings() } + runCurrent() + advanceTimeBy(350) + runCurrent() + assertTrue("Returning to the abandoned uncached title must complete a new dwell", state.ratingsVisible) + state.focus(second.id) + assertTrue("A previously read title must be visible on the focus transition itself", state.ratingsVisible) + } + + @Test fun signOutClearsCachedVisibilityAndSignInUsesFreshRatingAndLocale() = runTest { + val state = ComingInState() + val snapshot = ComingInSnapshot(listOf(first), ComingInStatus.Ready, signedIn = true) + state.update(snapshot) + launch { state.awaitFocusedRatings() } + runCurrent(); advanceTimeBy(350); runCurrent() + assertTrue(state.ratingsVisible) + state.update(snapshot.copy(signedIn = false)) + assertFalse(state.ratingsVisible) + val refreshed = first.copy(ratings = listOf(ComingInRating("imdb", 7.6))) + state.update(snapshot.copy(items = listOf(refreshed))) + assertFalse("Sign-out invalidates the previous session's rating gate", state.ratingsVisible) + launch { state.awaitFocusedRatings() } + runCurrent(); advanceTimeBy(350); runCurrent() + assertTrue(state.ratingsVisible) + val rating = state.focused!!.ratings.single() + assertEquals("7,6", formatComingInRating(rating, Locale.forLanguageTag("nl-NL"))) + assertEquals("7.6", formatComingInRating(rating, Locale.ENGLISH)) + assertEquals("87%", formatComingInRating(ComingInRating("fresh", 87.9, true), Locale.forLanguageTag("nl-NL"))) + } + + @Test fun savedOfflineRowsOnlyShowPreviouslyReadRatingsAcrossHouseholdRequests() = runTest { + val state = ComingInState() + val sharedCopy = first.copy(id = "other-request", requesterKey = "shared", requesterName = "Shared") + val online = ComingInSnapshot(listOf(first, second, sharedCopy), ComingInStatus.Ready, signedIn = true) + state.update(online) + launch { state.awaitFocusedRatings() } + runCurrent(); advanceTimeBy(350); runCurrent() + state.update(online.copy(status = ComingInStatus.Unavailable)) + state.focus(second.id) + state.awaitFocusedRatings() + assertFalse("An unread title cannot acquire ratings while offline", state.ratingsVisible) + state.focus(sharedCopy.id) + assertTrue("The title cache is shared across request rows for the same media type and TMDB id", state.ratingsVisible) + } +} diff --git a/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsCaptureTest.kt b/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsCaptureTest.kt new file mode 100644 index 00000000..7f114a64 --- /dev/null +++ b/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsCaptureTest.kt @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import android.app.Application +import android.view.View +import android.view.WindowManager +import androidx.activity.ComponentActivity +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.ui.Modifier +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onRoot +import com.github.takahirom.roborazzi.captureRoboImage +import java.io.File +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.annotation.GraphicsMode + +/** Every approved Requests state uses the actual shell overlay at native television density. */ +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [34], application = Application::class, qualifiers = "w960dp-h540dp-xhdpi") +@GraphicsMode(GraphicsMode.Mode.NATIVE) +class RequestsCaptureTest { + @get:Rule val rule = createAndroidComposeRule() + + @Before fun fullscreen() { + rule.activity.window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) + @Suppress("DEPRECATION") + rule.activity.window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + } + + private fun capture(name: String, snapshot: ComingInSnapshot, person: String = "justin", expanded: Boolean = false) { + val state = ShellState(fixturePeople(), person) + state.pickerVisible = false + state.enterDestination("settings") + state.requests.update(snapshot) + state.openRequests() + if (expanded) { state.requests.key(ShellKey.Down); state.requests.key(ShellKey.Right) } + rule.setContent { + WolfskinTheme { ShellSurface(state, Modifier.requiredSize(WolfskinTokens.Shell.stageWidth, WolfskinTokens.Shell.stageHeight)) } + } + rule.mainClock.advanceTimeBy(1000) + rule.waitForIdle() + val directory = File(System.getProperty("wolfskin.captureDirectory")) + directory.mkdirs() + rule.onRoot().captureRoboImage(File(directory, "$name.png").absolutePath) + } + + @Test fun st081_empty() = capture("st-081", ComingInSnapshot(status = ComingInStatus.Ready, signedIn = true)) + @Test fun st082_stages() = capture("st-082", requestsFixture()) + @Test fun st083_unavailable() = capture("st-083", ComingInSnapshot()) + @Test fun st084_loading() = capture("st-084", ComingInSnapshot(status = ComingInStatus.Loading)) + @Test fun st085_partial() = capture("st-085", requestsFixture().copy(items = requestsFixture().items.take(3), partial = true)) + @Test fun st086_readiness() = capture("st-086", requestsFixture(), expanded = true) + @Test fun st088_sharedActor() = capture("st-088", requestsFixture(shared = true), person = "shared") + @Test fun st111_focusedRatings() = capture("st-111", requestsFixture(ratings = true)) +} + +/** Shared actor and stage fixtures are projections, never network calls or synthetic UI redraws. */ +fun requestsFixture(shared: Boolean = false, ratings: Boolean = false): ComingInSnapshot { + val source = RequestsCaptureTest::class.java.getResourceAsStream("/wolfskin-requests.json")!!.bufferedReader().use { it.readText() } + val items = readComingInFixture(source) { name -> + RequestsCaptureTest::class.java.getResourceAsStream("/wolfskin-requests/$name")!!.use { it.readBytes() } + } + val selected = when { shared -> items.filter { it.id == "x7" }; ratings -> items.filter { it.id == "x8" }; else -> items.take(6) } + return ComingInSnapshot(selected, ComingInStatus.Ready, signedIn = true) +} diff --git a/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsKeysTest.kt b/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsKeysTest.kt new file mode 100644 index 00000000..1020f57d --- /dev/null +++ b/wolfskin-design/src/test/java/org/justinvisser/wolfskin/design/RequestsKeysTest.kt @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import android.app.Application +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.test.* +import androidx.compose.ui.test.junit4.createComposeRule +import java.util.Locale +import org.json.JSONArray +import org.junit.Assert.* +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +/** Key replays exercise real shell handling, including trapped overlays and title-return memory. */ +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [34], application = Application::class, qualifiers = "w960dp-h540dp-xhdpi") +class RequestsKeysTest { + @get:Rule val rule = createComposeRule() + + private fun mount(state: ShellState) { + rule.setContent { WolfskinTheme { ShellSurface(state) } } + rule.mainClock.advanceTimeByFrame() + } + + private fun send(first: Key, second: Key? = null, third: Key? = null, fourth: Key? = null) { + listOfNotNull(first, second, third, fourth).forEach { key -> + rule.onNodeWithTag("wolfskin-shell").performKeyInput { pressKey(key) } + rule.mainClock.advanceTimeByFrame() + } + } + + private fun sheet(snapshot: ComingInSnapshot = requestsFixture(), actions: (ShellAction) -> Unit = {}): ShellState = + ShellState(fixturePeople(), "justin", actions).apply { + pickerVisible = false + enterDestination("settings") + requests.update(snapshot) + openRequests() + } + + @Test fun approvedNinePressPathUsesRealShellFocus() { + val paths = RequestsKeysTest::class.java.getResourceAsStream("/requests-press-paths.json")!!.bufferedReader().use { JSONArray(it.readText()) } + val keys = mapOf("OK" to Key.DirectionCenter, "UP" to Key.DirectionUp, "LEFT" to Key.DirectionLeft, + "RIGHT" to Key.DirectionRight, "DOWN" to Key.DirectionDown) + val state = ShellState(fixturePeople(), "justin") + state.requests.update(requestsFixture()) + mount(state) + val path = paths.getJSONObject(0) + val presses = path.getJSONArray("keys") + assertEquals(9, path.getInt("presses")) + assertEquals(path.getInt("presses"), presses.length()) + for (index in 0 until presses.length()) send(keys.getValue(presses.getString(index))) + rule.onNodeWithTag("coming-in").assertExists() + rule.onNodeWithText("Requests · 5 open").assertExists() + assertEquals("settings", state.route) + assertEquals("x5", state.requests.focusedId) + assertFalse(state.navFocused) + } + + @Test fun readinessWindowAndTitleRoundTripPreserveRequest() { + lateinit var state: ShellState + state = sheet { action -> if (action is ShellAction.RequestTitle) state.enterDestination("request-title/${action.request.tmdbId}") } + mount(state) + send(Key.DirectionDown, Key.DirectionRight) + rule.onNodeWithText("Download · Downloading").assertExists() + assertEquals(4, state.requests.windowSize) + assertEquals("x1", state.requests.focusedId) + send(Key.DirectionLeft) + rule.onNodeWithText("Download · Downloading").assertDoesNotExist() + send(Key.DirectionDown, Key.DirectionDown, Key.DirectionDown, Key.DirectionDown) + assertEquals("x6", state.requests.focusedId) + assertEquals(1, state.requests.windowStart) + send(Key.DirectionDown) + assertEquals("x6", state.requests.focusedId) + send(Key.DirectionCenter) + assertFalse(state.requestsVisible) + assertTrue(state.route.startsWith("request-title/")) + send(Key.Back) + rule.onNodeWithTag("coming-row-x6").assertExists() + assertEquals("x6", state.requests.focusedId) + assertTrue(state.requestsVisible) + send(Key.Back) + assertFalse(state.requestsVisible) + assertEquals("settings", state.route) + assertEquals(0, state.settingsRow) + } + + @Test fun emptyAndLoadingTrapDirectionsWhileUnavailableRetries() { + var retries = 0 + val state = sheet(ComingInSnapshot(status = ComingInStatus.Loading)) { if (it == ShellAction.RetryRequests) retries++ } + mount(state) + send(Key.DirectionUp, Key.DirectionLeft) + assertFalse(state.navFocused) + assertTrue(state.requestsVisible) + send(Key.DirectionCenter) + assertFalse(state.requestsVisible) + rule.runOnIdle { state.requests.update(ComingInSnapshot()); state.openRequests() } + send(Key.DirectionCenter) + assertEquals(1, retries) + assertTrue(state.requestsVisible) + rule.runOnIdle { state.requests.update(ComingInSnapshot(status = ComingInStatus.Ready)) } + send(Key.DirectionDown, Key.DirectionCenter) + rule.onNodeWithText("Nothing coming in.").assertExists() + assertTrue(state.requestsVisible) + } + + @Test fun cachedRatingsRenderInTheTelevisionLocale() { + val original = Locale.getDefault() + try { + Locale.setDefault(Locale.forLanguageTag("nl-NL")) + val state = sheet(requestsFixture(ratings = true)) + kotlinx.coroutines.test.runTest { state.requests.awaitFocusedRatings() } + mount(state) + rule.onNodeWithText("7,6").assertExists() + rule.onNodeWithText("87%").assertExists() + rule.runOnIdle { state.requests.update(state.requests.snapshot.copy(signedIn = false)) } + rule.onNodeWithText("7,6").assertDoesNotExist() + rule.onNodeWithText("87%").assertDoesNotExist() + } finally { Locale.setDefault(original) } + } + + @Test fun selectingARootAfterARequestTitleDiscardsTheSheetReturnLink() { + lateinit var state: ShellState + state = sheet { action -> if (action is ShellAction.RequestTitle) state.enterDestination("request-title/${action.request.tmdbId}") } + mount(state) + send(Key.DirectionCenter, Key.DirectionUp, Key.DirectionCenter) + assertEquals("home", state.route) + send(Key.Back) + assertFalse("Root Back must focus navigation, not reopen the abandoned sheet", state.requestsVisible) + assertTrue(state.navFocused) + } + + @Test fun refreshKeepsStableFocusAndSharedActorNeverBecomesYou() { + val snapshot = requestsFixture() + val state = sheet(snapshot) + mount(state) + send(Key.DirectionDown) + rule.runOnIdle { state.requests.update(snapshot.copy(items = snapshot.items.reversed(), partial = true)) } + assertEquals("x1", state.requests.focusedId) + rule.onNodeWithText("Some requests may be missing: Conductarr answered only in part.").assertExists() + val shared = requestsFixture(shared = true).items.single() + val viewer = fixturePeople().single { it.key == "shared" } + assertEquals("Shared", shared.actor(viewer)) + assertEquals("Justin", shared.recipient(viewer)) + assertEquals(5, snapshot.openCount) + assertEquals(listOf(0, 1, 1, 2, 3, 4), snapshot.ordered.map { it.stage.rank }) + } +} diff --git a/wolfskin-design/src/test/resources/requests-press-paths.json b/wolfskin-design/src/test/resources/requests-press-paths.json new file mode 100644 index 00000000..5d76c663 --- /dev/null +++ b/wolfskin-design/src/test/resources/requests-press-paths.json @@ -0,0 +1,21 @@ +[ + { + "goal": "Round 4 \u00b7 Home hero \u2192 Requests (Coming in) in Settings", + "keys": [ + "OK", + "UP", + "LEFT", + "OK", + "RIGHT", + "RIGHT", + "DOWN", + "OK", + "OK" + ], + "presses": 9, + "note": "8 from the hero", + "start": "app launch: Who's watching with Justin focused (index.html:357)", + "replayed": "PASS", + "source": "index.html:2152-2174 PRESSES, replayed 2026-11-05" + } +] diff --git a/wolfskin-design/src/test/resources/wolfskin-requests.json b/wolfskin-design/src/test/resources/wolfskin-requests.json new file mode 100644 index 00000000..507ebd65 --- /dev/null +++ b/wolfskin-design/src/test/resources/wolfskin-requests.json @@ -0,0 +1,217 @@ +{ + "source": "Locked Opus fixture/fixture.json; index.html EXAMPLES() pool order", + "items": [ + { + "id": "x1", + "mediaType": "tv", + "tmdbId": 11821, + "title": "The Abbott and Costello Show", + "requesterKey": "justin", + "requesterName": "Justin", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Downloading", + "poster": "tv-the-abbott-and-costello-show-1952-poster.jpg", + "ratings": [ + { + "mark": "tmdb", + "score": 7.2, + "percentage": false + } + ] + }, + { + "id": "x2", + "mediaType": "movie", + "tmdbId": 13483, + "title": "Awake", + "requesterKey": "mindel", + "requesterName": "Mindel", + "actorKey": "justin", + "actorName": "Justin", + "stage": "AlmostReady", + "poster": "movie-awake-2007-poster.jpg", + "ratings": [ + { + "mark": "rotten", + "score": 23, + "percentage": true + }, + { + "mark": "spilled", + "score": 55, + "percentage": true + }, + { + "mark": "imdb", + "score": 6.5, + "percentage": false + } + ] + }, + { + "id": "x3", + "mediaType": "tv", + "tmdbId": 70785, + "title": "Anne with an E", + "requesterKey": "shared", + "requesterName": "Shared", + "actorKey": "mindel", + "actorName": "Mindel", + "stage": "Searching", + "poster": "tv-anne-with-an-e-2017-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 63, + "percentage": true + } + ] + }, + { + "id": "x4", + "mediaType": "movie", + "tmdbId": 99861, + "title": "Avengers: Age of Ultron", + "requesterKey": "justin", + "requesterName": "Justin", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Waiting", + "poster": "movie-avengers-age-of-ultron-2015-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 75, + "percentage": true + }, + { + "mark": "upright", + "score": 82, + "percentage": true + }, + { + "mark": "imdb", + "score": 7.3, + "percentage": false + } + ] + }, + { + "id": "x5", + "mediaType": "movie", + "tmdbId": 1033148, + "title": "Die My Love", + "requesterKey": "mindel", + "requesterName": "Mindel", + "actorKey": "mindel", + "actorName": "Mindel", + "stage": "Failed", + "poster": "movie-die-my-love-2025-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 74, + "percentage": true + }, + { + "mark": "spilled", + "score": 45, + "percentage": true + }, + { + "mark": "imdb", + "score": 6, + "percentage": false + } + ] + }, + { + "id": "x6", + "mediaType": "movie", + "tmdbId": 416153, + "title": "Arctic Dogs", + "requesterKey": "shared", + "requesterName": "Shared", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Ready", + "poster": "movie-arctic-dogs-2019-poster.jpg", + "ratings": [ + { + "mark": "rotten", + "score": 13, + "percentage": true + }, + { + "mark": "upright", + "score": 60, + "percentage": true + }, + { + "mark": "imdb", + "score": 4.9, + "percentage": false + } + ] + }, + { + "id": "x7", + "mediaType": "movie", + "tmdbId": 76203, + "title": "12 Years a Slave", + "requesterKey": "justin", + "requesterName": "Justin", + "actorKey": "shared", + "actorName": "Shared", + "stage": "Waiting", + "poster": "movie-12-years-a-slave-2013-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 95, + "percentage": true + }, + { + "mark": "upright", + "score": 90, + "percentage": true + }, + { + "mark": "imdb", + "score": 8.1, + "percentage": false + } + ] + }, + { + "id": "x8", + "mediaType": "movie", + "tmdbId": 14069, + "title": "The Girl Who Leapt Through Time", + "requesterKey": "mindel", + "requesterName": "Mindel", + "actorKey": "justin", + "actorName": "Justin", + "stage": "Waiting", + "poster": "movie-the-girl-who-leapt-through-time-2006-poster.jpg", + "ratings": [ + { + "mark": "fresh", + "score": 87, + "percentage": true + }, + { + "mark": "upright", + "score": 90, + "percentage": true + }, + { + "mark": "imdb", + "score": 7.6, + "percentage": false + } + ] + } + ] +} diff --git a/wolfskin-design/src/test/resources/wolfskin-requests/movie-12-years-a-slave-2013-poster.jpg b/wolfskin-design/src/test/resources/wolfskin-requests/movie-12-years-a-slave-2013-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff1f55e6a01a7dce14cc37b53f682145d8481874 GIT binary patch literal 14546 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%0AgDTqB@i8`}$lhUgs0z&P`+1cf- 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

rMggQ8wrW8RGrqp0}cW8=jvx%PKR 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 UtJUgMW_S3&?V9a+y+jB9*_+|;asU7T literal 0 HcmV?d00001 diff --git a/wolfskin-design/src/test/resources/wolfskin-requests/movie-awake-2007-poster.jpg b/wolfskin-design/src/test/resources/wolfskin-requests/movie-awake-2007-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32595897ce45022b93a18393e861fb76c19e6f9c GIT binary patch literal 20978 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 NCnT>gCXZl8|Jl>Z-ZTIJ literal 0 HcmV?d00001 diff --git a/wolfskin-design/src/test/resources/wolfskin-requests/movie-the-girl-who-leapt-through-time-2006-poster.jpg b/wolfskin-design/src/test/resources/wolfskin-requests/movie-the-girl-who-leapt-through-time-2006-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ded6cd2ad9df9483f1be7ff22fc21babf70dd3fb GIT binary patch literal 17007 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 bazYS+k#HB;G4de^53y0$p6Vz<38Vknb5MA0 literal 0 HcmV?d00001 diff --git a/wolfskin-design/src/test/resources/wolfskin-requests/tv-anne-with-an-e-2017-poster.jpg b/wolfskin-design/src/test/resources/wolfskin-requests/tv-anne-with-an-e-2017-poster.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55d443b4e150b70b6716604b19cf25528e441428 GIT binary patch literal 22254 zcmb4qWl$VU(B`tZySu|8!QI`R#R>l6t|0_>cXyY?U4lEo-QAsFL2~)(?yBzZ&HU?U zs=KGAyQgQS=kMy@T>yrHjJym03JL&#`qu$}Hvp0VBzSlPcsL{k1O#LxBxE!K3^Y_! zG*VnVOaf|hS{f>HDoQ#g-Y;~FT#S@dY~t)({DLAPBDAbh@{&Swyuu=a|HA|d2^kp; z6^#S~gG7*lib3%IyZ!A0U?M;bKrur@Q2~IMP|%oAe}@1h000mO{Xgpd-v$i>gatss z!6W=bbua)xC?E_pEG!H(^1ms-1E7GI0B9I2N_JRrbvSG)Qx|xSz{EnFhW=ZLxjkGw zYEBI^*PzCxI~qD3NjLYTc_~dTbBo|2d|IyLfdy$9a7aq({y)Yj0F01O6eH08zjmsdV$E z&myvAL?!!_Yehyytdkn;qZ@I!0UXYz2Ep|&!5L+q zhYPh)GuV>?MMi3Xk#QzSv~;3gTK{zrMRi90p;9iJ-Gwh` ze?1A>dY1oPKwX>VR4Fu`BY4hd`UMQ?t2MFxje}k0)jziDdZ@yB$umr z%Oq%1BB#XG@09)>#NxRMl@bQ>{9PFxU^*e*Uf819+Di^Hm#gD7;6eomD)WX99a&~_ z7R0%?QepxaDO5W>DmEzHDf&01+36;EyPq+;x_kyAt#%mBziInj*vr{>2G(d+J9nbp zLIWyRQI9>}KY%)p&v8@kDDK92M(!n1z5x?(Ar}J5DyvqGrs?Jj6ZMpx=JF@XdabPq zEyGizlaEV!P;9M&ecz!-a=m8V*mwYTXWZS2&-FZ7x@zvkK924?2fD+*MwVF(ISw6` zsYK}an$;W|Sh->bYf!l=3A-uGT>{N$`tr)ne?yGN+^olb6{gPrR|nc^as*cLmpDyM zm-+=s|B|!O5b6&W_(mQJHCt;Ub|@ChRl#BRXBcZe?0ax#Q4HzEPbSaIzIida3|dq5 zk_%}t`EseavlT-?6PAt!zq)kDf7m?^;xyt!mo|!V1BaxH-4te4Dqp*%laYx7TKgk| zq0IANkRsY0x-lm1$_ng=z-CrkT_*jRW~D{^-+4-EyAai>6G+h&QiA$Bo3{BQQQT<= z%b~7sGchy8$!NoZr@mb&8e00k{sqXl!kmATefeF{O4-%##0H{4>HfU>3lLmVhhnGi z8C<0a1C=UeIE?=VoRfo)*pY!!w(zCOLu=BR8YAc|CO>dt`MEgEQ=usk1-@4-j{^{h z9L<6{f(fLtCukM}?e73HMwP!s!dSTip*|3w78j#y4v8%TR3~iy`;`-)%SB$8=%X41l@D68a@pOm$wD#^!C21= zR`6W$BKuN8)hL;<^A!m;n$_*MX5Pbjeh42(f2azG~&Uycm<-EK0Bq;{DlLzpH!+sm9D*#gsa zmP{kp`v;?CyA{GB5%=UXYYF?TJ>y)qL4uW50x$^0XRiJ%n~T-VgNi%KXbfZ`pWLIe zv}_RAq(q2aH;`j1fNZNq7_s<%x&oNc$vWc#AeUcdVazpv zlwv(=+F^%NXCv9U+nJ-(n1=}8U;P-KY61>8fpTlS?|(EfYDv}jc&XK~+{=Nf#t%#^ z9sFX?{~eXedGX{}myj-=7r4=Q?rOJ&j?*Ff(g_c}R|_*p}!KnM;fpJ+v(_#ODXfSY9^0W9ff^GWhY9VXP_Av*&h+$K`1 zt)D%=hf3oZ=vwWlzrJ5-I53w)V*NV##9@=T1~44>>~ND5cUv+7WFto}3Oi7)Q9xHM zVm4Fg)RHiRAhtVd=G;Ky<=OUMnSJzDs0B6CD-=OWq!u6FtBh`Z3d67qB1MtF>L^D` z+L=b>=>m@H&w46gnv2?p*ZY#tde$_t;~i>3`kQk5sv_c$fYCmBx!kFI7Jf&@hRg_> z&RW-UW@rIN`Hh)9ah^qeyR78eAnwOv7&A#rAb)Q7$zG2WZg#stW{fLL|Bip&wuf+J z#CB*anzO+c2DN(c-a`d_w@J=V1EQ^6E!-fEB$Nn>2Xc`XSUok~`|8ucfZGWi*>Jyj z&X+~ULKE}EBGA#qx>YQbe7j+jz^SbQV2~YkI^#NJ13iOGU(J!S^$;(>^Pw_0R}MpU zN6C5y8_;Ni@K8~~lvyB8DCK9J<|ZK9?Mb9nhrotN2?I^i{BD(cO&5^(1;#&?knLp0 zR4AZu9qe0KR^y}HSYX&?MGtxi{=_Lc-NE_dVgPpK@y+#Fx&dAuO>_Ca^(UhXc-YFK zhd5FWIls^d@TXJ1a-ZjjqNFh!G&s0cMF2}3Jv8LXo7N0zQwdp8BZ@b7)7H1aYTN2M zmw_I!%B;t7v9UHqREyJJBA2MA)Yl^Z@aY1fa!7CX!^ zk3cq)h52+C`LFaD%{TK=;cQWKbR&u-wF@xrqPf;0_)tN+YKbNqMqF5JMU-x8yNEe=xqgADZF890Sg<;U7M6I$x4C=om)~2UbE7 z)8MD>H>^wE+Bk5m%Z+$&nF0$!!&Ee92`UYtNE67h#BT3n5&wV<+Q^u~v|&OclINMe zY@`^p9s*&`DDnr>el~lOBE!+`nYIhareD4@1gi_LlY^rW;S|xmvD_bUz-{}KQ9!QX ziOM8g+^!Ba$fA}c)D5fLiQv1PeAb3Mn@vh|xb(7+F)2EPE>=lt1<&;*04S4L5hsBW zI8oY*Ncf*-ci=MDg_OGE0-R||;2xFOuSpFbr#4pio)Hj51_MQ4(+{r~t#Bw6>*+R} z^|nei&p$FPOzBW2NEj%X*$MGW5A$g^NC8-S;&f1pHXY>Tr6$6g@?nePXD~n384?x4 zEE1ZI3Vv6bUfBq526+fBPb=o6U{A&OUP!kF8Zs=k!GW@|Xr{NWwE^N0RBfOL&%_h8 zDWse!`8=~9%~Ude@?;)d>P$l%$GNs38F@GYYbFgZHlbf)P@=iE0d{DFoQ4#*swlw? z6c4ZYp$?dN8!w93N0nSqu3WkBAahiYtPQ%pn-h&CG$xlAs%U#m1Hq%9-7%minSQ3w zt4$>+|GwJX0nNzAjT=|H#fj%~{SOk75idLI2NwQB(@}2pe3F3i2t(KK9bXXCSiqN| zm7-M}_1d4QCp}?yo}UY@7qFV?`4G?Y*xOAZrmuiM+8~)+JYK?nm|QrM>0cSild?Pf-QsZeCqf1g@>$IhxI9Y(L#|5BSm_=oo8Ne4NF* zIrvpl5h%tgt>7i~X7r2Ug7rI~8R-aQN7I+XJ>!etxF4P{w^mq z!&e|ZaEynC!O6u&Z>yf5-^)Vr8wkZkLPxO?>XIRoq>`_1jmxh@N|Pz-Aq(p+y#Z?c zy|WC$V@;~pw|MvizCquOAz+`f>wQtP4@^uMm^f9{D=t#bcJb3u3kh=HI52Qsi@bhN z`T1Ktg$YCEPp-$x!;8kVmhd36lPM$JAj#uP%ig*C4V5@!@{JNvNx6Z z&zzQ5P3t;0TRstCfs!PTfwMS_6$K`i$BRu`>j4|a^i;3p&pwSS_pUBm?%UXiQxP0( zejG%g)J69rH`OI>3%F|%bZ#+p*0yk=Kip(w;-hL*d>chqm3+f4BJ2S_AMO%VNw0wr z=bu{{SZxWuE`qxge6I*>-c}irS!@*dJn5zU<`b7Vld5OttL}tRZSQQ!U(D2666>*{8hLV| zaruna5;G{g(u&OKt*X%0GvKH{;jrF1ILUzVfb-$df7EQ%HE77#q4hJ7*36V(?w2fb>-6qjPqj$?0v|hNmi}93JF}a( z2VLG@E%>CmZ&fOHGj%Mmz#F0t*JZ_aWFC0toa!2>USBlW>?>%A!njn`xZNA~hIZGD zmiBX%hWq$j)Y|dcKmW0{snBEGG&0U=yLIn8VuSfo4TUGi$_F~N%}Azeya356beu0# zzbfvF;HDZu_$!R}3rG5m9@MFNA;Fa>R4pzl2|mk=0CItC8&X^OCImtY!uy(Lq|8KU zh}4ud$iiEUcor^O9R{;(&`BR-wm(T0#D>HY8*cRdoTauTlQ_vLNO`p_>x`Y>>!f!i z4+tztD6d$_(MXd>;;fA8ZOT=|kGR8t!m2O#CJ8?&rK=IIwXidxhG(Y}ww5++fmyES zd0T5m(-9=~N3z4{z#QmokbrKS0{W0XE=)QpFlK2dHf0fD-q?PBED-Jr35w?6PBc*3 zzl180`n~dPa!+}gturr`h6`)ZC=Fp~O7$v=RO^zt`=O9wR_0Xh zW1^yYK>^Os?so|EQ%XO$xZ9suNe+{?xHy#!3~Wy`(^$Pxa$(LmA79jfw52Ji+{Y%G zNF$WmN@wMJVjfht;IQgeY4Enr#cmMr5B8Tc(CF-ZoQkdIrl|w z7e}O-{lH1R18`&rs^eP4E}xV>fq$EVx2+lEL53MHGCebwuNSN$+D5ur=!E+u+%InE%@s(Ekl6(i*--ucZj#+G zo{`vXM$QvMQG&~9p23#Vc1Jxil*}xf1?&T}(GWA>b4aUcmfGXIEs4zSH34c!=DAN+ zUEfAW&>*hK`a>2x)`$wuHHzBuZuuF1x8JPsq1$qG!Z~_k(Tn=(E>-89D_yuESn8 zqJ>s@p<>&Hd2i2472WJPbx4q zeUQ4bHN=Tx&iSCbaZF{Kb~!kTc_rf{NnTW+CB+>ej>R!5P#c1eChml>kQ3*hQE5hk z-JY2=2!YvVo97k)qOV*?Ds#<_&!TBn0QYqbhXhA7M%B21^^BGP#1&JG)+)V7HhOVx zk;^185$yXC0jRA^ioO-I0h=!Hfh5`W!d>b7tnV!RNS@_gN-#COCb>0bPs= z3)o;oA#!2CGpnnkPz8n2uw<*#^s_NiV1x8w`XgS!SCliv3DhSVtuf=xxyNy7Z#gT5 zF+)o3g`HfZ_-5@%&=}mysY5mRl9TG1_=1z+`2tfWiMG2Rv=e@^huW+PX{Ys<;g|#> zRLh1htmp6g!yOUvD4;*~j-!5jotr+&|s*E>%OFk2d>1lV< z%c9@q4!{nO(*4`SKX`zDOQmUEFQm4Xo#Q0jkwn?{l69Ik-0f=lW$#}aa)&l!Dk|~V zC(Afr$XO{*+dp+QV#u$;KcTYmgA0v2LeVpAB6EV9+cL7r4z4s>&L~{}$Yo`k?gG1c zx!Tk9*K7c7u;KaK{a*l4e9vClm-TB%l|Su|a(x}oDuWDesjKqa=shZg#RXc|THVd% znt&md_sZ5*vN_CspzPqcv}Y`E2ufJgR;58;xh?Gw26f5o5EL+&6*bdJOvmNKh=kUu@F^P0y8hDq zZ!f!JRdfF(= zKnYU%wxEKvI#m!z>xy|pI=zDgTP?f_LLK2GU7J<IdPJLq9&z|+wQ_~vX(cq8EQQvjJC_UJ*>8~HI{paI2&5(G%Y0P_ zFGg}@%2BkQRy|P0Wogo+0WhR;L5Lnl4(+fq1G%k{{3t-7<77)3yH3#0%ZVV9S0s&( zdV>F8@=~pr_1nTL?5>?Sys^!eNoU?2r>!|I?6o>|t4M)JJD_ywjE}x%&8p2DgKa$z8wlYsFs7b_P z%!gv9EJUxl>&m^b{3o10-5mxg!V(!L|5VV^3S zUFpGh0)Zq=MnRjxT72@s^~nqznM}>acFM^8bQdJ8hTtA}1i_7DLHqA#$WvOWB$bzJ z*SF!y3i*-i&1qvN(H)Lfv~N>W!fOi;wEZ6%_DlF_);ud0d80D-eI{KgT1-BfhWJ%aia*f z8d0puBH_5Bf?S}KI#jkd4#}SYSVBh&S}p-QafUghuN;~03<)epNFJs&q!mgu$09#l zqVzVzOX;A^R*`9(uob?>y#%s(tfX?SzzON+4q%}S^ok`@xv5_XaCiWf+usPlp$~J!Osd%`@>HgBLKPCv zvAje8Y-Xk#EY<{7Co)^iSgZs;aZssseF@)<(3+1*$A;ZS-0fK+2btIbnB}?Fq0MWN zvu+h#Tngcr8?w5q!)kX1W}_I=aCp0KRfE_==xdAm&gg2~RXIk_!_g`;84=Wz3QK0` z7X0P?B#I0c4Hc`aCiVD51jJvEzGr;*}a*Ef0`(m}Lqw~;jcFg7%2 zhRq_3Z(Sy%oJxtlXwsqcFg{re3g0s;x%61^rSv8 z+_81}&aj)|Jk;ikamb|5c?83iDB!AoSNq+p0nZr>X_64EY;WiSnBQXIbT~-!u77*~Bf1 zW4K^o!5wU-(>r_!gRt(iP&sf7OPCTW`X#XHQo3?@b81WE+zD!%4|&H>o5+$*>_a;T zB5P#_my=uUU4vx$*gAq%WX&^feF|EB%r-|;+eGUHYR&W1FDD&X0Yk92DdG`ok<{v6qND*q>mr0?*s;j;n&Zw^j0)o zVUVKpx`%+Z4d8Ki#+?lST{FXX_WI#H$*au`Q?c@=$e;Q`;!WHuL5$f}=Q^e^d(asr zf&bfkD6}=4Mqq>~jaU(-ta{ctjSWgkerG8EX3~I3kbIyz6?(S_U>Go(QnmeS-$np+ zoc^IVKiBbnpw$F%8S(z;v0`0(Z>9iR?_UtiK6Y4Ofb$p4(*{ubDFjY?6jKnU57kgv zDh(^#5N4HUdtsD<0EjkNQ=a%Yw`@7-v zym}D@ys%Td#4)m4IzAjjl?hB7eF7?7OMYC+k*3a!VHnjSEepshmFOHQdEu2=*%?zvA>3;zs9us$+v8cp|u3wE)Jpy+Ls_A)nQS43i zlvlL;e_=`0NVK^%Vp z{OEhi=H7nqh+PgVyq;@>;jH-rk zC0?Sjcx${uZip$p7R3{aydD#AIQm}11fV9jXEm$|;bKcvS$GSW!{9vLPHVTJYOBj~ zhHcm3>5agUt?Yb#*#z#bAt8@@)tM5c4pm;f7c0X}$@ZyK);ClqIxrGidFC22u+WuU3dKnp3Qj2enQ znn%vxMGVx5RGw5!@CC0+vo!$mdVt*+82033K0-%#CoMI6JIUul3F>IYY2)>sk=gPM zY^1h{=+dgj`>LG;1^=j_8%JvOG3VS>JVa7fCciu=Lv1WO2-&C_I5WZHi9I<{-cbtq4JDRM80gi4N2WUAHt((%pj^@jA6D%0UDZArBPEqbl*U&-Mkx4&< zPQUM2##8X;rMgNeX<~=CD>`|I-Dq`U@fr^Qc;sp{yK86aV0)QtHygCG9~Zq{`U`M0 zhmY#t#fa!POcE0eu0}F0;6kGaxe*64hJ)ZLXGw#%UF`x}&pI0u&Xi8ii zWT^Dr-@(X}DLMz%gzMEU2H{Iiuf^i9>|iuTqVQm7a;@7W)yQh+{MF?U}`2E4OB zQ7+hED5>O|;A)@nr3%>_WK)I>tIxW%4^D);A72bD=zFMNlx3edDum;jNvJb@ue}+DKa#k02*2UilTCHgxLd34q*FThH7jf5gV*~zZ zM*fAo%+y<)6WXJ%db;Rp)h@SQ&#s+_^&=J6tX@`_X(p?Z)4M0K%8CNW%iR^7GLV^P z)j+X1?-6UOBgaw*2iF4YE@pt%k8`H1-|7%LeHqvm1=~<_3CnM`VK%KafyebrLM$@c zbP>4QA6XVgNBo=-#F5QIKZQ5YwCpeC=OG>6Eh<u|R6wIDrP3Bl*mWwwznFyx zZ)Qh&3AMSQ>Bd^Nmq;zY@Z)DLZ-udhlf<|-l!bRFWi1?YhdCYheYFAmW?YNB<+~rv z*%`Q%TztN?SPqZChnXu`hYyU2g21g9Mv;-#GXRw`U83dbFgNBII=0`Y@y+hG>bC&i zeevDKzzxw5+bYl3w3L=c6SS^;&?Ea738A&O4DFC+d1A!!`W3+qB$>tFRs$&qdfRj~ zZ*Z$gc5zR4%F(*tktst=k}M5y=hN^A*BnR2LVwfSV~|oFHGeP2qH%1qK(m4 z%XaNeUtGC2VI~=9TH=kXPbTyA&qtFTm?zY)NJJd^ zmqB*vY?$oxVPg0Ql?Dxz!eOTtDN)=>e<|*LVMo4=N5_&jN zf9hcdCNOueXOQ0W6ArubL}O1mti@sbC1)M3Qb(uebr;14wR?4J z1}gUJ+M%8(9iNyGc)%)d_pd0O9%qCG+u59H_mi^xSY31GivGIm)C-;l^7G3o40Ize z!B;2MVBI=-9Wy%dM6joUTvSbKA&Fh#dX2qnrFo=fcqEMWujrn2E0&2$mU`XX%Ix+d zMKoMdsgEVx4#=gePOaB!cCEks_@BAt0fG6n_p?gEAGjB?!BgLZhm4T`E7NTO?QRWl zP!}^0nf){lF*+0Q3KbV~pu{0Ea9_Zdt2hW48Yq998hE6%aR*H&mFKUpK2C>#L@i04 zte0Iw9u69%AxQYau788$9hiLgl2r|Dk$h4&U0F+Fd$4w+-{m<=6DrNG>$+YG^;KBt zXDVK|k4@R!OhQH0VpuL4Qd_P0{JrV5>E(JW?%QzC$seJgA|4r5#`o{1unX)nPBQ~> zA^Dj6E%}=AdmbGToCTeJJisz0Wy+qBZBA0S`~(IXL=KU9hA>r82x^%-mH0d)32f$V zyXktWklYRjk{MVZpyJGjwxaSoc#TgL5+_3BN`1)Nn<(9#d62z$zcKVFO5zy>k@Q1< zJ005R1|pR>E$o3a;<#F`@H=-wv1J{{L&7Ojm$C=i-Z7dx9S3YsvpQ6x6-$S0?VqBN zy?EVq9#KWs(E?C^ezCX?G$sY~k#ZH5rfJXQ0tDrYwtk*>xHFB#R-LzV$%7As=!qly z43&(r9#)6+1vm&q^2{fCM4PsH2M;b`_G>bHf1b4qk35nWKY!Cn(jNk45~)%eba+{k z6O};bW@vA}p*#4ZT5VP5I0d(~)Z=$|nW~0=;gOr?AK4Pn!3ggH#EK%hg?c7O-DZok ztrl-4!~L4UA`kx(%IJ&NMtWVE?K$b-KnFjave1c8@ZUD90Z(?IrhNNIsQo~$(wu!U zE{2uT;+(aqW9Rzy#4q_A3;|SFX(@!viY^O^zyeWyu-X7SSl4>FWHlX*aOltcFCVX8 z@C7)$9S-YCzi`+*hw8~m(H`-seGv4Y9iV9}RQ@Y~lLoI+I#yCnktQ8W z_(R4tTf4fvwtydvdlb(_XZ)gB^xp`ZjYrbv>_V~!E(xYk7Fwq@aVk5Uv5X|@*$GWX z^Yv4^LN2(er6bJ#-Sg2v58gCqYSE?1Qh~hdN8vq+m9pk=&n45FOB?G$i`~fcOR>-W zK#sXv)jUu9Zi(}rf21YFYclGjN$6yw{FAs|K7TX=hI2h%^}C{42}7uJR&tE!W+Bz?$_H&8VVz;=9)}NwIX?X2 zp~P9rveV+oUw{t>6*pxX_o1k0EPb$OUoud!nLL*C5}N-$S4k!-D#F=4 zKcj*NLLqmAi)V&&HlG_v=Y*%0)aBc!`ZZLxr@gn>-Ul{+q(C2PTiRw_oi~CzrD3?s zl5Vz)R(W~G`B>D0+I8%Z@hwayS+Omn(nZl!57}#Zs~$4Z+ICqnH9JCq`k7LCcL4B! z9L_g5gY6qTk-m1@_nXx-W^ywrmMvQ9LCkStvh9P(0h;w(2Br$rCkYjXdYH>)0ipR} zscG6BYQ99CBt8RRo`?%c31>sb@~I<&3ytf z4CK8CBb9Ld7D@hSOC2>g4DNSZ=l=U^?#*{bd!c3z^At_x;sgs@lcAYoSV>x9OTzvM z;=HoRtxXBG8y9sI2y)w1!Er295heU!O+JK1p8)Twf)atck~>tQA61Pf!id2nb;mIU zN7!~(9dKNRb|@eI?|&nx_wYOgG|gu%`!oJ z-o1heYp73PF_N=#72D|afH%t2w%4Ny|8h-TuXor6BFTQLra4LgMbHQ$ zSKg(hEC1r`shPm+bl-($8)ruqhI;qIg~sHBl1zhoAf`Znrhv4v7)f{r&WL>BcZ&rVb;v z(EEk-)j)8``^+IUQ(4As&wy;`{~2J*3I8w$sUU|`9@UVf-a6Fy{P_d7Q7phM<07GZD730M?M+5FJb`{3-5n%Fmwew_^6t?Attb1*k^3C&Jr zrz~8}ANm*-oQ8tV&waMN?9J;pP~%c9CpblUeM7LgVO~Do+iW+U^$?F#yRPFDpMGwx z!GA)^QBZ>j6Q}((V%aL{IiIzNfuZbb(YS`m44HNcQ+$UZ3&cRmRdF+8n+P_Xs{p zv-K8!sQ?XAe{F|+5u!863d!XQAq;}4FCBB&`~s09gL?M1cO-O_+q3V zZJD*V4XC&*8h6bzcm-#g=XD=~^@-fL)3wBd-|VD9`uGw&O0^4%U6gpjjVfJ*e9v@` zK(KKn>pnLzAessy`Os%)Lt#u3-C9w;`tE_O7D%_C-ZX6}{9xuFn z3$t{UKAZawtwty}zfq8HIN#ttHdd*aCdLLKju9%Jp(s+XwY~HWwrWgc%)%j)*Bzg@ zb6Af{d;#WB3vI-{bWSP~+&Ym|BYRq=ut&K+G}3B-Ax4a@7))@%?;5sCXc*3B(lbq$ zzGp*57$Ah--(nd>j3ThMiCxd8NRvbdkVrHGQP2{<5N|%C4cNJ^B$*fjqRg|v@LTCP zwh+exWt!AjC(5M7jF_po?}-*9o0^}@`_VBEeht+Y*zp07f~PNhdnxJ1j_S1g57=Jb zX}iH#=UYwg3IdlNQTu%Hukn|&rZ|VA2l&*Od!{adm|GB&-JB<;==fAf%D*uIGz0x z^LT0=(zG2en5(Lfp|{BMM*=;!3kbMFpOG`Qfkn)t4h0(RKv-I4X$1 zK=}s>e4lHQh52_c(O;*uKr1(Bdp9 z4#O2mFvEeWe!BNsMT%D1Znlyh#7L2^dS#Kxm@q2V{Atm7lFu^jgRI%m$2716hvyebCH_zRu9DA69cjBjdtHtJd=V({O)Uk$$&Gp0;pFiXWJlyqwc&u7R{x7; zGRW$!ZwPcXs}9>efh^@p4FUXzqNiTsuvfe;Yv7|$FBr@FSZl7_&w(RCp2?-|s=+CL z3=->y>R;JP6!&0sHJ4OPq$AYM|2AqN6En2TG8s|anVR^33rCTUnY;)kH@n(_4b6B0 zS0vSHBAgT$2)y`GS-%na%S^7uGcZuWt0E z=^Bo2)Yf6UJvpo|@WY@>ZIEfhyu-&uqe!804B zdmtkDd`;s-v0@tc`1qUBfq!RDIiG=QHu~V=ng)OGS$+oepBCA*Yc^lebwhHjJB#K! zAMs~MYmA7DpIFszs~&f+7{ew-EQ`Fda2Er9W`ul*hv`tW4SP;o(^-Oc0H{CZ9DxI& zYI@#T>k9tAyBwCruwMITr48Ets{9Oc#Hz1W-FDA9jcN5OBqXxv!h>->fLnskxV$Pm zNFADjZljL%rLqeBBx-Q?m!7T(bx4B_yt8-^<2AV*RT9sX$zyHrdOpm@TeCT`g7V)I$~V7zjdw3ak-r3H4COqZjQho@f4nep&oAvOU$v#hEIHd z0eK|!A7{4rZ{(-yM`Sm2-CgVGW^t&sciXs5?>RZE)kvbzLR+%;-{Ld{9TvXWUzrMe z#9rQDShU$>?W}zv1z5F~6n{%Hd1RmOY^0aGgZt@Ea_{}1@hYevCoMbed2Mrjs**BK zh&kP;dNg5C8D0LV2 zK^M$)n0u21Gugy)UygoX@c}LLKbE=wIbl>yxfSoZQNtxxzC_huPJO=e$#MP#jOfR| z4D-KzJylFPS+|q5cZ&6oY^!^e)_bG0**8@E2=cdH(rJGEc-=YMT>l)a{$hUeFEw@% zZ+jK+w_ZV0{6Y0WRM+|K2Pb0qK7nAnl2K`o+5M5bL&W<-9qLuM#hp>wJ|S(Li4&Id z^Yo!VZEuc9*CX^o7wU$fQDxsV@BPL;7|+Ro2s!$_<^G(XTwUi~C)DI+1+8oF?x|}M zUkbB9b3E`+mfH9SNz+}UO**{PZllcHLxy8f(FFPgq)U0N+sU%MvVY(5N~k4z*T#e1 zpNc=uI0PGv9{JN4|wQT9H5$9U~>z~8%F z{x1O1^>Lshn%|0JOzyqn#P`J8)RXyxGJt1z&j-URIzwFG%-F&Y@>J#C5%d@E@)ywB zHDgD9D!lU?{ngLgMO~yNK01zL(81GKk6S?2UKrw8k%1m0`nmHom%UzYno>jnw5WjntuJidhg68KKp?kFDLpQ zY=O*GZ8dd|;v)zEdV5^&{dGanIx*FYTPtl$j<)QUSQ%FLA@&?CrdGzN6KPFCjE)l; zj)_pkLHq?NsjuF8mY|}TFrWVs65Y^FbW>K;uy5h?`cM`#Q29$^3P)y73Yunfya))upPvU+#W`4m)4oj2Y{8=Wy-@s(q5m zz1s>?vX3K#s(1Wkm75-uUM)%=e)6uS%h|A92zTFR(wOzw3Wvud}aX z6E1!7a0vciQkLSiPO|9zH8OTHGCC?45*x(eAQT)G5WbH*|Y^2Hoc-S z2LV{+5+UgFv2(Q|9HO5e=dEu%kQ_bwx>z5 zE4*~cTXBZ?pDC97S*hfHSN-kw#g+Do@xL}hS!INlk9i%_%ZoPuPGqMb7vG(uDBxaQ z$0r~9ocVjh*k^j}dwg@QuiKC?i@$s7WTcFajHM+-m?jKa!F{bq5P!Y2XozteVrzV9 zonA{s5ngn;iG%3doG@7kI|Ew!deqjhZ5VleC^M*-DhlKNoE( ze~Q)i)f7E}`~^Jm^frPPR*$*(u zqYepj5C22FK^Ob7(1RZQ9C`UJFgo2&Uz=B17jHvG_k_@dcrV%0nm^Fhr^w993ea0} z)B2z4LR!%=V7ty(!iS(BW$)sv@k7wYU*q$1X^Xy-Vh3e4e}DOs#H~lBz3ofr@nhux z82<zDdVUUP^V+i~_pTDZZFrpdU@e8_ z+-g(Db-nxbzaPI{tbb&T-Vh^_Kc@S4+ukwF5QLM@i2C{d*90vb+W!~O{4WxMjeS3H z!06uSb}(o|hV-9vb~kkx^gK(y(H*_fn40~vevk(HGJ4b&2m4IaK-U%!J(yocH>;O@ z37vTx{0kV@^UkEGU+_y$W0^6JZk98hF^c8>Ugx&=pDSEwE17ydx&DRdlj1rH!mxAw zzwsD<{sK-*Uh10Sc>7+=39rCEZSUJ6&b7BhT=bP8YiWQ zL7-JpJ3~|Fb|L)#oXfj3iXN9V0aT~aXA~Kq)^%TivZW*VZ)o>}tx`~7u}kWkFnVgdB8T2u;FY)5nqk^%$pT8v*Y zPQfoF5RqcdrHGHw@x4rsjV6)A?PtYK$LjgW_4FX4fYs1z zQOo+Zw*Pugi&PBPe|7mUK*(E7=#EJ{$1P-Ym&6x;;5x`RI)s{hL9(iC2*Y-?A^iPr zPxOZAt1KgZWXrA3nO4|GQRLMQ1}SXaby7!C5*<%%@jAs{fXGYC172^Z!imJf-RGje z9R0NgvtdtYuM=i?`*Q7u$?2&{CCRX_j#-zb-9N`W!2s`I)%On4h_#ER6_=}z{fW9u z$|7}tEHb$x$RmzziS6IE-Ajdgxbc>SP zbvL-%EveFJj)zmf=)}eSIuQJ_v5g%x41CHaw5j24#WU7!>; zkuIL(sltE8_u%t*<;iwsb@ne{TSzPaPsrz7RlIHf*{}Z-{4Q2^<0ywkSLvT(ziE6H zeNgB64TiK9eD;EHKdg8k%5ZFGY`M9RC#b*u)`4SAw|bL}y==p48)B1jpZqq?)|TV} zKckFJ{Z-sqgg5XC9jRr=86SGRoiZgcYr_pp67d#6C64>Rz3Z?gjF|QF(%;U-FJ(U% z`#8Co~xF|DP zEJoxS!Ezb3%sNnogYQxh4q%-$K&m&V(0#iv7~1J;FR z>|9LS0Uw{GRdzxh!0>EO6XMu@ABJDyF&71~8s(kX`2i&QSEzeQ;#NC5*&HWluq;sG zR9XTx7E&`$nK?(CwQ&8K?F#mHi5?)hB*k3r%G%E5a!%(?WPJ&w`&Gv=9jD^W#4n(< zLM^nk7?6rN3F=8d8pXy^n!XW9(kTfgsF-wX_g2!FEI{<3sEx%vfL`wuZbZTp^V9LJ zl&z#s3dhL{ahMa77#@|dPkEy2Q?fxGXPnfQ3pvmMrk_8?y$V!dC62axxoHtfvX;Y! z9R9S|6(MXMzddO-F@h62MQ0(S)cud~(~aPmjt_a}<^thsUUt~bd>Vh^73g*Iw`92H zBeR@B*Al}hxIkrlY+-IG{9!X?!g4vx|^CcQ% zKG!%IdpKS@WklOQXTJkd43uwyk^Ny@Z(`^7`w);-C}K& zBwlG=glV`iN0=4Ma9nBO99s#*7TCJjYk|eGU^H@??ZJ;C!r?W!jNDx97rxM!{P^M~ zf9k)wO6OH)_0#-&i#H$RSNNOR7FzI8-K$6$R4)Gj53M8!BmrGmV&jf6eIq$LlV%lx zTGK4ln1Q&O#bFZz%Cuqyg5vnz0mm@7{vUI@yKZDRyK!e#U^fS+++f$dc5}2iKGJZt z#$kLeJU6V9Eou55qoL>Yub(gf013oZc_6F41IF=voZ@MY!7$q`+fAa~PGJ4u@-@Tc z_{%c2$*w$_AK-X>Rsf?fc1tTu<69g&~}-PzgMNs(7UQbq?rCOI?&`tRU|~yQ=LJ#5P@K zmvbk7jdoVXVwY^IQmuv{>7`f`$c<}IB9n?>TlO2aSgy$N6K?r?+%o$P{>U;={{Ss~ z$1%)l(2sn7Ty6zuAtRhQbf~+rQp5c$)a#oR4_V z&bwaDdqKo@cY|Buw)kzVLfdC-?R2R*iEX3Kugb$bn3QA5IOL-%XJhSG{Rz4L@oVp| z5nwuNUXhIUs@U5-#xt{6JWZlOHt#-lBzYC8_U-ozAO1$*r~d#cKjf(Kqn8Xcxc>ms zvN+A!X9aNT8=pFwToLD8vG#?+WBml+g#Q4tPx&e%+9wJB0Q4sWANfiD03{90{{Wx* z2``h65JsOWowsXnPSthV9@JoX<_6V_FK0M^3ww7%o4909%pi=W6ltvdDv1GTQ@1KN zt;fK~UhzYrIk^wQv_cj$Bg!jT$_%L>k-bMW!IDopk%z<-yJq64%;Q)Fe{EKVgH~k{ z;UL;)Kgw1CzExW4qTy8x06(R@X%YtT_e4YQpdSj|(YP>TmbAw(gU*;f{{Tvsw=Eh# zGLg&6aZcfFl(g`@BJ8uy3Lc)zTAP_S6T+TO@*O+7S?#3&Kq+bhD=SoLBo(m$j%!sgeKGZ6>r(5HoJAfa3d^X9HZs^D}`9O zK4AEL5LHhbzNzgR{ju*i7c>6=&Z>DOt*^y}Dg(th1>OP0u{b<_I|^|YKxRuu>rAd- z0mufRia#FUn6A&_aQ1PxEW6??E%i1@U=)%B$QtQZKGJmU&l1;MmcP1MwDyWHKe{|G z?MDzF_d48nK}d|v)}|RH=)S?lZgSXe1B%6P3|AdTv-Vsi)wOXLkmQ`P0wO#^pIT8= zW$XCYW5dQ9{{UrNZ|uG4Pqtg0^a+`@(z(77X3hL)d`Y&rdkf!P?@MJM5CWW_m}V-v z2^puAZI2^*ucl0+!7eeuahx8`3g#>TF}6GFam!tgoE1OT6{PIH6U26Pxb_@cy@s|< zbVerPC?pmu9`1)(+g?UGg-_ofVllV_j&6IpwZa|L@O)2bc%pFJBiT#Ntii7_3IGyy0R7d~aSj22xo-DrJ342DVla4-dce`JmkpNi zksAkyw=vgRPV%oKOhP3{ zK1QO+6wh}ymD>BEIyO4xj%{mbzR<7XfzGi?Ye4|6<7(^|K9Te=v@qg9HFwK@tS z?-LbXyh6loN5Ih&h+*bS#b~63L+Cu}MI`D*w2$tN8Cp%ydFTyeaf~q7yLt+Gkf^u9 zaa>*p1CGGhxDw7eRc~voDV-0@9-z>8M;OKM9wxZ_1FBy|Wf_Em2#rVA)C#A$##8-W zlkqW0-{KdqZbF07vzDFq@rv zr^J2nP21vj7=Ia*^l25ebo6JrX~HIET-#GFn* z)@|BbVS*)~Ku}$t1e3912b5NhCc{Kuwth9D!G?uM@*vezZu<*-1i>jzVCdeZk99gac|r6$d#4>Uw*M=?+865=(SgBhdBw8mD1 ztXRo2=R^ipIae(G)@>dMAb|w$tr#+!d1Fzrp<7(Q#OP{ya`}qQm%)V@6gK4bt%VV; z^|Ha6cpYn6pLMkJH6twCvb!V#5+rh=UABdD6)ZH3HmzQ79l|-~3<20y)z$n;0SwxM z&!GJEsjkf1wkvT69v!!X%BHSK@o($ClkoMTwpD3JDBws6Bp=47-rEF*wi|fM3en{P zK48@%kzb8s0;w9EX<<^u-BF2fNibtkLJmlf82l@yJ0c$Jks57LW6CQt^)-a+)~G<( zP>;PuV^9k!&Ct*;SVcg>O=Z+r+NWXnA=TrMt*!QS4kyUJ(3UOCIm0CCMHspM$aa+ns1Fb6x8U*GwxhA8#6FOG( zprk~CeCtpuWCKttCV>(`u9U^N8;PLWwppX7qg&9!39M(yq(UnVLVzn69a?9~u~rO4 zNz_Q!TFIL9L03U1L-edD%x7xTG`>+&*R2GO-a&IRkO}H3A#mAc6QDcqPcUrKrZfhT z#DH0W(9(&RYj~op9dgLhH<8FwI7}ylW zB$qB(y$UoyCZ4y%?Y+4tZ6>r;+1sYL5aRp~hTOuEaMs3~g%!eL_zH(VXL3BNuk9Bc zOICZkW=IVJ+fwt+lwhg2u7RwSTgB+XTY~1IoLGy>ADB zQamV#03Qn00{;Npa0_^iE(sIUm1f(swPA&BdA05xh_Fatbm>c6Mz$uqzA1%L8G`9t zz9PU5RDeZNZ?m3w(t8!yXO|n(K}jTmQOLF&LWnfLBQJ)sl&^4%Yi31l83l=&)2Lm# z^XEh?BV7mIP`DMg5j7)Z64@ZO@vPA@TVM!3GegYkA|x7+gSZn&LyvIVhBK4P){?%# z@AzPb8bv>F&5+tiV-PxuMU<`L>@vXHm%@mdrMZ9%@JG9)ba-5K+ouC(K$hT$@)~_& zxwMBeO*ezb+_7{mwGESL=T?r0N}1fYB~u9Z9O}|(ei#sNg}-$8t`>3VNspveXBEZw zTsON`mwg2{kHjVyhh$9>+GSYi1XUd^oQEIA_qfw#ebqY8GgIJBSBP10s3sUqBx3F% zuG~__7T%oT zw!8i{gF+;Cs>DX%YJTcf>F&?mYg}0!R5Jx=pGsX76>>=IyH|-@JTZ#sNQ$uFj*Y@B z7>TqXd@GdgMk?j}66RdKA@QqxCF`HKcy|({+aGmD;QhqWMv{ zti6xDa}{#tazbe{ORj6T2|AJ_({E!5Nj3)RXGrN(}wx&AP7L7j&M2>fZ?DrJvi~-WC?=e*Y zPlWv{0{z8Ir04`xZJD+aj1#e{QKAzkZMBK15=)q9KXnKge669Wtg+}h8mb-cG;X_C z2fUIaeo;(gF;}i(%C*eEiJD29D#(fGdDK@B%$XT90u2b;R@6q$USRD$wEhPA5ZF9P z{s!YnU?kdqTC*?}UQyTng>=C-vZgs71K}H?6p^-#8P|Y+ZVBV&uS{Ry` zp@KJC+O^iRodY&2Tr(9HY9DfruZvcUM*x@ zV5-t2?X@UscvV)#+YM~o1--$}kxOYNT=tIbyV#pJJ1#CmO9a#p&b4*KF#`{TR1hIx zM%7!F4TrdIn`v$r!T=vws_r4i4kTpD0BKRl(J5)R`DA;++($c%NuycPTbZhhx6820 zAORHRtF7E42IT}&nsj3cD;l`jhOj(=1$|CVwgL` z)E8Bn*r_V_4xl;SYENoF2YL;^38QB%02-4{Q50CTPysUrvM0mJcIs+z1(coj{QYY{ z5CNU^I@9cn*n==u%4R{GcRpW3Osl2zOgLyKH5y10dT{A7_wv4CTG7NcX5kkLVfsCYpBHHMrKaXcHkC)VWkn^{{9q60O?3a>dT}(S`ttsMe0O z49l3S*H4b)AB_%cO`)usWVYG5V#Uy-D|{(xoxgYnkV{CCae!tgN7;IaXFyPzDXFN8Ub_m6QNF zlGavGN+rsp`l~A`j2qUuR#sCW%97SrQecO$#FDzyuKU%MmCxC`HEf>nir6PU{Oc=_z&xUfc@LTBLEPQ{vGmR z17Km`{-OOd;2+R`@(&Ci`yUji1OhI#1|FA*GmT_WVqyO^BED4pEH{rdX!m^$@B!|h zTI_#ji2;6T`}Ic0TV5QKh#I-MiaBc0|2)3vp#I{4WNMmL0_#zx^Uc`W#k24`+@;`* zd5HwRW=M}*oW6B?WzOH}Tu+xTk{=YF;@UxBzNfck$IqCG>a|Texp)YMH@H9kRy1K; z7h+#&L_Rlj5;}MtA6Jn-qe3Ui@NKtO<6vx?qN}y;jLK@C|FC3+PiGcsR#twY)c6)2 z#$Vej-tzUXxZW`!SUluRn`+L);N=(A>Xl};6bq_i+(~!TQwM4np&bRJXdEiT=4xZ& z+|1@?Ede{Z`~mNIq%;cUiS13&26d}EG9S_;{LD6$yGiurWc&}DT6ZatshEviE@IrT zxH^hv>M{eg!dsfZ6y+P#X@>rVWsHAS*xGSAs&HqPjS^ghQa@MWH-l9~=~NtwBBqz< zin7Mb49K+(E|eL1WVLDN$e;7O3Pj;vkJ;UwjVSV8W`i|CTQIkPFMC0BM4wMh)5-N& zm;Vf4-%DYT;d2DXz%9?Jy{XsL1uE$75 zJvw3!byTs_Dgl)^Dnl_+c=$i93M(_d13Us<&15^wxg-P>qXLcsWqcQfF6`|wKZW|8 zqHUG>(2Y$0{1zwH!6^pp?K%G7SV|WDeNB@a6@lX4Q!Wvb4_NnGc^%c*qgy z%P6W3M8Sjj4N3-2M+8*sTmQc|_Zs*cYBT+;D12t#DW-8Er2`@8;yX~5j5FZw|K3=7 z@%$@e{WVoNRKL1~u4(;c!IzGrs?9abd5h9sY2bRahD33vvk03e%^ZtaG_ysf{L;L>{$^I_sUwX_&lfp9^c9$qr_hvl2GMvz{-un<4n=W z{9v=5LyvQgbM?o4+XDXRoG^VK-{^jHm=t1N-tQn>$1MM}EhrLnr@1S>N~_Ahhn3XK zFaUy2K2eFwU93XkBdD#zFJNub6a_I^EIFaqD)LO|UkJ`1Ga*v9{A%MO8(mYGqOc&f zmJTfChwl%8^FPVWudku^7VoiNQOimRz(ShJB%V!YIe|(^CHI_Y;CPJ+}P-L7)wKq1c>K}>u`GJq6k3d{8eYn{Rm(y=#Hs6NoZ!2nj zQm5L?dxMv?{bPrRdbSr~fKg@q7Ol8D)-JM5qi8sfziaa0^wko+NgV5=ygme$0(=F&zFacHSf=YcAjL z%bQ;lWrxu4S=Mh5B$lVzw8RnqZomsA#KXdCmXyv&@d_X;cV-wAF{vFaGC?w zDIkN?QxX&aWSZ1;*>u-q+*D*vD;q31gH9im!km2*SZi-cn3LjPR_*bdv$itI=Ugb_NzzT>b#~o!sxNSdoh=7+@MEq*j?giy-0TT zdyZD3GL`aHw%*^@a{h~M`cOkUXZM=`nquT!q-rTo41Ypwd-Ras$9uVP?H<8R>yYve zsD4YqPU))lyvNN~+O`kRa3ti4lbP%w(_~V!&_u=N5WK~*O*PPG!`mYn7eWk9 zIlQfIO1Zcq&xzP!hUhxg{*lGVCegv;3?pA=m;e_k=qMzYCu}8Lrz5jP@TbZ!X-+o% z)Mx!^A6#Y;9Jrqdh6K-$3ahbBU=;N-i%O3Fz!#%|x0Q(YdH1@CJE-T`x;*b%>I+A}t~yWtqu8dM=${2B7SAB&cuM zt)?f};bD!^(7w|mP(gxA&QSax%`K);yEZl?S(<33%j1q?>y|a6N)7lkdWpiCFXxw& z)tYNbte`dRb+q<2903b;g@+35&5MPQfeb&2cYu@HTh>WkDSjs|s3iM25&?x;O0 zY41R-{ZcAmT_xef&7EHS!*9{l_Ki)w;*jMbs|FC~3dwYFb^o*Qqr%yk?a?RJg>6&q z7VCu#(eTm76r`gsiZ^-M4-~}mSYpN7fNyU$Wr`g4Fzs?AIcg;P0n~d29OFnV=hb%G zG)*56EI}5=Noo>JZtIH66w0cJ%0z1CC%^H?=Dg?Tw-NVSH{6b-|_S(v#~wcR=PD-FWC-RrYy3?>(Acb z*KT&Dv8?J(RUC%`lLGJ^Xa^s9h)3;xBSgo)^_2X$qjA(LhtP*lO9?wC>wC$3sPr`- z^jhLgCmUp6uE~~cfXD*?o>4$e5;gOUFCG>A#;r(K!l&Yo3XfW0{58MGM)kQ9@1x83 zO-%^Vjsr!-Zq#miExdjqS8+4cySw_m15DRH;HX;ByAq2FX1wyo(yTJKELEzC#BkWI zVSzX6r`k?{;zvK0RZH9sR5~>v>30G?${kvBDj3p9YI+-O&u{}?zBnd1w5kL-Elk=j z$_W*@K1-tmMiX@{bxY2ybei$qE-U)lRzP^*Ias!Fmjf!7kB@G8gt!(ha0ypNC#?Pr zTbaWjV|_uxVX~IkXiX0ouGj8emZaQ=N{N~3KEV}Mr%cPB@*2#6wivVqnPsrc??`aF zE7h(jrlqsdU(jf9@@shq6b^sl>5_IYUkM6FzAi}%LmLL`5$RuOrMTgk9U7{^?)ch1 zOPlKMM>{O~v=~19?8_|%q{RS2#+jd zR%}>K|9g!VuU|~FQAXO9e_B&J$vjE_om)4_ObwEOdoJ#(eIZ|ZYp7ND+>FTApYMPs zKU=dtHZ9i+il|i>8T3Y*(2N;#)#AOzYY~Qgi#DR>-EeXzyvpPBMViD}u|I+S)-Bk> z8Tju2g6->j((&-$i%f=t{RJdU3Mh<|oM3Je*(~CZnkm`o7G{Rps>P#bvMPn-D@!X1 zID1Cx?|^=>XchY$`w@zTaT0n&Qb)rsuR@mlOn^L2F}wQ$%+W65-@2Thg$rju{NDBO zPl~Rv&^L^iN@0_Mzobe-!oo!30?r zRocs_C-VHLvn~A07`kvwGv%6amk>ozfV7tA9DiZW$6e-BB&2yqtTGn$4-6HNOynqt zemkz^UfSfHtVE52u)*5HSsy3c5ExLhY=ftq+x0a^IBm%%yuK6e3pLV`DyBWH{^heIiX0udl+P$gI+hCmI2Kr3--9+#|6;U^+atNu z>2|;p%qf`g6#;nxR&8j~%4mrnQZ4c8K?&VcP+!-GvSr#`z{7DL{tp$6ci0GvLQ9L3 z-!yLy!)Q*5FJ>bgUaw#Lt+svfs}1lSu&(^t&RgQt9YiNLKmQIW>&UM!DQ_BCF7r0V z-rar&_*AWT?=$v0Rl(NQcpP`&zTp)F2QcF)m|LE*?pjsu#e1LMZx}lN`Y^jZ_^N9JgX-;ups9PPd@7+e|ZF2OF51`>fjLq1FIfD0YcZ^*l!($GG2d;GT7)58F* z$9uF=8>_oy!9eWaMwod)bri9%}8Tb5r=EIi**Y{LuFkM{B5S@}cBwJC0N7nMneACfQ zS_~M^pEd~rg;l;%o?hZtxaopDB$!mn^S~Ah&76Y2lH&n*J27-J9qf2L36x#GT`L~O zs^o_Fc{+{wRS82Zc>nG)TXH9?0Ds|lj>A73fCY1gT&dRUixF;pb~^fay}AEW-CVvyDhwqlK@xtHKTq#U@pt9$VH0PV?uf1A zc0Ii#yAkYw)(Y03c&Lz9+1S!vyA@J?Ak;R_Yi@OlSc%|c7TfmFd}>Kc`}yqOl)?@l zi4d-tWm#>)@O@n;O-0lDsa;OwutHPMhZkfhT$D&gqvP5a6Tm%0wVDki_n>;a<9Vj& zG;^yV{EecLNL8bXwOZ_|Z7_u60~_+L65Vp#+PZ+-E<(=&65j4-c_Pn~lbXf48(v!5 zfd`49o0#!Zt{mPJ9wyL&1po($roBd}Uss>MwuzLn6@;qq+d?PyY+UU($6WmEAodph z?}mOxdc%mMN^gv*SI$Hr?+dXq-3JA(?xuNu;GElbb}+!sR65s&2PjMD`TSVp z@g3Ej^AhZj$Z8;L<#R||Q(TgifK}jt9F}EY8CO^c99^rC1?WS%BHdjsjta<$2 zmLr5X#P)XA-5LL#JxOk=jRLuFa45sHfi&8Wl8Kv+2lrHzXUV^Ouc~z?J3MHtYE;7k zGjk$9o@S}2$@G*V0!56I;;s~m_Hx0!Sj5>p#6mspJG77w$@jAkM?>AzzW4$ z?P_zVyYgjB+sZVcI1W4OsmpZ)>?D>g>J0ceU@wzZNdS^Phl{6vKD0Q^c2Z5~-1gUOPBHG7LD8q#BTM8CK9Diz)!~8OhxX z%6xG}7!}_Z1KgRaOth|#CFDMI;tk!fQVuOg?Gw`N?MmWMeCa_^vf<7>Tm zt0ougWm99%jjG_T%dfR+TMKZ%XhxdI-KN&h!=$qH<4Ua+i)O~XVkkx*Ab;3MyATqp zC)e0HTULMn@>8JKglad1uA9pT;sP+Vv_^aKd={r(gMOEesT!nPsh7(rND#H`u>wE( z)IA4KcAL%ufV`>Ckhq`?On_;jrPXE?kP@fVrj*&mN{OSY$LzYynnIh&lJ1^*E{y+a zZUgDbm$1(v#}j3Uyip&5^4adVfH%SIO@*$jw`bT<%R6#Q#M7w|VKfbFR@T+U_}fYB z#M2N|FD%&KB9F?KPJ{<}9Rh%hcM!=Aj6=&Dp!p=)eBr>KgBj2lGQ zNQNFWi;->_d|tN)Hs?|0UOMOo+n)_htJfLt?ZQ1b^na#}+@@p-s?kj4Y&(&7d7zuF z^h&j@w4Ar14Dh2^iNE?%dSN`1)fn9 zZecLkg}73{--4;~3}tCwR;pGZVoRwkG~l&Q-|v6{ZaOWJjn*NpWK)}SmKEaPhvud& zTO%9ys#s@2iw4}(}3QC#UI6Ed6@wWFB8cEw4S*MH-4SFD6zR9=DkVAhK8aDJs-!f`-D1D{1 z4#pp6yZkY{ z@Ao@>MPt?>y<-m)MHNF`^Sa572j1sK>}W@;o!`5Z2JEF3fz=*C$!ZUpVb@m{1|t5E zri4+>19@}5_CEnqrobhR?YF>3?TEfE?e!Ob&mphM5XK==5Ng_2&SV%sULYXz1Tq(G zRM9%3+Pe7bG=h;Af9QqCyFcB|RM&{sYu;9{Yv4ClPc#XZU-JS5dGa73AO8{h=j|=L z`%7R1UdkaVm5e~(Atl_Y^;tEC*Fctk%a(cnmSP_WEGD?f{~UYa#fSJLQYIDE6PxC7 z4A(g>K$;}rF6bT^$4DQ3OL1_r!IWT>|E0J0*oG9_bp37Fd2Rvme9;M)G|CD2F;V5U znOA=&+nehh5XnbzVn};W`O}eL_*n~IWTgdM^tB?DAzAn?+WunfCj3EfU{)0{bX%(+`ZD0e-VnO)mLh#%PiJ;gLiCk zY7nEft=-0RTX7h?x~_-_20Q!5JgKgwzQwW&tX zA7c8kw~3Vgqt7DC=T#PYn^~qLoch$S6+@Mnfiqso&HDixESYGwNc|2JZpas`Jx~Un zXzAn|{4FrS&>Ky>FM3-mt}V*`8(uJpdD^9rdM-e+fqsYDpW#h(C!POi6~@2?!KEG) zR9eo?0JgZh3}*hmZpNRFYj$P&(Ahsa?u`{1DP^^VBN)&zpZ^AQ7Qyfh ztHth9c}3P@w(dNg^Ap;|OwCFezO2BtkK%e1U2{mXFj1>3jlM78KYIcV=tCHc#pX^Ysr1B}J3l1b35WGkC) z*+8$uX+HOPX4iO=qK9lvk~5?eslZ>v*rbqX|FujP&gBB*hSb=n; z-oWQ=@7LTxyRFk*M@mkmrYate;KxJ7xxBw!Pz(1hn+1xJTRta;uAX0418p(ZeU6ux zwHL|$*3s*GGM(wcIE~Hbi z7kdu#o3)9g5pT*hEaxUug4dA z!?(pOPJ`5}2E&lpRQSm8&^H$kU;8_T*c{ltL|#xhK{e(SiVf?$M^R9O7F6*b6)qPu zegeHu|CF5a1^SUf5k~dhN3>HU4eZUCl=GzRr&>q}S6|#gga}UgUv!%%45B%xozOm;4A6U`6kZJ^&%zQFBzoBO_4As zQJfgsd!{{Q*~7CVjiRL#p;VS%+pLY`{>l~gHmCE^?2RGgp5Z4=%_&1k1(Xl&d76r8 zJjIgRlMmKy-3{!`yRl{w)rp?bYiM5$VxeJz!H|vM1O;+I>-weS{pybK36Enl$0tutW>AK z0u?~wOMWjET-_WaS5wSGD?OAIRGzl>4FZK&q4~iwtU`<4`XTE2f&7BjzeV@ ziC|$XG_eM9@WAqBalT7w<)5L{={9RG;(3x>O>x)4$hA$0Sl?#C*IkgY^=J2n=0LH% z&Ndet?%zL4a28<3!fnwt<5N3ag8gT^iSv%fn0~?6M1A`Bm#@c6k(Byb3C#lsRiCIM zR|QKNbxaxaZ#BMpO7_(G5Yfg09v)9tCfHVeI;$kuj;%M<=R0u~mK|IUj1Y0QHIox| z9mF8^gk~TtjivI@9WPFbAaBhI{&``L;MqiJMrhH3jMC8W5orxY&%OM9zk?CK;41o? z<0WdX`quSfJ#8F=j%LYh3?9uwTlyK5)@2lV^9N?7gNKqgJj3CJ?O7T>WhlFyKi?c1kDs?;|5;2WNJ7PsNVE?K5K3Ninf?dp7?D&jUDEJi^I*G zIIPI??CJ`Ds+`1=Zkt0vaYGpes%C(MhM)>@D}-W@c_Eu<&V67=`rN;oL!mR8dHt(pE8L z&DKnIYYCrG4aYVvJa6*m*MsRgfzO>PqYjHA6|IaznS8$RsHW64JuyeWgXssOmfIig z*34GCunk?A2l5+aFH9*^RAB&arYt%Ci1zjLz?7MR8l%IiTFh96aAKOp?Tg^Xk&6DwT` zPpC?Qx7SDl38%o9OF+Q~nN{(@5Tj=JM$l+BLl;d=Q5vNu~ugWSIWE1pIlziXSF{MxF?5=Vb(V|%Okg*ac2Fh_QRkKt8)C9YEAH^A>$nh_K#Dib(^br}T-H>i8 z4Y1E-p@QZ@c}>iaAc`LqR=|Gknojka*rXEs2@M<7o#~Naw*;5pXYvpP+O{WGXI~tp znanJ!&Ny|S5{gtxz2Ayf3%!{wy@8mi7OFzoY0XU|O52D(#@+#Dk{y#O0tQyFbSkJ} zhjq4JI(eAoT-!n)qRZnypP6g;(A=Z?6SWki1f#QmzS1&pO6DeFRm>~aZ>CVsr&9h% ztj^nOn!k(J9|W6EL$GQW+j}_!?+FPR>=aMju815PcM>*x{&-v2=6dmk9OdQo#qt^J zw&0pRX>1D=B!~=``#D15NLb3|*H~6F77q}>$6e?-&9+GeSMX{RT*?9}#V0RW@b*4{ zRIkXa14iva4lJ)BF-zZuzKtso0m)NLDf5~!P;kmthQ4s~D)zuue@v#4#J|RCJ7y+N zAy)Uv_^BJhbkG|H?tFHea%ZH0sGUg4XgY~jKk6`4CmdYs`;@Uk$;?|pr3{MV+6}z( zQ_XHD>Sd(ITE(>er13>L#iiINHYP1_XEJu5fGN>RVNIp&90kxIN+1mQw0qiew`nUj z6Cb}4LH+{V=Ej|3qp}Ovc7Q8MXntV(H)3D24Gj8A#;C4ynOVgym)8l2GEXx-9Xl1) zG_vg>Q3IBMo$DE`zwFUmSGS;O#Jd+-wER30Hd4_}@&EeK7e(Gve4B4bH_1;K}D}SLb53S<)aSZdqfR-L4uEtIs+gH%h{6}riCXEBpCu7=h zfw~ht&3Eyn0vGy~xY`GPGGN6Y^et55{6az>vkI701&C>1uY`a(oj^ z!B~36$3@gTFN1v4u6McTb~v;4SNx#?@32703KS&-R4A;gW_q}f=B=Up2**DzM$F=9 z@UH~TLNk=8DYLk3nTyGUF+Wu;!(UA^y`iO5X)}T*i|t8%Dwj2^!Y?z*(~__G1lk|c zVW|X6$z378Fv;&_2VJf6*3x1d+(k|xPMXNjfgeQ`ie#$fXDmg(2Bbjqm`$nHEwNvK z%zuiqMz5FgxP;55Whm#?@}1@*j1LOyXc~})k~I->d*Z)~*rZ)m=d#C?DI62fMUEu_ ziOBItVs)wYTh;&K(p6F6DC-+ZM+0;4MZryXxC) zcI(Oxq!G&1-Jubw+FkR7MN2=THM~Vk>^^?Ah7=9Mr{}0`<%`%H82knW;2Wu@x%gy% zA!yN1PjY^H2lVu#u0=R4b{7#|R^ZM--1-WXJ}lfq7Q-uq3+>mMw$g+v&D* zRBRoIJB`{G#6g=t%ic(wUXq$E8$zUyo9XwY+(goLMuxUMu+y zqm4eX)Gu*bA>`mZl||fo!BM?T_#)|i;#pOZXj;Sd;pvecB?ew0SY{#iEK6dJ}%oc&DEvt z1Or_Ws}?p78dXmEyuXPysD{pB!gu@6@5a^H-tS5IbzmDLfa1e%5yGAO^ zH*hm&%t!y##JfB~ZuU?WM>$d4>YEc89_D4uuTM8h{r$2^Xz-=mDW^(M#nXb{5oYMZ zu13=?mAli89~qmG(tLfOjdqYWA{wLKa6gbu)46}eCRe*VT*W(-MgF@u(nxfruJU-f zKzlQ*c#RiYgu_~!q|k6_pEJ{fJR)YwXo_~DNgpqtW7<-4h)_rY#q_=*1>Sj<|6QS} zfg+5eYKYe(D)Dq1HB(hi@_>1>Dvn+jPvUtovYxb|0i7H}Vg9{>1%7I^%#4}xPs9#f zq^2>%MPKMii;YcAeIwTHhs$^c?{nx9NJ%$PCrIvjuH>5Kl$514YQ1IWxe}CM+teJ^ z8$i&oZ#`zh09t&MJJPG~w8a{(sXJU{T)HsO{35@oz(f)iXg0lXa0-qd-~U6$UGek8 z;H@n7FXByVl4}F_*|{jomtBn5=#13R{=Ow$#QiHppN`ESixRqMWW8XW~2(40V++1>SBxO{Yv*4 zn#X>FdsCbw7=_FYzn~Ve+j*Fg1q%hJNyDJxSjUvAt2Eaf5dPCXYNZ#eO_VN!mu116 zivCE?S6Ixa6z=k2enSkky*0S?=XJ>xhk^WNy{jWmLC*t8MjV4@_q?&< z)tv3h>6Vg}l50Y8#`lC$hAw-GS6uojwLM$YE?se82Jsx<)xV6@qUw*u+<@?xC=J!J za_ZI_*k_SMld?JGF_`?32$*>9SLzz)>t~kYMtKH$b-w(AMN`?I6eoDE-Us8qlTOTI zD>va2N<&C0v@+L?hUskTNXC4lCzlX(HzBU9Gd|R6yV8{Eme-@Udc<{l{Z2jY2P~axcr8t+R8U*CClkWX-T5+^Ra4E z9hS)_>Pz5O4L%Et4HRKcfI9OKM=nrZ>sBYKi%6Amn>~j>f9ZEmpNYqkGIO?>s-x|_ zgSS6_Z2MYrO9>~TV6TsIBmc@oy3dL{OWTM<)N}p>?&Q;|(elm$ZghC){7^sh9w=t! z`8gCp5Sapjx4^Qs>fdB+l=M!r)ke}=y#`y_(n8r+AT%1(ql~;VbMfpT@1}L!?ddKfeLg0;z<|ON}ewB>U1iNZnu1MzJYfDpnU*r z;_)2`t0qdj!zbjX(rMeG#F08t+8W!$>+Fpvn8tp~sg`(KBy{C#Bi8rg zQV^=@TCQczS#L%adie*gpJ3fK2VpWKd}OUb7?dl9oKw>MKgl<>v;q=jGM}1zeR14d z(|(#T!qXBp%69xL3(?Ig&1o?h)R1TWX~KY8RufWotr*Br!*mCqiy`N z7gk-{#K8I~1jjpG-J>iHNRY-iuc(-is-JTjR6PlomSaa8U-Q5{YA^&PdScn16l@LD zjFA+NBraFsJKB{z_SSgVo2izk#ZE;Jq)F>70o`;{-Ys!2Sk*!j0EZy_=pS2cJ&{#5 zL|bl(6_(z!(pnDi865;Ikt((})yXT{6fPd@mQ+vY9-I8jP z5(F!tcKf(=fb~Pp)oO*fs>ab`JRWa}Se#!J#XOu@$Ud}^#$FC8;L5bm^c4m#@3m?f zRwnmH3pRu?`L?uo_T%J0yq~v3#X@Py_f$8%ohZ7$SoVy&bw3_HUwoGn$UlQFq*X_ zxS7Wi4vHQ7?^8swAzNdJg7($?1z%e0H_crSDBCOM zR=G{H`2V0eVNy-)bP^T*&;-5bufq(L1e2noWzC{W>SM=fjyzTiD`3XUfqA#CR~| zSWHDpTnv|1z+}GV`fx1n`3Yb@miH9_^|K%PU#aLcikBl_hAv$l3HIHzgo(88Hj=#bFAp#llXk z)43H@YvUXv;zhvQ))#^jaNyMxvlOtzsd>p5(uTNgGs4NMaq$g1Bt8f*e|>QK1L56K zSIBd3Hv8zpk;6laMJ_+Jdh8uN|IAa@bIrkC;7ttC&Wo}i)%9a(H45~=5)>12>p4KZu88xE z7N-^oMI&({vqCJne>C90SPw+Oo<6`;$)WD=7BH*@cT(C`^V7YY6lR*uN)J(#+4A15 z+S(d_s01>oSVayB=XV>%qTjaTtXxJ=a;`N69pU&={Do9-@~0bSwffsR#l#FeGHkm5 zcQbJs9u0Is=Eq+Ic`z|&1|*vB=P^w`QxrtTcmZ*Otin>YNntJA^WWc~PZwIvk8voY ztB<`0&}%N8M@zrV+jnzSPjjm*NBE(6kHj4Z)&K$NhJu{|p5A6W-UEaCfx@D$o*dD} zyl2=-O4*&P=qIB;AP^95aJqrBN_W3I5*qsp<%r^nyEcLYUcdo`G8hJ_q7=HP`wJmj z#AdkRa>aR=fFQY!&Nxp)_%ucR=aKuRLo1bxB4tVZau0qg6Ls=3Mb+ zp(2-M#jTL#5yB4kHyh05Yi(+6X?PMe&=6=ufPx@rDxas+(_>9Sd+Woj#rZGmby(&A zlFcG=f?u5OwaCkgT6mbuyeqF`>J&i8q-p6#I)7&= zSTvgP4#^nsR?bnP*4ZmqOc0FfD&(CeW0`5Z+*Kb0WBT$LrKSkdarV(CLKqvq#``9A z3tx|bc14z9GG@iC{GPN;K=J?=+^I@=4H!=GILq=g9r%pM`SdVF{yJLW2&fl!wWIC= zmd`>U$#+3YS$_R6dzK;|g~Vya1^)5KHlJY|eb0+-FFc&XPO_KHuW>kXQRT6=Q9 z#av31jKBoU90y^Hl<(j9>Cw9SE*+~stu^~&NhE!aEy;`X=7&T8oOO}++zNm z3PXjW>WYJ;K=N{0TyWdSP2*M{MdL3=qz9CWW~p|FfWaeR8L3dIcNqK9re^{J*MYK< zHJOjJzV}gP&~eu@!-IW=2z+~J&wvY|DC>+|?yTG!mw81Mh_6aCCSUK`AZ1w0J2LVKl>Df=ibMEw7o|*EV6^ z@kWVK!1bTymU~#`_^P%Pno6zUB&M5Y*|QJb0}jEgSyaG;blgh(gKsoYWzg5UX(f9N zaJc4Aj%Mj4iMcw@Lh{HgqEq0^w1%{bL!$e3Cv_@=Qp(bqnG#s&&H*XCV@rA_j*c0# zIk$+$S%*7QIl7TD&dRmz$NU7logab=8ws$(Qa^qL_&W^r3;rUV)l zNQ7q2HfMJwI|D;7CQ#lkLzj%XxZ5MgFh$6ryN{9bg%Q8FOs{)vp=7&Q7-_9N$|CLh z5J?-+5en0|_pg$`M2l|b$bf`z?~oa?1)APr(3h(ZN-0Q%X%qaul*2uF5Vm1sX41@J z%xLb(WVKoMZ~VrqY$?n)o{!zHe`Qf;m{VM6cA4eKhBT@qJs#e{y&~=3#M%KIwr69j zUQ{r=1TV1yGWemVD;7(biVbO5)(F;^oQKm5ghpkC>L;>#CHD#(M-siP z8%(@(ne37F)a};>C5;+&O*RP1=u8a6;Ju_tFKB!nKzjy%j_I>JWf*`rNUM|)u0v7! zSa1o{)fdG?Z_kTwd>xt%Y%8f&K$L)Ue%mhB>u@^)^Bad10wI8YfbDKCe-REyBU5Cj zf(sNWl5#RVSKdo?rjg+D^MJV@cnPhD6mB1fKkK@{ljVqMjc{t-qTA!T|9}ra-Bnyb zfr}@Y0s!{OFC-U`yCsvhw~ji|*J(R|g>-PhdsxV0$Q->Iy}y0+z5^>=@{#vuQHU?5 zI=(cZO$fDg)oF@ujBUE+u1OFn&=p^;?ngHU4>8(aD)c@MV`IHhNF zq6taSQW;goF`7QyQA_Fi1-nh12f${N_#}Uh#%B7nb3|FKsHxTB{kMu ztr^Z)>bN^s66cHa^@%(H%=GZm7d|*53Q+7+}bFud{GxK?y+SKoEE9@;%M|$oZFka;^<~lR@qGTRB z&iERVD%stv?F=i|k+`d_^~1?!d8A!e+i1I;M{GzNS6Ah2f_O*1^bD)=>t43eDau`; z5(}BsfDg9vgH8SUSG6H~%TJJRm~SX`@rUwpG^OTAp(U_8+|y|NHO@+*_jX-nih-KY zCNNUfb3&%iI?J zJ0DO1^hQ1AO;dKdNYaYfRjqgj_%#I@s-M-A|M1a_7e zr$9JeBxAv2>K(o{sjFE=?KKACwSc?7vc|P3EkQq=f>NNIqbIUW^Zl3zi~{O~tD~Di z?*IzXW}(3K{xB9Q@kE-TnGq5@w9563dFNR77!Tt%t}2ta#p1oTv+3SdUa&S4R`$Ps zZeL}_{)Zf{h}SQ3AC;<-fuv(t^d<%D0&`t_$j%>Ps?r8yT)$@Oj6+?@ikcO|evPR~ zV-2D-*`u-wOQu2Z%4!88d}XSKyQ>u44>9B^GU=FDZ{NjnybFbNgY#3cZ(bj%opNpmTYO!Dl4S()-t zf|K6Tw+msYN$@pgdv}x@!qv$|SV=hldX9vEO0GaY9TJkcRyg%4VhGIC@Qjz*efP?k>o2A8?{ z8cSa)M4VQ5k(<-&Gb$PzLaUcM^rCXbyQFO`9Kti&mXF%e=bZj2B>MjZ=pPs0TSNyM zQHd!t6XPI{O4@BbqIN7LH#X~9)1rzX1LLhT#ke`%B)d)`{v;8Zw5143S|uY<&t1>P zpGKsqz6$pg;ZbwB%L1+r>h+q=SC99D;%lQL*?U9Z#Fl!)arxAp_GM~@ikie7%#l6h z4SY1K9}^;OMRpdhEtqtBb+gstGYj!P2Nu>&?B zk>ro}sr??){{ZKc{!#kYx-Bja%`f3o7B^>Rmr&|d{{Y+li;;x|{)h7~`5!9Y*lI3R zuZ36ic0v0^E7p_!2K0T!(+hS!jcOisu(bth7q5_y#&r1#ja45K3-BYnsNm_G4Z!w~ z+b0ynm=1QDu-eHW58flkkm>U1&0C?i!VrLzfdByjQeG6tt?`^Gg?$}Xk7NY0vAF7! z%pd1)Y3iLyLDrJneN2a^K81u>8cac{Bm}1}+^KEGD3(&ABTpJ!=M!X*)j33c$4K-zY%Hl$p)bm9+ik^$;K{b*dX zz-kzKfU6hb%j^5B7Z6)tNK&$p`XMWkpbGHmrn^$R+zR6jc|n}d+H4FGq<9g`YoYk~ zn~Lyu55!n_xshvdrt|$NxbFy=SlL78<6Qdn98-tjmiKAAx_bz1!foA2IY87Tl$}CI z*eFJ^p(IteLKR?^cPK{cr5U+nDCig;53uFxFP~})XX?;IO1hsf=W68qQHy_A_|Ee2 z3MyeM?3m~fodkL6eQD*dA6;RbH;P!i>#sd@(fTXJUFO!Kl|Y{&R1YFNbk(p+X*uGC zRMi;iE!xT5)lz78ZjQ~MD#ZyEkTi<%kR*wj{Xjp|`Kij0#O5V_HVRUsGokBQLvmH9%ge^RbAS$L>(ac;hRG%Zjaxo;SO?Xl5=`l> zdof4?In)ZlYyu=|XV#($yM)0S$x*I2xGgG(+NUrlLaudE6rB??d6DN<1KreeqC^zk zI2u}1tut(D#_k%}ECWGfFQtn>^4AGOYf9R=?VHGlQ{L1V+N;ibWL>2VP|35Q(05P> z8=jRy?;BAtR6sww%9b{@sS!QyfYt3Z;Uh5wo>ki0;O{LiLz#FfGM3fgVzrD$%I52e zE!uU0>uVX*qpDKa-^zBak!w>d$RGeWp>TVpUs^eIr3Dqbw4}!AN{W9FPpuX;G?)%f z3A8CZ3xF51C6`bpa(0A|oovm9+hr}J0F(#=r9i;=?kZ`6Abe@XQb#ESg8*}#Dyx@^ z4ChJ;)LlkVX^l|!lagwKIqb-hXR1t zTG{w_hSheVb$Wu9MyPD)T=701kK%BO`T}`=5N(o8`0WdTk6n(>4L2)Ba zVy?m(R#D=vZsl=2HH305BjTgOcJAOdEd6Q}JL`n4g^fvXQ=)`&8=XyGh4J&4o){Xv zWo+Igr79>%g#rvH!0wGX`cpq>xK1B;YR)9;5-#o4l?ux_)66JyjmMQJzr--k7Qs@W z3auOkO(+!hm+o&q3D##|BXa_YsMSq(D<>)~KEy9^@1jrAZkcQo13JgyOV1nOj0iXR zk4D>3{HvPX-8*@3r<_qLQP4>tBcPr_sR>co8d9~7c3G9|pGrC-{?M?{NkT5%JiDL| znXJ9-4-$UEC9463)2Nd&cLc`$V!8S)o>>st_*2fwO<5%*caD|Ll{j!dgz8prUkK{F z6LvBF1hlkqMR^Igx$kS0I>)HW4}mqgtq4`AY@sCzPEwL2M$sKBmU|()Q+N1|9#3$f zI+5eC{Hv)US?$vt#aTvONa>SD751HFh1qcpt)3ffn|1bGqv>x%%8zse>@)=F)KIu< z9h(D63mCsvKgKuL^O?20QrZ6i@u#|v`aq{GBP(EdReJMpW6=0D1&2HtBD@BbkeZMh zRa4QVMIxpXSqZ6uP}s=C@DWn4SExrLq=oks2@+)LG&)s@Dav9p_?fCg(6ANDROmLT zl}1#80FIgv1zSFFOafG5LSvVl^rr_h6l%*j$4d-gTvk1&ahDjrpayZH) zh#(o7w|?m(@v4#ofDt_B#-*6*kq5`65+D~Fv0fvE-C4Gzp-whKYEjWD5JC9YG{nX~ z!b)u3mekv%r4A)|f}#oW9JdwKlx0ve5Nn?MQVV!tL+*g?zCFq~LNk_@45~_;a~3YO z<2K4doVzMqf)kL8wCc-_P^5z577&rEnM@Kk{Ogz{uE|7`r5ST>?XAm}?~JQ$MJh-- zNT{i82=5j)7n7FKNZ)a9Xze*@>lQ66yrkty&VU}Zx?ncK&jGQv-?FzrGt9uBoYxCZ znvE;GVd`42>tz$(Q%EL9fT2-QB2seXGE!waewBiVKe~EWQyS^5WDycM=~66?RVi6y zi8>nKP6CAxM3JR;@(!>!tue1=SW_?`ytuehwB&#}od&y4I)}(eN5ObagScKJh+;?z zLRu*SNe~h{%2f5xd3x5PXks*v3hSIff{*IG-XDgv8dBQsr6b;ra`;R{_|k3@;G|*s zF7Y57y8=?!f`-3S^6A!~vqqw)>M_F{B&Uimu@sPzt86H5;;+-=(zmoHD9~+DLPA7n zeEC#@q!2l7YGSZ1y?NG_sS{SS@rq%G-gb!%ESVxwNZfSurM&dl(!C`xQ!+M#MxGg6 ztcbm&*uQCoFBf6H*^5M#DXw6c0QqaLPs5AZ;O}1_q+Ph8R7uqJGJLfs<6liO>sR)x zw|yyIWR$pqG*CJnD~@A0LBTO+>yfTa~s%WeER>;-{ z2WpLxHI(7ZHmw^J*ruvmdd*k!AGzqAjVScR0{tDdjSxN*HOey+rh`gkr0G>S)?}S3 zRDr2MX~IDs&K~+795jV(bjytoILtrou93u;pY%@*ViyuprrBChdMxOlnH9<{URD!| zT4E>=ZJ$cdh@E~@Ti>+nw5I`L&9Vu-d>I_loqrs)ZW8pKR_@)Z>3f{p1GLNDBA)@I zP}U4~O#wy$RO(AC_1088x=9dsvw>h~6^Hlb`F7km1%2u>=oaokbY-7i8;?2NiPrhed{hM~{6_ z525s_O`U{oA;7P7QaPVm(|x0~6@}P1edM~}Bg{|aD-UtwNJ_#(C_IXkT_aidQULz| zs=dYq*Z5M^=SVJnAthuc2YCu0_zHa-s*56O?*?;#jO!%wJ5e|87oBO_#Z z@JK$jURbGIC+g6@Lsn`>(~%IDsHAkR_hOuuYzPvTk|g;G;9|Ru4D***EtBdnwXoWZ zj%6U4rui))nDa0?jq5rA8p-A=0Pb~;VDqU06{>WK;tZ7;N_OY1Q*`p#QWlof>`WyP zK4z{EW=E7&Yd={D60EvuBDs=*UV7nnt95OJgo(-(GAN64nWU~XBS@*_`mCp7KcCK_ zXp)O$x4A@#9tJ8gxjl=-1Wzvt!iWixQ7e(%2UD+wP^Um&XQ-ZMN|wmLSjq%}zNRWM z2-14REx*QX>>X*BL0gV%1CXLqa+M$%@vhXkI{^w)f=g@2vJ5B*gZbAn#KrSii>zXI zi@UmPM@_`6r98ErqO|@#!-z{5t4TT@$>Yj5N&H8`mp@c+Y4}}b zM&m7Vuxs^#0iY3bp%hAPG}f!Qw0ii~go|?43MQ*n(h!`=fGVHqJABcbYUG&`sY!Cl z+}j1Vq104w@7=`C9@DBS7IwjyJwYOV0X3Ck7Ue$vlp9wps_9t_>rI1_O&PZkqdKsb zcN#Q+lz~%K%QNpr>s7Ybd4x=`ZJ z+9iagYbU9b&b%%7yBHw$R}7$y-C1oX(@FSN?`ekNn0zkQ(S``x5+wTXMXC7%z6XR+ zYKq|lhRqV+fU#Fjckv5$Bx~6NK3V`M_Pv~1Xsf(Q_f&W6(g));wTF&qI{0%nVNyW| zNfHT}=gPZVJ4z5Sz?cFOGh4jolbLRvei2u3eXD1Noe2PTc?ME_&=dfViTIjsR$Bof zF(149`Oq9r5A}BRsQtvon|G5;r1Mc^3ab!!IU9(`vYOAoYPA0DwJV>stS}{658e@4 z4QD8zo)TcA#=CD0B%U6_Qy|5wV1u~s3gSmeuIYw08p7=o;O`}r1HT|EI$WA4Fr`P` zA||qoxs)PfdW@Xf=nQYpq)3o9lN(T+WUQbS5imJaTTxxYr(g%+QF!Pe#E?Ae7K9Wj z&}1z{h&-#axy9-PECIDam`N(0?qzsJwVc_JAdNP!BSeii-fB)HMp9sq4G8I%8$j6q z06&D$dUTnfu9Bpz9$bi>DkZ@v*0|F2*f58gLuz!BDsi;9GNm$mq#mcGYc^ic*tTGY zm}SKDOR7Yl;e+yu+Hva>b#%MO(v{n>XzGepxKw^){@UTGLY8zDFpOlk22M%rbph>A zx}M7q!y9RF9jmJ=k4OfV-tjIki?mt1y3WZ|LcY9>V}4ptG%5cB&jY z(h<2ggkeWY^wn!RSAo-dBD?Y_9=??+k%Hi|splu1E#gJb4c?9AA~f5)nmGzdGExB~fd-fH8k_#E zULgd65SZEh|_A!$=FvHVz3g>>T2OtH&%&?TQ5OuQu=cy zmMIXUr8Zd7mR;sTQ8cQf!GOX#hs?sjp>1+!9Ji(kE{p!iH(}1w)D;X&UXc??yD2J4LNanAs%l zr^2h4WXMWVQlJtgP(+v&?%5;}l*f%$q7dZ50G)I+qlrXdH(Do9ok9Nq z8fk(Q;(|iNjX7)n-|b4crCD${K?(&m zpo4);k^+)QkqOqR$(E82Wn>o>ltNLYbKa$9N-bJKwn{`#I-0yUn zwrNhb*zY`{m9gPJc=!sP-vn{Vo*=)tX3fjH+u>tsnFwtO&f?D?CN-{hp4$?;H~0(h@mQzee573p-yk@g=}Bn;j~Zh)#kz zRj$O%R7PZv;-NHTTG%i=s>JK3%CO$ma#N_>)HX5*u^ts@8dYfoZBqs)8FD)!D=;ZO zB;=Hkok=>Z;oqPF9jUD64RV z_)6YPny6QGF+{6s8SN=CHEVECt?CIsg=J@1nu1jZm}j@SH7coDGwD_ybyD}KKuwq% zRHmU`1k{U6=|QxwQjFY!V8I`r)qT2En>i;UPKPYO=Q{b&t6r%{R^(2R^P*T=NCr`n zWC_<=u4DwE$ubZL=0Bf0k_bu705+2m)X?Z#PMs8^u5C`99ID2^ElB_!<6<@Ss5l`v z2>^kcL%AHQ%XF1UP)uwA=jGC%f-|QnB>6zsokeZtY)OR^I|CG1WMH*VsR#mPTfrG= zZxJ5bhuttGB?}^U);~HqS(IZ%5}$fC{${AX! z0+y_z4&6_tr_zOGgj(HRVjxTR00$I);u17S(+!s< zjkTofCpm12Fyy7Q@AR}c(%)(*f%k_}<uLKn-`+ zq+8{dq7Q{$CPz-SLOIb1ov2x21k!b^sPn81E6VqLY6~5K?p*-}lDuWjX_ev7(xvLM zY1Gk+e>}8_Ta5Q@kMUO4of0cp!^GdV4Q&8vL0gjVgs;PsBB+WH)fu9dwFv3fmlExM z3LM&EYJ{lOju@D#Qgo)HHg9skqcvL9DvHeMP?@O#vQu8HSF4CRc0?@Z1SBF18UA*w zOKN}vVD#!gpU$d6;ozUTb)7$73XynrV1Wwe6{KrbjH2YbrbVk?1Pbz7XrvV>B~df6 zAIu7@655~;a|!D!kkh9z~`DPh$N-DLX;1L9#wE80)VNidr{dX%z%Xn1VQES=~)gopaNV2 zshud11hc3nL=nwJQA%zxoIec(SC>k0YF1=0*p--f2l6Wc#HqEQkeEzm1L37lnEPyYh1}%_5M@_F+YLc* zPOmw!@*k~VcZ0V3a!=MBN{-~w2*Q(Pi(MVTaFl7t>OUGWLYX?7>}^=s#nE!8xiuAF zw;|ksY1W$9;7y=~JKi+dj&(HeQ7W=%eIE>=31#kKwvf^?p&$WO+zD*?Q5938x@k%7 zY0fD}2v2Nsx+#N`AEhpDy7}-`F;tZ4(wip;rwK)mvln(yjwt=viV5Vql2guvHc4(xANug+S);h4+ihsHNPA>qT8JQ?Ar6 z-K#KIN1eNtY6M|pHX=L)Y`m*n!awGR4ejQOS?8(&U{AsAmo7}Q`)J0-+nXe?tsRJa&)tZdfX1RoPwn#1~B!~ow zI@QNArDwYufhLBw1OlRVPPwC(giOd1ml6O3+voeXGsU!@!k4dY7R15~hokdWE zcB}UzoTQCv)TIYW$_9W$3W7_SdOht3)&%~ZAI|k+Rm`nP1ng6#Pym8+0-_=_59fOJ zWvqY-lCAfy$pnUXeWQ?r7F4!V;WP$5{s0= zi5h1>i1keW0H%wv0X?ZwLV@QZG@a_Au%w>uQmssHSCtI25kESiVD6rh0=EbBp$OJ7 zWCY@BfIw0~*PRNXMdHq9zXO_30sLrFwGrxU{{ZRZlDd+2tX5OKaba>#l~&;H)v={P zV@iZFOJO4Ww<`0dDb)kYm)wZDSEU}=meOg`;TZP&PG}n7L6KN!9J-Ba*MypjX&yBl zgK_m1phliGV2XltJ8x44pmcU6%7=YWnX8qy^d-`v8k*!qSz;pFg-pjYRUN8Mp78Ui ztKF+hgU!@=n_)OX{{X~)%Udtqtz!s-i2neVwthfWYTZYm@R#@x?oz#`f_%s0My%$_DIHfEcatUp*7;@-7Z9lj#ZT} zv_U0$@-wEj#}jE}pyx+1D*0AqB|v2`uewEGAFDnZ%uLspoQ%?#5=cFHZR=b?GNGL( zv&jUFwceLrBz+M}?;MK{PPz&2L5^UN>qaHc%#|)+r!a*bqo2-)LxiBGFbFaSm-7`T z7`JswNDz`h+-<#j;lw4p>Q%?nWO>j$+&Q%3%Qxj2LaM!?^ z^hLn&6jKISO%I5ObqCI_wm(uS&!rg9+PsmMH>@Qx4z(o-HI~NoBk`7c2&wthR6Z5r zbgm17${-2`?NX6NEXadET&jI2qPHsCOA%m8GUt_eohu)Fn)0@*C!fxD2*N-4kELwq zYSwUX?f(Gft&r_it92fa!hS>hl`Mfk+#dBB;idNnSfPm9hp;N8ujcRq@TD9)&v#L&qDb!c1)yEYj zMDylm-DYzsz?EGL|ZuojaB%X7Wn;BgOFJOdRME|LDBh<`=LMghOPUx z>h%fiW89BA@^`OStBzcjih{PUSF46T1z4B7k26!X`ypPhQ-3Ls{{WK7o$D=bYt`xz z>ypK7Rg>MXSF4GUTIqGqy Date: Thu, 5 Nov 2026 18:58:06 +0100 Subject: [PATCH 2/4] Match Requests sheets to locked design frames --- docker/README.md | 17 +++++++----- wolfskin-design/generate_request_marks.py | 6 ++++- wolfskin-design/request-marks.sha256 | 12 ++++----- wolfskin-design/shell-tokens.json | 14 ++++++++-- .../wolfskin/design/ComingInLineBox.kt | 16 +++++++++++ .../wolfskin/design/ComingInRatings.kt | 10 ++++++- .../wolfskin/design/ComingInSheet.kt | 25 ++++++++++-------- .../wolfskin/design/SettingsList.kt | 2 +- .../wolfskin/design/WolfskinTokens.kt | 12 ++++++++- .../drawable-nodpi/coming_in_rating_fresh.png | Bin 804 -> 1129 bytes .../drawable-nodpi/coming_in_rating_imdb.png | Bin 813 -> 1305 bytes .../coming_in_rating_rotten.png | Bin 964 -> 1617 bytes .../coming_in_rating_spilled.png | Bin 1068 -> 1596 bytes .../drawable-nodpi/coming_in_rating_tmdb.png | Bin 1638 -> 2818 bytes .../coming_in_rating_upright.png | Bin 1023 -> 1390 bytes wolfskin-design/tokens.css | 12 ++++++++- wolfskin-design/tokens.sha256 | 6 ++--- 17 files changed, 98 insertions(+), 34 deletions(-) create mode 100644 wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInLineBox.kt diff --git a/docker/README.md b/docker/README.md index 1a110199..cafc24bc 100644 --- a/docker/README.md +++ b/docker/README.md @@ -142,8 +142,8 @@ Foreground refreshes once; an open sheet or unsettled requests refresh every 30 seconds while started. The immutable debug projection is loaded once, not decoded again on every poll. Thumbnails reuse `LibraryImages` with a 96×144-pixel request, RGB565, no crossfade, -the shared 64 MB memory/128 MB disk cache and four-read limit. Actor separators -reuse the shared caption-opacity token rather than defining another convention. +the shared 64 MB memory/128 MB disk cache and four-read limit. Actor separator +dots use the surrounding text colour; the 40% rule applies only to poster captions. Uncached focused ratings wait 350 ms; moving away cancels the read. Read ratings show immediately on return; sign-out clears visibility. This follows the frozen @@ -155,7 +155,8 @@ data replayed through the real shell. Home's hero content is not implemented here: its launch-to-nav shell suffix is the acceptance seam. Sheet dimensions, padding, glyphs, scales, colours and durations are generated -tokens. Single-line sheet text retains CSS-style line-box leading. Platform +tokens. Scoped sheet line boxes retain CSS heights and baselines independently +of native leading rounding; shared shell/library typography is unchanged. Platform Roboto remains required: the host browser used DejaVu Sans, so its width, wrapping, ellipsis and text-block positions are not a wrapping-parity target. For example, the 44-pixel “Coming in” ink is 239 pixels wide in the reference @@ -164,10 +165,12 @@ used. Native comparisons must report those structural differences explicitly. The six rating marks retain the exact locked SVG source in `wolfskin-design/request-marks/`; native-size PNGs and their hashes are generated -from the JSON dimensions, avoiding differences in older upstream conversions: +from the JSON dimensions with the locked cover crop. Inside Coming-in rows they +retain the prototype's dark `surface3` chips with 12-pixel rounded corners. +Loaded poster thumbnails have no placeholder fill beneath their clipped edge. ```sh -uv run --with cairosvg==2.9.1 python wolfskin-design/generate_request_marks.py +uv run --with cairosvg==2.9.1 --with pillow==13.0.0 python wolfskin-design/generate_request_marks.py ``` `RequestsCaptureTest` writes `st-081`…`st-086`, `st-088` and `st-111` at 1920×1080, @@ -190,8 +193,8 @@ its unknown item count. Caption separators use 40% of the existing muted colour's alpha. The rail follows the locked prototype CSS: bold 24 px letters, with the focused letter bold 28 px, overriding the spec table's generic caption style for this component. -Library header initials use the muted colour over the person's fill; navigation, -picker and Settings avatars retain their dark initials. +Library and Settings header initials use the muted colour over the person's fill; +navigation and picker avatars retain their dark initials. The debug-only `wolfskin-library.json` and `library/assets/` contain the locked prototype's titles and local poster art. Release libraries read through diff --git a/wolfskin-design/generate_request_marks.py b/wolfskin-design/generate_request_marks.py index bba6a960..c0297cef 100755 --- a/wolfskin-design/generate_request_marks.py +++ b/wolfskin-design/generate_request_marks.py @@ -1,9 +1,11 @@ #!/usr/bin/env python3 """Rasterize locked prototype rating marks at the Coming-in row's native pixel size.""" from pathlib import Path +from io import BytesIO import hashlib import json import cairosvg +from PIL import Image, ImageOps ROOT = Path(__file__).resolve().parent SOURCE = ROOT / "request-marks" @@ -21,7 +23,9 @@ def main() -> None: for source in sorted(SOURCE.glob("*.svg")): target = OUTPUT / f"coming_in_rating_{source.stem}.png" width = round(height * wordmark_ratio) if source.stem in ("imdb", "tmdb") else height - cairosvg.svg2png(url=str(source), write_to=str(target), output_width=width, output_height=height) + source_pixels = cairosvg.svg2png(url=str(source), output_height=height * 4) + with Image.open(BytesIO(source_pixels)) as image: + ImageOps.fit(image, (width, height), method=Image.Resampling.LANCZOS).save(target) for path in (source, target): manifest.append(f"{hashlib.sha256(path.read_bytes()).hexdigest()} {path.relative_to(ROOT)}") (ROOT / "request-marks.sha256").write_text("\n".join(manifest) + "\n") diff --git a/wolfskin-design/request-marks.sha256 b/wolfskin-design/request-marks.sha256 index c29ddefc..f778a68f 100644 --- a/wolfskin-design/request-marks.sha256 +++ b/wolfskin-design/request-marks.sha256 @@ -1,12 +1,12 @@ 01aa8a3c3e9db48f0e1c6af25056940986784315bf66f48a8120a7317bf6d75a request-marks/fresh.svg -743b6139dc12019d0940568869065722593f44ce416a7e9c7b8d9ef92942bb3f src/main/res/drawable-nodpi/coming_in_rating_fresh.png +e61333be2c5a028adcc1052a24add31ed34001af8cfdf1d180358faffafc35f4 src/main/res/drawable-nodpi/coming_in_rating_fresh.png 27f93b15a075b015e2448eca7949f7a3da03c37fbf26cecf6df3bdab45fda993 request-marks/imdb.svg -a738afd57519b1b4a38192927b48bd45755ce75e4673c6b12b9b3e0c2e388372 src/main/res/drawable-nodpi/coming_in_rating_imdb.png +72c167c7d0ed23f998e47010be0bbf180790431bd0add0b525f8a5928f44dfd5 src/main/res/drawable-nodpi/coming_in_rating_imdb.png 510d0f9fb77d72190ebf03208f04215a4e86f71e165488518ac75aa49cf4a79d request-marks/rotten.svg -0aade711ba57b6b201c7395ece97108df928b6076d8120404cdf4155a4242632 src/main/res/drawable-nodpi/coming_in_rating_rotten.png +e3e0a434eaaf5c9390fec821807e34ad6bf656a05520039219dbaaea68d03924 src/main/res/drawable-nodpi/coming_in_rating_rotten.png b8dcf4d27eba2446380980c96d82b1f64aa6859fa2ea1cdab867f849f9fec4fd request-marks/spilled.svg -fa4f50258009cd1d16f0d0f5a3c216dc88a57409b1bccc379512ae914cc9d714 src/main/res/drawable-nodpi/coming_in_rating_spilled.png +3d509c58f80ef773f7d909bf57953d835cfddb0565896c79bf25698146e90099 src/main/res/drawable-nodpi/coming_in_rating_spilled.png d537fb228cf3ded904ef09b136fe3fec72548ebc1fea3fbbd1ad9e36364db38b request-marks/tmdb.svg -8e1cb507f876f324bb5c53bf4e60775712f1fdddbffe94fd249e6e74099e045e src/main/res/drawable-nodpi/coming_in_rating_tmdb.png +a1d49d5dba29e25738e06dd6d97a32f4d357dc0cf66e1acca00f30287883dd32 src/main/res/drawable-nodpi/coming_in_rating_tmdb.png 2ad511c7a101a7f2f8810434911df8c13cc126fa691272242037237172600bc3 request-marks/upright.svg -6ff8a05501bc1c15b96c0130271c41baaa2ddb74f64916f58b9e7f918931d789 src/main/res/drawable-nodpi/coming_in_rating_upright.png +3d9d745d878a5f6976a31f23c58be7d0ea037353e4a2c6d037861469a716a486 src/main/res/drawable-nodpi/coming_in_rating_upright.png diff --git a/wolfskin-design/shell-tokens.json b/wolfskin-design/shell-tokens.json index 8af37422..50a8c5ec 100644 --- a/wolfskin-design/shell-tokens.json +++ b/wolfskin-design/shell-tokens.json @@ -3,14 +3,24 @@ "sheetPaddingY": { "$type": "dimension", "px": 80, "dp": 40, "source": "index.html:227" }, "sheetPaddingX": { "$type": "dimension", "px": 64, "dp": 32, "source": "index.html:227" }, "sheetGap": { "$type": "dimension", "px": 18, "dp": 9, "source": "index.html:227" }, + "sheetTitleLineHeight": { "$type": "dimension", "px": 56, "dp": 28, "source": "index.html:228; locked st-083/st-086: content begins at 154px after 80px padding and 18px gap" }, + "sheetTitleBaseline": { "$type": "dimension", "px": 44, "dp": 22, "source": "locked st-083: modal ink-bottom 123px, native baseline boundary 124px minus 80px padding" }, + "titleLineHeight": { "$type": "dimension", "px": 39, "dp": 19.5, "source": "index.html:250; 30px font with 1.3 line box" }, + "titleBaseline": { "$type": "dimension", "px": 31, "dp": 15.5, "source": "locked st-082/st-086: ink-bottom 45px, 15px text-block inset, baseline boundary 1px below ink" }, + "factsLineHeight": { "$type": "dimension", "px": 31.2, "dp": 15.6, "source": "index.html:251; 24px font with 1.3 line box" }, + "factsBaseline": { "$type": "dimension", "px": 24, "dp": 12, "source": "locked st-082/st-086: ink-bottom 77px, 15px block inset, 39px title box and 1px baseline boundary" }, + "stageLineHeight": { "$type": "dimension", "px": 39.6, "dp": 19.8, "source": "index.html:251-252; inline-flex stage within the 28px/1.3 parent strut" }, + "stageLabelLineHeight": { "$type": "dimension", "px": 33.8, "dp": 16.9, "source": "index.html:220; 26px font with 1.3 leading" }, + "stageBaseline": { "$type": "dimension", "px": 24, "dp": 12, "source": "locked st-082/st-086: ink-bottom 112px, 15px block inset, 39px title, 31.2px facts, 4px margin and 1px baseline boundary" }, "emptyMargin": { "$type": "dimension", "px": 20, "dp": 10, "source": "index.html:1905" }, "rowPaddingY": { "$type": "dimension", "px": 14, "dp": 7, "source": "index.html:247" }, "rowPaddingX": { "$type": "dimension", "px": 18, "dp": 9, "source": "index.html:247" }, "rowGap": { "$type": "dimension", "px": 24, "dp": 12, "source": "index.html:247" }, "listGap": { "$type": "dimension", "px": 6, "dp": 3, "source": "index.html:255" }, "stageMargin": { "$type": "dimension", "px": 4, "dp": 2, "source": "index.html:252" }, - "stageGlyph": { "$type": "dimension", "px": 28, "dp": 14, "source": "index.html:152" }, - "stageGap": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:152" }, + "stageGlyph": { "$type": "dimension", "px": 28, "dp": 14, "source": "index.html:221" }, + "stageGap": { "$type": "dimension", "px": 10, "dp": 5, "source": "index.html:220" }, + "readinessItemGap": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:313" }, "readinessGapX": { "$type": "dimension", "px": 22, "dp": 11, "source": "index.html:312" }, "readinessGapY": { "$type": "dimension", "px": 10, "dp": 5, "source": "index.html:312" }, "readinessMargin": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:312" }, diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInLineBox.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInLineBox.kt new file mode 100644 index 00000000..e7ae86a9 --- /dev/null +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInLineBox.kt @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0-only +package org.justinvisser.wolfskin.design + +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.FirstBaseline +import androidx.compose.ui.layout.layout +import androidx.compose.ui.unit.Dp + +/** A CSS line box has its own height and baseline, independent of native leading rounding. */ +internal fun Modifier.comingInLineBox(height: Dp, baseline: Dp): Modifier = layout { measurable, constraints -> + val text = measurable.measure(constraints.copy(minHeight = 0)) + val baselineOffset = baseline.roundToPx() - text[FirstBaseline] + layout(text.width, height.roundToPx()) { + text.placeRelative(0, baselineOffset) + } +} diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt index 1aebb97b..d4a8acd3 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt @@ -11,6 +11,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource +import androidx.compose.foundation.background +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale import androidx.tv.material3.Text import java.util.Locale import org.justinvisser.wolfskin.design.WolfskinTokens.Requests as T @@ -35,9 +39,13 @@ fun ComingInRatings(ratings: List, color: Color) { } val wide = rating.mark == "imdb" || rating.mark == "tmdb" Image(painterResource(mark), contentDescription = rating.mark, - modifier = Modifier.height(T.readinessGlyph).width(T.readinessGlyph * if (wide) T.ratingsWordmarkRatio else 1f)) + modifier = Modifier.height(T.readinessGlyph).width(T.readinessGlyph * if (wide) T.ratingsWordmarkRatio else 1f) + .clip(ratingMarkShape).background(WolfskinTokens.Color.surface3), + contentScale = ContentScale.Crop) Text(formatComingInRating(rating), style = ComingInTypography.rating, color = color) } } } } + +private val ratingMarkShape = RoundedCornerShape(WolfskinTokens.Radius.thumb) diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt index de14a184..4bb90514 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt @@ -27,6 +27,8 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.text.style.TextOverflow import androidx.tv.material3.Text import coil3.compose.AsyncImage +import coil3.compose.AsyncImagePainter +import androidx.compose.runtime.mutableStateOf import org.justinvisser.wolfskin.design.WolfskinTokens.Color as C import org.justinvisser.wolfskin.design.WolfskinTokens.Layout as L import org.justinvisser.wolfskin.design.WolfskinTokens.Requests as T @@ -57,7 +59,7 @@ fun ComingInSheet(shell: ShellState, modifier: Modifier = Modifier) { } .padding(horizontal = T.sheetPaddingX, vertical = T.sheetPaddingY) .testTag("coming-in"), verticalArrangement = Arrangement.spacedBy(T.sheetGap)) { - Text("Coming in", style = ComingInTypography.title, color = C.fg) + Text("Coming in", Modifier.comingInLineBox(T.sheetTitleLineHeight, T.sheetTitleBaseline), style = ComingInTypography.title, color = C.fg) when { data.status == ComingInStatus.Loading && data.items.isEmpty() -> { LazyColumn(verticalArrangement = Arrangement.spacedBy(T.listGap)) { @@ -123,6 +125,7 @@ fun ComingInRow(item: ComingInRequest, viewer: ShellPerson, focused: Boolean, ex val secondary = if (focused) C.onFocus else C.muted val context = LocalContext.current val request = remember(item.poster, context) { LibraryImages.request(context, item.poster, L.thumbWidth, L.thumbHeight) } + val posterReady = remember(request) { mutableStateOf(false) } Row(Modifier.fillMaxWidth().focusScale(focused, WolfskinTokens.Focus.scaleRow) .background(if (focused) C.fg else Color.Transparent, RoundedCornerShape(WolfskinTokens.Radius.panel)) .pointerInput(item.id) { @@ -133,26 +136,26 @@ fun ComingInRow(item: ComingInRequest, viewer: ShellPerson, focused: Boolean, ex .padding(horizontal = T.rowPaddingX, vertical = T.rowPaddingY).testTag("coming-row-${item.id}"), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.rowGap)) { AsyncImage(model = request, imageLoader = LibraryImages.loader(context), contentDescription = null, - modifier = Modifier.size(L.thumbWidth, L.thumbHeight).clip(RoundedCornerShape(WolfskinTokens.Radius.thumb)).background(C.surface3), + modifier = Modifier.size(L.thumbWidth, L.thumbHeight).clip(RoundedCornerShape(WolfskinTokens.Radius.thumb)) + .background(if (posterReady.value) Color.Transparent else C.surface3), + onState = { posterReady.value = it is AsyncImagePainter.State.Success }, contentScale = androidx.compose.ui.layout.ContentScale.Crop) Column(Modifier.weight(1f)) { - Text(item.title, style = ComingInTypography.listTitle, color = foreground, maxLines = 1, overflow = TextOverflow.Ellipsis) - Row { - Text("for ${item.recipient(viewer)}", style = ComingInTypography.caption, color = secondary) - Text(" · ", style = ComingInTypography.caption, color = secondary.copy(alpha = secondary.alpha * WolfskinTokens.Library.captionSeparatorOpacity)) - Text("by ${item.actor(viewer)}", style = ComingInTypography.caption, color = secondary) - } - FlowRow(Modifier.padding(top = T.stageMargin), horizontalArrangement = Arrangement.spacedBy(T.readinessGlyph)) { + Text(item.title, Modifier.comingInLineBox(T.titleLineHeight, T.titleBaseline), + style = ComingInTypography.listTitle, color = foreground, maxLines = 1, overflow = TextOverflow.Ellipsis) + Text("for ${item.recipient(viewer)} · by ${item.actor(viewer)}", Modifier.comingInLineBox(T.factsLineHeight, T.factsBaseline), + style = ComingInTypography.caption, color = secondary) + FlowRow(Modifier.padding(top = T.stageMargin).heightIn(min = T.stageLineHeight), horizontalArrangement = Arrangement.spacedBy(T.readinessGlyph)) { Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.stageGap)) { Glyph(item.stage.glyph, secondary, Modifier.size(T.stageGlyph)) - Text(item.stage.label, style = ComingInTypography.label, color = secondary) + Text(item.stage.label, Modifier.comingInLineBox(T.stageLabelLineHeight, T.stageBaseline), style = ComingInTypography.label, color = secondary) } if (showRatings) ComingInRatings(item.ratings, foreground) } if (expanded) FlowRow(Modifier.padding(top = T.readinessMargin), horizontalArrangement = Arrangement.spacedBy(T.readinessGapX), verticalArrangement = Arrangement.spacedBy(T.readinessGapY)) { item.stage.readiness.forEachIndexed { index, word -> - Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.stageGap)) { + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.readinessItemGap)) { val glyph = when (word) { "Done" -> "check"; "Failed" -> "alert"; "Not yet", "Unknown" -> null; else -> "clock" } if (glyph != null) Glyph(glyph, secondary, Modifier.size(T.readinessGlyph)) Text("${READINESS_NAMES[index]} · $word", style = ComingInTypography.readiness, color = secondary) diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt index a7c0c54e..48a8220b 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/SettingsList.kt @@ -70,7 +70,7 @@ fun SettingsList(state: ShellState, modifier: Modifier = Modifier, openRequests: item(key = "settings-header") { Row(Modifier.height(L.row_lhead).padding(start = L.safeSide, top = S.settingsHeaderTop), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(S.settingsHeaderGap)) { - Avatar(state.person, S.settingsHeaderAvatar, WolfskinTokens.Type.avatarLetterLibHeader) + Avatar(state.person, S.settingsHeaderAvatar, WolfskinTokens.Type.avatarLetterLibHeader, letterColor = C.muted) Text("Settings", Modifier.alignByBaseline(), style = WolfskinTokens.Type.screenTitle, color = C.fg) Text("Requests and Wholphin settings on this TV · ${state.person.name}", Modifier.alignByBaseline(), style = WolfskinTokens.Type.nav.copy(fontWeight = FontWeight.Normal), color = C.muted) } diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt index 74ce6aec..bf874972 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt @@ -233,6 +233,15 @@ object WolfskinTokens { val sheetPaddingY = 40.0.dp val sheetPaddingX = 32.0.dp val sheetGap = 9.0.dp + val sheetTitleLineHeight = 28.0.dp + val sheetTitleBaseline = 22.0.dp + val titleLineHeight = 19.5.dp + val titleBaseline = 15.5.dp + val factsLineHeight = 15.6.dp + val factsBaseline = 12.0.dp + val stageLineHeight = 19.8.dp + val stageLabelLineHeight = 16.9.dp + val stageBaseline = 12.0.dp val emptyMargin = 10.0.dp val rowPaddingY = 7.0.dp val rowPaddingX = 9.0.dp @@ -240,7 +249,8 @@ object WolfskinTokens { val listGap = 3.0.dp val stageMargin = 2.0.dp val stageGlyph = 14.0.dp - val stageGap = 4.0.dp + val stageGap = 5.0.dp + val readinessItemGap = 4.0.dp val readinessGapX = 11.0.dp val readinessGapY = 5.0.dp val readinessMargin = 4.0.dp diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png index ef0a98a62277a71d5d68e73f9bdad141670bf2fa..c5e313dba2e2a17a4f2f4b64b11e4ebed17e9b57 100644 GIT binary patch delta 1109 zcmV-b1giU_2I&ZpBYy-iNklx_wwN|+eNjE3U)GePxG z5*P$QJ;;a;5%?gHCPw(&I7AddKU5f*g%5=fLO(AR2#OIsHO@FTgQSUxC~BED=Dp{f zefH|%-qCT!8B=DxZP;sl>wgK8Ne>E3y_@5nE>bzh$lwWjiGP#+zm53G0Q3%Lysv9* zUiDi!Tia#5yvRqZ9uSI`FcK?tFY`MN1F(Ky1Z*mh+~VC(*u7*Xms`tH%03a3r=rMn zitVA*FT{YWVMlyru=j?8YdpP&iphXCK!zX~@2qNswVPcBqIt1X|74y~E=QtJZlejxNmHl5yf;?P{j)W0z}SM&5mZbIbASm*;T3$- zXS3K+FLdQU87r>kJaqQjPn(AS-dOEVPgplj_EAiTsDE>N=ZwK6x|YD}lw>&p2$9tn z>l~e3CMw*MM&9bX$gx=oYOv~3okuRzto=%E z(TY=752P)A;a`!wEsuWdub1T6)Bmz~-6CqOB_97{gde{-)d+pmPbZ{KC{&PWMItz- zP|t01b$=lJcogOhkY1uKJ8~~h%W27lONsi{Jj%?GjL$mTsLk*^cIGNOe?Cu^D4AEZ zSvJ8?10M~*1tZ1+D|^{l>nfj+ed&Jd#z_z8jxH*xRgRRMw5P#hVy3wYW^i~;g{Z=# z7izd@q+XCICkD(Y5{C-~CresiP9HS^$hxXqOMi|J(%gawjVPN+NiZ-YD=ASxZvzi7V=+oJL0EQr0aYcsjzlRJ%{jSCv$vGydYIidyV|B=Hj~DFx?A6;6f;ycdNq*| z41cj{js}|TFIKC>$`zFuPG&~tL2P=XGHKM}3`ehA)+Eo51HXHn=JXj65sSz#0;V!d z7R|mxMXr3#w9#$dC_}isT7UVf`K=6iHQL8MuqtSfm{ z(bt@lSrkTU#7P=Oyf*F+28Ho`DB||YKsJ2q3p)lz0~l)$mmf^v7*dL>PTIx@K02mLM0J^R}=A$j8H7{3Iqq0(BTo92K#8N}fIf+9lzQ48a+PU$L bj<@+A4DJlD?jz^000000NkvXXu0mjfI4ld> delta 782 zcmV+p1M&Rn2&4v(BYyw}VoOIv0RI600RN!9r;`8x0@+DKK~zYIwUkY0TvZguf9Jk= z@6BXLE5#TB0TYW^m}Hv7Kq(@&E()b?M6xP~C|IG;2wk~qOIPY5GKe+^g$6-%X=!as zTag59E0bW1w&E5QQ z=c*`Had)VDm$8Mjpu-m4;TXo*lG=|EEhJ(WIGD+86l5yy&e@E>O^`QvKlOw>mb#>d zFBLswg4}x>g#gGJiy}_C`!%a_zzB_2`9t6(;1mwQhIi2Y|Po# zuGwh+TkZbSUw15=KmIdXIiqx{Rjj53dAVq63GzCVh{_+{T(62(8_gdWFV0Vrptpq=xW}Y)6-dFUW^=ZlYe<@U;lNUBUATG+rV}J`u_?U zJ-5ogtVFr1#_skr*_%aMslD}+simx+Xvquif+sZO)%XSFN=pL(PcG*8@ao;F5C9dL zQFB4NxAw@7bF-^5iu&T80tf!tOEqV5#<$%!3Flz0m5=@O#v89kp#Ba3j}lk7?N9j%6&yOlIrsC z8nW{ttexaqNrZU-BN-k5)u-@(OQ+!9P8+Qs$XqRf6#cwTltoX1^Cgf!9-RYj)S4oy z!w*YSnj@>CZv(c5oEvT-I$B(meuH=>x+toLsDDid-m=O*nPh1V2*8_&P6Dq2!6QJv z@?vg(Vj{e~(pYv-qi4NtwdP|Hp4)JE;Wt%%*B_5Qk}@S&_eW5WsL$Uka1dlKkSueo zpzy5`M%*wQk)Oz}e~%4FJMnUE@) z_xJmahc}b?{eHWf&DK*M{Fs?HGjG1{&71e$u3A1z9LFf7P=BlwGGMgE=qOrWzyTDf zBu0f=uMM~{vI}DcsN7us0M%qp(ekjo4AlmeQm8P`OmafB5q4pf)zWB}hBg%7`k_V$ixY8;S_J=0 z!sIQ_Pk&NhdY@9#zVaNLJSP2mUHI2-0<|n)W1zPiQ~{=Dp}GV;y>`uN;MYRhUg5L(t0~`_~sWSbf=mB8$7_a zF@I?t(1Cs!?6>ts`>H?I;M~>ZBBTZhf&JC>&0wM{jpZ zrt{Kb-H?BU?pkh)v@fVTA^4vJHCI#B9Nrw~XK51(8YsuYQvuG9?L!y)qnXR%~ wGk%`8>YDpZy{+&VgV8~d`6FOmkO0U02jk1&f>;aK-2eap07*qoM6N<$f_>zENdN!< delta 791 zcmV+y1L*vj3ati^BYyw}VoOIv0RI600RN!9r;`8x0^&(TK~z|U)t5_XQ$ZAlzllkj zG_=;*hkc2O6>6!~Me%_O3W6I&Tq(Hmy-^o};6m%l?p)T5pr{CL1vf6Vl!}z9t)kFP zAJ_+0+iF|W+@wvDaWT2vBsZZqH(=}!!^}Bz&Y3@R&zzaS8h?h+-qS#gP9!abCSw_b zK>^pC#CQT6MiiP+P6$ZJdZG2Q47du-#s;K=wMiU6I5TONqVQ+YkV|}^g<)(e)vmS@ zsyD*OWU4(tlON`T@MBiVE+_cBP~?W13J^(Y+A{#N^J-k`gClz^(${*C>Frqu5{%Y) z6ZxP$RR_qcr+<|F?iTZ0-&5qR3uZkaeO~0*`Z zqmwY4_+mjVv)$k*JbwjqLD;_&P9IG@BRXu6cQ_y(hkunAboVC$tyA)9C~_O)#gKV^ z@+TZT58)*xKY9U?B{+8?1CQLPLq!>Q5+q*tsebdO+~Y)7%(~?$TtAbl>lw)GZ;QOc z0seY5e)n1RfqFZU%&4t`+m}?y)S-U`6A!zKY)z2WBC7Y-*^QJ6{fl}%hAy7vOxYqY zNUa(G{(o9Kk@AD>oo`G_6RSIKu`pSJ{j^Ej`G7_8;fOIV_L}GQvKx=D9?SmDCz1EK zp{8-DV zGjk9)rb?!c`V4lE$Ic63!APu002ovPDHLkV1l}0f64#= diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png index 678af063aa53629f210f93f8d557cfaac66ec27a..c6630d2261b84ac668e17b8826a9a1a73a952a1a 100644 GIT binary patch delta 1601 zcmV-H2EO^k2hj|WBYy@MNkl|!F*fM2I z1Q9<(q$xE5LVwieFGjH7RKL{TdtDYl%H=?raGQ?VQXpZpbGxDIZDPu05gd>%vPCcy zV|v+|l*5Ygee1L@dKT<{5;?gdgcmLkRO($V<+h@Z4f@Zt?#OK-G>W(xU;Fj*U$X@BM)XZ#B-4wcP!K~|hS_@Kiw z)90_f%kZ(rCq|l|*!!5y#=n(bzt?I>B01+nJ-IY>SuSD-hX|bA99c6ttUZ}EHq~qb zo_dn#>fCT)y7s+lx%@kZ2EDF2QM|8kZse3xPUGZw;cIK(FPzvvgkbYKU%NiN_0@e= zOJ0(k_kXB>%D?%bVvIkPWy3}3Yu&$1d;KPxjZ=gy?RGoj5P)3(Ox|M}lwa%W+;(du ziPh6oynLCQ|8wDV@r#TNdM*?*nFh~=X7XR0BF5(^6Bs_y;K@qraE}r>Th@MS+aTDY zIlKw$ZKfF`qJXoxIF|m*3Y!lvFnnwez$CN^6MqLjCJy(Blg)*R;xEyuRCOyVKP6ZMi1d1_ zmYDQ-v1SThkepv+6Q_h)@|&5RM}N}Ir4;`0-Bq-bKT72G;1q&k%@pF0O5VH94YBzI zY=5CUDT2c+A?v+0(~ANX3zkS$=Sb{Cb$jL9Qb#YOw{T|Un_y26!UmA9OOLtlHW#`^cX@UG}~k;)S3Z!uX(L_*l|iTzz`)=M(jR5buU*B%!0< z&6P?%ayHj`t2%IWH)Bub7T!$O0>w(a)PEpyGjg~3|F-{Ix-$Ew&BooZE-%Ay7)~1@ z2~W;$ue@>Vo}zZvsa{WvUouHqY5gJc9^PQjRfL=Ehm@Scc0j0%J$liN)3PNk5+s?B$pZ|+u%Rm33$BESJAIUiZDk3hH2?5J!4ekfT7 zM(7OwWcHsV0aE0WS*LZ%=fX_ug5;w} zdc8NZ%TkN?&Fma~w`*AkPe{hK)d>X2M?EI-^GG=`T6EHvc{@98DIGXJcnR8k%>d1MKKpaIQvXQJaxAvA%F=Y zLK1@Z`ku7j`U=7o&OQ^>wtu|*F)wZ2RoMK%k1>53W7p{%Av9?J-7N_AFXv)>($BO%G@nM zzBSn;1*HGX{w;-bBbQd59kG??4qD;8k$V3`@fSdQrY(k8+S6d^H#*wSxBstOUIN(N zqs6}F13G}{YS&0FOzj-KaL1oWLpW5Dr7Zskn5zy0{eP2l00000NkvXXu0mjfj-Dg5 delta 943 zcmV;g15o_Y48#YJBYyw}VoOIv0RI600RN!9r;`8x19?eAK~zYIy_H*N9Ay;8f9IP` zbJ5LgF4zk#s9+yVL8wZyn^dqU8f`7bo%G^^S`}Y>Q1C(UML|IjM7*IOD0rc9wiPeL z2hj$_Y&Jxq)@rRSqNG$>CD~1r*mU+gK4g>bPIk6i5dSYT=YRaq`Tpm8-^}@hdN9=A zm~fldOedUEbomQ)<%A%$$arpNhuGL#0(Sxim=o0}r&F01FIC9YByDWJ!1l7Z78QA+ zeeCY8|4hiuc~=3qRH398NZ+Lj#Uh!&7>upXiCMYjhwf`iG|u*0(H3iqpP%jh@N_vH z*-^fC@PxoO)qgl+?2&Rik==cz+cf*V3I_#w*Dm7DSy;}k1Za8>qx|OY>yi>NwF>W3X zE_CDF1aw!a^9r{uzGYb`p4+uiReXf2OTJAgpSI=Fi+@2~{=(((Ffdu-Tgz9oqC28? z#Hwvt7ILgj0S%#;Ro2QI>&CaY08FO*dEkc^RkaUg0ayXVprl2(JNdRP`a8Q)OQv<-dPnDWG-4dqjlifu_jR+BmA{XGUbk zTFy9@kAJ87{68vdE}?yF_l9E8?ghP3At|t~PLW^Z%5|mfjYRcX_kriQ>-9NA9&!$(Ar>rry!K)!MukZ=*TNUoO z!rQ=XL~e&5FS(;Xz7Aj%Rz(D!E@G}PB>lUr+B?Fe<2YLjN&kKky{C3#@=#kYy~Q}H zhkzi&o=0`>+2r8QQRzWYTnjMWlldq#3s=CZ^qQ%Ze^^A*2*0p+s1qV`TRxTfV!3+c z_J0+13ePOPmuBH`l#p8az4G%`1VO`rZZ&xk6;oEiF~trol05mW;`iKcDZ(JfKRqATI+4K%R(OQgrzX(N}pzqYMGtLhh4O zadR{rTS)n1z}S+VFFl=lgwDPB)3?nhyC|kmIuQbauZzOH3!D8v>&gFL@h>hvHs;U_ RZR!93002ovPDHLkV1lNp)tUeR diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png index 988d65546d214f44e32bf3eb57c39e732e0fbd89..142cd392d89a4a4edd1d2995bd7a0c847873db59 100644 GIT binary patch delta 1580 zcmV+{2GjYh2)qoCBYy@1Nkl?dLI3%f9Dwk3~ zB~KtK9zftAqzZ{8pgt534}B|cB?PHZCGvt)v8WFfLvG#T)_plKqkKW1)y0Z%-&b2n55vqs^C=%I5DGCeIk z@r3Qj`}KjZ;rd_ByQQ6#ps;f|Q>l!VcgS76W9%+e8P5(=^(zedeH5JRro{k$`SvOK z&PzX%o}NC5E-s3Fs}7!t-9sau=KL>3Upae<6H^X{Pk*NFN5=2{?a%Icggx0E?C{Hk z_yFk^`)+lOL^gI-qjlbG)cENe&)@_Z(zP~rW)(sgqQs<^meqWy{0MN0^9MSnYbNb> z==csGiA|**tuo)L%WQLzcN;aXH)_1sT;$sN9Pc$3m}@RE*Ic5Jws3JUzK8wKB6em4 zJO`{Qu78Mg?@-(9$nI->;q(=zG4A(YdCI%6d|7I(I`geM^=J*^CZtiI{-t>{1JifGQY-R+18>0g?SAa0NbN+~@yyPAXxMYIcCh@_q(0 zWd<{S9Sr;E3ySpmIZA$koEzdA7tgr-@Rgr)zJGp!Y}^BlxFhIhnyB80&?GYn{EkE5 zUYYtMju`F~6ve9L&6UgGc<6ErsRh?;@v4a4h#}H_0Q};tx~ZmEwOABXZ)Vtr_qz$O z`IOGO*jfQ&uRx)v@$&>jXsdXFx_v{ysW7U#wpiN2Dl4we*DM|NR zq8+qqS&y6i%t|7O;pTIHHIVQVWR!4S|wNL|D7{;0tX) z+=bRMIX6q_`nWjT+j|?RX8QR%7WG`Brh(XCJf$~dxqqa|J2{`pp;`OvWx|u=#DDI< z@z2rYW+(*(di^}*pg@0EVjwKhAC{;DMJi#5a!{lcqtUvPQ&{uKsG z@Yr8_Ir>1I?|%A*S*+ti_EnaS!k_LYt>nfZ**&3 z8`O5LVH|KmJTHqUhK3bBnpxxZdw>230UUod%j96hu5yB;s09@d9OX&5w014sovT{5 zw1RdTQIFPSp|#9HdzsnhBD2j!=38}Un@e18)R=27a(;P+z_Gl%{~zqjv~WFz6l@AA zn_f_pLuBx|&!>+~9x)TSQHFyu)u5k}lY^TLZri?;*p$z{_%NrhzQ&V#Ykxdiy-G6{ ze9_IIp+l?!sqplN@55<-6$vInzfdiC`RZV{uUIV(`QyD+#_~h#>=|M-9AHOKrs5XK zIT;1)s|y$OQ-As!!oexw z{Jd}os0}DnC#;C*?TVyqR6vz){AF+DH+wIJaZJ?<`BvKCoEYvi9wnc+!}R|L-{` zd6TyJu;;W*)3`KgnyeX}U(?Zb%ABCP5D~Q9g^Cv<>WvqIcaDhzQS?%VUX)=wWezO8 zE8Yy*l!4+t80&1MAZwbMHXlv%bv|;=<3+m6q^Xt_uk;Uxmw)rVywC6XKhOJ~1N^Uh z6x-GAFCMY+Hbl)H5{r-%amo`Hs zNMO(CFJGE#6-N5&OZ%B4K2xeb4MG&4sKUKN!P(wOaKPsXb@&nYhOyVvkBB<}F4z&D zISv4@7S};VBYz<7Q@#e_Au!OkAp7Luv53b%b@IX2`G6~c0apO+lB1=`w7QPZ=cln; zUIk?;u$BrnV50Bfv(Qac$tI&2WPy1vrLLjp z+_4?GX;9VLI!Ay=%-if$5*W)K>fVn}4!qs4V3LV~QEp7uGEl0j_%;7KPF~_E}0vQaKmEwOd7(s4b~iAj=p+i z_RZ?g={d@%>$IITQ>R2JMW?P$Q1@4l(KkQHWX_@avCKKBbPLmT6ZX2JdLPe@3=0+; z2VuY=IV1iyB@*oL-52WcBjoBssKbv?hkqY?JwZrwDk@aj6z>V%h^r`7x9X+3dTU7hUBv#NW}2Q?*6dn z$3$L8Mh>_OkDnWyclO$~m;elepb$dcb{sh=vvk{{z Sdw5j<0000i5?A`nHD>#V=p(!BRnzXbKAPEE$ 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 N002ovPDHLkV1flDL}dT~ delta 1622 zcmV-c2C4ai7Um3)BYyw}VoOIv0RI600RN!9r;`8x1{+C4K~z|U?U-$FlvfqUf9F1% zY?x@6h7MDiMl_L*feN-FHVe{jd67th^#yE^R;oDs6>L(qD-rjh!GU>DiM6MJ6 zQG^YloX{;+^)5s-EAfxcf3OW`t2(hif^g^7`S;cYxXtvGgBX6`(Ab$!PRW%sLZlGnz^ohx*a>WFQ zHokk(Gse7nTYQ( z$@hKW2>_#R3z)?~ZdNqPK`LjQ3^GkDUbG9OBY?3(RNfor*KXka)ZShP;NT)~6T)gm zL9r?ECx4gCZ@#thZ&4gi0=MWeN#++oA5dejU8%}qiXY+wMc|QD-SVrF0poqcIzu>- zQ~hXU%{7478!v6N&P=sP^V4NtIhOMO)?eyoJ1=L6^-T|l+#7-P6R&=L|Ryo7cl<#+s9sZGLyf#s)Mfjz);j^onnid17 zp#^Aq%%;w8cjVn=S9tZ z0DqpkwZQpIzm3Q17AkBT#dCwg3*~in;gB=qR~#?r`gPYBJE*>#bu=(Y1+uu76t| zh)|;-pa(|Vo{LnxCdw0l%NXv$xqEBo%t-+JIU2PpZZCtoc~{MvHGUS_$AfMop*xJ9VmlN}l3wZkA6e{0e{D_+i3Cx7f2lT4`w=}BKYj$$N+%JA(pep@yZ{tzD&CTt3R z(y}j_M4n8lnQ7G{-PU19x^%lnQVsr4E0<7ju${vUST!$S&6TH)MlQGpP!%_$nnTREn^Hp3aAY;>X<j`^vCj` zuQuOR)&$^;Dh_fq{J`vnHqUDRH=UZ9qWW-Vj5zW=D0av!A3&rah);Xmm4EEEZ@;1{ zt3lcr`3B7v-2%^rY;I-1e=a`*-3Ih2vf{#u*}orQ6_z5}psL#h{T*I-XHbIw0W#8` Unp7!anE(I)07*qoM6N<$f_Pvg761SM diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png index 2a2bfa89a3e128a2eb6fcb056d804eaae1abb01b..efef470421226a180cba57ee8cf064ff6407e3b5 100644 GIT binary patch delta 1372 zcmV-i1*7`^2kr`xBYy=oNkl*>U4L~ne-%`bdQOSf0!9@gh3I! zpr8mMTo;0%uI>dvT)9z1SK>|(1O?qFF8o=jxKwm;7b-4vA@^>^pUX@p$@Je$cTc(} zo&L)?RiBGGNq2Nq@PpzUs_MLNy>Hd`)e!(yLE!t<@tFxW>f1}g(VF7RYv$L!2_2?PKcsvHh0OoHI z1!V@0@(&l=yL8p4{djbDcFp8YB=_1gX3hP_2n7szf^8mf>C+Ro^lHujX08FU2n909 zY40-15pjBF`@o@o%(Q zgLVT3yJ&w0dflKXHwQC$WNsdojv>dc!+-r5%zqb%KKvFIOUf4?pjVO#SRxP@bB^kI z3Xq4TGPE1m=U;>QqY#h5IrRL`B>%bxl7#5p&yibh4+`@~V9>{ZRYsOeaI_e(E}X+8 ztcMgsF+33Rpjd|8J+!_F-h+u?CJzfsVcZxfT?_LIFq;Qew6O)f0W6fj*nm~r zB!3yQaX{o97qnghyakZbDmny4{Q&A6sD@_j;l9L$YB}nogYaz{mPUn0xj?7_N-R|3 zMs-YoR{*870twLFPIE>=vo<`9nY`~;!JTfX?&XzmCPxE_81p|HE5}A-qk7>7sWC^JON`LJ< z8gm|iCK4U^-)Eg#N>o^Y`P@X2n8Vg-dKjh`(P_h+o#aq$6W?e3z;()@9=kDH;fP~7 zQh>$fV8x;WT6E4IYqsR>lf6=A%BPN{|3K*i_nI)blVNKF9nZ_Wwh6Yy)g&LV*fyq zb0HOq%b~A(89L2wHm07!s}WFDFV`bO?RBcO>HsR`RT%6-e}{uG7Wpj^z@QiAhN_^n zYS8P}fh&_e0(e{u81%B+qE!v|=+ZG5?xFo&n5h~HsF*-zCq&xs!Ek^S(^VYmG`((* ztAcU*au7516XLPhPk7@cVW*?qdWX^{TnpZX;wmy#8NyE+-iJB6z^$j1WY6*D%f@>1 eJ^()j-+u*FwSsdloMk2e0000sXPJAeN(=gtVb2u%^A#OpXr zP~seLLyoYp8;$1Tilg^=Nhj#iB$ss*)lo8)^ACED-d1#E2Z-TMKE*NsdvVDvZFKiPVhwcC;NNgkq;=1iEj#-@7{HHW(ZfzcqJ=qlG`K43#E7PV)!~c#>z@bf4`-0Pv;6NOm(Pg3ZQ3N@p znCC3=j71U(9ZiHcL1zU`8SF0xoi3L`(5aAiaGlYMN(N&_zKfE62P*J`6Dz28et! zio_H7Af(O_fOn$(j(aC}1~j)Qa#8C=cfTjnn@$H0CLS% zs#-efNkFY5CsKxm96c;21(2C!%XeFFG|Z|l%;c($wDujj^&nkYLVBvDoAla83iCUH zDvQTZEtjLP4#h&)QLuE@LOuu8(#=gx)okJBAU4*!4{Vq&~_3%iE<-|rdtMCNNHvg_U?nWj&SGIHbd?q7zf#Z zfO5B*y3N`Y6!pAY_VbT7^uavR(;MDP5f^cSj+UW24*4ARv#Z6DZ@z9BB==ah>ExwS z|7lMPYq0cJ2vq0D_bFXE>)Fxaw>w4(nPY~UjV7z%^|^f_az%}KMUJ11$jZw={KsrZwOu)dSV YKQIZNka7`NO8@`>07*qoM6N<$f|FwCPXGV_ diff --git a/wolfskin-design/tokens.css b/wolfskin-design/tokens.css index 694336d8..7aba6641 100644 --- a/wolfskin-design/tokens.css +++ b/wolfskin-design/tokens.css @@ -130,6 +130,15 @@ --requests-sheetPaddingY: 80.0px; --requests-sheetPaddingX: 64.0px; --requests-sheetGap: 18.0px; + --requests-sheetTitleLineHeight: 56.0px; + --requests-sheetTitleBaseline: 44.0px; + --requests-titleLineHeight: 39.0px; + --requests-titleBaseline: 31.0px; + --requests-factsLineHeight: 31.2px; + --requests-factsBaseline: 24.0px; + --requests-stageLineHeight: 39.6px; + --requests-stageLabelLineHeight: 33.8px; + --requests-stageBaseline: 24.0px; --requests-emptyMargin: 20.0px; --requests-rowPaddingY: 14.0px; --requests-rowPaddingX: 18.0px; @@ -137,7 +146,8 @@ --requests-listGap: 6.0px; --requests-stageMargin: 4.0px; --requests-stageGlyph: 28.0px; - --requests-stageGap: 8.0px; + --requests-stageGap: 10.0px; + --requests-readinessItemGap: 8.0px; --requests-readinessGapX: 22.0px; --requests-readinessGapY: 10.0px; --requests-readinessMargin: 8.0px; diff --git a/wolfskin-design/tokens.sha256 b/wolfskin-design/tokens.sha256 index 17919f8b..9143d9ac 100644 --- a/wolfskin-design/tokens.sha256 +++ b/wolfskin-design/tokens.sha256 @@ -1,5 +1,5 @@ 1438f7ca4a2b6f951c9e643ab0afacbf2f7fc98e57905295d518c6225e054de4 generate_tokens.py -dafb97c1d26ce435dc4b28b57cc02475a13901191824568c39e88e0474acf86f shell-tokens.json -673d4ece482b480c88acb085438f1e03d979bfa9c85a960c69a5543987e42c9f src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt -16318b38182d7248402c4c448ead5444644eb59a7fd5b63c4e845ffee0085b4a tokens.css +61568cdb87c1b64984033e6d66b06c4aee1870580fb5640ed4a1a97100451c0a shell-tokens.json +cddf8798e731206e1adf1e66384ffcb1b679b27e2ee9f33fd128a04850fd829f src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt +60ac4a0fff7d7965a9c4fa25d71a10cb304c3e636031ccf036a33459571e04fe tokens.css 5b939f1f3eb90b428008fda75720f6e3a4e844c486668931db3d52bffb987b53 tokens.json -- 2.49.1 From b8d5d8a12438343c459bbf6b61df098c61c3ef2a Mon Sep 17 00:00:00 2001 From: justinzeus Date: Thu, 5 Nov 2026 19:10:25 +0100 Subject: [PATCH 3/4] Preserve contained rating marks inside dark chips --- docker/README.md | 6 +++--- wolfskin-design/generate_request_marks.py | 6 +----- wolfskin-design/request-marks.sha256 | 12 ++++++------ .../wolfskin/design/ComingInRatings.kt | 2 +- .../drawable-nodpi/coming_in_rating_fresh.png | Bin 1129 -> 804 bytes .../drawable-nodpi/coming_in_rating_imdb.png | Bin 1305 -> 813 bytes .../coming_in_rating_rotten.png | Bin 1617 -> 964 bytes .../coming_in_rating_spilled.png | Bin 1596 -> 1068 bytes .../drawable-nodpi/coming_in_rating_tmdb.png | Bin 2818 -> 1638 bytes .../coming_in_rating_upright.png | Bin 1390 -> 1023 bytes 10 files changed, 11 insertions(+), 15 deletions(-) diff --git a/docker/README.md b/docker/README.md index cafc24bc..a871b354 100644 --- a/docker/README.md +++ b/docker/README.md @@ -165,12 +165,12 @@ used. Native comparisons must report those structural differences explicitly. The six rating marks retain the exact locked SVG source in `wolfskin-design/request-marks/`; native-size PNGs and their hashes are generated -from the JSON dimensions with the locked cover crop. Inside Coming-in rows they -retain the prototype's dark `surface3` chips with 12-pixel rounded corners. +from the JSON dimensions with the locked contain fit (`.rr .rb` outranks `.crow img`). +Inside Coming-in rows they retain the prototype's dark `surface3` chips with 12-pixel rounded corners. Loaded poster thumbnails have no placeholder fill beneath their clipped edge. ```sh -uv run --with cairosvg==2.9.1 --with pillow==13.0.0 python wolfskin-design/generate_request_marks.py +uv run --with cairosvg==2.9.1 python wolfskin-design/generate_request_marks.py ``` `RequestsCaptureTest` writes `st-081`…`st-086`, `st-088` and `st-111` at 1920×1080, diff --git a/wolfskin-design/generate_request_marks.py b/wolfskin-design/generate_request_marks.py index c0297cef..bba6a960 100755 --- a/wolfskin-design/generate_request_marks.py +++ b/wolfskin-design/generate_request_marks.py @@ -1,11 +1,9 @@ #!/usr/bin/env python3 """Rasterize locked prototype rating marks at the Coming-in row's native pixel size.""" from pathlib import Path -from io import BytesIO import hashlib import json import cairosvg -from PIL import Image, ImageOps ROOT = Path(__file__).resolve().parent SOURCE = ROOT / "request-marks" @@ -23,9 +21,7 @@ def main() -> None: for source in sorted(SOURCE.glob("*.svg")): target = OUTPUT / f"coming_in_rating_{source.stem}.png" width = round(height * wordmark_ratio) if source.stem in ("imdb", "tmdb") else height - source_pixels = cairosvg.svg2png(url=str(source), output_height=height * 4) - with Image.open(BytesIO(source_pixels)) as image: - ImageOps.fit(image, (width, height), method=Image.Resampling.LANCZOS).save(target) + cairosvg.svg2png(url=str(source), write_to=str(target), output_width=width, output_height=height) for path in (source, target): manifest.append(f"{hashlib.sha256(path.read_bytes()).hexdigest()} {path.relative_to(ROOT)}") (ROOT / "request-marks.sha256").write_text("\n".join(manifest) + "\n") diff --git a/wolfskin-design/request-marks.sha256 b/wolfskin-design/request-marks.sha256 index f778a68f..c29ddefc 100644 --- a/wolfskin-design/request-marks.sha256 +++ b/wolfskin-design/request-marks.sha256 @@ -1,12 +1,12 @@ 01aa8a3c3e9db48f0e1c6af25056940986784315bf66f48a8120a7317bf6d75a request-marks/fresh.svg -e61333be2c5a028adcc1052a24add31ed34001af8cfdf1d180358faffafc35f4 src/main/res/drawable-nodpi/coming_in_rating_fresh.png +743b6139dc12019d0940568869065722593f44ce416a7e9c7b8d9ef92942bb3f src/main/res/drawable-nodpi/coming_in_rating_fresh.png 27f93b15a075b015e2448eca7949f7a3da03c37fbf26cecf6df3bdab45fda993 request-marks/imdb.svg -72c167c7d0ed23f998e47010be0bbf180790431bd0add0b525f8a5928f44dfd5 src/main/res/drawable-nodpi/coming_in_rating_imdb.png +a738afd57519b1b4a38192927b48bd45755ce75e4673c6b12b9b3e0c2e388372 src/main/res/drawable-nodpi/coming_in_rating_imdb.png 510d0f9fb77d72190ebf03208f04215a4e86f71e165488518ac75aa49cf4a79d request-marks/rotten.svg -e3e0a434eaaf5c9390fec821807e34ad6bf656a05520039219dbaaea68d03924 src/main/res/drawable-nodpi/coming_in_rating_rotten.png +0aade711ba57b6b201c7395ece97108df928b6076d8120404cdf4155a4242632 src/main/res/drawable-nodpi/coming_in_rating_rotten.png b8dcf4d27eba2446380980c96d82b1f64aa6859fa2ea1cdab867f849f9fec4fd request-marks/spilled.svg -3d509c58f80ef773f7d909bf57953d835cfddb0565896c79bf25698146e90099 src/main/res/drawable-nodpi/coming_in_rating_spilled.png +fa4f50258009cd1d16f0d0f5a3c216dc88a57409b1bccc379512ae914cc9d714 src/main/res/drawable-nodpi/coming_in_rating_spilled.png d537fb228cf3ded904ef09b136fe3fec72548ebc1fea3fbbd1ad9e36364db38b request-marks/tmdb.svg -a1d49d5dba29e25738e06dd6d97a32f4d357dc0cf66e1acca00f30287883dd32 src/main/res/drawable-nodpi/coming_in_rating_tmdb.png +8e1cb507f876f324bb5c53bf4e60775712f1fdddbffe94fd249e6e74099e045e src/main/res/drawable-nodpi/coming_in_rating_tmdb.png 2ad511c7a101a7f2f8810434911df8c13cc126fa691272242037237172600bc3 request-marks/upright.svg -3d9d745d878a5f6976a31f23c58be7d0ea037353e4a2c6d037861469a716a486 src/main/res/drawable-nodpi/coming_in_rating_upright.png +6ff8a05501bc1c15b96c0130271c41baaa2ddb74f64916f58b9e7f918931d789 src/main/res/drawable-nodpi/coming_in_rating_upright.png diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt index d4a8acd3..3f2b0da1 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInRatings.kt @@ -41,7 +41,7 @@ fun ComingInRatings(ratings: List, color: Color) { Image(painterResource(mark), contentDescription = rating.mark, modifier = Modifier.height(T.readinessGlyph).width(T.readinessGlyph * if (wide) T.ratingsWordmarkRatio else 1f) .clip(ratingMarkShape).background(WolfskinTokens.Color.surface3), - contentScale = ContentScale.Crop) + contentScale = ContentScale.Fit) Text(formatComingInRating(rating), style = ComingInTypography.rating, color = color) } } diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_fresh.png index c5e313dba2e2a17a4f2f4b64b11e4ebed17e9b57..ef0a98a62277a71d5d68e73f9bdad141670bf2fa 100644 GIT binary patch delta 782 zcmV+p1M&Rn2&4v(BYyw}VoOIv0RI600RN!9r;`8x0@+DKK~zYIwUkY0TvZguf9Jk= z@6BXLE5#TB0TYW^m}Hv7Kq(@&E()b?M6xP~C|IG;2wk~qOIPY5GKe+^g$6-%X=!as zTag59E0bW1w&E5QQ z=c*`Had)VDm$8Mjpu-m4;TXo*lG=|EEhJ(WIGD+86l5yy&e@E>O^`QvKlOw>mb#>d zFBLswg4}x>g#gGJiy}_C`!%a_zzB_2`9t6(;1mwQhIi2Y|Po# zuGwh+TkZbSUw15=KmIdXIiqx{Rjj53dAVq63GzCVh{_+{T(62(8_gdWFV0Vrptpq=xW}Y)6-dFUW^=ZlYe<@U;lNUBUATG+rV}J`u_?U zJ-5ogtVFr1#_skr*_%aMslD}+simx+Xvquif+sZO)%XSFN=pL(PcG*8@ao;F5C9dL zQFB4NxAw@7bF-^5iu&T80tf!tOEqV5#<$%!3Flz0m5=@O#v89kp#Ba3j}lk7?N9j%6&yOlIrsC z8nW{ttexaqNrZU-BN-k5)u-@(OQ+!9P8+Qs$XqRf6#cwTltoX1^Cgf!9-RYj)S4oy z!w*YSnj@>CZv(c5oEvT-I$B(meuH=>x+toLsDDid-m=O*nPh1V2*8_&P6Dq2!6QJv z@?vg(Vj{e~(pYv-qi4NtwdP|Hp4)JE;Wt%%*B_5Qk}@S&_eW5WsL$Uka1dlKkSueo zpzy5`M%*wQk)Oz}e~%4FJMnUE@)x_wwN|+eNjE3U)GePxG z5*P$QJ;;a;5%?gHCPw(&I7AddKU5f*g%5=fLO(AR2#OIsHO@FTgQSUxC~BED=Dp{f zefH|%-qCT!8B=DxZP;sl>wgK8Ne>E3y_@5nE>bzh$lwWjiGP#+zm53G0Q3%Lysv9* zUiDi!Tia#5yvRqZ9uSI`FcK?tFY`MN1F(Ky1Z*mh+~VC(*u7*Xms`tH%03a3r=rMn zitVA*FT{YWVMlyru=j?8YdpP&iphXCK!zX~@2qNswVPcBqIt1X|74y~E=QtJZlejxNmHl5yf;?P{j)W0z}SM&5mZbIbASm*;T3$- zXS3K+FLdQU87r>kJaqQjPn(AS-dOEVPgplj_EAiTsDE>N=ZwK6x|YD}lw>&p2$9tn z>l~e3CMw*MM&9bX$gx=oYOv~3okuRzto=%E z(TY=752P)A;a`!wEsuWdub1T6)Bmz~-6CqOB_97{gde{-)d+pmPbZ{KC{&PWMItz- zP|t01b$=lJcogOhkY1uKJ8~~h%W27lONsi{Jj%?GjL$mTsLk*^cIGNOe?Cu^D4AEZ zSvJ8?10M~*1tZ1+D|^{l>nfj+ed&Jd#z_z8jxH*xRgRRMw5P#hVy3wYW^i~;g{Z=# z7izd@q+XCICkD(Y5{C-~CresiP9HS^$hxXqOMi|J(%gawjVPN+NiZ-YD=ASxZvzi7V=+oJL0EQr0aYcsjzlRJ%{jSCv$vGydYIidyV|B=Hj~DFx?A6;6f;ycdNq*| z41cj{js}|TFIKC>$`zFuPG&~tL2P=XGHKM}3`ehA)+Eo51HXHn=JXj65sSz#0;V!d z7R|mxMXr3#w9#$dC_}isT7UVf`K=6iHQL8MuqtSfm{ z(bt@lSrkTU#7P=Oyf*F+28Ho`DB||YKsJ2q3p)lz0~l)$mmf^v7*dL>PTIx@K02mLM0J^R}=A$j8H7{3Iqq0(BTo92K#8N}fIf+9lzQ48a+PU$L bj<@+A4DJlD?jz^000000NkvXXu0mjfI4ld> diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_imdb.png index cae1112e92408a98efcf16a85614eb6b5f37d7dd..bb7becf5ce94cab179e860b1c7028fdc1e69ec5d 100644 GIT binary patch delta 791 zcmV+y1L*vj3ati^BYyw}VoOIv0RI600RN!9r;`8x0^&(TK~z|U)t5_XQ$ZAlzllkj zG_=;*hkc2O6>6!~Me%_O3W6I&Tq(Hmy-^o};6m%l?p)T5pr{CL1vf6Vl!}z9t)kFP zAJ_+0+iF|W+@wvDaWT2vBsZZqH(=}!!^}Bz&Y3@R&zzaS8h?h+-qS#gP9!abCSw_b zK>^pC#CQT6MiiP+P6$ZJdZG2Q47du-#s;K=wMiU6I5TONqVQ+YkV|}^g<)(e)vmS@ zsyD*OWU4(tlON`T@MBiVE+_cBP~?W13J^(Y+A{#N^J-k`gClz^(${*C>Frqu5{%Y) z6ZxP$RR_qcr+<|F?iTZ0-&5qR3uZkaeO~0*`Z zqmwY4_+mjVv)$k*JbwjqLD;_&P9IG@BRXu6cQ_y(hkunAboVC$tyA)9C~_O)#gKV^ z@+TZT58)*xKY9U?B{+8?1CQLPLq!>Q5+q*tsebdO+~Y)7%(~?$TtAbl>lw)GZ;QOc z0seY5e)n1RfqFZU%&4t`+m}?y)S-U`6A!zKY)z2WBC7Y-*^QJ6{fl}%hAy7vOxYqY zNUa(G{(o9Kk@AD>oo`G_6RSIKu`pSJ{j^Ej`G7_8;fOIV_L}GQvKx=D9?SmDCz1EK zp{8-DV zGjk9)rb?!c`V4lE$Ic63!APu002ovPDHLkV1l}0f64#= delta 1286 zcmV+h1^N1|2AK+wBYy z_xJmahc}b?{eHWf&DK*M{Fs?HGjG1{&71e$u3A1z9LFf7P=BlwGGMgE=qOrWzyTDf zBu0f=uMM~{vI}DcsN7us0M%qp(ekjo4AlmeQm8P`OmafB5q4pf)zWB}hBg%7`k_V$ixY8;S_J=0 z!sIQ_Pk&NhdY@9#zVaNLJSP2mUHI2-0<|n)W1zPiQ~{=Dp}GV;y>`uN;MYRhUg5L(t0~`_~sWSbf=mB8$7_a zF@I?t(1Cs!?6>ts`>H?I;M~>ZBBTZhf&JC>&0wM{jpZ zrt{Kb-H?BU?pkh)v@fVTA^4vJHCI#B9Nrw~XK51(8YsuYQvuG9?L!y)qnXR%~ wGk%`8>YDpZy{+&VgV8~d`6FOmkO0U02jk1&f>;aK-2eap07*qoM6N<$f_>zENdN!< diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_rotten.png index c6630d2261b84ac668e17b8826a9a1a73a952a1a..678af063aa53629f210f93f8d557cfaac66ec27a 100644 GIT binary patch delta 943 zcmV;g15o_Y48#YJBYyw}VoOIv0RI600RN!9r;`8x19?eAK~zYIy_H*N9Ay;8f9IP` zbJ5LgF4zk#s9+yVL8wZyn^dqU8f`7bo%G^^S`}Y>Q1C(UML|IjM7*IOD0rc9wiPeL z2hj$_Y&Jxq)@rRSqNG$>CD~1r*mU+gK4g>bPIk6i5dSYT=YRaq`Tpm8-^}@hdN9=A zm~fldOedUEbomQ)<%A%$$arpNhuGL#0(Sxim=o0}r&F01FIC9YByDWJ!1l7Z78QA+ zeeCY8|4hiuc~=3qRH398NZ+Lj#Uh!&7>upXiCMYjhwf`iG|u*0(H3iqpP%jh@N_vH z*-^fC@PxoO)qgl+?2&Rik==cz+cf*V3I_#w*Dm7DSy;}k1Za8>qx|OY>yi>NwF>W3X zE_CDF1aw!a^9r{uzGYb`p4+uiReXf2OTJAgpSI=Fi+@2~{=(((Ffdu-Tgz9oqC28? z#Hwvt7ILgj0S%#;Ro2QI>&CaY08FO*dEkc^RkaUg0ayXVprl2(JNdRP`a8Q)OQv<-dPnDWG-4dqjlifu_jR+BmA{XGUbk zTFy9@kAJ87{68vdE}?yF_l9E8?ghP3At|t~PLW^Z%5|mfjYRcX_kriQ>-9NA9&!$(Ar>rry!K)!MukZ=*TNUoO z!rQ=XL~e&5FS(;Xz7Aj%Rz(D!E@G}PB>lUr+B?Fe<2YLjN&kKky{C3#@=#kYy~Q}H zhkzi&o=0`>+2r8QQRzWYTnjMWlldq#3s=CZ^qQ%Ze^^A*2*0p+s1qV`TRxTfV!3+c z_J0+13ePOPmuBH`l#p8az4G%`1VO`rZZ&xk6;oEiF~trol05mW;`iKcDZ(JfKRqATI+4K%R(OQgrzX(N}pzqYMGtLhh4O zadR{rTS)n1z}S+VFFl=lgwDPB)3?nhyC|kmIuQbauZzOH3!D8v>&gFL@h>hvHs;U_ RZR!93002ovPDHLkV1lNp)tUeR delta 1601 zcmV-H2EO^k2hj|WBYy@MNkl|!F*fM2I z1Q9<(q$xE5LVwieFGjH7RKL{TdtDYl%H=?raGQ?VQXpZpbGxDIZDPu05gd>%vPCcy zV|v+|l*5Ygee1L@dKT<{5;?gdgcmLkRO($V<+h@Z4f@Zt?#OK-G>W(xU;Fj*U$X@BM)XZ#B-4wcP!K~|hS_@Kiw z)90_f%kZ(rCq|l|*!!5y#=n(bzt?I>B01+nJ-IY>SuSD-hX|bA99c6ttUZ}EHq~qb zo_dn#>fCT)y7s+lx%@kZ2EDF2QM|8kZse3xPUGZw;cIK(FPzvvgkbYKU%NiN_0@e= zOJ0(k_kXB>%D?%bVvIkPWy3}3Yu&$1d;KPxjZ=gy?RGoj5P)3(Ox|M}lwa%W+;(du ziPh6oynLCQ|8wDV@r#TNdM*?*nFh~=X7XR0BF5(^6Bs_y;K@qraE}r>Th@MS+aTDY zIlKw$ZKfF`qJXoxIF|m*3Y!lvFnnwez$CN^6MqLjCJy(Blg)*R;xEyuRCOyVKP6ZMi1d1_ zmYDQ-v1SThkepv+6Q_h)@|&5RM}N}Ir4;`0-Bq-bKT72G;1q&k%@pF0O5VH94YBzI zY=5CUDT2c+A?v+0(~ANX3zkS$=Sb{Cb$jL9Qb#YOw{T|Un_y26!UmA9OOLtlHW#`^cX@UG}~k;)S3Z!uX(L_*l|iTzz`)=M(jR5buU*B%!0< z&6P?%ayHj`t2%IWH)Bub7T!$O0>w(a)PEpyGjg~3|F-{Ix-$Ew&BooZE-%Ay7)~1@ z2~W;$ue@>Vo}zZvsa{WvUouHqY5gJc9^PQjRfL=Ehm@Scc0j0%J$liN)3PNk5+s?B$pZ|+u%Rm33$BESJAIUiZDk3hH2?5J!4ekfT7 zM(7OwWcHsV0aE0WS*LZ%=fX_ug5;w} zdc8NZ%TkN?&Fma~w`*AkPe{hK)d>X2M?EI-^GG=`T6EHvc{@98DIGXJcnR8k%>d1MKKpaIQvXQJaxAvA%F=Y zLK1@Z`ku7j`U=7o&OQ^>wtu|*F)wZ2RoMK%k1>53W7p{%Av9?J-7N_AFXv)>($BO%G@nM zzBSn;1*HGX{w;-bBbQd59kG??4qD;8k$V3`@fSdQrY(k8+S6d^H#*wSxBstOUIN(N zqs6}F13G}{YS&0FOzj-KaL1oWLpW5Dr7Zskn5zy0{eP2l00000NkvXXu0mjfj-Dg5 diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_spilled.png index 142cd392d89a4a4edd1d2995bd7a0c847873db59..988d65546d214f44e32bf3eb57c39e732e0fbd89 100644 GIT binary patch delta 1048 zcmV+z1n2v_46F!{BYyw}VoOIv0RI600RN!9r;`8x1K~+TK~zYI?Uh||L-{` zd6TyJu;;W*)3`KgnyeX}U(?Zb%ABCP5D~Q9g^Cv<>WvqIcaDhzQS?%VUX)=wWezO8 zE8Yy*l!4+t80&1MAZwbMHXlv%bv|;=<3+m6q^Xt_uk;Uxmw)rVywC6XKhOJ~1N^Uh z6x-GAFCMY+Hbl)H5{r-%amo`Hs zNMO(CFJGE#6-N5&OZ%B4K2xeb4MG&4sKUKN!P(wOaKPsXb@&nYhOyVvkBB<}F4z&D zISv4@7S};VBYz<7Q@#e_Au!OkAp7Luv53b%b@IX2`G6~c0apO+lB1=`w7QPZ=cln; zUIk?;u$BrnV50Bfv(Qac$tI&2WPy1vrLLjp z+_4?GX;9VLI!Ay=%-if$5*W)K>fVn}4!qs4V3LV~QEp7uGEl0j_%;7KPF~_E}0vQaKmEwOd7(s4b~iAj=p+i z_RZ?g={d@%>$IITQ>R2JMW?P$Q1@4l(KkQHWX_@avCKKBbPLmT6ZX2JdLPe@3=0+; z2VuY=IV1iyB@*oL-52WcBjoBssKbv?hkqY?JwZrwDk@aj6z>V%h^r`7x9X+3dTU7hUBv#NW}2Q?*6dn z$3$L8Mh>_OkDnWyclO$~m;elepb$dcb{sh=vvk{{z Sdw5j<0000?dLI3%f9Dwk3~ zB~KtK9zftAqzZ{8pgt534}B|cB?PHZCGvt)v8WFfLvG#T)_plKqkKW1)y0Z%-&b2n55vqs^C=%I5DGCeIk z@r3Qj`}KjZ;rd_ByQQ6#ps;f|Q>l!VcgS76W9%+e8P5(=^(zedeH5JRro{k$`SvOK z&PzX%o}NC5E-s3Fs}7!t-9sau=KL>3Upae<6H^X{Pk*NFN5=2{?a%Icggx0E?C{Hk z_yFk^`)+lOL^gI-qjlbG)cENe&)@_Z(zP~rW)(sgqQs<^meqWy{0MN0^9MSnYbNb> z==csGiA|**tuo)L%WQLzcN;aXH)_1sT;$sN9Pc$3m}@RE*Ic5Jws3JUzK8wKB6em4 zJO`{Qu78Mg?@-(9$nI->;q(=zG4A(YdCI%6d|7I(I`geM^=J*^CZtiI{-t>{1JifGQY-R+18>0g?SAa0NbN+~@yyPAXxMYIcCh@_q(0 zWd<{S9Sr;E3ySpmIZA$koEzdA7tgr-@Rgr)zJGp!Y}^BlxFhIhnyB80&?GYn{EkE5 zUYYtMju`F~6ve9L&6UgGc<6ErsRh?;@v4a4h#}H_0Q};tx~ZmEwOABXZ)Vtr_qz$O z`IOGO*jfQ&uRx)v@$&>jXsdXFx_v{ysW7U#wpiN2Dl4we*DM|NR zq8+qqS&y6i%t|7O;pTIHHIVQVWR!4S|wNL|D7{;0tX) z+=bRMIX6q_`nWjT+j|?RX8QR%7WG`Brh(XCJf$~dxqqa|J2{`pp;`OvWx|u=#DDI< z@z2rYW+(*(di^}*pg@0EVjwKhAC{;DMJi#5a!{lcqtUvPQ&{uKsG z@Yr8_Ir>1I?|%A*S*+ti_EnaS!k_LYt>nfZ**&3 z8`O5LVH|KmJTHqUhK3bBnpxxZdw>230UUod%j96hu5yB;s09@d9OX&5w014sovT{5 zw1RdTQIFPSp|#9HdzsnhBD2j!=38}Un@e18)R=27a(;P+z_Gl%{~zqjv~WFz6l@AA zn_f_pLuBx|&!>+~9x)TSQHFyu)u5k}lY^TLZri?;*p$z{_%NrhzQ&V#Ykxdiy-G6{ ze9_IIp+l?!sqplN@55<-6$vInzfdiC`RZV{uUIV(`QyD+#_~h#>=|M-9AHOKrs5XK zIT;1)s|y$OQ-As!!oexw z{Jd}os0}DnC#;C*?TVyqR6vz){AF+DH+wIJaZJ?<`BvKCoEYvi9wnc+!}RDs6>L(qD-rjh!GU>DiM6MJ6 zQG^YloX{;+^)5s-EAfxcf3OW`t2(hif^g^7`S;cYxXtvGgBX6`(Ab$!PRW%sLZlGnz^ohx*a>WFQ zHokk(Gse7nTYQ( z$@hKW2>_#R3z)?~ZdNqPK`LjQ3^GkDUbG9OBY?3(RNfor*KXka)ZShP;NT)~6T)gm zL9r?ECx4gCZ@#thZ&4gi0=MWeN#++oA5dejU8%}qiXY+wMc|QD-SVrF0poqcIzu>- zQ~hXU%{7478!v6N&P=sP^V4NtIhOMO)?eyoJ1=L6^-T|l+#7-P6R&=L|Ryo7cl<#+s9sZGLyf#s)Mfjz);j^onnid17 zp#^Aq%%;w8cjVn=S9tZ z0DqpkwZQpIzm3Q17AkBT#dCwg3*~in;gB=qR~#?r`gPYBJE*>#bu=(Y1+uu76t| zh)|;-pa(|Vo{LnxCdw0l%NXv$xqEBo%t-+JIU2PpZZCtoc~{MvHGUS_$AfMop*xJ9VmlN}l3wZkA6e{0e{D_+i3Cx7f2lT4`w=}BKYj$$N+%JA(pep@yZ{tzD&CTt3R z(y}j_M4n8lnQ7G{-PU19x^%lnQVsr4E0<7ju${vUST!$S&6TH)MlQGpP!%_$nnTREn^Hp3aAY;>X<j`^vCj` zuQuOR)&$^;Dh_fq{J`vnHqUDRH=UZ9qWW-Vj5zW=D0av!A3&rah);Xmm4EEEZ@;1{ zt3lcr`3B7v-2%^rY;I-1e=a`*-3Ih2vf{#u*}orQ6_z5}psL#h{T*I-XHbIw0W#8` Unp7!anE(I)07*qoM6N<$f_Pvg761SM delta 2811 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 N002ovPDHLkV1flDL}dT~ diff --git a/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png b/wolfskin-design/src/main/res/drawable-nodpi/coming_in_rating_upright.png index efef470421226a180cba57ee8cf064ff6407e3b5..2a2bfa89a3e128a2eb6fcb056d804eaae1abb01b 100644 GIT binary patch delta 1002 zcmVsXPJAeN(=gtVb2u%^A#OpXr zP~seLLyoYp8;$1Tilg^=Nhj#iB$ss*)lo8)^ACED-d1#E2Z-TMKE*NsdvVDvZFKiPVhwcC;NNgkq;=1iEj#-@7{HHW(ZfzcqJ=qlG`K43#E7PV)!~c#>z@bf4`-0Pv;6NOm(Pg3ZQ3N@p znCC3=j71U(9ZiHcL1zU`8SF0xoi3L`(5aAiaGlYMN(N&_zKfE62P*J`6Dz28et! zio_H7Af(O_fOn$(j(aC}1~j)Qa#8C=cfTjnn@$H0CLS% zs#-efNkFY5CsKxm96c;21(2C!%XeFFG|Z|l%;c($wDujj^&nkYLVBvDoAla83iCUH zDvQTZEtjLP4#h&)QLuE@LOuu8(#=gx)okJBAU4*!4{Vq&~_3%iE<-|rdtMCNNHvg_U?nWj&SGIHbd?q7zf#Z zfO5B*y3N`Y6!pAY_VbT7^uavR(;MDP5f^cSj+UW24*4ARv#Z6DZ@z9BB==ah>ExwS z|7lMPYq0cJ2vq0D_bFXE>)Fxaw>w4(nPY~UjV7z%^|^f_az%}KMUJ11$jZw={KsrZwOu)dSV YKQIZNka7`NO8@`>07*qoM6N<$f|FwCPXGV_ delta 1372 zcmV-i1*7`^2kr`xBYy=oNkl*>U4L~ne-%`bdQOSf0!9@gh3I! zpr8mMTo;0%uI>dvT)9z1SK>|(1O?qFF8o=jxKwm;7b-4vA@^>^pUX@p$@Je$cTc(} zo&L)?RiBGGNq2Nq@PpzUs_MLNy>Hd`)e!(yLE!t<@tFxW>f1}g(VF7RYv$L!2_2?PKcsvHh0OoHI z1!V@0@(&l=yL8p4{djbDcFp8YB=_1gX3hP_2n7szf^8mf>C+Ro^lHujX08FU2n909 zY40-15pjBF`@o@o%(Q zgLVT3yJ&w0dflKXHwQC$WNsdojv>dc!+-r5%zqb%KKvFIOUf4?pjVO#SRxP@bB^kI z3Xq4TGPE1m=U;>QqY#h5IrRL`B>%bxl7#5p&yibh4+`@~V9>{ZRYsOeaI_e(E}X+8 ztcMgsF+33Rpjd|8J+!_F-h+u?CJzfsVcZxfT?_LIFq;Qew6O)f0W6fj*nm~r zB!3yQaX{o97qnghyakZbDmny4{Q&A6sD@_j;l9L$YB}nogYaz{mPUn0xj?7_N-R|3 zMs-YoR{*870twLFPIE>=vo<`9nY`~;!JTfX?&XzmCPxE_81p|HE5}A-qk7>7sWC^JON`LJ< z8gm|iCK4U^-)Eg#N>o^Y`P@X2n8Vg-dKjh`(P_h+o#aq$6W?e3z;()@9=kDH;fP~7 zQh>$fV8x;WT6E4IYqsR>lf6=A%BPN{|3K*i_nI)blVNKF9nZ_Wwh6Yy)g&LV*fyq zb0HOq%b~A(89L2wHm07!s}WFDFV`bO?RBcO>HsR`RT%6-e}{uG7Wpj^z@QiAhN_^n zYS8P}fh&_e0(e{u81%B+qE!v|=+ZG5?xFo&n5h~HsF*-zCq&xs!Ek^S(^VYmG`((* ztAcU*au7516XLPhPk7@cVW*?qdWX^{TnpZX;wmy#8NyE+-iJB6z^$j1WY6*D%f@>1 eJ^()j-+u*FwSsdloMk2e0000 Date: Thu, 5 Nov 2026 19:53:32 +0100 Subject: [PATCH 4/4] Align readiness glyphs to inline text baselines --- docker/README.md | 3 +++ wolfskin-design/shell-tokens.json | 1 - .../java/org/justinvisser/wolfskin/design/ComingInSheet.kt | 6 +++--- .../java/org/justinvisser/wolfskin/design/WolfskinTokens.kt | 1 - wolfskin-design/tokens.css | 1 - wolfskin-design/tokens.sha256 | 6 +++--- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docker/README.md b/docker/README.md index a871b354..d3bea5d2 100644 --- a/docker/README.md +++ b/docker/README.md @@ -162,6 +162,9 @@ wrapping, ellipsis and text-block positions are not a wrapping-parity target. For example, the 44-pixel “Coming in” ink is 239 pixels wide in the reference and 194 pixels in native captures. No per-title compensation or font bundle is used. Native comparisons must report those structural differences explicitly. +Readiness glyphs sit inline on the text baseline with no flex gap, matching the +frozen block-span cascade. Items wrap intrinsically: Roboto fits the expanded +readiness into two lines where the reference uses three; no grouping is forced. The six rating marks retain the exact locked SVG source in `wolfskin-design/request-marks/`; native-size PNGs and their hashes are generated diff --git a/wolfskin-design/shell-tokens.json b/wolfskin-design/shell-tokens.json index 50a8c5ec..8bd41896 100644 --- a/wolfskin-design/shell-tokens.json +++ b/wolfskin-design/shell-tokens.json @@ -20,7 +20,6 @@ "stageMargin": { "$type": "dimension", "px": 4, "dp": 2, "source": "index.html:252" }, "stageGlyph": { "$type": "dimension", "px": 28, "dp": 14, "source": "index.html:221" }, "stageGap": { "$type": "dimension", "px": 10, "dp": 5, "source": "index.html:220" }, - "readinessItemGap": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:313" }, "readinessGapX": { "$type": "dimension", "px": 22, "dp": 11, "source": "index.html:312" }, "readinessGapY": { "$type": "dimension", "px": 10, "dp": 5, "source": "index.html:312" }, "readinessMargin": { "$type": "dimension", "px": 8, "dp": 4, "source": "index.html:312" }, diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt index 4bb90514..bb2a9062 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/ComingInSheet.kt @@ -155,10 +155,10 @@ fun ComingInRow(item: ComingInRequest, viewer: ShellPerson, focused: Boolean, ex if (expanded) FlowRow(Modifier.padding(top = T.readinessMargin), horizontalArrangement = Arrangement.spacedBy(T.readinessGapX), verticalArrangement = Arrangement.spacedBy(T.readinessGapY)) { item.stage.readiness.forEachIndexed { index, word -> - Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(T.readinessItemGap)) { + Row { val glyph = when (word) { "Done" -> "check"; "Failed" -> "alert"; "Not yet", "Unknown" -> null; else -> "clock" } - if (glyph != null) Glyph(glyph, secondary, Modifier.size(T.readinessGlyph)) - Text("${READINESS_NAMES[index]} · $word", style = ComingInTypography.readiness, color = secondary) + if (glyph != null) Glyph(glyph, secondary, Modifier.size(T.readinessGlyph).alignBy { it.measuredHeight }) + Text("${READINESS_NAMES[index]} · $word", Modifier.alignByBaseline(), style = ComingInTypography.readiness, color = secondary) } } } diff --git a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt index bf874972..c5a92972 100644 --- a/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt +++ b/wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt @@ -250,7 +250,6 @@ object WolfskinTokens { val stageMargin = 2.0.dp val stageGlyph = 14.0.dp val stageGap = 5.0.dp - val readinessItemGap = 4.0.dp val readinessGapX = 11.0.dp val readinessGapY = 5.0.dp val readinessMargin = 4.0.dp diff --git a/wolfskin-design/tokens.css b/wolfskin-design/tokens.css index 7aba6641..8793589a 100644 --- a/wolfskin-design/tokens.css +++ b/wolfskin-design/tokens.css @@ -147,7 +147,6 @@ --requests-stageMargin: 4.0px; --requests-stageGlyph: 28.0px; --requests-stageGap: 10.0px; - --requests-readinessItemGap: 8.0px; --requests-readinessGapX: 22.0px; --requests-readinessGapY: 10.0px; --requests-readinessMargin: 8.0px; diff --git a/wolfskin-design/tokens.sha256 b/wolfskin-design/tokens.sha256 index 9143d9ac..675ef31a 100644 --- a/wolfskin-design/tokens.sha256 +++ b/wolfskin-design/tokens.sha256 @@ -1,5 +1,5 @@ 1438f7ca4a2b6f951c9e643ab0afacbf2f7fc98e57905295d518c6225e054de4 generate_tokens.py -61568cdb87c1b64984033e6d66b06c4aee1870580fb5640ed4a1a97100451c0a shell-tokens.json -cddf8798e731206e1adf1e66384ffcb1b679b27e2ee9f33fd128a04850fd829f src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt -60ac4a0fff7d7965a9c4fa25d71a10cb304c3e636031ccf036a33459571e04fe tokens.css +f61da327af6f6a7fb40c65e2d187957506b72a5b03a760f0f7fba5eca6067818 shell-tokens.json +61ee54eff31304bc352fdf4a295825156566c8e97cba9e5441e9c98d644c9986 src/main/java/org/justinvisser/wolfskin/design/WolfskinTokens.kt +9e4b8a9a21c5275b140c5c4a512f240c901006793b434ac532975be0e5a004ee tokens.css 5b939f1f3eb90b428008fda75720f6e3a4e844c486668931db3d52bffb987b53 tokens.json -- 2.49.1