@jhizzard/termdeck 0.7.0 → 0.7.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jhizzard/termdeck",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Browser-based terminal multiplexer with metadata overlays, panel flashback memory recall, and AI-aware session management",
5
5
  "bin": {
6
6
  "termdeck": "./packages/cli/src/index.js"
@@ -69,7 +69,15 @@ const PATTERNS = {
69
69
  // Stricter line-anchored variant for Claude Code, whose tool output (grep
70
70
  // results, test logs, file contents) routinely mentions "Error" mid-line
71
71
  // without representing an actual failure of the agent itself.
72
- errorLineStart: /^\s*(error|Error|ERROR|exception|Exception|Traceback|fatal|FATAL|segmentation fault|panic|EACCES|ECONNREFUSED|ENOENT|command not found|undefined reference|cannot find module|failed with exit code|No such file or directory|Permission denied)\b/m
72
+ errorLineStart: /^\s*(error|Error|ERROR|exception|Exception|Traceback|fatal|FATAL|segmentation fault|panic|EACCES|ECONNREFUSED|ENOENT|command not found|undefined reference|cannot find module|failed with exit code|No such file or directory|Permission denied)\b/m,
73
+ // Sprint 33: PATTERNS.error misses the most common Unix shell errors —
74
+ // `cat: /foo: No such file or directory`, `bash: foo: command not found`,
75
+ // `rm: cannot remove ...: Permission denied`. These have a colon-prefix
76
+ // shape (`<cmd>: ...: <phrase>`) that distinguishes them from prose
77
+ // mentioning the same words. Each branch requires either the colon-prefix
78
+ // structure or a stand-alone anchored keyword. Validated against an
79
+ // adversarial prose suite (see tests/analyzer-error-fixtures.test.js).
80
+ shellError: /(?:^|\n)(?:[^\n]*:\s+(?:.*?:\s+)?(?:No such file or directory|Permission denied|Is a directory|Not a directory|command not found)\b|[^\n]*?\(\d+\)\s+Could not resolve host\b|\s*ModuleNotFoundError:\s+\S|\s*Segmentation fault\b|\s*fatal:\s+\S)/m
73
81
  };
74
82
 
75
83
  class Session {
@@ -345,7 +353,11 @@ class Session {
345
353
  const pattern = this.meta.type === 'claude-code'
346
354
  ? PATTERNS.errorLineStart
347
355
  : PATTERNS.error;
348
- if (!pattern.test(clean)) return;
356
+ // Sprint 33 fix: the structured patterns above miss `cat: /foo: No such
357
+ // file or directory` and friends — the most common Unix shell error
358
+ // shapes Josh hits day-to-day. Fall through to PATTERNS.shellError so
359
+ // the analyzer flips status='errored' and Flashback can fire.
360
+ if (!pattern.test(clean) && !PATTERNS.shellError.test(clean)) return;
349
361
 
350
362
  const oldStatus = this.meta.status;
351
363
  this.meta.status = 'errored';