@justai/cuts 0.152.0 → 0.153.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 +3 -3
- package/src/ChildPersona.astro +13 -6
- package/src/Profile.astro +6 -3
- package/src/Sheet.astro +7 -10
- package/src/Toolbar.astro +5 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@justai/cuts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.153.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": {
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@justai/core": "^0.
|
|
45
|
-
"@justai/ui": "^0.
|
|
44
|
+
"@justai/core": "^0.42.0",
|
|
45
|
+
"@justai/ui": "^0.29.0",
|
|
46
46
|
"@justai/atrium": "^0.1.9"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
package/src/ChildPersona.astro
CHANGED
|
@@ -236,15 +236,22 @@ const chrome = face === "page";
|
|
|
236
236
|
display: flex; flex-direction: column;
|
|
237
237
|
padding-inline: max(var(--gutter, 16px), env(safe-area-inset-left)) max(var(--gutter, 16px), env(safe-area-inset-right));
|
|
238
238
|
}
|
|
239
|
-
/*
|
|
240
|
-
`--column`, and a media query cannot read a custom property, so the NUMBER has
|
|
241
|
-
again here. Written again is not decided again: if this ever disagrees with
|
|
242
|
-
the copy that is wrong.
|
|
239
|
+
/* 1280 is the fleet's one threshold and the fleet's one column width (2026-10-14; 640 before) —
|
|
240
|
+
@justai/ui declares `--column`, and a media query cannot read a custom property, so the NUMBER has
|
|
241
|
+
to be written again here. Written again is not decided again: if this ever disagrees with
|
|
242
|
+
base.css, this is the copy that is wrong. The gutter steps at 640 and keeps the safe-area term
|
|
243
|
+
until the column, exactly as base.css does. */
|
|
243
244
|
@media (min-width: 640px) {
|
|
244
245
|
.pp .app {
|
|
245
246
|
--gutter: 28px;
|
|
246
|
-
|
|
247
|
-
|
|
247
|
+
padding-left: 28px; padding-right: 28px;
|
|
248
|
+
padding-inline: max(var(--gutter, 28px), env(safe-area-inset-left)) max(var(--gutter, 28px), env(safe-area-inset-right));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
@media (min-width: 1280px) {
|
|
252
|
+
.pp .app {
|
|
253
|
+
max-width: 1280px;
|
|
254
|
+
max-width: var(--column, 1280px);
|
|
248
255
|
margin-left: auto; margin-right: auto; margin-inline: auto;
|
|
249
256
|
padding-left: 28px; padding-right: 28px; padding-inline: var(--gutter, 28px);
|
|
250
257
|
border-left: 1px solid var(--border); border-right: 1px solid var(--border);
|
package/src/Profile.astro
CHANGED
|
@@ -29,8 +29,9 @@
|
|
|
29
29
|
// href stay local with no per-consumer escape hatch. `files`, `me` and `feed` each hand-rolled this
|
|
30
30
|
// entire section before; they are child personas, and a child persona is a persona.
|
|
31
31
|
//
|
|
32
|
-
// CONTRACT: the
|
|
33
|
-
//
|
|
32
|
+
// CONTRACT: the section id `#profile` is one of the three cut anchors. Nothing else depends on the
|
|
33
|
+
// profile. (The scroll-spy also read `.pname` and `.handle` from here to name the toolbar's title strip;
|
|
34
|
+
// the strip went in cuts 0.152.0 and nothing reads them now.)
|
|
34
35
|
interface Props {
|
|
35
36
|
// The persona name (the <h1>), rendered RAW — it is authored in the persona's own source, never user
|
|
36
37
|
// input, so a name may carry markup (justai's "justai<span class='pro'>.pro</span>"). Same rule as the
|
|
@@ -108,7 +109,9 @@ const vars = [
|
|
|
108
109
|
background: var(--cover, linear-gradient(135deg, var(--accent), transparent));
|
|
109
110
|
position: relative;
|
|
110
111
|
}
|
|
111
|
-
|
|
112
|
+
/* the cover mirrors the page's padding: 28 with the safe-area term from 640, plain 28 at the column (1280) */
|
|
113
|
+
@media (min-width: 640px) { .cover { margin-inline: calc(-1 * max(28px, env(safe-area-inset-left))) calc(-1 * max(28px, env(safe-area-inset-right))); } }
|
|
114
|
+
@media (min-width: 1280px) { .cover { margin-inline: -28px; } }
|
|
112
115
|
.avatar {
|
|
113
116
|
width: 76px; height: 76px; border-radius: var(--radius-lg); margin-block-start: -40px;
|
|
114
117
|
display: grid; place-items: center; padding: var(--avatar-pad, 0);
|
package/src/Sheet.astro
CHANGED
|
@@ -318,16 +318,13 @@ const doneIsOurs = doneDefault || done === true;
|
|
|
318
318
|
position: relative; /* the Done action is positioned against this */
|
|
319
319
|
display: flex;
|
|
320
320
|
flex-direction: column;
|
|
321
|
-
/* THE ONE SIZING RULE, and there is no media query anywhere in this file
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
desk
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
literal here is the fleet's real width, not a historical one: it was 768 for an afternoon and
|
|
329
|
-
the sheet quietly rendered at 768 on a 640 fleet, which is how that was found. */
|
|
330
|
-
width: min(100%, var(--sheet-width, var(--column, 640px)));
|
|
321
|
+
/* THE ONE SIZING RULE, and there is no media query anywhere in this file: the whole screen on a
|
|
322
|
+
phone, 640 centred anywhere wider. Until 2026-10-14 the sheet READ the column (`--column`), and
|
|
323
|
+
the column was 640. When the column became 1280 the sheet stopped following it: a sheet across a
|
|
324
|
+
desk-wide column is a page, not a sheet — 640 is the width the fleet already knows a sheet at,
|
|
325
|
+
and a persona that wants another sets `--sheet-width`. (History: 480 until 2026-08-04 in its own
|
|
326
|
+
copy, then the column's 768 for an afternoon, then 640.) */
|
|
327
|
+
width: min(100%, var(--sheet-width, 640px));
|
|
331
328
|
/* dvh is Chromium 108+; the fallback above it survives because the build has targets. */
|
|
332
329
|
max-height: min(92vh, 100vh - 24px);
|
|
333
330
|
max-height: min(92dvh, 100dvh - 24px);
|
package/src/Toolbar.astro
CHANGED
|
@@ -351,7 +351,11 @@ import AuthMount from "./AuthMount.astro";
|
|
|
351
351
|
/* `.stuck` is still set by the script below and still means "content is under the bar" — it simply
|
|
352
352
|
has nothing to paint now that the shelf is opaque and always shadowed. Kept because the class is
|
|
353
353
|
part of this cut's contract and a consumer may hang its own behaviour on it. */
|
|
354
|
-
|
|
354
|
+
/* From 640 the gutter is 28, and the app still fills the screen until 1280 — an iPhone held sideways is
|
|
355
|
+
in that range, so the bar keeps the safe-area term exactly as the page's padding does. At the
|
|
356
|
+
column (1280, @justai/ui base.css) the page drops it and so does the bar. */
|
|
357
|
+
@media (min-width: 640px) { .toolbar { margin-inline: calc(-1 * max(28px, env(safe-area-inset-left))) calc(-1 * max(28px, env(safe-area-inset-right))); padding-inline: max(28px, env(safe-area-inset-left)) max(28px, env(safe-area-inset-right)); } }
|
|
358
|
+
@media (min-width: 1280px) { .toolbar { margin-inline: -28px; padding-inline: 28px; } }
|
|
355
359
|
.tb-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
|
356
360
|
/* nav lives on the left, beside the back affordance — the middle is intentionally empty */
|
|
357
361
|
.tb-left { display: flex; align-items: center; gap: 2px; min-width: 0; }
|