@galda/cli 0.10.74 → 0.10.75
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/app/index.html +39 -5
- package/package.json +1 -1
package/app/index.html
CHANGED
|
@@ -2232,6 +2232,12 @@
|
|
|
2232
2232
|
.redesign .ghmore .chev path{stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
|
|
2233
2233
|
.redesign .ghmore.open .chev{transform:rotate(180deg)}
|
|
2234
2234
|
.redesign .ghmore .n{color:var(--ink2);font-variant-numeric:tabular-nums}
|
|
2235
|
+
/* Long-Request fold (Masa 2026-07-27, overrides spec §4 "no accordion" — that rule
|
|
2236
|
+
assumed Request is always the user's short ask; a mispaste of another card's whole
|
|
2237
|
+
content proved that assumption false). No bespoke widget: it reuses the SAME `.lacc`
|
|
2238
|
+
pulldown as Activity/Conversation below (§3 — chevron on the first line, no left
|
|
2239
|
+
rule, offset-indented body when open), rather than the diff-fold's fade+button shape
|
|
2240
|
+
("他の›と同じルールじゃなくない?" — Masa 2026-07-27). No extra CSS needed here. */
|
|
2235
2241
|
/* meta links carry NO underline — PR is a real <a href> (spec §5, Masa 2026-07-20) */
|
|
2236
2242
|
.redesign .rmeta a{text-decoration:none}
|
|
2237
2243
|
/* Request / What-to-check = full contrast, same ink as the title (spec §2, no fade) */
|
|
@@ -9499,6 +9505,24 @@ function saMsgRowsHtml(msgs, expanded){
|
|
|
9499
9505
|
// word-level highlight (h) and, for a huge change, a "…+N 行 · GitHub で開く ↗"
|
|
9500
9506
|
// footer (only linking to GitHub when a PR exists). Mirrors the flagship artifact's
|
|
9501
9507
|
// ghDiffHtml so the app pixel-matches. `more` = extra unshown line count; `pr` = url.
|
|
9508
|
+
// Request fold threshold (Masa 2026-07-27): Request is supposed to be the user's short
|
|
9509
|
+
// ask (spec §4), but a mispaste — e.g. another card's whole content (Request/Result/
|
|
9510
|
+
// Activity) copied in — can make it huge and invisible in the single-line reply input
|
|
9511
|
+
// it came from. Anything past this size folds behind the same `.lacc` pulldown used by
|
|
9512
|
+
// Activity/Conversation instead of the card growing unbounded; a normal short ask stays
|
|
9513
|
+
// under the threshold and never shows the control. Length OR newline-count catches both
|
|
9514
|
+
// "one giant line" and "many lines" (goal.text is whitespace-collapsed before it reaches
|
|
9515
|
+
// the client, so in practice the length check is what fires; the newline check guards
|
|
9516
|
+
// against a future caller that preserves them).
|
|
9517
|
+
const REQUEST_FOLD_OVER = 220;
|
|
9518
|
+
// How many characters of a folded Request sit next to the closed `›` (spec §3's "first
|
|
9519
|
+
// line") — goal.text has no real line breaks by the time it's client-side (whitespace
|
|
9520
|
+
// is collapsed to single spaces), so this is a character peek standing in for "line 1".
|
|
9521
|
+
const REQUEST_PEEK_CHARS = 140;
|
|
9522
|
+
function shouldFoldRequestText(text){
|
|
9523
|
+
const t = String(text || '');
|
|
9524
|
+
return t.length > REQUEST_FOLD_OVER || (t.match(/\n/g) || []).length >= 2;
|
|
9525
|
+
}
|
|
9502
9526
|
const SA_DIFF_FOLD_OVER = 14;
|
|
9503
9527
|
function saGhDiffRowsHtml(rows, more, pr, goalId){
|
|
9504
9528
|
if (!rows || !rows.length) return '';
|
|
@@ -9644,11 +9668,19 @@ function saItemHtml(it, i){
|
|
|
9644
9668
|
// §1.5-3: with Open it moved into the body, a card with no PR / tokens / tests has no
|
|
9645
9669
|
// chips at all — render no meta row rather than an empty one holding open a gap.
|
|
9646
9670
|
const meta = chips.length ? `<div class="rmeta">${chips.join('')}</div>${metaDetail}` : '';
|
|
9647
|
-
// ── Request (spec §4): a PLAIN section — the user's own short words (goal.text)
|
|
9648
|
-
//
|
|
9649
|
-
|
|
9650
|
-
|
|
9651
|
-
|
|
9671
|
+
// ── Request (spec §4): a PLAIN section — the user's own short words (goal.text), never
|
|
9672
|
+
// the implementation spec (that lives in Activity below). A normal short ask is never an
|
|
9673
|
+
// accordion; a mispasted giant Request instead folds using the SAME `.lacc` pulldown as
|
|
9674
|
+
// Activity/Conversation below (spec §3: chevron on the first line, offset-indented body,
|
|
9675
|
+
// no left rule) — not a bespoke widget (Masa 2026-07-27: "他の›と同じルールじゃなくない?").
|
|
9676
|
+
// §4 assumed Request was always short, which a mispaste can break; this reuses the one
|
|
9677
|
+
// pulldown shape the card already has rather than inventing a second one. ──
|
|
9678
|
+
const reqFold = it.goalText && shouldFoldRequestText(it.goalText);
|
|
9679
|
+
const reqOpen = reqFold && SA.detOpen.has(`${gk}:req`);
|
|
9680
|
+
const reqPeek = reqFold ? `${it.goalText.slice(0, REQUEST_PEEK_CHARS).trimEnd()}…` : '';
|
|
9681
|
+
const reqSec = !it.goalText ? '' : reqFold
|
|
9682
|
+
? `<section class="rsec rreq"><div class="rsec-h">Request</div><details class="lacc" data-detkey="${gk}:req"${reqOpen ? ' open' : ''}><summary><i class="ltog">›</i><p class="rbody rask lfirst">${esc(reqPeek)}</p></summary><div class="lbody"><p class="rbody rask">${esc(it.goalText)}</p></div></details></section>`
|
|
9683
|
+
: `<section class="rsec rreq"><div class="rsec-h">Request</div><p class="rbody rask">${esc(it.goalText)}</p></section>`;
|
|
9652
9684
|
// ── Open it (Masa 2026-07-22): a plain section in the card's own typography — the same
|
|
9653
9685
|
// heading + body shape as Request and Result, not a chip in another vocabulary. The
|
|
9654
9686
|
// address the worker declared IS the control (press it → the process starts on demand →
|
|
@@ -10289,6 +10321,8 @@ $('seeall').addEventListener('click', async (e) => {
|
|
|
10289
10321
|
if (label) label.innerHTML = open ? 'Collapse' : `Show all <span class="n">${diffMore.dataset.total}</span> lines`;
|
|
10290
10322
|
return;
|
|
10291
10323
|
}
|
|
10324
|
+
// (A folded Request's toggle needs no handler here — it's a `[data-detkey]` `.lacc`
|
|
10325
|
+
// <details>, same as Activity/Conversation, wired generically at render time.)
|
|
10292
10326
|
const removeImage = e.target.closest('[data-saarm]');
|
|
10293
10327
|
if (removeImage) {
|
|
10294
10328
|
const [goalId, index] = removeImage.dataset.saarm.split(':').map(Number);
|
package/package.json
CHANGED