@signalridge/pi-welcome 1.3.0 → 1.3.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.3.1
4
+ ### Patch Changes
5
+
6
+ - 2f22dea: Give the card its head back, with a mark that says which tool this is.
7
+
8
+ 1.3.0 removed the whole title block. Only the wordmark was meant to go: the
9
+ tagline went with it because it sat on the same two lines, which left the card
10
+ opening straight into a key-hint row with nothing naming the session's tool or
11
+ version.
12
+
13
+ The two rows are back, now `pi` and its version over the tagline, with a pi
14
+ letterform for a mark — one beam over two legs, drawn from Block Elements so
15
+ every glyph is exactly one column in every terminal font. It says the same thing
16
+ as the title beside it rather than being a texture that could belong to any
17
+ tool, which the previous rounded outline and the solid bar that briefly replaced
18
+ it both were. The separate `Version` row is gone, since the version now rides
19
+ the title it belongs to.
20
+
3
21
  ## 1.3.0
4
22
  ### Minor Changes
5
23
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalridge/pi-welcome",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Startup resource and repository summary card for Pi.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/index.ts CHANGED
@@ -37,6 +37,21 @@ import { type Component, truncateToWidth, visibleWidth, wrapTextWithAnsi } from
37
37
 
38
38
  const ENTRY_TYPE = "welcome-card";
39
39
 
40
+ /**
41
+ * A pi letterform: one beam over two legs, drawn in the accent color.
42
+ *
43
+ * The mark says the same thing as the title line beside it — one for the eye,
44
+ * one for the reader — rather than being a texture that could belong to any
45
+ * tool. The legs are solid blocks rather than thin verticals so the two rows
46
+ * carry equal weight; hairlines wash out at small font sizes.
47
+ *
48
+ * Block Elements only. Each is exactly one column in every terminal font, while
49
+ * an emoji or a private-use glyph falls back to something double-width on some
50
+ * machines and shifts the text beside it out of alignment.
51
+ */
52
+ const MARK = ["▄▄▄▄▄▄", "▐█ █▌"] as const;
53
+ const SUBTITLE = "A focused coding workspace";
54
+
40
55
  /** Columns of padding inside the card. */
41
56
  const PAD = 2;
42
57
 
@@ -319,8 +334,6 @@ function collect(pi: ExtensionAPI, ctx: ExtensionContext): WelcomeData {
319
334
  }
320
335
  }
321
336
 
322
- push("Version", VERSION);
323
-
324
337
  // GAP is the sentinel for a blank row: session facts above, what pi loaded
325
338
  // below, so the card reads as two groups rather than one wall.
326
339
  const resources = collectResources(pi, ctx.cwd);
@@ -426,10 +439,17 @@ export class WelcomeCard implements Component {
426
439
  const pad = " ".repeat(PAD);
427
440
  const body: string[] = [blank()];
428
441
 
429
- // No mark and no wordmark. The card exists to say what this session is, and
430
- // a brand line says nothing a returning user does not already know. The
431
- // hints lead instead: with `quietStartup` on this is the only place they
432
- // appear, and they are what a new session actually needs.
442
+ // The mark names pi, not a vendor: what a returning user needs from the top
443
+ // of the card is which tool and which version, and a company name is
444
+ // neither. The version rides the title line because it belongs to the same
445
+ // fact.
446
+ const markWidth = Math.max(...MARK.map(visibleWidth));
447
+ body.push(
448
+ line(pad + t.fg("accent", MARK[0].padEnd(markWidth)) + pad + t.bold(t.fg("text", `pi v${VERSION}`))),
449
+ line(pad + t.fg("accent", MARK[1].padEnd(markWidth)) + pad + t.fg("muted", SUBTITLE)),
450
+ blank(),
451
+ );
452
+
433
453
  const hintLine = fitHints(this.hints, Math.max(1, inner - PAD * 2));
434
454
  if (hintLine) {
435
455
  // The whole line is dimmed rather than highlighting each key: this is