@jhizzard/termdeck 0.3.8 → 0.3.9

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/README.md CHANGED
@@ -161,7 +161,7 @@ Honest limits, stated upfront so the skeptic has nothing to chase:
161
161
  - **Not a replacement for reading docs.** It's the shortest path to a memory you already wrote. If the memory isn't there, the feature does nothing.
162
162
  - **Not fully local by default.** Tier 2+ reaches out to Supabase for storage and OpenAI for embeddings. Tier 1 is fully local. A fully-local Tier 2 (local Postgres + local embeddings) is on the roadmap.
163
163
  - **Not free forever.** Tier 2+ pays OpenAI fractions of a cent per memory for embeddings. Self-hosted embeddings via Ollama are on the roadmap.
164
- - **Not proven at scale.** v0.3.8, validated against 3,527 memories in one developer's production store. First full Rumen kickstart on 2026-04-15 processed 111 sessions into 111 insights in one pass. No multi-user data yet. Bug reports and issues welcome.
164
+ - **Not proven at scale.** v0.3.9, validated against 3,527 memories in one developer's production store. First full Rumen kickstart on 2026-04-15 processed 111 sessions into 111 insights in one pass. No multi-user data yet. Bug reports and issues welcome.
165
165
 
166
166
  ---
167
167
 
@@ -7,6 +7,14 @@ shell: /bin/zsh # or /bin/bash
7
7
 
8
8
  defaultTheme: tokyo-night
9
9
 
10
+ # Mnestra (pgvector memory store) integration
11
+ # Controls whether scripts/start.sh launches `mnestra serve` automatically.
12
+ # autoStart: true — start mnestra serve automatically when TermDeck boots
13
+ # autoStart: false — never auto-start (leave Mnestra management to the user)
14
+ # (unset) — start.sh prints a hint but does not launch
15
+ mnestra:
16
+ autoStart: true
17
+
10
18
  # Project definitions
11
19
  # Each project maps a name to a directory + defaults
12
20
  # These appear in the prompt bar dropdown and enable auto-cd + default themes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jhizzard/termdeck",
3
- "version": "0.3.8",
3
+ "version": "0.3.9",
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"
@@ -34,7 +34,7 @@
34
34
  "express": "^4.18.2",
35
35
  "open": "^10.0.0",
36
36
  "pg": "^8.20.0",
37
- "uuid": "^9.0.0",
37
+ "uuid": "^13.0.0",
38
38
  "ws": "^8.16.0",
39
39
  "yaml": "^2.3.4"
40
40
  },
@@ -122,6 +122,7 @@
122
122
  <span class="panel-type">${getTypeLabel(meta.type)}</span>
123
123
  ${meta.project ? `<span class="panel-project ${projClass}">${meta.project}</span>` : ''}
124
124
  <span class="panel-index" id="idx-${id}"></span>
125
+ <span class="panel-sid" title="Session ID: ${id}">${id.slice(0, 8)}</span>
125
126
  <span class="panel-status" id="status-${id}">${meta.statusDetail || meta.status}</span>
126
127
  </div>
127
128
  <div class="panel-header-right">
@@ -2032,7 +2033,7 @@
2032
2033
  {
2033
2034
  target: '.topbar-center',
2034
2035
  title: 'Layout modes',
2035
- body: `Seven preset grid layouts — <kbd>1x1</kbd> through <kbd>4x2</kbd> plus <strong>control</strong> (aggregate activity feed). Click any layout to switch instantly; all terminals re-fit to the new grid. Keyboard shortcuts <kbd>Cmd+Shift+1</kbd>–<kbd>Cmd+Shift+6</kbd> (or <kbd>Ctrl+Shift+1</kbd>–<kbd>6</kbd>) do the same.`,
2036
+ body: `Eight preset grid layouts — <kbd>1x1</kbd> through <kbd>4x2</kbd>, <strong>orch</strong> (1 large + stacked, for 4+1 sprints), plus <strong>control</strong> (aggregate activity feed). Click any layout to switch instantly; all terminals re-fit to the new grid. Keyboard shortcuts <kbd>Cmd+Shift+1</kbd>–<kbd>Cmd+Shift+7</kbd> (or <kbd>Ctrl+Shift+1</kbd>–<kbd>7</kbd>) do the same.`,
2036
2037
  },
2037
2038
  {
2038
2039
  target: '#termSwitcher',
@@ -2508,10 +2509,10 @@
2508
2509
  document.getElementById('promptInput').focus();
2509
2510
  }
2510
2511
  }
2511
- // Ctrl+Shift+1-6 OR Cmd+Shift+1-6 → layout switch (Mac friendly)
2512
- if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key >= '1' && e.key <= '6') {
2512
+ // Ctrl+Shift+1-7 OR Cmd+Shift+1-7 → layout switch (Mac friendly)
2513
+ if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.key >= '1' && e.key <= '7') {
2513
2514
  e.preventDefault();
2514
- const layouts = ['1x1', '2x1', '2x2', '3x2', '2x4', '4x2'];
2515
+ const layouts = ['1x1', '2x1', '2x2', '3x2', '2x4', '4x2', 'orch'];
2515
2516
  setLayout(layouts[parseInt(e.key) - 1]);
2516
2517
  }
2517
2518
  // Ctrl+Shift+] / [ → cycle between terminals
@@ -41,6 +41,7 @@
41
41
  <button class="layout-btn" data-layout="3x2">3x2</button>
42
42
  <button class="layout-btn" data-layout="2x4">2x4</button>
43
43
  <button class="layout-btn" data-layout="4x2">4x2</button>
44
+ <button class="layout-btn" data-layout="orch" title="Orchestrator: 1 large left + stacked right">orch</button>
44
45
  <button class="layout-btn control-btn" data-layout="control" title="Aggregate activity feed">control</button>
45
46
  </div>
46
47
  </div>
@@ -312,6 +312,16 @@
312
312
  .grid-container.layout-4x2 { grid-template-columns: 1fr 1fr 1fr 1fr; grid-template-rows: 1fr 1fr; }
313
313
  .grid-container.layout-2x4 { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr 1fr 1fr; }
314
314
 
315
+ /* Orchestrator: 1 large left panel (60%), remaining stack on the right (40%). */
316
+ .grid-container.layout-orch {
317
+ grid-template-columns: 3fr 2fr;
318
+ grid-auto-rows: 1fr;
319
+ }
320
+ .grid-container.layout-orch .term-panel:first-child {
321
+ grid-row: 1 / -1;
322
+ grid-column: 1;
323
+ }
324
+
315
325
  /* Focus mode: single terminal fills the grid */
316
326
  .grid-container.layout-focus { grid-template-columns: 1fr; grid-template-rows: 1fr; }
317
327
  .grid-container.layout-focus .term-panel:not(.focused) { display: none; }
@@ -393,6 +403,19 @@
393
403
  }
394
404
  .panel-index:empty { display: none; }
395
405
 
406
+ /* Short session ID (first 8 chars) — orchestrator-friendly: lets the
407
+ overseer reference a terminal without hitting the API. */
408
+ .panel-sid {
409
+ font-family: 'SF Mono', 'JetBrains Mono', Consolas, monospace;
410
+ font-size: 10px;
411
+ color: var(--tg-text-dim);
412
+ background: var(--tg-surface-hover);
413
+ padding: 1px 5px;
414
+ border-radius: 3px;
415
+ letter-spacing: 0.3px;
416
+ white-space: nowrap;
417
+ }
418
+
396
419
  .panel-project {
397
420
  font-size: 10px;
398
421
  padding: 1px 7px;
@@ -158,7 +158,7 @@ class RAGIntegration {
158
158
  state.count += 1;
159
159
  if (state.count >= 3 && !state.open) {
160
160
  state.open = true;
161
- console.error(`[rag] circuit breaker open for ${table} — 3 consecutive 404s, disabling pushes until server restart`);
161
+ console.warn(`[rag] circuit breaker open for ${table} — disabling pushes (table may not exist in Supabase)`);
162
162
  }
163
163
  }
164
164
 
@@ -208,7 +208,10 @@ class RAGIntegration {
208
208
  // Success — reset any accumulated 404 count for this table
209
209
  this._resetCircuit(table);
210
210
  } catch (err) {
211
- console.error('[mnestra] Push failed:', err.message);
211
+ // Log at warn (not error) to reduce noise — the circuit breaker handles persistence
212
+ if (!this._isCircuitOpen(table)) {
213
+ console.warn('[rag] push to', table, 'failed:', err.message);
214
+ }
212
215
  throw err; // Propagate to caller so sync loop knows this event failed
213
216
  }
214
217
  }
@@ -243,7 +246,8 @@ class RAGIntegration {
243
246
  });
244
247
  synced.push(event.id);
245
248
  } catch (err) {
246
- console.error('[rag] sync push failed for event', event.id + ':', err);
249
+ // Don't print full stack traces for expected 404s (missing tables)
250
+ console.debug('[rag] sync push failed for event', event.id + ':', err.message);
247
251
  break; // Stop on first failure, retry next cycle
248
252
  }
249
253
  }