myrlin-workbook 0.9.5 → 0.9.6

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": "myrlin-workbook",
3
- "version": "0.9.5",
3
+ "version": "0.9.6",
4
4
  "description": "Browser-based project manager for Claude Code sessions - session discovery, multi-terminal, cost tracking, docs, and kanban board",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -1820,7 +1820,7 @@ class CWMApp {
1820
1820
  this.showApp();
1821
1821
  this.initDragAndDrop();
1822
1822
  this.initTerminalResize();
1823
- this.initTerminalGroups();
1823
+ await this.initTerminalGroups();
1824
1824
  this.initTerminalPaneSwipe();
1825
1825
  this.initNotesEditor();
1826
1826
  this.initAIInsights();
@@ -11521,15 +11521,16 @@ class CWMApp {
11521
11521
  PHASE 4: TERMINAL TAB GROUPS
11522
11522
  ═══════════════════════════════════════════════════════════ */
11523
11523
 
11524
- initTerminalGroups() {
11524
+ async initTerminalGroups() {
11525
11525
  // Load layout from server
11526
11526
  this._tabGroups = [];
11527
11527
  this._tabFolders = []; // Tab group folders: { id, name, color, collapsed }
11528
11528
  this._activeGroupId = null;
11529
11529
  this._layoutSaveTimer = null;
11530
+ this._layoutRestored = false;
11530
11531
 
11531
- // Load saved layout
11532
- this.loadTerminalLayout();
11532
+ // Load saved layout (must complete before SSE or other init touches panes)
11533
+ await this.loadTerminalLayout();
11533
11534
  }
11534
11535
 
11535
11536
  async loadTerminalLayout() {
@@ -11557,11 +11558,12 @@ class CWMApp {
11557
11558
  const group = this._tabGroups.find(g => g.id === this._activeGroupId);
11558
11559
  if (group && group.panes && group.panes.length > 0) {
11559
11560
  group.panes.forEach(p => {
11560
- if (p.sessionId) {
11561
+ if (p.sessionId && !this.terminalPanes[p.slot]) {
11561
11562
  this.openTerminalInPane(p.slot, p.sessionId, p.sessionName || 'Terminal', p.spawnOpts || {});
11562
11563
  }
11563
11564
  });
11564
11565
  }
11566
+ this._layoutRestored = true;
11565
11567
  }
11566
11568
 
11567
11569
  /**
@@ -11959,11 +11961,11 @@ class CWMApp {
11959
11961
  }
11960
11962
  });
11961
11963
  } else {
11962
- // No cache create fresh connections (first time opening this group)
11964
+ // No cache, create fresh connections (first time opening this group)
11963
11965
  const group = this._tabGroups.find(g => g.id === groupId);
11964
11966
  if (group && group.panes) {
11965
11967
  group.panes.forEach(p => {
11966
- if (p.sessionId) {
11968
+ if (p.sessionId && !this.terminalPanes[p.slot]) {
11967
11969
  this.openTerminalInPane(p.slot, p.sessionId, p.sessionName || 'Terminal', p.spawnOpts || {});
11968
11970
  }
11969
11971
  });