@industry-theme/xterm-terminal-panel 0.9.0 → 0.9.2

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/dist/index.d.ts CHANGED
@@ -2,6 +2,8 @@ export { ThemedTerminal } from './src/components/ThemedTerminal';
2
2
  export { ThemedTerminalWithProvider } from './src/components/ThemedTerminalWithProvider';
3
3
  export { WorkingOverlay } from './src/components/WorkingOverlay';
4
4
  export type { WorkingOverlayProps } from './src/components/WorkingOverlay';
5
+ export { ProgramStatusBadge, formatProgramStatusRecord } from './src/components/ProgramStatusBadge';
6
+ export type { ProgramStatusBadgeProps } from './src/components/ProgramStatusBadge';
5
7
  export { SelectionDragChip } from './src/components/SelectionDragChip';
6
8
  export type { SelectionDragChipProps } from './src/components/SelectionDragChip';
7
9
  export { XtermRenderer } from './src/renderer/XtermRenderer';
@@ -15,7 +17,7 @@ export { TerminalSession } from './src/components/TerminalSession';
15
17
  export type { TerminalSessionProps, TerminalSessionHandle, } from './src/components/TerminalSession';
16
18
  export { TerminalOverlay } from './src/components/TerminalOverlay';
17
19
  export type { TerminalOverlayProps } from './src/components/TerminalOverlay';
18
- export type { ThemedTerminalProps, ThemedTerminalRef, TerminalActivityState, TerminalHeaderBadge, TerminalOverlayState, TerminalScrollPosition, LinkClickModifiers, DroppedTerminalFile, } from './src/types/terminal.types';
20
+ export type { ThemedTerminalProps, ThemedTerminalRef, TerminalActivityState, TerminalHeaderBadge, TerminalOverlayState, TerminalScrollPosition, LinkClickModifiers, DroppedTerminalFile, ProgramStatusRecord, ProgramStatusState, ProgramStatusKind, } from './src/types/terminal.types';
19
21
  export { useThemedTerminal } from './src/hooks/useThemedTerminal';
20
22
  export type { UseThemedTerminalReturn } from './src/hooks/useThemedTerminal';
21
23
  export { createTerminalTheme, getTerminalCSSVariables, } from './src/utils/terminalTheme';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -38,7 +38,7 @@ import {
38
38
  // package.json
39
39
  var package_default = {
40
40
  name: "@industry-theme/xterm-terminal-panel",
41
- version: "0.9.0",
41
+ version: "0.9.2",
42
42
  description: "Industry-themed xterm.js terminal components with panel framework integration",
43
43
  type: "module",
44
44
  sideEffects: [
@@ -1548,9 +1548,122 @@ var ThemedTerminalWithProvider = forwardRef2((props, ref) => {
1548
1548
  });
1549
1549
  ThemedTerminalWithProvider.displayName = "ThemedTerminalWithProvider";
1550
1550
 
1551
+ // src/components/ProgramStatusBadge.tsx
1552
+ import { useTheme as useTheme2 } from "@principal-ade/industry-theme";
1553
+ import { jsx as jsx5 } from "react/jsx-runtime";
1554
+ var blockedColor = (kind, colors) => {
1555
+ switch (kind) {
1556
+ case "auth":
1557
+ return colors.error;
1558
+ case "question":
1559
+ return colors.info;
1560
+ case "permission":
1561
+ default:
1562
+ return colors.warning;
1563
+ }
1564
+ };
1565
+ var formatProgramStatusRecord = (record) => {
1566
+ const parts = [`state=${record.state}`];
1567
+ if (record.kind) parts.push(`kind=${record.kind}`);
1568
+ if (typeof record.progress === "number") parts.push(`progress=${record.progress}`);
1569
+ if (record.app) parts.push(`app=${record.app}`);
1570
+ if (record.msg) parts.push(`msg=${record.msg}`);
1571
+ if (record.title) parts.push(`title=${record.title}`);
1572
+ return parts.join("; ");
1573
+ };
1574
+ var WaveBars = ({ color, animate }) => /* @__PURE__ */ jsx5("div", { style: { display: "flex", gap: 1, alignItems: "center", height: 12 }, children: [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx5(
1575
+ "div",
1576
+ {
1577
+ style: {
1578
+ width: 2,
1579
+ height: 10,
1580
+ backgroundColor: color,
1581
+ borderRadius: 1,
1582
+ transformOrigin: "center",
1583
+ transform: animate ? void 0 : "scaleY(0.4)",
1584
+ animation: animate ? `program-status-wave 1.2s ease-in-out ${i * 0.1}s infinite` : "none"
1585
+ }
1586
+ },
1587
+ i
1588
+ )) });
1589
+ var ProgramStatusBadge = ({
1590
+ record,
1591
+ animate = true
1592
+ }) => {
1593
+ const { theme } = useTheme2();
1594
+ switch (record.state) {
1595
+ case "working":
1596
+ return /* @__PURE__ */ jsx5(
1597
+ "span",
1598
+ {
1599
+ title: formatProgramStatusRecord(record),
1600
+ style: { display: "flex", alignItems: "center" },
1601
+ children: /* @__PURE__ */ jsx5(WaveBars, { color: theme.colors.primary, animate })
1602
+ }
1603
+ );
1604
+ case "blocked": {
1605
+ const color = blockedColor(record.kind, theme.colors);
1606
+ return /* @__PURE__ */ jsx5(
1607
+ "span",
1608
+ {
1609
+ title: formatProgramStatusRecord(record),
1610
+ style: {
1611
+ display: "flex",
1612
+ alignItems: "center",
1613
+ justifyContent: "center",
1614
+ width: 12,
1615
+ height: 12,
1616
+ borderRadius: 3,
1617
+ backgroundColor: color,
1618
+ color: theme.colors.background,
1619
+ fontSize: 10,
1620
+ fontWeight: 700,
1621
+ lineHeight: 1,
1622
+ boxShadow: `0 0 0 2px ${color}33`,
1623
+ animation: animate ? "program-status-fade 1.4s ease-in-out infinite" : "none"
1624
+ },
1625
+ children: "!"
1626
+ }
1627
+ );
1628
+ }
1629
+ case "done":
1630
+ return /* @__PURE__ */ jsx5(
1631
+ "span",
1632
+ {
1633
+ title: formatProgramStatusRecord(record),
1634
+ style: {
1635
+ display: "block",
1636
+ width: 8,
1637
+ height: 8,
1638
+ borderRadius: "50%",
1639
+ backgroundColor: theme.colors.success
1640
+ }
1641
+ }
1642
+ );
1643
+ case "error":
1644
+ return /* @__PURE__ */ jsx5(
1645
+ "span",
1646
+ {
1647
+ title: formatProgramStatusRecord(record),
1648
+ style: {
1649
+ display: "block",
1650
+ width: 12,
1651
+ height: 11,
1652
+ backgroundColor: theme.colors.error,
1653
+ clipPath: "polygon(50% 0%, 100% 100%, 0% 100%)"
1654
+ }
1655
+ }
1656
+ );
1657
+ // `idle` / `clear` render nothing — the tab is quiescent.
1658
+ default:
1659
+ return null;
1660
+ }
1661
+ };
1662
+ ProgramStatusBadge.displayName = "ProgramStatusBadge";
1663
+
1551
1664
  // src/renderer/XtermRenderer.tsx
1552
1665
  import { forwardRef as forwardRef3, useImperativeHandle as useImperativeHandle2, useRef as useRef2 } from "react";
1553
- import { jsx as jsx5 } from "react/jsx-runtime";
1666
+ import { jsx as jsx6 } from "react/jsx-runtime";
1554
1667
  var XtermRenderer = forwardRef3(
1555
1668
  (props, ref) => {
1556
1669
  const {
@@ -1589,7 +1702,7 @@ var XtermRenderer = forwardRef3(
1589
1702
  }),
1590
1703
  []
1591
1704
  );
1592
- return /* @__PURE__ */ jsx5(
1705
+ return /* @__PURE__ */ jsx6(
1593
1706
  ThemedTerminalWithProvider,
1594
1707
  {
1595
1708
  ref: innerRef,
@@ -1608,7 +1721,7 @@ var XtermRenderer = forwardRef3(
1608
1721
  XtermRenderer.displayName = "XtermRenderer";
1609
1722
 
1610
1723
  // src/renderer/GhosttyRenderer.tsx
1611
- import { useTheme as useTheme2 } from "@principal-ade/industry-theme";
1724
+ import { useTheme as useTheme3 } from "@principal-ade/industry-theme";
1612
1725
  import { FitAddon as FitAddon2, Terminal as Terminal2 } from "ghostty-web";
1613
1726
  import { forwardRef as forwardRef4, useCallback as useCallback2, useEffect as useEffect2, useImperativeHandle as useImperativeHandle3, useRef as useRef3 } from "react";
1614
1727
 
@@ -1623,7 +1736,7 @@ function ensureGhostty() {
1623
1736
  }
1624
1737
 
1625
1738
  // src/renderer/GhosttyRenderer.tsx
1626
- import { jsx as jsx6 } from "react/jsx-runtime";
1739
+ import { jsx as jsx7 } from "react/jsx-runtime";
1627
1740
  var DEFAULT_FONT_STACK = "JetBrains Mono, Menlo, Monaco, monospace";
1628
1741
  var GhosttyRenderer = forwardRef4(
1629
1742
  (props, ref) => {
@@ -1645,11 +1758,14 @@ var GhosttyRenderer = forwardRef4(
1645
1758
  // Accepted but intentionally not implemented yet:
1646
1759
  // onLinkClick, onFilesDropped
1647
1760
  } = props;
1648
- const { theme } = useTheme2();
1761
+ const { theme } = useTheme3();
1649
1762
  const containerRef = useRef3(null);
1650
1763
  const termRef = useRef3(null);
1651
1764
  const fitRef = useRef3(null);
1652
1765
  const readyRef = useRef3(false);
1766
+ const pendingWritesRef = useRef3([]);
1767
+ const autoFocusRef = useRef3(autoFocus);
1768
+ autoFocusRef.current = autoFocus;
1653
1769
  const callbacks = useRef3({ onData, onResize, onReady, onScrollPositionChange, onShortcut });
1654
1770
  callbacks.current = { onData, onResize, onReady, onScrollPositionChange, onShortcut };
1655
1771
  const readScrollPosition = useCallback2(() => {
@@ -1677,6 +1793,14 @@ var GhosttyRenderer = forwardRef4(
1677
1793
  }
1678
1794
  }
1679
1795
  }, []);
1796
+ const write = useCallback2((data) => {
1797
+ const term = termRef.current;
1798
+ if (term) {
1799
+ term.write(data);
1800
+ } else {
1801
+ pendingWritesRef.current.push(data);
1802
+ }
1803
+ }, []);
1680
1804
  useEffect2(() => {
1681
1805
  const container = containerRef.current;
1682
1806
  if (!container) return;
@@ -1725,7 +1849,12 @@ var GhosttyRenderer = forwardRef4(
1725
1849
  return false;
1726
1850
  });
1727
1851
  fit();
1728
- if (autoFocus) term.focus();
1852
+ if (pendingWritesRef.current.length > 0) {
1853
+ const pending = pendingWritesRef.current;
1854
+ pendingWritesRef.current = [];
1855
+ for (const chunk of pending) term.write(chunk);
1856
+ }
1857
+ if (autoFocusRef.current) term.focus();
1729
1858
  };
1730
1859
  init2();
1731
1860
  return () => {
@@ -1743,7 +1872,6 @@ var GhosttyRenderer = forwardRef4(
1743
1872
  scrollback,
1744
1873
  transparent,
1745
1874
  backgroundColor,
1746
- autoFocus,
1747
1875
  theme.colors.background,
1748
1876
  theme.colors.text,
1749
1877
  theme.fonts.monospace,
@@ -1758,12 +1886,16 @@ var GhosttyRenderer = forwardRef4(
1758
1886
  return () => observer.disconnect();
1759
1887
  }, [fit]);
1760
1888
  useEffect2(() => {
1761
- if (isVisible) fit();
1889
+ if (!isVisible) return;
1890
+ fit();
1762
1891
  }, [isVisible, fit]);
1892
+ useEffect2(() => {
1893
+ if (isVisible && autoFocus) termRef.current?.focus();
1894
+ }, [isVisible, autoFocus]);
1763
1895
  useImperativeHandle3(
1764
1896
  ref,
1765
1897
  () => ({
1766
- write: (data) => termRef.current?.write(data),
1898
+ write,
1767
1899
  clear: () => termRef.current?.clear(),
1768
1900
  focus: () => termRef.current?.focus(),
1769
1901
  blur: () => termRef.current?.blur(),
@@ -1778,9 +1910,9 @@ var GhosttyRenderer = forwardRef4(
1778
1910
  },
1779
1911
  getScrollPosition: readScrollPosition
1780
1912
  }),
1781
- [fit, readScrollPosition]
1913
+ [fit, readScrollPosition, write]
1782
1914
  );
1783
- return /* @__PURE__ */ jsx6(
1915
+ return /* @__PURE__ */ jsx7(
1784
1916
  "div",
1785
1917
  {
1786
1918
  ref: containerRef,
@@ -1808,7 +1940,7 @@ function resolveRenderer(choice) {
1808
1940
  }
1809
1941
 
1810
1942
  // src/components/TerminalSession.tsx
1811
- import { useTheme as useTheme3 } from "@principal-ade/industry-theme";
1943
+ import { useTheme as useTheme4 } from "@principal-ade/industry-theme";
1812
1944
  import {
1813
1945
  forwardRef as forwardRef5,
1814
1946
  useCallback as useCallback3,
@@ -1820,7 +1952,7 @@ import {
1820
1952
 
1821
1953
  // src/components/TerminalOverlay.tsx
1822
1954
  import { Monitor as Monitor2 } from "lucide-react";
1823
- import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
1955
+ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
1824
1956
  var TerminalOverlay = ({ state, theme }) => /* @__PURE__ */ jsxs4(
1825
1957
  "div",
1826
1958
  {
@@ -1841,8 +1973,8 @@ var TerminalOverlay = ({ state, theme }) => /* @__PURE__ */ jsxs4(
1841
1973
  zIndex: 10
1842
1974
  },
1843
1975
  children: [
1844
- /* @__PURE__ */ jsx7(Monitor2, { size: 48, color: theme.colors.textSecondary }),
1845
- /* @__PURE__ */ jsx7(
1976
+ /* @__PURE__ */ jsx8(Monitor2, { size: 48, color: theme.colors.textSecondary }),
1977
+ /* @__PURE__ */ jsx8(
1846
1978
  "div",
1847
1979
  {
1848
1980
  style: {
@@ -1854,7 +1986,7 @@ var TerminalOverlay = ({ state, theme }) => /* @__PURE__ */ jsxs4(
1854
1986
  children: state.message
1855
1987
  }
1856
1988
  ),
1857
- state.subtitle && /* @__PURE__ */ jsx7(
1989
+ state.subtitle && /* @__PURE__ */ jsx8(
1858
1990
  "div",
1859
1991
  {
1860
1992
  style: {
@@ -1866,7 +1998,7 @@ var TerminalOverlay = ({ state, theme }) => /* @__PURE__ */ jsxs4(
1866
1998
  children: state.subtitle
1867
1999
  }
1868
2000
  ),
1869
- state.actions && state.actions.length > 0 && /* @__PURE__ */ jsx7(
2001
+ state.actions && state.actions.length > 0 && /* @__PURE__ */ jsx8(
1870
2002
  "div",
1871
2003
  {
1872
2004
  style: {
@@ -1921,7 +2053,7 @@ var TerminalOverlay = ({ state, theme }) => /* @__PURE__ */ jsxs4(
1921
2053
  );
1922
2054
 
1923
2055
  // src/components/TerminalSession.tsx
1924
- import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
2056
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
1925
2057
  var TerminalSession = forwardRef5(
1926
2058
  (props, ref) => {
1927
2059
  const {
@@ -1953,7 +2085,7 @@ var TerminalSession = forwardRef5(
1953
2085
  workingSubtitle
1954
2086
  } = props;
1955
2087
  const Renderer = resolveRenderer(rendererProp);
1956
- const { theme } = useTheme3();
2088
+ const { theme } = useTheme4();
1957
2089
  const rendererRef = useRef4(null);
1958
2090
  const [localSessionId, setLocalSessionId] = useState2(sessionIdProp);
1959
2091
  const [isInitialized, setIsInitialized] = useState2(false);
@@ -2274,7 +2406,7 @@ var TerminalSession = forwardRef5(
2274
2406
  padding: "10px 0 0 10px"
2275
2407
  },
2276
2408
  children: [
2277
- /* @__PURE__ */ jsx8(
2409
+ /* @__PURE__ */ jsx9(
2278
2410
  "div",
2279
2411
  {
2280
2412
  style: {
@@ -2285,7 +2417,7 @@ var TerminalSession = forwardRef5(
2285
2417
  }
2286
2418
  }
2287
2419
  ),
2288
- /* @__PURE__ */ jsx8("style", { children: `@keyframes terminal-session-cursor-blink {
2420
+ /* @__PURE__ */ jsx9("style", { children: `@keyframes terminal-session-cursor-blink {
2289
2421
  0%, 100% { opacity: 1; }
2290
2422
  50% { opacity: 0; }
2291
2423
  }` })
@@ -2307,7 +2439,7 @@ var TerminalSession = forwardRef5(
2307
2439
  } : void 0;
2308
2440
  const effectiveOverlay = ownershipLostOverlay ?? overlayState;
2309
2441
  return /* @__PURE__ */ jsxs5("div", { style: { position: "relative", height: "100%", width: "100%" }, children: [
2310
- /* @__PURE__ */ jsx8(
2442
+ /* @__PURE__ */ jsx9(
2311
2443
  Renderer,
2312
2444
  {
2313
2445
  ref: rendererRef,
@@ -2326,8 +2458,8 @@ var TerminalSession = forwardRef5(
2326
2458
  },
2327
2459
  shouldRenderTerminal ? "active" : "overlay"
2328
2460
  ),
2329
- effectiveOverlay && /* @__PURE__ */ jsx8(TerminalOverlay, { state: effectiveOverlay, theme }),
2330
- isWorking && !effectiveOverlay && /* @__PURE__ */ jsx8(
2461
+ effectiveOverlay && /* @__PURE__ */ jsx9(TerminalOverlay, { state: effectiveOverlay, theme }),
2462
+ isWorking && !effectiveOverlay && /* @__PURE__ */ jsx9(
2331
2463
  WorkingOverlay,
2332
2464
  {
2333
2465
  theme,
@@ -2341,10 +2473,10 @@ var TerminalSession = forwardRef5(
2341
2473
  TerminalSession.displayName = "TerminalSession";
2342
2474
 
2343
2475
  // src/hooks/useThemedTerminal.ts
2344
- import { useTheme as useTheme4 } from "@principal-ade/industry-theme";
2476
+ import { useTheme as useTheme5 } from "@principal-ade/industry-theme";
2345
2477
  import { useMemo } from "react";
2346
2478
  function useThemedTerminal() {
2347
- const { theme } = useTheme4();
2479
+ const { theme } = useTheme5();
2348
2480
  const terminalOptions = useMemo(
2349
2481
  () => ({
2350
2482
  cursorBlink: true,
@@ -2381,14 +2513,14 @@ function useThemedTerminal() {
2381
2513
  }
2382
2514
 
2383
2515
  // src/components/TabBar/TabBar.tsx
2384
- import { useTheme as useTheme6 } from "@principal-ade/industry-theme";
2516
+ import { useTheme as useTheme7 } from "@principal-ade/industry-theme";
2385
2517
  import { Plus } from "lucide-react";
2386
2518
  import { useState as useState3, useCallback as useCallback5 } from "react";
2387
2519
 
2388
2520
  // src/components/TabBar/TabButton.tsx
2389
- import { useTheme as useTheme5 } from "@principal-ade/industry-theme";
2521
+ import { useTheme as useTheme6 } from "@principal-ade/industry-theme";
2390
2522
  import { useCallback as useCallback4 } from "react";
2391
- import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
2523
+ import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
2392
2524
  var TabButton = ({
2393
2525
  tab,
2394
2526
  isActive,
@@ -2412,7 +2544,7 @@ var TabButton = ({
2412
2544
  onDragLeave,
2413
2545
  isBeingDragged: _isBeingDragged = false
2414
2546
  }) => {
2415
- const { theme } = useTheme5();
2547
+ const { theme } = useTheme6();
2416
2548
  const showCloseButton = isHovered || isActive;
2417
2549
  const closable = tab.closable !== false;
2418
2550
  const handleDragStart = useCallback4(
@@ -2531,7 +2663,7 @@ var TabButton = ({
2531
2663
  ...getDragOverStyles()
2532
2664
  },
2533
2665
  children: [
2534
- closable && showCloseButton && /* @__PURE__ */ jsx9(
2666
+ closable && showCloseButton && /* @__PURE__ */ jsx10(
2535
2667
  "button",
2536
2668
  {
2537
2669
  onClick: (e) => {
@@ -2566,12 +2698,12 @@ var TabButton = ({
2566
2698
  (() => {
2567
2699
  const icon = renderIcon ? renderIcon(tab) : void 0;
2568
2700
  const displayIcon = icon !== void 0 ? icon : tab.icon;
2569
- return displayIcon ? /* @__PURE__ */ jsx9("div", { style: { flexShrink: 0, display: "flex", alignItems: "center", pointerEvents: "none" }, children: displayIcon }) : null;
2701
+ return displayIcon ? /* @__PURE__ */ jsx10("div", { style: { flexShrink: 0, display: "flex", alignItems: "center", pointerEvents: "none" }, children: displayIcon }) : null;
2570
2702
  })(),
2571
2703
  (() => {
2572
2704
  const label = renderLabel ? renderLabel(tab) : void 0;
2573
2705
  const displayLabel = label !== void 0 ? label : tab.label;
2574
- return /* @__PURE__ */ jsx9(
2706
+ return /* @__PURE__ */ jsx10(
2575
2707
  "span",
2576
2708
  {
2577
2709
  style: {
@@ -2585,7 +2717,7 @@ var TabButton = ({
2585
2717
  }
2586
2718
  );
2587
2719
  })(),
2588
- renderAccessory ? renderAccessory(tab) : keyboardHint && /* @__PURE__ */ jsx9(
2720
+ renderAccessory ? renderAccessory(tab) : keyboardHint && /* @__PURE__ */ jsx10(
2589
2721
  "span",
2590
2722
  {
2591
2723
  style: {
@@ -2604,7 +2736,7 @@ var TabButton = ({
2604
2736
  TabButton.displayName = "TabButton";
2605
2737
 
2606
2738
  // src/components/TabBar/TabBar.tsx
2607
- import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
2739
+ import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
2608
2740
  var TabBar = ({
2609
2741
  tabs,
2610
2742
  activeTabId,
@@ -2623,7 +2755,7 @@ var TabBar = ({
2623
2755
  canDropOnTab,
2624
2756
  enableDragAndDrop = false
2625
2757
  }) => {
2626
- const { theme } = useTheme6();
2758
+ const { theme } = useTheme7();
2627
2759
  const [hoveredTabId, setHoveredTabId] = useState3(null);
2628
2760
  const [draggedTabId, setDraggedTabId] = useState3(null);
2629
2761
  const [dragOverTabId, setDragOverTabId] = useState3(null);
@@ -2662,7 +2794,7 @@ var TabBar = ({
2662
2794
  boxSizing: "border-box"
2663
2795
  },
2664
2796
  children: [
2665
- leftSection && /* @__PURE__ */ jsx10(
2797
+ leftSection && /* @__PURE__ */ jsx11(
2666
2798
  "div",
2667
2799
  {
2668
2800
  style: {
@@ -2678,7 +2810,7 @@ var TabBar = ({
2678
2810
  children: leftSection
2679
2811
  }
2680
2812
  ),
2681
- /* @__PURE__ */ jsx10(
2813
+ /* @__PURE__ */ jsx11(
2682
2814
  "div",
2683
2815
  {
2684
2816
  style: {
@@ -2691,7 +2823,7 @@ var TabBar = ({
2691
2823
  },
2692
2824
  children: tabs.map((tab, index) => {
2693
2825
  const canDrop = enableDragAndDrop && draggedTabId !== null && draggedTabId !== tab.id ? canDropOnTab ? canDropOnTab(draggedTabId, tab.id) : true : false;
2694
- return /* @__PURE__ */ jsx10(
2826
+ return /* @__PURE__ */ jsx11(
2695
2827
  TabButton,
2696
2828
  {
2697
2829
  tab,
@@ -2720,7 +2852,7 @@ var TabBar = ({
2720
2852
  })
2721
2853
  }
2722
2854
  ),
2723
- rightSection !== void 0 ? rightSection && /* @__PURE__ */ jsx10(
2855
+ rightSection !== void 0 ? rightSection && /* @__PURE__ */ jsx11(
2724
2856
  "div",
2725
2857
  {
2726
2858
  style: {
@@ -2735,7 +2867,7 @@ var TabBar = ({
2735
2867
  },
2736
2868
  children: rightSection
2737
2869
  }
2738
- ) : onNewTab && /* @__PURE__ */ jsx10(
2870
+ ) : onNewTab && /* @__PURE__ */ jsx11(
2739
2871
  "div",
2740
2872
  {
2741
2873
  style: {
@@ -2748,7 +2880,7 @@ var TabBar = ({
2748
2880
  borderBottom: `1px solid ${theme.colors.border}`,
2749
2881
  boxSizing: "border-box"
2750
2882
  },
2751
- children: /* @__PURE__ */ jsx10(
2883
+ children: /* @__PURE__ */ jsx11(
2752
2884
  "button",
2753
2885
  {
2754
2886
  onClick: onNewTab,
@@ -2771,7 +2903,7 @@ var TabBar = ({
2771
2903
  e.currentTarget.style.backgroundColor = "transparent";
2772
2904
  },
2773
2905
  title: "New Tab (\u2318T)",
2774
- children: /* @__PURE__ */ jsx10(Plus, { size: 14 })
2906
+ children: /* @__PURE__ */ jsx11(Plus, { size: 14 })
2775
2907
  }
2776
2908
  )
2777
2909
  }
@@ -2825,7 +2957,7 @@ var useTabKeyboardShortcuts = ({
2825
2957
  };
2826
2958
 
2827
2959
  // src/panels/TabbedTerminalPanel.tsx
2828
- import { useTheme as useTheme8 } from "@principal-ade/industry-theme";
2960
+ import { useTheme as useTheme9 } from "@principal-ade/industry-theme";
2829
2961
  import { CollapsibleSplitPane } from "@principal-ade/panels";
2830
2962
  import { Terminal as TerminalIcon2, Box, Boxes, Paperclip } from "lucide-react";
2831
2963
  import React4, {
@@ -2836,16 +2968,16 @@ import React4, {
2836
2968
  } from "react";
2837
2969
 
2838
2970
  // src/components/TerminalStatusBar.tsx
2839
- import { useTheme as useTheme7 } from "@principal-ade/industry-theme";
2971
+ import { useTheme as useTheme8 } from "@principal-ade/industry-theme";
2840
2972
  import { Folder, GitBranch } from "lucide-react";
2841
2973
  import React3 from "react";
2842
- import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
2974
+ import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
2843
2975
  var AVATAR_SIZE = 14;
2844
2976
  var TerminalStatusBar = ({
2845
2977
  directory,
2846
2978
  repo
2847
2979
  }) => {
2848
- const { theme } = useTheme7();
2980
+ const { theme } = useTheme8();
2849
2981
  const [avatarFailed, setAvatarFailed] = React3.useState(false);
2850
2982
  const owner = repo?.owner;
2851
2983
  React3.useEffect(() => {
@@ -2875,7 +3007,7 @@ var TerminalStatusBar = ({
2875
3007
  style: containerStyle,
2876
3008
  title: `${repo.owner}/${repo.repo}${repo.branch ? ` \u2014 ${repo.branch}` : ""}`,
2877
3009
  children: [
2878
- showAvatar ? /* @__PURE__ */ jsx11(
3010
+ showAvatar ? /* @__PURE__ */ jsx12(
2879
3011
  "img",
2880
3012
  {
2881
3013
  src: avatarUrl,
@@ -2890,7 +3022,7 @@ var TerminalStatusBar = ({
2890
3022
  borderRadius: "50%"
2891
3023
  }
2892
3024
  }
2893
- ) : /* @__PURE__ */ jsx11(Folder, { size: 12, style: { flex: "0 0 auto", opacity: 0.7 } }),
3025
+ ) : /* @__PURE__ */ jsx12(Folder, { size: 12, style: { flex: "0 0 auto", opacity: 0.7 } }),
2894
3026
  /* @__PURE__ */ jsxs8(
2895
3027
  "span",
2896
3028
  {
@@ -2905,7 +3037,7 @@ var TerminalStatusBar = ({
2905
3037
  repo.owner,
2906
3038
  "/"
2907
3039
  ] }),
2908
- /* @__PURE__ */ jsx11("span", { style: { color: theme.colors.text }, children: repo.repo })
3040
+ /* @__PURE__ */ jsx12("span", { style: { color: theme.colors.text }, children: repo.repo })
2909
3041
  ]
2910
3042
  }
2911
3043
  ),
@@ -2920,9 +3052,9 @@ var TerminalStatusBar = ({
2920
3052
  opacity: 0.85
2921
3053
  },
2922
3054
  children: [
2923
- /* @__PURE__ */ jsx11(GitBranch, { size: 12, style: { flex: "0 0 auto", opacity: 0.7 } }),
2924
- /* @__PURE__ */ jsx11("span", { children: repo.branch }),
2925
- repo.isDirty && /* @__PURE__ */ jsx11(
3055
+ /* @__PURE__ */ jsx12(GitBranch, { size: 12, style: { flex: "0 0 auto", opacity: 0.7 } }),
3056
+ /* @__PURE__ */ jsx12("span", { children: repo.branch }),
3057
+ repo.isDirty && /* @__PURE__ */ jsx12(
2926
3058
  "span",
2927
3059
  {
2928
3060
  title: "Uncommitted changes",
@@ -2950,8 +3082,8 @@ var TerminalStatusBar = ({
2950
3082
  return null;
2951
3083
  }
2952
3084
  return /* @__PURE__ */ jsxs8("div", { style: containerStyle, title: directory, children: [
2953
- /* @__PURE__ */ jsx11(Folder, { size: 12, style: { flex: "0 0 auto", opacity: 0.7 } }),
2954
- /* @__PURE__ */ jsx11(
3085
+ /* @__PURE__ */ jsx12(Folder, { size: 12, style: { flex: "0 0 auto", opacity: 0.7 } }),
3086
+ /* @__PURE__ */ jsx12(
2955
3087
  "span",
2956
3088
  {
2957
3089
  style: {
@@ -2962,7 +3094,7 @@ var TerminalStatusBar = ({
2962
3094
  textOverflow: "ellipsis",
2963
3095
  minWidth: 0
2964
3096
  },
2965
- children: /* @__PURE__ */ jsx11("bdi", { children: directory })
3097
+ children: /* @__PURE__ */ jsx12("bdi", { children: directory })
2966
3098
  }
2967
3099
  )
2968
3100
  ] });
@@ -2970,9 +3102,9 @@ var TerminalStatusBar = ({
2970
3102
  TerminalStatusBar.displayName = "TerminalStatusBar";
2971
3103
 
2972
3104
  // src/panels/TabbedTerminalPanel.tsx
2973
- import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
3105
+ import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
2974
3106
  var ActivityIndicator = ({ color, isAnimating }) => /* @__PURE__ */ jsxs9("div", { style: { display: "flex", gap: 1, alignItems: "center", height: 12 }, children: [
2975
- [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx12(
3107
+ [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx13(
2976
3108
  "div",
2977
3109
  {
2978
3110
  style: {
@@ -2987,7 +3119,7 @@ var ActivityIndicator = ({ color, isAnimating }) => /* @__PURE__ */ jsxs9("div",
2987
3119
  },
2988
3120
  i
2989
3121
  )),
2990
- /* @__PURE__ */ jsx12("style", { children: `
3122
+ /* @__PURE__ */ jsx13("style", { children: `
2991
3123
  @keyframes waveSine {
2992
3124
  0%, 100% { transform: scaleY(0.4); }
2993
3125
  50% { transform: scaleY(1); }
@@ -3043,7 +3175,7 @@ function TerminalTabContentInner(props, ref) {
3043
3175
  }),
3044
3176
  []
3045
3177
  );
3046
- return /* @__PURE__ */ jsx12(
3178
+ return /* @__PURE__ */ jsx13(
3047
3179
  "div",
3048
3180
  {
3049
3181
  style: {
@@ -3057,7 +3189,7 @@ function TerminalTabContentInner(props, ref) {
3057
3189
  height: "100%",
3058
3190
  width: "100%"
3059
3191
  },
3060
- children: /* @__PURE__ */ jsx12(
3192
+ children: /* @__PURE__ */ jsx13(
3061
3193
  TerminalSession,
3062
3194
  {
3063
3195
  ref: sessionRef,
@@ -3128,6 +3260,7 @@ var TabbedTerminalPanelInner = ({
3128
3260
  onFocusTabHandled,
3129
3261
  requestCloseTabId,
3130
3262
  workingStates,
3263
+ programStatus,
3131
3264
  activityDetection = true,
3132
3265
  activityTimeout = 500,
3133
3266
  autoShowBlinds = false,
@@ -3145,7 +3278,7 @@ var TabbedTerminalPanelInner = ({
3145
3278
  bottomBarContent,
3146
3279
  renderer
3147
3280
  }) => {
3148
- const { theme } = useTheme8();
3281
+ const { theme } = useTheme9();
3149
3282
  const onTabAssociate = actions.onTabAssociate ?? onTabAssociateProp;
3150
3283
  const [ownedTabs, setOwnedTabs] = useState4(initialTabs);
3151
3284
  const [foreignTabs, setForeignTabs] = useState4([]);
@@ -3531,12 +3664,30 @@ var TabbedTerminalPanelInner = ({
3531
3664
  });
3532
3665
  const renderTabAccessory = useCallback6((tab) => {
3533
3666
  const tabSessionId = sessionIds.get(tab.id);
3667
+ const isActive = tab.id === activeTabId;
3668
+ const record = tabSessionId ? programStatus?.[tabSessionId] : void 0;
3669
+ if (record && record.state !== "idle" && record.state !== "clear") {
3670
+ return /* @__PURE__ */ jsx13(
3671
+ "div",
3672
+ {
3673
+ style: {
3674
+ position: "absolute",
3675
+ right: "8px",
3676
+ display: "flex",
3677
+ alignItems: "center",
3678
+ justifyContent: "center",
3679
+ width: "16px",
3680
+ height: "16px"
3681
+ },
3682
+ children: /* @__PURE__ */ jsx13(ProgramStatusBadge, { record })
3683
+ }
3684
+ );
3685
+ }
3534
3686
  const hasExternalWorkingState = tabSessionId ? workingStates?.[tabSessionId]?.isWorking : false;
3535
3687
  const hasInternalActivity = tabSessionId ? activityStates.get(tabSessionId) : false;
3536
3688
  const isWorking = hasExternalWorkingState || hasInternalActivity;
3537
- const isActive = tab.id === activeTabId;
3538
3689
  if (!isActive) return null;
3539
- return /* @__PURE__ */ jsx12(Fragment2, { children: /* @__PURE__ */ jsx12(
3690
+ return /* @__PURE__ */ jsx13(Fragment2, { children: /* @__PURE__ */ jsx13(
3540
3691
  "div",
3541
3692
  {
3542
3693
  style: {
@@ -3549,12 +3700,12 @@ var TabbedTerminalPanelInner = ({
3549
3700
  height: "16px"
3550
3701
  },
3551
3702
  title: isWorking ? "Terminal active" : "Terminal idle",
3552
- children: /* @__PURE__ */ jsx12(ActivityIndicator, { color: theme.colors.primary, isAnimating: isWorking ?? false })
3703
+ children: /* @__PURE__ */ jsx13(ActivityIndicator, { color: theme.colors.primary, isAnimating: isWorking ?? false })
3553
3704
  }
3554
3705
  ) });
3555
- }, [activeTabId, theme, sessionIds, workingStates, activityStates]);
3706
+ }, [activeTabId, theme, sessionIds, workingStates, activityStates, programStatus]);
3556
3707
  const renderTerminalWithAssociation = useCallback6((tab, isActive, sessionId, association) => {
3557
- const terminalContent = /* @__PURE__ */ jsx12(
3708
+ const terminalContent = /* @__PURE__ */ jsx13(
3558
3709
  TerminalTabContent,
3559
3710
  {
3560
3711
  ref: getRefCallback(tab.id),
@@ -3576,7 +3727,7 @@ var TabbedTerminalPanelInner = ({
3576
3727
  `terminal-${tab.id}`
3577
3728
  );
3578
3729
  const hasAssociation = !!association;
3579
- const secondaryContent = hasAssociation && renderAssociatedContent ? renderAssociatedContent(association.associatedTabId, isActive) : /* @__PURE__ */ jsx12("div", { style: {
3730
+ const secondaryContent = hasAssociation && renderAssociatedContent ? renderAssociatedContent(association.associatedTabId, isActive) : /* @__PURE__ */ jsx13("div", { style: {
3580
3731
  height: "100%",
3581
3732
  display: "flex",
3582
3733
  alignItems: "center",
@@ -3585,10 +3736,10 @@ var TabbedTerminalPanelInner = ({
3585
3736
  fontSize: "13px",
3586
3737
  backgroundColor: theme.colors.backgroundSecondary
3587
3738
  }, children: "Drag a tab here to associate it with this terminal" });
3588
- const headerConfig = hasAssociation && getAssociatedHeader ? getAssociatedHeader(association.associatedTabId) : { title: "Drop zone", icon: /* @__PURE__ */ jsx12(Paperclip, { size: 14 }) };
3739
+ const headerConfig = hasAssociation && getAssociatedHeader ? getAssociatedHeader(association.associatedTabId) : { title: "Drop zone", icon: /* @__PURE__ */ jsx13(Paperclip, { size: 14 }) };
3589
3740
  const isCollapsed = hasAssociation ? association.collapsed : true;
3590
3741
  const handleCollapsedChange = hasAssociation ? (collapsed) => onAssociationCollapsedChange?.(tab.id, collapsed) : void 0;
3591
- return /* @__PURE__ */ jsx12(
3742
+ return /* @__PURE__ */ jsx13(
3592
3743
  CollapsibleSplitPane,
3593
3744
  {
3594
3745
  style: { height: "100%" },
@@ -3680,7 +3831,7 @@ var TabbedTerminalPanelInner = ({
3680
3831
  backgroundColor: theme.colors.background
3681
3832
  },
3682
3833
  children: [
3683
- !hideHeader && /* @__PURE__ */ jsx12("div", { ref: headerRef, children: /* @__PURE__ */ jsx12(
3834
+ !hideHeader && /* @__PURE__ */ jsx13("div", { ref: headerRef, children: /* @__PURE__ */ jsx13(
3684
3835
  TabBar,
3685
3836
  {
3686
3837
  tabs: genericTabs,
@@ -3688,7 +3839,7 @@ var TabbedTerminalPanelInner = ({
3688
3839
  onTabClick: switchTab,
3689
3840
  onTabClose: closeTab,
3690
3841
  onNewTab: addNewTab,
3691
- leftSection: hideShowAllTerminalsButton ? void 0 : /* @__PURE__ */ jsx12(
3842
+ leftSection: hideShowAllTerminalsButton ? void 0 : /* @__PURE__ */ jsx13(
3692
3843
  "button",
3693
3844
  {
3694
3845
  onClick: () => onShowAllTerminalsChange?.(!showAllTerminals),
@@ -3715,7 +3866,7 @@ var TabbedTerminalPanelInner = ({
3715
3866
  }
3716
3867
  },
3717
3868
  title: showAllTerminals ? "Showing all terminals (click to filter by context)" : "Show all terminals",
3718
- children: showAllTerminals ? /* @__PURE__ */ jsx12(Boxes, { size: 14 }) : /* @__PURE__ */ jsx12(Box, { size: 14 })
3869
+ children: showAllTerminals ? /* @__PURE__ */ jsx13(Boxes, { size: 14 }) : /* @__PURE__ */ jsx13(Box, { size: 14 })
3719
3870
  }
3720
3871
  ),
3721
3872
  renderTabAccessory,
@@ -3776,7 +3927,7 @@ var TabbedTerminalPanelInner = ({
3776
3927
  const customContent = renderTabContent(tab, isActive, sessionId, width);
3777
3928
  if (customContent === null && tab.contentType === "terminal") {
3778
3929
  const association = associations?.[tab.id];
3779
- return /* @__PURE__ */ jsx12(
3930
+ return /* @__PURE__ */ jsx13(
3780
3931
  "div",
3781
3932
  {
3782
3933
  inert: !isActive,
@@ -3804,7 +3955,7 @@ var TabbedTerminalPanelInner = ({
3804
3955
  );
3805
3956
  }
3806
3957
  const hasBeenActivated = activatedTabs.has(tab.id);
3807
- return /* @__PURE__ */ jsx12(
3958
+ return /* @__PURE__ */ jsx13(
3808
3959
  "div",
3809
3960
  {
3810
3961
  inert: !isActive,
@@ -3824,7 +3975,7 @@ var TabbedTerminalPanelInner = ({
3824
3975
  }
3825
3976
  if (tab.contentType === "terminal") {
3826
3977
  const association = associations?.[tab.id];
3827
- return /* @__PURE__ */ jsx12(
3978
+ return /* @__PURE__ */ jsx13(
3828
3979
  "div",
3829
3980
  {
3830
3981
  inert: !isActive,
@@ -3862,7 +4013,7 @@ var TabbedTerminalPanelInner = ({
3862
4013
  "Unknown content type: ",
3863
4014
  tab.contentType
3864
4015
  ] }),
3865
- /* @__PURE__ */ jsx12("p", { style: { fontSize: theme.fontSizes[0], marginTop: "8px" }, children: "Provide a renderTabContent prop to render custom tab types" })
4016
+ /* @__PURE__ */ jsx13("p", { style: { fontSize: theme.fontSizes[0], marginTop: "8px" }, children: "Provide a renderTabContent prop to render custom tab types" })
3866
4017
  ]
3867
4018
  },
3868
4019
  tab.id
@@ -3880,14 +4031,14 @@ var TabbedTerminalPanelInner = ({
3880
4031
  color: theme.colors.textSecondary
3881
4032
  },
3882
4033
  children: [
3883
- /* @__PURE__ */ jsx12(
4034
+ /* @__PURE__ */ jsx13(
3884
4035
  TerminalIcon2,
3885
4036
  {
3886
4037
  size: 32,
3887
4038
  style: { opacity: 0.5, marginBottom: "16px" }
3888
4039
  }
3889
4040
  ),
3890
- /* @__PURE__ */ jsx12(
4041
+ /* @__PURE__ */ jsx13(
3891
4042
  "button",
3892
4043
  {
3893
4044
  onClick: () => addNewTab(),
@@ -3915,14 +4066,14 @@ var TabbedTerminalPanelInner = ({
3915
4066
  const activeTab = tabs.find((t) => t.id === activeTabId);
3916
4067
  const activeDir = activeTab?.directory;
3917
4068
  return /* @__PURE__ */ jsxs9("div", { style: { display: "flex", alignItems: "center", flex: "0 0 auto" }, children: [
3918
- /* @__PURE__ */ jsx12(
4069
+ /* @__PURE__ */ jsx13(
3919
4070
  TerminalStatusBar,
3920
4071
  {
3921
4072
  directory: activeDir,
3922
4073
  repo: activeDir ? getRepoInfo?.(activeDir) : void 0
3923
4074
  }
3924
4075
  ),
3925
- bottomBarContent && /* @__PURE__ */ jsx12("div", { style: { marginLeft: "auto", display: "flex", alignItems: "center", height: 22 }, children: bottomBarContent })
4076
+ bottomBarContent && /* @__PURE__ */ jsx13("div", { style: { marginLeft: "auto", display: "flex", alignItems: "center", height: 22 }, children: bottomBarContent })
3926
4077
  ] });
3927
4078
  })()
3928
4079
  ]
@@ -3952,6 +4103,7 @@ var TabbedTerminalPanelMemoized = React4.memo(TabbedTerminalPanelInner, (prevPro
3952
4103
  if (prevProps.activeTabId !== nextProps.activeTabId) changes.push("activeTabId");
3953
4104
  if (prevProps.onActiveTabChange !== nextProps.onActiveTabChange) changes.push("onActiveTabChange");
3954
4105
  if (prevProps.workingStates !== nextProps.workingStates) changes.push("workingStates");
4106
+ if (prevProps.programStatus !== nextProps.programStatus) changes.push("programStatus");
3955
4107
  if (prevProps.activityDetection !== nextProps.activityDetection) changes.push("activityDetection");
3956
4108
  if (prevProps.activityTimeout !== nextProps.activityTimeout) changes.push("activityTimeout");
3957
4109
  if (prevProps.autoShowBlinds !== nextProps.autoShowBlinds) changes.push("autoShowBlinds");
@@ -4157,6 +4309,7 @@ function getTerminalSlice(context2) {
4157
4309
  export {
4158
4310
  DEFAULT_RENDERER,
4159
4311
  GhosttyRenderer,
4312
+ ProgramStatusBadge,
4160
4313
  SelectionDragChip,
4161
4314
  SpanStatusCode,
4162
4315
  TRACER_NAME,
@@ -4176,6 +4329,7 @@ export {
4176
4329
  createTerminalSessionTool,
4177
4330
  createTerminalTheme,
4178
4331
  focusTerminalTool,
4332
+ formatProgramStatusRecord,
4179
4333
  getActiveSpan,
4180
4334
  getRepositoryPath,
4181
4335
  getTerminalCSSVariables,
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import '../styles/terminal-theme.css';
3
+ import type { ProgramStatusRecord } from '../types/terminal.types';
4
+ export interface ProgramStatusBadgeProps {
5
+ record: ProgramStatusRecord;
6
+ animate?: boolean;
7
+ }
8
+ export declare const formatProgramStatusRecord: (record: ProgramStatusRecord) => string;
9
+ export declare const ProgramStatusBadge: React.FC<ProgramStatusBadgeProps>;
10
+ //# sourceMappingURL=ProgramStatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgramStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/ProgramStatusBadge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IAEtC,MAAM,EAAE,mBAAmB,CAAC;IAM5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsBD,eAAO,MAAM,yBAAyB,GAAI,QAAQ,mBAAmB,KAAG,MAQvE,CAAC;AAoCF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA6EhE,CAAC"}
@@ -1,9 +1,9 @@
1
1
  export type { PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, PanelEvent, PanelEventType, PanelDefinition, PanelMetadata, PanelLifecycleHooks, DataSlice, RepositoryMetadata, WorkspaceMetadata, } from '@principal-ade/panel-framework-core';
2
2
  import type { PanelActions as CorePanelActions, PanelComponentProps as CorePanelComponentProps, PanelContextValue, DataSlice } from '@principal-ade/panel-framework-core';
3
- import type { DroppedTerminalFile } from '../types/terminal.types';
3
+ import type { DroppedTerminalFile, ProgramStatusKind, ProgramStatusRecord, ProgramStatusState } from '../types/terminal.types';
4
4
  import type { TerminalRepoInfo } from '../components/TerminalStatusBar';
5
5
  import type { RendererChoice } from '../renderer/resolveRenderer';
6
- export type { DroppedTerminalFile, TerminalRepoInfo };
6
+ export type { DroppedTerminalFile, TerminalRepoInfo, ProgramStatusRecord, ProgramStatusState, ProgramStatusKind, };
7
7
  export type TerminalEventType = 'terminal:data' | 'terminal:exit' | 'terminal:created' | 'terminal:title-change' | 'terminal:cwd-change' | 'terminal:link-click' | 'terminal:shortcut' | 'terminal:activity-changed';
8
8
  export interface TerminalLinkClickEvent {
9
9
  url: string;
@@ -142,6 +142,7 @@ export interface TabbedTerminalPanelProps<TTab extends BaseTab = TerminalTab> ex
142
142
  renderTabLabel?: (tab: TTab) => React.ReactNode;
143
143
  width?: number;
144
144
  workingStates?: Record<string, TerminalWorkingState>;
145
+ programStatus?: Record<string, ProgramStatusRecord>;
145
146
  activityDetection?: boolean;
146
147
  activityTimeout?: number;
147
148
  autoShowBlinds?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAKN,MAAM,OAAO,CAAC;AAQf,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAkExB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AA2wCD,eAAO,MAAM,mBAAmB,EAAkC,CAAC,IAAI,SAAS,OAAO,cAAc,EAAE,OAAO,GAAG,WAAW,EAC1H,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAClC,KAAK,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAKN,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAkExB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAsyCD,eAAO,MAAM,mBAAmB,EAAkC,CAAC,IAAI,SAAS,OAAO,cAAc,EAAE,OAAO,GAAG,WAAW,EAC1H,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAClC,KAAK,CAAC,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GhosttyRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderer/GhosttyRenderer.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAO5B,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAeD,eAAO,MAAM,eAAe,yHA0M3B,CAAC"}
1
+ {"version":3,"file":"GhosttyRenderer.d.ts","sourceRoot":"","sources":["../../../src/renderer/GhosttyRenderer.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAO5B,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuBD,eAAO,MAAM,eAAe,yHA0O3B,CAAC"}
@@ -24,6 +24,17 @@ export interface TerminalActivityState {
24
24
  startedAt?: number;
25
25
  duration?: number;
26
26
  }
27
+ export type ProgramStatusState = 'idle' | 'working' | 'done' | 'blocked' | 'error' | 'clear';
28
+ export type ProgramStatusKind = 'permission' | 'question' | 'auth';
29
+ export interface ProgramStatusRecord {
30
+ state: ProgramStatusState;
31
+ kind?: ProgramStatusKind;
32
+ progress?: number;
33
+ id?: string;
34
+ app?: string;
35
+ msg?: string;
36
+ title?: string;
37
+ }
27
38
  export interface DroppedTerminalFile {
28
39
  name: string;
29
40
  mimeType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.ts"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -228,3 +228,28 @@
228
228
  .terminal-working-overlay.closing {
229
229
  animation: blinds-up 0.3s ease-in forwards;
230
230
  }
231
+
232
+ /* ===== PROGRAM STATUS BADGES (OSC 7501) ===== */
233
+
234
+ /* Animated wave bars for the "working" state */
235
+ @keyframes program-status-wave {
236
+ 0%,
237
+ 100% {
238
+ transform: scaleY(0.4);
239
+ }
240
+ 50% {
241
+ transform: scaleY(1);
242
+ }
243
+ }
244
+
245
+ /* Attention fade for the "blocked" badge. Opacity only — the badge keeps its
246
+ size (no grow/shrink). */
247
+ @keyframes program-status-fade {
248
+ 0%,
249
+ 100% {
250
+ opacity: 1;
251
+ }
252
+ 50% {
253
+ opacity: 0.5;
254
+ }
255
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@industry-theme/xterm-terminal-panel",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "Industry-themed xterm.js terminal components with panel framework integration",
5
5
  "type": "module",
6
6
  "sideEffects": [