diff --git a/README.md b/README.md index f70c997..53c0fed 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,11 @@ substandard shows a badge when the site you're visiting has a standard.site publ - The toolbar icon is always the substandard logo; per-tab status is shown with Chrome's native action badge. A badge appears only when there is something worth noticing: green means a verified publication (`+` can - subscribe, `?` subscription state unknown, `✓` subscribed), amber `!` - means an unverified candidate or a detection error, red `X` means you have - blocked the account behind the publication, grey `•` means a check is + subscribe, `?` subscription state unknown, `✓` subscribed), the same glyph + in amber with a trailing `*` means the same relationship on a page that is + not the publication's verified home, amber `!` means detection could not + run at all, red `X` means you have blocked the account behind the + publication, grey `•` means a check is running. Pages with no publication, non-http pages, and offline tabs carry no badge. Each state also sets the icon's tooltip title, so hover and screen readers get the state in words rather than color alone. See @@ -411,7 +413,7 @@ state a real toolbar would show. Because the routes are separated, a failure says which one broke. Pointing the well-known probe at a path that does not exist fails the well-known-only site with "no publication detected" while the hint-carrying sites degrade to -`warning` — found, but unverified. +`signedout-unverified` — found, but unverified. It talks to the live internet, so it is not a `prek` hook and not part of `npm test`. Run it on the tree about to be packaged; `--headful` watches it diff --git a/docs/img/badge-detected-unverified.png b/docs/img/badge-detected-unverified.png new file mode 100644 index 0000000000000000000000000000000000000000..046d6eac049839595cab26130651f60a83605b87 GIT binary patch literal 6316 zcmeAS@N?(olHy`uVBq!ia0y~yU|7Mxz|g_L#K6Gtr`7x_1A_pAr;B4q#hf>>(K#~L zEA5Ks-@U0lJtnSnp~tN*o#Pwl9%75R?fPlLz9sx;otZ^mdN;;hkp6X{osIF=1%^tE z3+*;0=Uwk}i?}kGWb}%ylT|5vb81^kr;=)*kgMLwz3<<=x$}E&ahrFLQf6z+Ea$g1 zOWHOYZ{EE6=ec^z|3A;yKl$3LRcU3>m;E*8eDUE1mPCdLEX#QX1wJ^7xLz#v4V|*Q zX7Qh$;Vg~$vusyi_ny(GIO7lN5%qPiOLvRSa`d{+>n!g2@`L%Q_WN6s%L;eD2#UO9 z5*i$O>xhbp3D=|tUj*6`8|v#ASaYoVa;@h*Z#MiR<#x(r`9(gys`UjER=tl3+nxJp z+YSHa7dm)6g*=-o4u5ytb2L>nY3Av)AkEtQ+TRuBQp}^@#+^U5ZXT8t^UdVzHhwlC?tAY&dC&OtWl5Kc#cTuL)puVeu*=0SoFV@G)>GSC z)=SoyAF$eT#KUm@hPq{p#_>8&9G5=cwP0%WTf1)p_p_YsD>9@OFI}{1mC8X$_BkJe zR&qEwYM;1Uo7G-X!7}aYVZVhFrmJ+SRH!L<3vnFfJMp&sg2()d^WQ7GPdwjL@WP`h zo#Tr0`BaX}FA9GDJlIij`Hj#rNxo12gy&=~3D)er`Oa_o>HdI6w&x#v+08ceXi686 zbkkGXuwZtfvU zQ(f-NFLiivaqV#d9w$>J@p9kG9!-i2ZFw7y7WBQ?dF9G#FQs?RjIF#klxOHWpHKD| zn%r?Vz#)lw>xFMd{_6#nrlizrZ1Ano_^nf>uV#4bA%prXFPn!))OVU3W(-{7lDtIE zbCqO}$`O7|p-1f^oFARLT7D?HI{lfTq*&)MQNVtQM~6Hv>B4V8Z)@(C$7~OZ++X>uMqdm9>JD{DxOUa*-RH@1E<_rui){eU!%qG1$W(xmJFqJj~_@)jCEiU+%3eK zYhl5%%XQ**rC*0{dt1$oJH7UCbBXQLL(8+OwB{ORSX(4d?mjQ{F+uiI?e}+k{q6oq zY~uSRdz(#i<&4^#>5lf7jZeiVV%|a{99G*>h#EIH#5x4%*-$ROGsL#w)}HzjMdaI z)3-i8M)uN2n!lc^dU|bbwEgd!zrTmQyS-47f{z+4F`4nsnMe^0SFJD4cI5?S0zY+-~>AO`9%l-eqiTJYC=Z`z!7E z$cP#9CG?#?PCA%4yW;w5;eBgmZM-^?(T>W$jFZ`;1UYi#>B1w}SXI?djcQ(c#r z7b0*$AX)Ewp}O4pUDsc)T_3(Kc6Zt9YrYt7lDUo5}O zA^L@5NrCk4t9G*(^2H2z&xWlIy1A$L`@7@v^-cLdy5s+C+O(6gUP!i~#%{XT(JG;= zJDtZr-@SFGiJ3ot-PNr5vuEzA`pOmhiTm>$IirjN>y!8WeSTk(Eu$(cYe|H_2fe@@ zmBk<5&9$C9d2*GN>GBw-?w(@C6FY?SXFa=HT`{kG_SrDK*_B_fhVT3JO8fES#|eM0 z?7mo_xuEFTv$W5xHg|kx{CDramVakQ<2{BseiFYevVZRo?q9xh*REX~10BnyYV7xK zFeuM7n|=1!!bMb3ibj*q%_9G{o7eEZg| zH%-qLRf~6!u;~9(!aj? zT6KQg0`KL^)w^HlEd3I(GQiKKO6+s-^k;gpS4!7rm#*HrcI#Gmm17-SSGnKkG@Ca) zwRL`s*3=|vg=TGYOGCzZ{xJEEbKUkX)Y{nh^ysXLmgfdvnj|Ed^e=n}SiVtJuCdnj zqzG5#jo(>Y+vdedynpp?qgvhKO*b=4Vvh%hh(6qzv{B;oqwaz)7aR=JE@W=k+3XE+ z-2Hc367}~UxSV=*frt0Ubr)J5M)!y-lw8i6-FI2d(CyA#YnM|3&h9Mp`X?T*k+a|9 z*CUWM>sgiGaTCuT!EDAP<#fA8UrlBmJC=~NPl8MKpZjYOR-Ug)yL>=~`>WntzBP(v zntS8@8N&YJ9f_6mbEwe6E{5Wi?5QZ0sWS z{B3439O`fn=DpyTVtDPm*)t*kx2l2~AC*48`=%<_#}J*e{_)Ot?^Me*c;`Jo@TGjW z!GD{r%Wmd0e0AH~X69H|J7cb&hm&idpuf_S&NK3});jJtHs$R+A}<+Oo>#5#PRy^GeGR7zlyAA1{5^4cDVNStztAbQ$sJoF4Rl$* z2l(wOc6Zw^tnby{ns?!-l%(dxlfjej7~T$)GmWkEZd=fQ;mPkwi5I3+$8@?q*wMFY zW!UvwC)cMb+(~<5dF6h~oxO(}7>{)o{oJ$Ze$(AO*6!Xc+8^A6pTAqNV0HSBf+-73 z`BmdCySX3Vbo0)aFFc`#ZeN@Coi$|FmN1b62hW{3W687Nphxtyqrxi|Tbf>6Gy7l5 z?1uc`;sRyn0e$|G(%Q;SAD)z68(bca_mo7liUxOi%1KGX@RlP7HSg@?IO5ED zyDVc{%Y-GDW`^A2D7*4Ax%#%%yf=H6mO$!SJB2*~(oKuFSE<>Uw#HmttgjzsLD?4X3Ipoqe(B?c%$iq(bYtw|`1FztqW7Z)&~nBj$SR2I2QNKO0W3 zkXmi;^Jw?7;`*EWicjB;;g*f|N&oQXuKV}S*B&>S?s4yQzj7>cZ@zxq``WUzw`0Uj zWT!D-^1sTg!Oxuft7*m3n$1tIug**54Lf{)mBAzKPd}!VCCZsQG7HU9s@x=h;GtXN z5sAX>9~Ivp@BV$eLZY-h`E0)Fl1D3SqQcIfZ{K!x?>Fv@>esi$v_wtmq)uvyJjQq4}_QJc1Z_00YB5drqdZlhm zW733A{*E?hSh*h@(Cn;yqW5j%FM}n`#+y_+ehctxPWj|o`pc#zXr|TrdGoo?Y`dRn zSuTEeE$@rw34Tdm-#$HGvsqc(`_#_vm8bPDek}Ja3k%<~_N&~R!fhJME-T2n|G6bL zwbX+B!p*g9yT1iAggKnonJym8R@UMyYSI1Lb!U?2ntv}I)au@oy&wMQ>BPVrMLQ}M z#GiV$aDtk@6K`8*(k+XLmBg zs<;Hn9`@Fo2V1HV``#_NbcgM5OZE$g#~;mCRitM`-dL3^{OTy{-&5fU8y3FJ%$qZD z>G$<{H!hrctERJgMP^Z^&+Olm%>Ju-?RkAcZ;r~X)7u{?S$xks+!&Cq=h3eIt^M{! z_E*zYj>wBPKL7mjZ1WuJjGR{sHp^XoYN{E2xuL0{(5 z6+J2TWgDw3KfdbcI{!UoMWv%%M@3fQQClUBtv>bL$p$A+-C#+XC1h`?n#RqO$M^OmFY5T&3`Ka`ooN zmo7iOE7WPv_QF71+pVnPNuK-zUXD9XFBV+-=x6K7TDyMlg1*Fc3RzaWn76!d$eXw9 zaqPv+6;h#-xmDj@`kc6)J(S=7!tIF9Zt4$IxK{q1yl%(5bY3IHe-aJ`bDv$3mpNd` z;UnB(lEfeWXF>LgJP$!z*5d{9H#d1qe|+ZIh2RgfOW7yNA1Pa9@~yqX*3&lbUWWO{ zz_tV^=r!?-_7sLvlc$KsZ_oG`SuZEyG0&JJwKk` z`5D-I>av2|Ga1GNiMkT5rZ8u{9))A>-;%$0cKYusc4wD;z!Smnd`d^Z&fgy;&$ez? zeDUF*faQX{Kh*`?GN;`>a@s%C?xl!e`E$NEpQAP}H!AIluKLk%<)|~y#S{P-j$ z+?`l4i+h5{A47-3^DFvH{%OwZJ7RqJcyKNQ14k%mEa1WohS!fT#>wcG@2TG=d;ZbG z_!(*KYKpg&nfvusnASW05jlBTomEcS;*XTv(&O)sJb5CWzwhg>*Xw=#{3ae$Qb{T3 zwZC@c^-2+uWvMs!2-tQS?l>}kf5FGy_iJA-;rigZhQIB9gz$Xlm{^5rSKpSr(2*2M z-mz}|i(@-Kvlcy)=(%!y){luv8?V2<`s%CO;+IEeRIt33k#E!V+W%(l-}c=<*WKPF zcq7z^qa(`mWNhHEdso!=JF>Mz2*=B4no5~&-*hi$>#Vb4PwMVlu3FA_dDBjXU)QRh zKeOMlmH&i8BU?)TKJWVL^|N;VF%QaWl9Arncc-_fN5YLQP-erwjNIJ4n+mtg>{I8` zs9Y_cx%k`H{qh#CtL;{QbNv15`$+|X>_^L&FLR3wJnXl7@0Kllwv;TtYxq-&S;g$d zw?!Q5{=QI;`y5^u+z9^R=39Hn%Qk}{g@Y#VOyi3WA^;Lc{Y02y58R2WtU$%tNYapCM4ck zAfHrl`}C8F757Eze$2a|@Z{fA4>8Gqdz_ z=O;2co)tL4=;Or29G90Wf24LHQ$^X*pv<~N#^$@q%1dW&&pU85d+V(WKe@S!A3rVX z65Y-ivTeeWBjFr9|GaAEo@mrhIyC)c9=6N>JvslMr6ph0ll%X@SM;~9k5w_Y z()3E1dO>!xqg||!-I@vJ_xaZI6>VI~QK&vo|68P-eDi{4`|G9e)~^Z4{+f54N#J4Q zm(5ucQn8IW?Rm%cis-7{QjZfkGIvo}_3POW73T8q_742AI`QN7mXfZi$EPbgxx9S% zYVmFF)AI4ZpJ@J9=C>F4|4Y3oo2CBu@rT*FJ4&PuS??EmFZ5~sm(Y;Dm+t>n{u)@x zPm7oJdSq!5sy+Rc6LNd299h5dXi(KON>Ox_?gF^XxP8^5aX-%#F0Ed-1ii z^JIxu?bBB6ggeVl*9I-kpA~z1+s&v6bzht>Z?lODZoazo;n7T{Ltf%8U-f=G37cl! zJhA@zHfF2HetjG1mO#s%6)~#bix-D6mo1H0a5dnVy4o|nSS4mgoxlC8r*;YYeQybk z{&8_X=jQ$L=jP3rUOufu{D#OC9%g%{Ztm~@BY2~-|>G_m$vhl2m9Z4-v7Pw!MZN{n)CnvUGH@C zV@c2d`{V8dZ6}5&K8KTIEu5r&ewaP|-p^k?!_vu6a4q>cJ;2}T7|01@3)DnpYYTVmH5ueE<8s7G$7Ww>VH$f9M1iJ z-7*$!FZ)#ZW4WW#A90psr9amgjFz#rxm?9EaQ5%UjdMRlrwD#(O?ckiH!)|9Kz&XQ z|9;JzjjH!$`{wdnxydCu{W-9}|3BYPCxZ$6ULEohS3X6*I*~s?xXtR@>>mn6IUO}8 z`wcoS-kGww`%7^>Be#zqU(l(Fck53WZrD3#okI5_iO^eW8};rMswqf|yY2rrzi^(K ztO4ip%#=ksKltV{h<(=bP3KsU-XMIFoqN8o{iF&<%{Q!tv)U@A34T8=u|ad5(rKBc zW+!{g7f#&FeC?o>Y5P?}&!%*dvtjK9iqBWex+~u9ndoM6eB<18Q#Jmi z3oJ`r_?WHBcxHxIn2QZhot?XQTGm#pzR4wT=V@B>T~2$%*Y!KJxr{CI!6QkZ-{!N< z&JgeO{qW^O&H9TOiN_5t-RXXQ!`N#2$t9w$juz#sqx_%zlVnKQ89J*qk`lr?lT{D-HcRaN8Y}oGOG4;N| znb?d5B@C3YnJ1ujw>*Sza(@v+(*ZH-T|D(*Zo4NVl-(6ZcC2`55hr53;pNnLl zxFa`oZtImzeZMAKOsF`dRP%P*%bfMwTvuPn=vuaF%ccn;ysuR)Tv;yunzkjUJ9oFh z$2tx^H{0na6-=rxRP!s(TbypaEb~*~T$YdRi%zs9e%SFw@kh<$-slJ7y{F0|S~bse z-`urxd0e0g<3r`wYux0&Y+SYK!^tDdS3msupMinl|9`Ge%jYpLFtC9d7|aYg4{tsy U^ht4GU|?YIboFyt=akR{0Drty>o;k7C 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 literal 0 HcmV?d00001 diff --git a/docs/status-states.md b/docs/status-states.md index fe888b7..f646a8d 100644 --- a/docs/status-states.md +++ b/docs/status-states.md @@ -12,6 +12,11 @@ organize the badge vocabulary: `✓` subscribed, `X` blocked). No state is carried by color alone, so the vocabulary survives color blindness — under red-green deficiency the green drifts to a neutral grey, but presence and glyph still carry every state. +- The two are independent, so they combine. A trailing `*` is the one + modifier: your relationship to the publication is unchanged, but this page + is not its verified home. It rides with the amber so the caveat is not + color alone, and it reads as what it is — a footnote, whose text is in the + popup. Every state also sets the toolbar icon's tooltip title, so hover and screen readers get the state in words. @@ -20,13 +25,16 @@ readers get the state in words. | | State | When | Tooltip | |---|---|---|---| -| ![no badge](img/badge-none.png) | no badge | Non-http pages (no tooltip), pages with no publication, or the browser is offline. Being offline is not a property of the page, so it never gets the warning badge. | `substandard — no publication on this page` / `substandard — offline; publication lookups need a connection` | +| ![no badge](img/badge-none.png) | no badge | Non-http pages (no tooltip), pages with no publication, or the browser is offline. Being offline is not a property of the page, so it never gets an amber badge. | `substandard — no publication on this page` / `substandard — offline; publication lookups need a connection` | | ![checking](img/badge-checking.png) | `checking` | Navigation started or a re-check is running; the result is not in yet. Transient. | `substandard — checking this page` | | ![detected](img/badge-detected.png) | `detected` | A verified publication; you are signed in and not subscribed. The `+` marks the available action. | `substandard — publication detected` | | ![signedout](img/badge-signedout.png) | `signedout` | A verified publication, but your subscription state is unknown: you are signed out, your session expired, or the subscription list could not load. Kept separate from `detected` so publications you already follow are not offered a second subscribe. | `substandard — publication detected; subscription state unknown` | | ![subscribed](img/badge-subscribed.png) | `subscribed` | You are subscribed to this publication. | `substandard — subscribed to this publication` | -| ![warning](img/badge-warning.png) | `warning` | An unverified publication candidate (for example, viewing a publication through a third-party reader), or detection itself failed for this page. | `substandard — unverified publication or detection problem` | -| ![blocked](img/badge-blocked.png) | `blocked` | The publication belongs to an account you have blocked. The only red in the vocabulary, and the only state that outranks `subscribed` — a block you made contradicting a subscription you made is exactly what wants surfacing. | `substandard — you have blocked the account behind this publication` | +| ![detected-unverified](img/badge-detected-unverified.png) | `detected-unverified` | `detected`, but the page is not the publication's verified home — most often a third-party reader showing somebody else's publication. The glyph and the offer are unchanged; the `*` is the caveat, and the popup names the real home and links it. | `substandard — publication detected, but this site is not the verified publisher` | +| ![signedout-unverified](img/badge-signedout-unverified.png) | `signedout-unverified` | `signedout` on such a page: neither the publisher nor your relationship to it is settled. | `substandard — publication detected, subscription state unknown; this site is not the verified publisher` | +| ![subscribed-unverified](img/badge-subscribed-unverified.png) | `subscribed-unverified` | `subscribed` on such a page. A subscription is a definite relationship and it keeps its `✓`, but it no longer suppresses the caveat — the badge used to show a plain green `✓` here while the popup called the same page unverified. | `substandard — subscribed, but this site is not the verified publisher` | +| ![failed](img/badge-failed.png) | `failed` | Detection could not run for this page, so nothing is known about it — a record fetch that failed, a resolver that did not answer. Distinct from a `*` state: there, the extension knows something and is qualifying it. | `substandard — could not check this page` | +| ![blocked](img/badge-blocked.png) | `blocked` | The publication belongs to an account you have blocked. The only red in the vocabulary, and the only state that outranks every other — a block you made contradicting a subscription you made is exactly what wants surfacing. | `substandard — you have blocked the account behind this publication` | The mapping lives in `src/lib/icon.ts` (`iconStateFor`, `badgeFor`, `titleFor`); the worker applies it in `src/background.ts`. diff --git a/scripts/capture-status-docs.mjs b/scripts/capture-status-docs.mjs index 4d2d0bc..bd23205 100644 --- a/scripts/capture-status-docs.mjs +++ b/scripts/capture-status-docs.mjs @@ -884,11 +884,14 @@ async function findWorker(cdp, timeoutMs) { const BADGE_STATES = [ 'none', 'checking', - 'warning', - 'blocked', 'detected', 'signedout', 'subscribed', + 'detected-unverified', + 'signedout-unverified', + 'subscribed-unverified', + 'failed', + 'blocked', ] async function captureBadges(cdp, inWorker) {