tycono 0.3.14-beta.12 → 0.3.14-beta.14

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": "tycono",
3
- "version": "0.3.14-beta.12",
3
+ "version": "0.3.14-beta.14",
4
4
  "description": "Build an AI company. Watch them work.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/tui/app.tsx CHANGED
@@ -714,7 +714,7 @@ export const App: React.FC = () => {
714
714
  );
715
715
  }
716
716
  return (
717
- <Box flexDirection="column">
717
+ <Box flexDirection="column" height={termHeight}>
718
718
  <Box flexGrow={1} flexDirection="column">
719
719
  <PanelMode
720
720
  tree={orgTree}
@@ -402,7 +402,7 @@ const PanelModeInner: React.FC<PanelModeProps> = ({
402
402
  const line = eventToOneLiner(ev);
403
403
  if (line) rightLines.push(line.slice(0, rightWidth));
404
404
  }
405
- if (rightLines.length === 0) rightLines.push(waveId ? 'Waiting for events...' : 'No active stream.');
405
+ if (rightLines.length === 0) rightLines.push(waveId ? `Waiting... (${events.length} events, waveId=${waveId?.slice(-8)})` : 'No active stream.');
406
406
  } else if (rightTab === 'info') {
407
407
  rightLines.push(`Wave: ${focusedWave?.waveId ?? 'none'}`);
408
408
  if (wavePreset) rightLines.push(`Preset: ${wavePreset}`);
@@ -431,34 +431,40 @@ const PanelModeInner: React.FC<PanelModeProps> = ({
431
431
  ? waves.map((w, i) => w.waveId === focusedWaveId ? `[${i + 1}]` : ` ${i + 1} `).join(' ')
432
432
  : '';
433
433
 
434
+ // Separator line
435
+ const sep = '\u2500'.repeat(termCols);
436
+
434
437
  return (
435
438
  <Box flexDirection="column">
436
- {/* Header */}
439
+ {/* Header: wave title │ tabs */}
437
440
  <Text>
438
- <Text color="green" bold>W{focusedWaveIndex}</Text>
439
- <Text color="white"> {focusedWave?.directive?.slice(0, leftWidth - 6) || '(idle)'}</Text>
440
- <Text color="gray"> \u2502 </Text>
441
+ <Text color="green" bold>{'W' + focusedWaveIndex}</Text>
442
+ <Text color="white">{' ' + (focusedWave?.directive?.slice(0, 40) || '(idle)')}</Text>
443
+ <Text color="gray">{' \u2502 '}</Text>
441
444
  <Text color="cyan" bold>{tabBar}</Text>
445
+ <Text color="gray">{' ' + (waveSessionCount > 0 ? waveSessionCount + ' sessions' : '')}</Text>
442
446
  </Text>
443
- {waveSessionCount > 0 && <Text color="gray">{waveSessionCount} sessions</Text>}
444
- <Text color="gray">\u2500\u2500 Org Tree \u2500\u2500</Text>
447
+ <Text color="gray">{sep}</Text>
445
448
 
446
- {/* Merged left|right lines each line = 1 Text = 1 yoga node */}
449
+ {/* Merged: OrgTree (left) Stream (right) */}
447
450
  {mergedLines.map((line, i) => (
448
451
  <Text key={i}>
449
- <Text color="white">{line.left}</Text>
450
- <Text color="gray"> \u2502 </Text>
452
+ <Text color={line.left.includes('\u25CF') ? 'green' : line.left.includes('\u2713') ? 'cyan' : 'white'}>{line.left}</Text>
453
+ <Text color="gray">{' \u2502 '}</Text>
451
454
  <Text color="white">{line.right}</Text>
452
455
  </Text>
453
456
  ))}
454
457
 
455
- {/* Wave tabs */}
456
- {waveTabs && <Text color="gray">{waveTabs}</Text>}
457
-
458
- {/* Footer */}
459
- <Text color="gray" dimColor>
460
- [h/l] tab [j/k] role {waves.length > 1 ? '[1-9] wave ' : ''}[Esc] command
461
- </Text>
458
+ {/* Separator + wave tabs + footer */}
459
+ <Text color="gray">{sep}</Text>
460
+ {waveTabs ? (
461
+ <Text>
462
+ <Text color="gray">{waveTabs + ' '}</Text>
463
+ <Text color="gray" dimColor>{'[h/l] tab [j/k] role [1-9] wave [Esc] back'}</Text>
464
+ </Text>
465
+ ) : (
466
+ <Text color="gray" dimColor>{'[h/l] tab [j/k] role [Esc] back'}</Text>
467
+ )}
462
468
  </Box>
463
469
  );
464
470
  };