@justai/cuts 0.147.0 → 0.148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justai/cuts",
3
- "version": "0.147.0",
3
+ "version": "0.148.0",
4
4
  "description": "A persona's named parts — the page shell that holds them, and the cuts themselves.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -11,9 +11,10 @@
11
11
  // to keep the behaviour it already has. A pin.games citizen passes apex="pin.games".
12
12
  //
13
13
  // THE TWO MARKS ARE SIBLINGS, DRAWN THE SAME WAY. app.zone is four separated corner brackets around a
14
- // centre — a zone is the space the corners enclose. pin.games is three separated strokes making a
15
- // play triangle. The zone has four corners; the play has three edges. Same radii, same palette, same
16
- // idea of a figure assembled from pieces, which is what keeps them reading as one family at 20px.
14
+ // centre — a zone is the space the corners enclose. pin.games is three vertex brackets around a play
15
+ // triangle, drawn with app.zone's own part (pin-games, 2026-08-25). The zone has four corners; the
16
+ // play has three. Same radii, same palette, same idea of a figure assembled from pieces, which is
17
+ // what keeps them reading as one family at 20px.
17
18
  //
18
19
  // Home affordance → the apex (the platform / App Store home). Standard on every app:
19
20
  // always visible at the top-left of the toolbar. Also tidies the ?ref / ?lang hints
@@ -42,6 +43,13 @@
42
43
  // lighting was never visible at this size, and in one flat ink there is nothing to shade. The
43
44
  // geometry here is a second copy of the one in that file, which is authored by hand and generated by
44
45
  // nothing — a redraw has to be carried across to this component as well.
46
+ //
47
+ // queries: the pin.games logo in the toolbar is old · a redrawn apex mark did not reach the personas
48
+ //
49
+ // AND IT WAS NOT, ONCE. pin.games redrew its mark on 2026-08-25 (three bars became three brackets
50
+ // around a play triangle) and this copy kept the bars for six weeks, on every game persona, until the
51
+ // founder saw it on 2026-10-05. Nothing compared the two. A redraw of an apex's public/mark.svg is
52
+ // not finished until this file carries it and the fleet is bumped (publishing-a-cut-is-not-shipping-it).
45
53
  interface Props {
46
54
  /**
47
55
  * Which storefront "home" means here. Defaults to app.zone — the fleet as it stood.
@@ -99,10 +107,11 @@ const drawable = MARKS.includes(apex);
99
107
  {drawable && (
100
108
  <a class="home" href={href} data-home aria-label={apex} title={apex}>
101
109
  {apex === "pin.games" ? (
102
- <svg class="pgmark" viewBox="287 266 482 491" aria-hidden="true">
103
- <rect class="arm a1" x="130" y="469" width="400" height="86" rx="43" transform="rotate(90 330 512)"/>
104
- <rect class="arm a2" x="317.3" y="363" width="455.5" height="86" rx="43" transform="rotate(26.25 545 406)"/>
105
- <rect class="arm a3" x="317.3" y="575" width="455.5" height="86" rx="43" transform="rotate(-26.25 545 618)"/>
110
+ <svg class="pgmark" viewBox="-48.45 -332.01 654.02 664.02" aria-hidden="true">
111
+ <path class="arm a1" d="M115.37 -319.24L266.42 -240.14A17.93 17.93 0 0 1 273.99 -215.94L245.67 -161.86A17.93 17.93 0 0 1 221.47 -154.29L70.41 -233.39A15 15 0 0 0 48.45 -220.11L48.45 -70.77A17.93 17.93 0 0 1 30.53 -52.84L-30.53 -52.84A17.93 17.93 0 0 1 -48.45 -70.77L-48.45 -220.11A111.91 111.91 0 0 1 115.37 -319.24Z"/>
112
+ <path class="arm a2" d="M-48.45 220.11L-48.45 70.77A17.93 17.93 0 0 1 -30.53 52.84L30.53 52.84A17.93 17.93 0 0 1 48.45 70.77L48.45 220.11A15 15 0 0 0 70.41 233.39L221.47 154.29A17.93 17.93 0 0 1 245.67 161.86L273.99 215.94A17.93 17.93 0 0 1 266.42 240.14L115.37 319.24A111.91 111.91 0 0 1 -48.45 220.11Z"/>
113
+ <path class="arm a3" d="M550.15 91.57L399.09 170.67A17.93 17.93 0 0 1 374.89 163.1L346.57 109.02A17.93 17.93 0 0 1 354.14 84.82L505.19 5.72A6.45 6.45 0 0 0 505.19 -5.72L354.14 -84.82A17.93 17.93 0 0 1 346.57 -109.02L374.89 -163.1A17.93 17.93 0 0 1 399.09 -170.67L550.15 -91.57A103.36 103.36 0 0 1 550.15 91.57Z"/>
114
+ <path class="ctr" d="M158.3 -92.3Q143.0 -100.3 143.0 -83.1L143.0 83.1Q143.0 100.3 158.3 92.3L319.3 8.0Q334.6 0.0 319.3 -8.0Z"/>
106
115
  </svg>
107
116
  ) : (
108
117
  <svg class="azmark" viewBox="-8.5 0 928 928" aria-hidden="true">
@@ -140,16 +149,23 @@ const drawable = MARKS.includes(apex);
140
149
  .azmark .arm,
141
150
  .azmark .ctr { fill: currentColor; }
142
151
 
143
- /* queries: the home icon is smaller than the other glyphs · 20px of ink · pgmark size
144
- FILLED, AND THE viewBox IS THE INK'S OWN BOUNDS. This mark was three round-capped strokes, which
145
- is the same shape — but getBBox reports a stroke's centreline only, and the fleet's "every icon
146
- paints 20px of ink" spec measured it at 9.9px beside 20px glyphs. The spec was right: at that
147
- size it really was half its neighbours. Rotated rounded rects draw exactly what the strokes did
148
- and measure what they look like. */
149
- .pgmark .arm { fill: currentColor; }
152
+ /* queries: the home icon is smaller than the other glyphs · 20px of ink · pgmark size · the
153
+ pin.games mark in the toolbar is the old one · three bars instead of three brackets
154
+ FILLED, AND THE viewBox IS THE INK'S OWN BOUNDS — measured from the paths, arcs included, not
155
+ copied from mark.svg, whose viewBox carries a margin. The ink is 654 by 664 units, so in the 20px
156
+ box it paints 20px tall, level with the glyphs beside it.
157
+ THE CENTRE IS INK AT REST for the reason app.zone's is: in one colour a knocked-out triangle would
158
+ be a gap the mark does not have. Engaged, it takes the ground's cream or charcoal, the same pair
159
+ pin.games' own favicon and toolbar use. */
160
+ .pgmark .arm,
161
+ .pgmark .ctr { fill: currentColor; }
150
162
  .home:hover .pgmark .a1, .home:focus-visible .pgmark .a1 { fill: #3D6FD9; }
151
163
  .home:hover .pgmark .a2, .home:focus-visible .pgmark .a2 { fill: #E8503A; }
152
164
  .home:hover .pgmark .a3, .home:focus-visible .pgmark .a3 { fill: #F5A623; }
165
+ .home:hover .pgmark .ctr, .home:focus-visible .pgmark .ctr { fill: #F5F1E8; }
166
+ @media (prefers-color-scheme: light) {
167
+ :global(html:not([data-theme="dark"])) .home:hover .pgmark .ctr, :global(html:not([data-theme="dark"])) .home:focus-visible .pgmark .ctr { fill: #2B2724; }
168
+ }
153
169
 
154
170
  .home:hover .azmark .a1, .home:focus-visible .azmark .a1 { fill: url(#azHome1); }
155
171
  .home:hover .azmark .a2, .home:focus-visible .azmark .a2 { fill: url(#azHome2); }