@calltelemetry/cli 0.2.6 → 0.3.0

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.
Files changed (69) hide show
  1. package/dist/commands/update.d.ts.map +1 -1
  2. package/dist/commands/update.js +16 -41
  3. package/dist/commands/update.js.map +1 -1
  4. package/dist/index.js +3 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/bundle.d.ts +16 -1
  7. package/dist/lib/bundle.d.ts.map +1 -1
  8. package/dist/lib/bundle.js +64 -14
  9. package/dist/lib/bundle.js.map +1 -1
  10. package/dist/lib/rpc-scripts.d.ts +2 -0
  11. package/dist/lib/rpc-scripts.d.ts.map +1 -0
  12. package/dist/lib/rpc-scripts.js +55 -0
  13. package/dist/lib/rpc-scripts.js.map +1 -0
  14. package/dist/lib/update.d.ts +13 -0
  15. package/dist/lib/update.d.ts.map +1 -0
  16. package/dist/lib/update.js +67 -0
  17. package/dist/lib/update.js.map +1 -0
  18. package/dist/ui/components/Section.d.ts.map +1 -1
  19. package/dist/ui/components/Section.js +4 -2
  20. package/dist/ui/components/Section.js.map +1 -1
  21. package/dist/ui/hooks/useComposeLogs.d.ts.map +1 -1
  22. package/dist/ui/hooks/useComposeLogs.js +8 -2
  23. package/dist/ui/hooks/useComposeLogs.js.map +1 -1
  24. package/dist/ui/hooks/usePolling.d.ts.map +1 -1
  25. package/dist/ui/hooks/usePolling.js +6 -0
  26. package/dist/ui/hooks/usePolling.js.map +1 -1
  27. package/dist/ui/utils/serviceDisplay.d.ts +5 -0
  28. package/dist/ui/utils/serviceDisplay.d.ts.map +1 -0
  29. package/dist/ui/utils/serviceDisplay.js +43 -0
  30. package/dist/ui/utils/serviceDisplay.js.map +1 -0
  31. package/dist/ui/views/DbTablesView.d.ts.map +1 -1
  32. package/dist/ui/views/DbTablesView.js +3 -2
  33. package/dist/ui/views/DbTablesView.js.map +1 -1
  34. package/dist/ui/views/DiagNetworkView.d.ts.map +1 -1
  35. package/dist/ui/views/DiagNetworkView.js +0 -16
  36. package/dist/ui/views/DiagNetworkView.js.map +1 -1
  37. package/dist/ui/views/DockerNetworkView.d.ts.map +1 -1
  38. package/dist/ui/views/DockerNetworkView.js +21 -3
  39. package/dist/ui/views/DockerNetworkView.js.map +1 -1
  40. package/dist/ui/views/DockerPruneView.d.ts.map +1 -1
  41. package/dist/ui/views/DockerPruneView.js +12 -5
  42. package/dist/ui/views/DockerPruneView.js.map +1 -1
  43. package/dist/ui/views/MainMenu.d.ts.map +1 -1
  44. package/dist/ui/views/MainMenu.js +56 -62
  45. package/dist/ui/views/MainMenu.js.map +1 -1
  46. package/dist/ui/views/MigrateRollbackView.d.ts.map +1 -1
  47. package/dist/ui/views/MigrateRollbackView.js +15 -4
  48. package/dist/ui/views/MigrateRollbackView.js.map +1 -1
  49. package/dist/ui/views/MigrateRunView.d.ts.map +1 -1
  50. package/dist/ui/views/MigrateRunView.js +15 -4
  51. package/dist/ui/views/MigrateRunView.js.map +1 -1
  52. package/dist/ui/views/MigrateStatusView.d.ts.map +1 -1
  53. package/dist/ui/views/MigrateStatusView.js +1 -54
  54. package/dist/ui/views/MigrateStatusView.js.map +1 -1
  55. package/dist/ui/views/MigrateWatchView.d.ts.map +1 -1
  56. package/dist/ui/views/MigrateWatchView.js +1 -54
  57. package/dist/ui/views/MigrateWatchView.js.map +1 -1
  58. package/dist/ui/views/ServicesView.d.ts.map +1 -1
  59. package/dist/ui/views/ServicesView.js +6 -53
  60. package/dist/ui/views/ServicesView.js.map +1 -1
  61. package/dist/ui/views/UpdateView.d.ts +6 -0
  62. package/dist/ui/views/UpdateView.d.ts.map +1 -0
  63. package/dist/ui/views/UpdateView.js +302 -0
  64. package/dist/ui/views/UpdateView.js.map +1 -0
  65. package/dist/utils/version.d.ts +7 -0
  66. package/dist/utils/version.d.ts.map +1 -1
  67. package/dist/utils/version.js +66 -9
  68. package/dist/utils/version.js.map +1 -1
  69. package/package.json +1 -1
@@ -46,7 +46,10 @@ export function useComposeLogs(service, tail = 200) {
46
46
  const parts = buffer.split('\n');
47
47
  buffer = parts.pop();
48
48
  if (parts.length > 0) {
49
- setLines(prev => [...prev, ...parts]);
49
+ setLines(prev => {
50
+ const next = [...prev, ...parts];
51
+ return next.length > 5000 ? next.slice(-5000) : next;
52
+ });
50
53
  }
51
54
  });
52
55
  // Also capture stderr (compose sometimes writes there)
@@ -55,7 +58,10 @@ export function useComposeLogs(service, tail = 200) {
55
58
  const parts = buffer.split('\n');
56
59
  buffer = parts.pop();
57
60
  if (parts.length > 0) {
58
- setLines(prev => [...prev, ...parts]);
61
+ setLines(prev => {
62
+ const next = [...prev, ...parts];
63
+ return next.length > 5000 ? next.slice(-5000) : next;
64
+ });
59
65
  }
60
66
  });
61
67
  proc.then(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useComposeLogs.js","sourceRoot":"","sources":["../../../src/ui/hooks/useComposeLogs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useComposeLogs.js","sourceRoot":"","sources":["../../../src/ui/hooks/useComposeLogs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePolling.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/usePolling.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,CAAC,EAC1B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,UAAO,GACf;IACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAgDA"}
1
+ {"version":3,"file":"usePolling.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/usePolling.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,CAAC,EAC1B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,UAAO,GACf;IACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAqDA"}
@@ -5,13 +5,19 @@ export function usePolling(fn, intervalMs, autoStart = true) {
5
5
  const [isPolling, setIsPolling] = useState(false);
6
6
  const timerRef = useRef(null);
7
7
  const fnRef = useRef(fn);
8
+ const inFlightRef = useRef(false);
8
9
  fnRef.current = fn;
9
10
  const poll = useCallback(() => {
11
+ if (inFlightRef.current)
12
+ return;
13
+ inFlightRef.current = true;
10
14
  fnRef.current().then((result) => {
11
15
  setData(result);
12
16
  setError(undefined);
13
17
  }, (err) => {
14
18
  setError(err instanceof Error ? err : new Error(String(err)));
19
+ }).finally(() => {
20
+ inFlightRef.current = false;
15
21
  });
16
22
  }, []);
17
23
  const stop = useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"usePolling.js","sourceRoot":"","sources":["../../../src/ui/hooks/usePolling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,MAAM,UAAU,UAAU,CACxB,EAAoB,EACpB,UAAkB,EAClB,SAAS,GAAG,IAAI;IAQhB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAiB,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAqB,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAwC,IAAI,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IAEnB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAClB,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,CAAC,MAAM,CAAC,CAAC;YAChB,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9B,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,EAAE,CAAC;QACP,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,EAAE,CAAC;QACP,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,EAAE,CAAC;QACV,CAAC;QACD,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC9B,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAChC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"usePolling.js","sourceRoot":"","sources":["../../../src/ui/hooks/usePolling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,MAAM,UAAU,UAAU,CACxB,EAAoB,EACpB,UAAkB,EAClB,SAAS,GAAG,IAAI;IAQhB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAiB,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAqB,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAwC,IAAI,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IAEnB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,IAAI,WAAW,CAAC,OAAO;YAAE,OAAO;QAChC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAClB,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,CAAC,MAAM,CAAC,CAAC;YAChB,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CACF,CAAC,OAAO,CAAC,GAAG,EAAE;YACb,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9B,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,EAAE,CAAC;QACP,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,EAAE,CAAC;QACP,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,EAAE,CAAC;QACV,CAAC;QACD,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC9B,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAChC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function healthIcon(health: string, state: string): string;
2
+ export declare function healthColor(health: string, state: string): string;
3
+ export declare function extractVersion(image: string): string;
4
+ export declare function extractUptime(status: string): string;
5
+ //# sourceMappingURL=serviceDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceDisplay.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/serviceDisplay.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQpD"}
@@ -0,0 +1,43 @@
1
+ export function healthIcon(health, state) {
2
+ if (state === 'exited' || state === 'dead')
3
+ return '●';
4
+ if (health === 'healthy')
5
+ return '●';
6
+ if (health === 'unhealthy')
7
+ return '●';
8
+ if (health === 'starting')
9
+ return '●';
10
+ if (state === 'running')
11
+ return '●';
12
+ return '○';
13
+ }
14
+ export function healthColor(health, state) {
15
+ if (state === 'exited' || state === 'dead')
16
+ return 'red';
17
+ if (health === 'healthy')
18
+ return 'green';
19
+ if (health === 'unhealthy')
20
+ return 'red';
21
+ if (health === 'starting')
22
+ return 'yellow';
23
+ if (state === 'running')
24
+ return 'green';
25
+ return 'gray';
26
+ }
27
+ export function extractVersion(image) {
28
+ if (!image)
29
+ return '';
30
+ return image.includes(':') ? image.split(':').pop() : image;
31
+ }
32
+ export function extractUptime(status) {
33
+ if (!status)
34
+ return '';
35
+ const m = status.match(/Up\s+(?:About\s+)?(\d+)\s*(second|minute|hour|day|week|month)/i);
36
+ if (!m) {
37
+ if (status.toLowerCase().startsWith('exited'))
38
+ return 'exited';
39
+ return status.replace(/\s*\(.*\)/, '').trim();
40
+ }
41
+ return `${m[1]}${m[2].charAt(0)}`;
42
+ }
43
+ //# sourceMappingURL=serviceDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceDisplay.js","sourceRoot":"","sources":["../../../src/ui/utils/serviceDisplay.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa;IACtD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC;IACvD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACrC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,GAAG,CAAC;IACvC,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAa;IACvD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACzF,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC/D,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DbTablesView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DbTablesView.tsx"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAgD/D"}
1
+ {"version":3,"file":"DbTablesView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DbTablesView.tsx"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAiD/D"}
@@ -8,8 +8,9 @@ import { useAsyncTask, useFinish } from '../hooks/index.js';
8
8
  export function DbTablesView({ name, onBack }) {
9
9
  const finish = useFinish(onBack);
10
10
  const tablesTask = useAsyncTask(async () => {
11
- const whereClause = name
12
- ? `AND c.relname LIKE '%${name}%'`
11
+ const safeName = name ? name.replace(/'/g, "''") : '';
12
+ const whereClause = safeName
13
+ ? `AND c.relname LIKE '%${safeName}%'`
13
14
  : '';
14
15
  const query = `SELECT table_name, row_count, pg_size_pretty(total_bytes) AS total_size, pg_size_pretty(index_bytes) AS index_size, pg_size_pretty(table_bytes) AS table_size FROM (SELECT c.relname AS table_name, c.reltuples::BIGINT AS row_count, pg_total_relation_size(c.oid) AS total_bytes, pg_indexes_size(c.oid) AS index_bytes, pg_relation_size(c.oid) AS table_bytes FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = 'public' AND c.relkind = 'r' ${whereClause}) t ORDER BY total_bytes DESC;`;
15
16
  const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c', query], { env: PG_ENV, pipe: true });
@@ -1 +1 @@
1
- {"version":3,"file":"DbTablesView.js","sourceRoot":"","sources":["../../../src/ui/views/DbTablesView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DbTablesView.js","sourceRoot":"","sources":["../../../src/ui/views/DbTablesView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DiagNetworkView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagNetworkView.tsx"],"names":[],"mappings":"AA+DA,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CA4O/D"}
1
+ {"version":3,"file":"DiagNetworkView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagNetworkView.tsx"],"names":[],"mappings":"AAiCA,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CA4O/D"}
@@ -10,22 +10,6 @@ function netmaskToCidr(netmask) {
10
10
  .split('.')
11
11
  .reduce((bits, octet) => bits + (Number(octet) >>> 0).toString(2).replace(/0/g, '').length, 0);
12
12
  }
13
- // Section 5/6: Ping section component
14
- function PingSection({ title, target, startWhen }) {
15
- const args = useMemo(() => getPingArgs(target), [target]);
16
- const { lines, isRunning, start } = useStreamingProcess('ping', args);
17
- const [started, setStarted] = useState(false);
18
- useEffect(() => {
19
- if (startWhen && !started) {
20
- setStarted(true);
21
- start();
22
- }
23
- }, [startWhen, started, start]);
24
- if (!startWhen && !started) {
25
- return (_jsx(Section, { title: title, children: _jsx(Spinner, { label: "Waiting..." }) }));
26
- }
27
- return (_jsxs(Section, { title: title, children: [isRunning && lines.length === 0 && _jsx(Spinner, { label: "Pinging..." }), lines.length > 0 && _jsx(ShellOutput, { content: lines.join('\n') }), isRunning && lines.length > 0 && _jsx(Spinner, { label: "Pinging..." })] }));
28
- }
29
13
  export function DiagNetworkView({ onBack }) {
30
14
  const finish = useFinish(onBack);
31
15
  // Section 1: System Info (synchronous)
@@ -1 +1 @@
1
- {"version":3,"file":"DiagNetworkView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagNetworkView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DiagNetworkView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagNetworkView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,iBAAiB,GAIlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,OAAO,GACR,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnE,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACnG,CAAC;AAMD,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAwB;IAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjC,uCAAuC;IACvC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IAExC,8CAA8C;IAC9C,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACtC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;YACrC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE;YAClC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,qCAAqC;IACrC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA4B,SAAS,CAAC,CAAC;IAE7E,oCAAoC;IACpC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA0B,SAAS,CAAC,CAAC;IAEjF,wCAAwC;IACxC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAA+B,SAAS,CAAC,CAAC;IAExF,sCAAsC;IACtC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAqD,SAAS,CAAC,CAAC;IAE9G,4BAA4B;IAC5B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,wBAAwB;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,qBAAqB;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,kBAAkB;IAClB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,GAAG,UAAU,SAAS,CAAC;QACvC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,kBAAkB;IAClB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAuB;YAChC,CAAC,IAAI,EAAE,KAAK,CAAC;YACb,CAAC,IAAI,EAAE,YAAY,CAAC;YACpB,CAAC,IAAI,EAAE,MAAM,CAAC;YACd,CAAC,IAAI,EAAE,eAAe,CAAC;SACxB,CAAC;QACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAC1B,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CACnE,CACF,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,mDAAmD;IACnD,MAAM,YAAY,GAAG,OAAO,KAAK,SAAS,CAAC;IAE3C,2CAA2C;IAC3C,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,uCAAuC;IACvC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GACjB,CAAC,OAAO,KAAK,IAAI,IAAI,eAAe,CAAC,IAAI,gBAAgB,CAAC;QAE5D,IACE,YAAY;YACZ,UAAU,KAAK,SAAS;YACxB,WAAW,KAAK,SAAS;YACzB,WAAW,KAAK,SAAS;YACzB,aAAa;YACb,CAAC,OAAO,EACR,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,sCAAsC;gBACtC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE9H,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,MAAM,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,mBAAmB,EAAC,OAAO,EAAC,iBAAiB,aAE3D,KAAC,OAAO,IAAC,KAAK,EAAC,aAAa,YAC1B,KAAC,QAAQ,IAAC,KAAK,EAAE;wBACf,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;wBACvC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;wBAC7C,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE;qBAC7C,GAAI,GACG,EAGV,KAAC,OAAO,IAAC,KAAK,EAAC,oBAAoB,YACjC,KAAC,SAAS,IACR,OAAO,EAAE;wBACP,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;wBACzC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;wBACzC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;wBAC5C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;wBAC/C,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;qBACxC,EACD,IAAI,EAAE,SAAS,GACf,GACM,EAGV,MAAC,OAAO,IAAC,KAAK,EAAC,iBAAiB,aAC7B,CAAC,YAAY,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,sBAAsB,GAAG,EACzD,YAAY,IAAI,OAAO,IAAI,CAC1B,KAAC,UAAU,IAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAE,YAAY,OAAO,EAAE,GAAI,CACzD,EACA,YAAY,IAAI,CAAC,OAAO,IAAI,CAC3B,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,kCAAkC,GAAG,CACtE,IACO,EAGV,MAAC,OAAO,IAAC,KAAK,EAAC,gBAAgB,aAC5B,CAAC,UAAU,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,kBAAkB,GAAG,EACnD,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;wBAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC9C,OAAO,CACL,KAAC,UAAU,IAET,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC1B,KAAK,EAAE,EAAE;gCACP,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,OAAO,IAAI,EAAE;gCAC7B,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,IAAI,cAAc,EAAE,EAEzD,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,IAN3B,CAAC,CAON,CACH,CAAC;oBACJ,CAAC,CAAC,IACM,EAGT,OAAO,KAAK,IAAI,IAAI,CACnB,KAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,IAAI,EAAE,EACtB,SAAS,EAAE,YAAY,IAAI,OAAO,KAAK,IAAI,EAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,GACtC,CACH,EACA,OAAO,KAAK,IAAI,IAAI,YAAY,IAAI,CACnC,KAAC,OAAO,IAAC,KAAK,EAAC,cAAc,YAC3B,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,+BAA+B,GAAG,GAC1D,CACX,EAGD,KAAC,mBAAmB,IAClB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,GACvC,EAGF,MAAC,OAAO,IAAC,KAAK,EAAC,oBAAoB,aAChC,CAAC,WAAW,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,mBAAmB,GAAG,EACrD,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,GAAG,IAAI,CAC9E,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,UAAU,IAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAE,WAAW,CAAC,GAAG,GAAI,EAClD,KAAC,QAAQ,IAAC,KAAK,EAAE;oCACf,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;oCACpD,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,UAAU,IAAI,EAAE;oCACxD,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oCAClF,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iCAC5F,GAAI,IACD,CACP,EACA,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CACjF,KAAC,UAAU,IACT,MAAM,EAAC,MAAM,EACb,KAAK,EAAE,GAAG,WAAW,CAAC,GAAG,OAAO,WAAW,CAAC,KAAK,IAAI,QAAQ,WAAW,CAAC,MAAM,EAAE,EAAE,GACnF,CACH,IACO,EAGV,MAAC,OAAO,IAAC,KAAK,EAAC,kBAAkB,aAC9B,CAAC,WAAW,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,mBAAmB,GAAG,EACrD,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;wBAC3C,MAAM,OAAO,GAAG,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC1C,OAAO,CACL,KAAC,UAAU,IAET,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAClC,KAAK,EAAE,GAAG,OAAO,KAAK,KAAK,CAAC,KAAK,GAAG,EACpC,MAAM,EAAE,KAAK,CAAC,IAAI;gCAChB,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,KAAK;gCAChC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,IALtB,CAAC,CAON,CACH,CAAC;oBACJ,CAAC,CAAC,IACM,EAGT,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,YAC/B,KAAC,IAAI,IAAC,IAAI,QAAC,QAAQ,kBAAE,sCAAsC,GAAQ,GAC/D,CACP,EACA,MAAM,IAAI,OAAO,IAAI,CACpB,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,QAAQ,yCAA0B,GACpC,CACP,IACQ,CACZ,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,SAAS,kBAAkB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAA+D;IACrH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,MAAC,OAAO,IAAC,KAAK,EAAE,iBAAiB,OAAO,GAAG,aACxC,CAAC,OAAO,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,YAAY,GAAG,EAC1C,OAAO,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,YAAY,GAAG,EAC5E,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,EAC9D,OAAO,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,YAAY,GAAG,EAC1E,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,CAAC,IAAI,CAC1C,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,qBAAqB,GAAG,CACzD,IACO,CACX,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,SAAS,mBAAmB,CAAC,EAAE,SAAS,EAAE,MAAM,EAA8C;IAC5F,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,MAAC,OAAO,IAAC,KAAK,EAAC,4BAA4B,aACxC,CAAC,OAAO,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,YAAY,GAAG,EAC1C,OAAO,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,YAAY,GAAG,EAC5E,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,EAC9D,OAAO,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,YAAY,GAAG,EAC1E,OAAO,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,CAAC,IAAI,CAC1C,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,sBAAsB,GAAG,CAC1D,IACO,CACX,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DockerNetworkView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DockerNetworkView.tsx"],"names":[],"mappings":"AAMA,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,2CAqDnE"}
1
+ {"version":3,"file":"DockerNetworkView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DockerNetworkView.tsx"],"names":[],"mappings":"AAyBA,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,sBAAsB,2CAsFnE"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { execa } from 'execa';
5
- import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
5
+ import { AppShell, Section, SubSection, KeyValue, DataTable, Spinner, StatusLine } from '../components/index.js';
6
6
  import { useAsyncTask, useFinish } from '../hooks/index.js';
7
7
  export function DockerNetworkView({ onBack }) {
8
8
  const finish = useFinish(onBack);
@@ -17,7 +17,8 @@ export function DockerNetworkView({ onBack }) {
17
17
  const { stdout } = await execa('docker', [
18
18
  'network', 'inspect', ...ids,
19
19
  ], { stdout: 'pipe', stderr: 'pipe' });
20
- return stdout;
20
+ const networks = JSON.parse(stdout);
21
+ return networks;
21
22
  });
22
23
  const networkDone = networkTask.status === 'done' || networkTask.status === 'error';
23
24
  useEffect(() => {
@@ -29,6 +30,23 @@ export function DockerNetworkView({ onBack }) {
29
30
  if (onBack && networkDone && (input === 'q' || key.escape))
30
31
  finish();
31
32
  });
32
- return (_jsxs(AppShell, { command: "ct docker network", children: [_jsxs(Section, { title: "Docker Network Configuration", children: [networkTask.status === 'pending' && _jsx(Spinner, { label: "Inspecting networks..." }), networkTask.status === 'error' && (_jsx(StatusLine, { status: "fail", label: "Network 'ct' not found" })), networkTask.status === 'done' && networkTask.data === null && (_jsx(StatusLine, { status: "fail", label: "Network 'ct' not found" })), networkTask.status === 'done' && networkTask.data && (_jsx(ShellOutput, { content: networkTask.data }))] }), onBack && networkDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
33
+ return (_jsxs(AppShell, { command: "ct docker network", children: [_jsxs(Section, { title: "Docker Network Configuration", children: [networkTask.status === 'pending' && _jsx(Spinner, { label: "Inspecting networks..." }), networkTask.status === 'error' && (_jsx(StatusLine, { status: "fail", label: "Network 'ct' not found" })), networkTask.status === 'done' && networkTask.data === null && (_jsx(StatusLine, { status: "fail", label: "Network 'ct' not found" })), networkTask.status === 'done' && networkTask.data && networkTask.data.map((net, idx) => {
34
+ const ipamConfig = net.IPAM?.Config?.[0];
35
+ const containers = net.Containers
36
+ ? Object.values(net.Containers).map((c) => ({
37
+ name: c.Name ?? 'unknown',
38
+ ipv4: (c.IPv4Address ?? '').replace(/\/\d+$/, ''),
39
+ }))
40
+ : [];
41
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(KeyValue, { items: [
42
+ { key: 'Name', value: net.Name ?? 'unknown' },
43
+ { key: 'Driver', value: net.Driver ?? 'unknown' },
44
+ { key: 'Subnet', value: ipamConfig?.Subnet ?? 'N/A' },
45
+ { key: 'Gateway', value: ipamConfig?.Gateway ?? 'N/A' },
46
+ ] }), containers.length > 0 ? (_jsx(SubSection, { title: "Connected Containers", children: _jsx(DataTable, { columns: [
47
+ { key: 'name', label: 'Container' },
48
+ { key: 'ipv4', label: 'IPv4 Address' },
49
+ ], rows: containers.map(c => ({ name: c.name, ipv4: c.ipv4 })) }) })) : (_jsx(SubSection, { title: "Connected Containers", children: _jsx(Text, { dimColor: true, children: " No containers connected" }) }))] }, idx));
50
+ })] }), onBack && networkDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
33
51
  }
34
52
  //# sourceMappingURL=DockerNetworkView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DockerNetworkView.js","sourceRoot":"","sources":["../../../src/ui/views/DockerNetworkView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DockerNetworkView.js","sourceRoot":"","sources":["../../../src/ui/views/DockerNetworkView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DockerPruneView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DockerPruneView.tsx"],"names":[],"mappings":"AA6CA,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAoC/D"}
1
+ {"version":3,"file":"DockerPruneView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DockerPruneView.tsx"],"names":[],"mappings":"AA6CA,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAqD/D"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect } from 'react';
2
+ import { useState, useEffect } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { execa } from 'execa';
5
- import { AppShell, Section, StepList, Divider, StatusLine } from '../components/index.js';
5
+ import { AppShell, Section, StepList, Divider, StatusLine, Confirm } from '../components/index.js';
6
6
  import { useStepRunner, useFinish } from '../hooks/index.js';
7
7
  const steps = [
8
8
  {
@@ -43,19 +43,26 @@ const steps = [
43
43
  ];
44
44
  export function DockerPruneView({ onBack }) {
45
45
  const finish = useFinish(onBack);
46
+ const [confirmed, setConfirmed] = useState(false);
46
47
  const { states, isDone, run } = useStepRunner(steps);
47
48
  useEffect(() => {
48
- run();
49
- }, [run]);
49
+ if (confirmed)
50
+ run();
51
+ }, [confirmed, run]);
50
52
  useEffect(() => {
51
53
  if (isDone && !onBack) {
52
54
  finish();
53
55
  }
54
56
  }, [isDone, onBack, finish]);
55
57
  useInput((input, key) => {
58
+ if (!confirmed && (input === 'n' || input === 'q' || key.escape))
59
+ finish();
56
60
  if (onBack && isDone && (input === 'q' || key.escape))
57
61
  finish();
58
62
  });
59
- return (_jsxs(AppShell, { command: "ct docker prune", children: [_jsx(Section, { title: "Docker Cleanup", children: _jsx(StepList, { steps: states }) }), isDone && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Divider, {}), _jsx(StatusLine, { status: "ok", label: "Docker cleanup complete" })] })), onBack && isDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
63
+ return (_jsxs(AppShell, { command: "ct docker prune", children: [!confirmed && (_jsxs(Section, { title: "Docker Cleanup", children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { children: "This will remove:" }), _jsx(Text, { children: " - Stopped containers" }), _jsx(Text, { children: " - Unused networks" }), _jsx(Text, { children: " - Unused volumes" }), _jsx(Text, { children: " - Unused images (older than 24h)" }), _jsx(Text, { children: " - Dangling images" })] }), _jsx(Confirm, { message: "Proceed with Docker cleanup?", onConfirm: (yes) => { if (yes)
64
+ setConfirmed(true);
65
+ else
66
+ finish(); } })] })), confirmed && (_jsx(Section, { title: "Docker Cleanup", children: _jsx(StepList, { steps: states }) })), isDone && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Divider, {}), _jsx(StatusLine, { status: "ok", label: "Docker cleanup complete" })] })), onBack && isDone && (_jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "Press q to go back" }) }))] }));
60
67
  }
61
68
  //# sourceMappingURL=DockerPruneView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DockerPruneView.js","sourceRoot":"","sources":["../../../src/ui/views/DockerPruneView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DockerPruneView.js","sourceRoot":"","sources":["../../../src/ui/views/DockerPruneView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MainMenu.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MainMenu.tsx"],"names":[],"mappings":"AA0OA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,aAAa,2CAgQxE"}
1
+ {"version":3,"file":"MainMenu.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MainMenu.tsx"],"names":[],"mappings":"AA0MA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,aAAa,2CAmSxE"}
@@ -3,7 +3,8 @@ import { useState, useCallback, useEffect } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { AppShell, Spinner } from '../components/index.js';
5
5
  import { usePolling } from '../hooks/index.js';
6
- import { getServiceList, startService, stopService, restartService, } from '../../lib/services.js';
6
+ import { getServiceList, startService, stopService, restartService, startAllServices, stopAllServices, } from '../../lib/services.js';
7
+ import { healthIcon, healthColor, extractVersion, extractUptime } from '../utils/serviceDisplay.js';
7
8
  // View imports
8
9
  import { StatusView } from './StatusView.js';
9
10
  import { DbStatusView } from './DbStatusView.js';
@@ -33,51 +34,7 @@ import { JtapiTroubleshootView } from './JtapiTroubleshootView.js';
33
34
  import { OfflineListView } from './OfflineListView.js';
34
35
  import { ServicesView } from './ServicesView.js';
35
36
  import { ServiceLogsView } from './ServiceLogsView.js';
36
- /* ------------------------------------------------------------------ */
37
- /* Health / display helpers */
38
- /* ------------------------------------------------------------------ */
39
- function healthIcon(health, state) {
40
- if (state === 'exited' || state === 'dead')
41
- return '●';
42
- if (health === 'healthy')
43
- return '●';
44
- if (health === 'unhealthy')
45
- return '●';
46
- if (health === 'starting')
47
- return '●';
48
- if (state === 'running')
49
- return '●';
50
- return '○';
51
- }
52
- function healthColor(health, state) {
53
- if (state === 'exited' || state === 'dead')
54
- return 'red';
55
- if (health === 'healthy')
56
- return 'green';
57
- if (health === 'unhealthy')
58
- return 'red';
59
- if (health === 'starting')
60
- return 'yellow';
61
- if (state === 'running')
62
- return 'green';
63
- return 'gray';
64
- }
65
- function extractVersion(image) {
66
- if (!image)
67
- return '';
68
- return image.includes(':') ? image.split(':').pop() : image;
69
- }
70
- function extractUptime(status) {
71
- if (!status)
72
- return '';
73
- const m = status.match(/Up\s+(?:About\s+)?(\d+)\s*(second|minute|hour|day|week|month)/i);
74
- if (!m) {
75
- if (status.toLowerCase().startsWith('exited'))
76
- return 'exited';
77
- return status.replace(/\s*\(.*\)/, '').trim();
78
- }
79
- return `${m[1]}${m[2].charAt(0)}`;
80
- }
37
+ import { UpdateView } from './UpdateView.js';
81
38
  /* ------------------------------------------------------------------ */
82
39
  /* Menu definition */
83
40
  /* ------------------------------------------------------------------ */
@@ -216,6 +173,7 @@ const VIEW_MAP = {
216
173
  'jtapi troubleshoot': (onBack) => _jsx(JtapiTroubleshootView, { onBack: onBack }),
217
174
  'offline list': (onBack) => _jsx(OfflineListView, { onBack: onBack }),
218
175
  'services': (onBack) => _jsx(ServicesView, { onBack: onBack }),
176
+ 'update': (onBack) => _jsx(UpdateView, { onBack: onBack }),
219
177
  };
220
178
  /* ------------------------------------------------------------------ */
221
179
  /* Main component */
@@ -234,6 +192,7 @@ export function MainMenu({ version, onCliCommand, onExit }) {
234
192
  const [menuCursor, setMenuCursor] = useState(0);
235
193
  const [menuStack, setMenuStack] = useState([]);
236
194
  const [actionLabel, setActionLabel] = useState('');
195
+ const [actionError, setActionError] = useState(null);
237
196
  const [logsService, setLogsService] = useState(null);
238
197
  const { data: services, stop: stopPolling, start: startPolling } = usePolling(getServiceList, 5000, false);
239
198
  // Control polling based on phase — only poll when on home screen
@@ -253,10 +212,13 @@ export function MainMenu({ version, onCliCommand, onExit }) {
253
212
  const executeAction = useCallback(async (label, fn) => {
254
213
  setPhase('action');
255
214
  setActionLabel(label);
215
+ setActionError(null);
256
216
  try {
257
217
  await fn();
258
218
  }
259
- catch { /* silently return */ }
219
+ catch (err) {
220
+ setActionError(err instanceof Error ? err.message : String(err));
221
+ }
260
222
  setPhase('home');
261
223
  }, []);
262
224
  // Build menu display items
@@ -277,7 +239,14 @@ export function MainMenu({ version, onCliCommand, onExit }) {
277
239
  if (zone === 'services') {
278
240
  const count = serviceList.length;
279
241
  if (key.upArrow) {
280
- setServiceCursor(prev => (prev > 0 ? prev - 1 : prev));
242
+ if (serviceCursor > 0) {
243
+ setServiceCursor(prev => prev - 1);
244
+ }
245
+ else {
246
+ // Wrap to bottom of menu
247
+ setZone('menu');
248
+ setMenuCursor(menuDisplayItems.length - 1);
249
+ }
281
250
  }
282
251
  else if (key.downArrow) {
283
252
  if (serviceCursor < count - 1) {
@@ -304,6 +273,12 @@ export function MainMenu({ version, onCliCommand, onExit }) {
304
273
  if (svc)
305
274
  executeAction(`Restarting ${svc.service}...`, () => restartService(svc.service).then(() => { }));
306
275
  }
276
+ else if (input === 'a') {
277
+ executeAction('Starting all services...', () => startAllServices().then(() => { }));
278
+ }
279
+ else if (input === 'X') {
280
+ executeAction('Stopping all services...', () => stopAllServices().then(() => { }));
281
+ }
307
282
  else if (input === 'l' || key.return) {
308
283
  const svc = serviceList[serviceCursor];
309
284
  if (svc) {
@@ -330,7 +305,14 @@ export function MainMenu({ version, onCliCommand, onExit }) {
330
305
  }
331
306
  }
332
307
  else if (key.downArrow) {
333
- setMenuCursor(prev => (prev < menuDisplayItems.length - 1 ? prev + 1 : prev));
308
+ if (menuCursor < menuDisplayItems.length - 1) {
309
+ setMenuCursor(prev => prev + 1);
310
+ }
311
+ else if (serviceList.length > 0) {
312
+ // Wrap to top of services
313
+ setZone('services');
314
+ setServiceCursor(0);
315
+ }
334
316
  }
335
317
  else if (key.return) {
336
318
  const selected = menuDisplayItems[menuCursor];
@@ -340,7 +322,19 @@ export function MainMenu({ version, onCliCommand, onExit }) {
340
322
  setMenuStack(prev => prev.slice(0, -1));
341
323
  setMenuCursor(0);
342
324
  }
343
- else if (selected.item?.children && selected.item.children.length > 0) {
325
+ else if (selected.item?.children && selected.item.children.length === 1) {
326
+ // Single child — skip submenu, go directly to the child's view
327
+ const child = selected.item.children[0];
328
+ const cmd = child.value;
329
+ if (VIEW_MAP[cmd]) {
330
+ setActiveView(cmd);
331
+ setPhase('view');
332
+ }
333
+ else {
334
+ onCliCommand(cmd);
335
+ }
336
+ }
337
+ else if (selected.item?.children && selected.item.children.length > 1) {
344
338
  setMenuStack(prev => [...prev, selected.item.children]);
345
339
  setMenuCursor(0);
346
340
  }
@@ -395,17 +389,17 @@ export function MainMenu({ version, onCliCommand, onExit }) {
395
389
  const healthyCount = serviceList.filter(s => s.health === 'healthy').length;
396
390
  const stoppedCount = serviceList.filter(s => s.state === 'exited' || s.state === 'dead').length;
397
391
  const inServiceZone = zone === 'services' && serviceList.length > 0;
398
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { paddingLeft: 1, children: _jsx(Text, { color: "cyan", children: LOGO }) }), _jsxs(AppShell, { title: `CallTelemetry CLI v${version}`, children: [!services && (_jsx(Box, { paddingLeft: 2, marginBottom: 1, children: _jsx(Spinner, { label: "Loading services..." }) })), serviceList.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Box, { paddingLeft: 2, marginBottom: 1, children: _jsxs(Text, { children: [_jsx(Text, { bold: true, children: serviceList.length }), _jsx(Text, { children: " containers" }), runningCount > 0 && _jsxs(Text, { color: "green", children: [" \u2014 ", runningCount, " running"] }), healthyCount > 0 && _jsxs(Text, { color: "green", children: [" (", healthyCount, " healthy)"] }), stoppedCount > 0 && _jsxs(Text, { color: "red", children: [" \u2014 ", stoppedCount, " stopped"] })] }) }), _jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { dimColor: true, bold: true, children: ' '.padEnd(3) }), _jsx(Text, { dimColor: true, bold: true, children: 'Service'.padEnd(svcWidth) }), _jsx(Text, { dimColor: true, bold: true, children: 'Version'.padEnd(verWidth) }), _jsx(Text, { dimColor: true, bold: true, children: 'Uptime' })] }), serviceList.map((svc, i) => {
399
- const isActive = zone === 'services' && i === serviceCursor;
400
- const icon = healthIcon(svc.health, svc.state);
401
- const color = healthColor(svc.health, svc.state);
402
- return (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: isActive ? 'cyan' : color, children: isActive ? ' ❯ ' : ` ${icon} ` }), _jsx(Text, { color: isActive ? 'cyan' : undefined, bold: isActive, children: svc.service.padEnd(svcWidth) }), _jsx(Text, { color: isActive ? 'cyan' : undefined, dimColor: !isActive, children: extractVersion(svc.image).padEnd(verWidth) }), _jsx(Text, { color: isActive ? 'cyan' : undefined, dimColor: !isActive, children: extractUptime(svc.status) })] }, svc.service));
403
- }), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: '─'.repeat(60) }) })] })), _jsx(Box, { flexDirection: "column", paddingLeft: 2, paddingTop: serviceList.length > 0 ? 0 : 1, children: menuDisplayItems.map((entry, i) => {
404
- const isActive = zone === 'menu' && i === menuCursor;
405
- const prefix = isActive ? '❯' : ' ';
406
- return (_jsxs(Box, { children: [_jsx(Text, { color: isActive ? 'cyan' : undefined, bold: isActive, children: `${prefix} ${entry.label.padEnd(16)}` }), _jsx(Text, { dimColor: true, children: entry.description })] }, `menu-${i}`));
407
- }) }), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: inServiceZone
408
- ? '↑↓ Navigate Enter/l Logs s Start x Stop r Restart q Quit'
409
- : '↑↓ Navigate Enter Select q Quit' }) })] })] }));
392
+ return (_jsxs(AppShell, { title: `CallTelemetry CLI v${version}`, children: [_jsx(Box, { paddingLeft: 1, marginBottom: 1, children: _jsx(Text, { color: "cyan", children: LOGO }) }), !services && (_jsx(Box, { paddingLeft: 2, marginBottom: 1, children: _jsx(Spinner, { label: "Loading services..." }) })), serviceList.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Box, { paddingLeft: 2, marginBottom: 1, children: _jsxs(Text, { children: [_jsx(Text, { bold: true, children: serviceList.length }), _jsx(Text, { children: " containers" }), runningCount > 0 && _jsxs(Text, { color: "green", children: [" \u2014 ", runningCount, " running"] }), healthyCount > 0 && _jsxs(Text, { color: "green", children: [" (", healthyCount, " healthy)"] }), stoppedCount > 0 && _jsxs(Text, { color: "red", children: [" \u2014 ", stoppedCount, " stopped"] })] }) }), _jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { dimColor: true, bold: true, children: ' '.padEnd(3) }), _jsx(Text, { dimColor: true, bold: true, children: 'Service'.padEnd(svcWidth) }), _jsx(Text, { dimColor: true, bold: true, children: 'Version'.padEnd(verWidth) }), _jsx(Text, { dimColor: true, bold: true, children: 'Uptime' })] }), serviceList.map((svc, i) => {
393
+ const isActive = zone === 'services' && i === serviceCursor;
394
+ const icon = healthIcon(svc.health, svc.state);
395
+ const color = healthColor(svc.health, svc.state);
396
+ return (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: isActive ? 'cyan' : color, children: isActive ? ' ❯ ' : ` ${icon} ` }), _jsx(Text, { color: isActive ? 'cyan' : undefined, bold: isActive, children: svc.service.padEnd(svcWidth) }), _jsx(Text, { color: isActive ? 'cyan' : undefined, dimColor: !isActive, children: extractVersion(svc.image).padEnd(verWidth) }), _jsx(Text, { color: isActive ? 'cyan' : undefined, dimColor: !isActive, children: extractUptime(svc.status) })] }, svc.service));
397
+ }), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: '─'.repeat(60) }) })] })), actionError && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: "red", children: ["Error: ", actionError] }) })), _jsx(Box, { flexDirection: "column", paddingLeft: 2, paddingTop: serviceList.length > 0 ? 0 : 1, children: menuDisplayItems.map((entry, i) => {
398
+ const isActive = zone === 'menu' && i === menuCursor;
399
+ const prefix = isActive ? '❯' : ' ';
400
+ return (_jsxs(Box, { children: [_jsx(Text, { color: isActive ? 'cyan' : undefined, bold: isActive, children: `${prefix} ${entry.label.padEnd(16)}` }), _jsx(Text, { dimColor: true, children: entry.description })] }, `menu-${i}`));
401
+ }) }), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: inServiceZone
402
+ ? '↑↓ Navigate Enter/l Logs s Start x Stop r Restart a Start All X Stop All q/Esc Menu'
403
+ : '↑↓ Navigate Enter Select q Quit' }) })] }));
410
404
  }
411
405
  //# sourceMappingURL=MainMenu.js.map