@skein-code/cli 0.3.28 → 0.3.29

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.
@@ -9,7 +9,7 @@ one of the milestones below.
9
9
 
10
10
  - Product name: `Skein`; primary executable: `skein`.
11
11
  - Compatibility executables: `mosaic` and `mosaic-code`.
12
- - Current repository version: `0.3.28`.
12
+ - Current repository version: `0.3.29`.
13
13
  - Runtime requirement: Node.js `>=22.16.0` (the runtime uses unflagged
14
14
  `node:sqlite` with FTS5, and current CLI/build dependencies require this
15
15
  Node 22 baseline).
@@ -24,7 +24,8 @@ one of the milestones below.
24
24
  all sizes support prompt
25
25
  history, `@file` completion, command completion, multiline editing, queued
26
26
  follow-ups, live context inspection, permission approval, themes, ASCII mode,
27
- `NO_COLOR`, and narrow-height degradation.
27
+ `NO_COLOR`, `TERM=dumb`, screen-reader output, reduced motion, and
28
+ narrow-height degradation.
28
29
  - Storage: sessions, checkpoints, local index, and project configuration still
29
30
  use `.mosaic/` paths for compatibility. `SKEIN_*` environment variables are
30
31
  preferred, while `MOSAIC_*` aliases remain supported.
@@ -41,16 +42,19 @@ npm audit --omit=dev
41
42
  npm run release:verify -- --output-dir artifacts/package
42
43
  ```
43
44
 
44
- The latest verified package is `skein-code-cli-0.3.28.tgz`. The verifier writes
45
- its SHA-256 to `artifacts/package/skein-code-cli-0.3.28.tgz.sha256`, and CI
45
+ The latest verified package is `skein-code-cli-0.3.29.tgz`. The verifier writes
46
+ its SHA-256 to `artifacts/package/skein-code-cli-0.3.29.tgz.sha256`, and CI
46
47
  retains the checksum beside the package metadata. The checksum is deliberately
47
48
  not copied into this packaged document because doing so would change the
48
49
  archive it describes.
49
50
 
50
- The final verification included a fresh install for all three executable
51
- aliases. PTY coverage included 20, 24 ASCII, 40, 80, 120 columns and a 40x10
52
- short-height case. The current full-suite count is recorded from the latest
53
- `npm run check` in the release evidence.
51
+ The final verification includes a fresh install for all three executable
52
+ aliases. PTY coverage includes 20, 24 ASCII/`NO_COLOR`, 40, 80, and 120 columns;
53
+ a 40x10 short-height case; 40-column `TERM=dumb`; and 80-column screen-reader
54
+ interaction. Raw output is replayed through a headless terminal so the gate
55
+ checks the final visible screen rather than only accumulated logs. The current
56
+ full-suite count is recorded from the latest `npm run check` in the release
57
+ evidence.
54
58
 
55
59
  ## Recommended Order
56
60
 
@@ -462,14 +466,19 @@ already separated short-term working memory and durable records:
462
466
  Never promote model-inferred facts directly into durable memory without the
463
467
  existing candidate/approval path.
464
468
 
465
- ### P2: Terminal Accessibility And Visual Regression
466
-
467
- Keep the current restrained graphite/cinder/mono theme system and add actual
468
- final-frame regression tests for widths 20-160 and heights 8-60. Include CJK,
469
- wide emoji, screen-reader mode, `TERM=dumb`, `NO_COLOR`, ASCII glyph mode,
470
- permission panels, multiline composer, history search, and active palettes.
471
- Use a terminal emulator fixture where raw ANSI logs cannot prove what remains
472
- visible in the final frame.
469
+ ### P2: Terminal Accessibility And Visual Regression (complete in 0.3.29)
470
+
471
+ Version `0.3.29` adds an explicit screen-reader profile, automatic `TERM=dumb`
472
+ fallback, semantic Ink roles, reduced motion, and non-incremental low-capability
473
+ rendering. The PTY release gate now covers the contracted 20/24/40/80/120-column
474
+ matrix, 40x10 height constraint, CJK/emoji component fixtures, ASCII,
475
+ `NO_COLOR`, permission/error/ready states, history search, and file completion.
476
+ It replays logs through `@xterm/headless` and rejects final-frame wraps, stale
477
+ panels, control-probe leaks, joined announcements, or missing status. The
478
+ single-process benchmark enforces 25 ms input and 150 ms streaming-render p95
479
+ budgets while requiring the last chunk in the final frame. Future expansion may
480
+ sample additional widths through 160 and heights through 60 without changing
481
+ the shipped gate's factual scope.
473
482
 
474
483
  ### P3: Distribution
475
484
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skein-code/cli",
3
- "version": "0.3.28",
3
+ "version": "0.3.29",
4
4
  "description": "A context-first, model-agnostic coding agent with an auditable terminal workspace.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -16,6 +16,10 @@
16
16
  },
17
17
  "skein": {
18
18
  "releaseNotes": [
19
+ "TERM=dumb and screen-reader sessions now use deterministic ASCII, monochrome, reduced-motion, non-incremental rendering without losing keyboard input",
20
+ "SKEIN_SCREEN_READER=1 enables Ink accessibility output with semantic timeline, permission, and composer roles plus clean phase boundaries",
21
+ "PTY release gates now replay eight terminal scenarios through a headless emulator and reject final-frame overflow, stale panels, announcement joins, and missing status",
22
+ "A local terminal UI benchmark enforces 25 ms input and 150 ms streaming-render p95 budgets while retaining the final streamed chunk",
19
23
  "MCP trust and revoke confirmation rendering now has a deterministic cross-platform release regression gate",
20
24
  "MCP now follows a no-network search and inspect review before explicit workspace-bound manifest trust and lazy activation",
21
25
  "Declarative capability manifests expose redacted source, version, tools, permissions, network, command, path, sensitive-field, process, and completion-evidence effects",
@@ -99,6 +103,7 @@
99
103
  "benchmark:context": "tsx scripts/benchmark-local-index.ts",
100
104
  "benchmark:duplication": "tsx scripts/benchmark-duplication.ts",
101
105
  "benchmark:token-economy": "tsx scripts/benchmark-token-economy.ts",
106
+ "benchmark:terminal-ui": "tsx scripts/benchmark-terminal-ui.ts",
102
107
  "verify:package": "node scripts/verify-package.mjs",
103
108
  "release:verify": "npm run check && npm run verify:package --",
104
109
  "typecheck": "tsc --noEmit",
@@ -126,6 +131,7 @@
126
131
  "@types/diff": "^8.0.0",
127
132
  "@types/node": "^22.19.7",
128
133
  "@types/react": "^19.2.7",
134
+ "@xterm/headless": "^6.0.0",
129
135
  "tsup": "^8.5.1",
130
136
  "tsx": "^4.21.0",
131
137
  "vitest": "^4.0.18"