termdock 1.4.106 → 1.4.108

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 (73) hide show
  1. package/.desktop-dist/main.js +58 -0
  2. package/dist/client/assets/{ModelPreview-CZSQHr7b.js → ModelPreview-By3cPzJ9.js} +1 -1
  3. package/dist/client/assets/{abnfDiagram-VRR7QNED-BBix8izM.js → abnfDiagram-VRR7QNED-Dm9g0Pi3.js} +1 -1
  4. package/dist/client/assets/{arc-fUVReNbX.js → arc-XntYYR9t.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-ZJ3FMSHR-BQWljgmB.js → architectureDiagram-ZJ3FMSHR-CW0kZlVv.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-677ZJIJ3-C_zyYvRo.js → blockDiagram-677ZJIJ3-DgMdh19W.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-LMCZKHZV-CKmAYyR3.js → c4Diagram-LMCZKHZV-DJC4m2Y6.js} +1 -1
  8. package/dist/client/assets/channel-D1KecDCp.js +1 -0
  9. package/dist/client/assets/{chunk-2Q5K7J3B-CQZd_TYm.js → chunk-2Q5K7J3B-CgE5oTjY.js} +1 -1
  10. package/dist/client/assets/{chunk-32BRIVSS-BeHKXol4.js → chunk-32BRIVSS-B50lSI4-.js} +1 -1
  11. package/dist/client/assets/{chunk-5VM5RSS4-n5oQMe3j.js → chunk-5VM5RSS4-C984gGSO.js} +1 -1
  12. package/dist/client/assets/{chunk-EX3LRPZG-CC8_2khK.js → chunk-EX3LRPZG-C1jPbFiq.js} +1 -1
  13. package/dist/client/assets/{chunk-JWPE2WC7-CI1nMRAH.js → chunk-JWPE2WC7-D4U9D5Kv.js} +1 -1
  14. package/dist/client/assets/{chunk-MOJQB5TN-DqiHJ6SB.js → chunk-MOJQB5TN-C4rLPnf_.js} +1 -1
  15. package/dist/client/assets/{chunk-RYQCIY6F-C5WkePpp.js → chunk-RYQCIY6F-CnSX68rt.js} +1 -1
  16. package/dist/client/assets/{chunk-V7JOEXUC-CkJvgM9y.js → chunk-V7JOEXUC-LTTPDSzs.js} +1 -1
  17. package/dist/client/assets/{chunk-VR4S4FIN-Cwt5t86l.js → chunk-VR4S4FIN-dCZ9yGOH.js} +1 -1
  18. package/dist/client/assets/{chunk-XXDRQBXY-C_YE6iw5.js → chunk-XXDRQBXY-DiUZr3na.js} +1 -1
  19. package/dist/client/assets/classDiagram-OUVF2IWQ-BYJ3p4nE.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-EOCWNBFH-BYJ3p4nE.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-JH36ORCC-DP6QDuat.js → cose-bilkent-JH36ORCC-Dw73llr7.js} +1 -1
  22. package/dist/client/assets/{cynefin-VYW2F7L2--k_cf67K.js → cynefin-VYW2F7L2-CsB9ZT7a.js} +1 -1
  23. package/dist/client/assets/{cynefinDiagram-TSTJHNR4-DHDMSwue.js → cynefinDiagram-TSTJHNR4-NinMHYPB.js} +1 -1
  24. package/dist/client/assets/{dagre-VKFMJZFB-BbdtV6bR.js → dagre-VKFMJZFB-CmFL5D4c.js} +1 -1
  25. package/dist/client/assets/{diagram-FQU43EPY-BJweZEC0.js → diagram-FQU43EPY-D_C52SB6.js} +1 -1
  26. package/dist/client/assets/{diagram-G47NLZAW-C0Ywfnf7.js → diagram-G47NLZAW-BLlpvNO5.js} +1 -1
  27. package/dist/client/assets/{diagram-NH7WQ7WH-DTjy6YDm.js → diagram-NH7WQ7WH-BNT2NQnR.js} +1 -1
  28. package/dist/client/assets/{diagram-OA4YK3LP-DpUW7owu.js → diagram-OA4YK3LP-DlJ-T7tl.js} +1 -1
  29. package/dist/client/assets/{diagram-WEI45ONY-CBhl5u0v.js → diagram-WEI45ONY-D7s_sZnL.js} +1 -1
  30. package/dist/client/assets/{ebnfDiagram-CCIWWBDH-CJgX85Dt.js → ebnfDiagram-CCIWWBDH-PGksmUKG.js} +1 -1
  31. package/dist/client/assets/{erDiagram-Q63AITRT-YAor2zuU.js → erDiagram-Q63AITRT-CbfrT-bt.js} +1 -1
  32. package/dist/client/assets/{flowDiagram-23GEKE2U-C_HpuX7s.js → flowDiagram-23GEKE2U-CqUGdXdQ.js} +1 -1
  33. package/dist/client/assets/{ganttDiagram-NO4QXBWP-F9qCN4QO.js → ganttDiagram-NO4QXBWP-DpH0ybM6.js} +1 -1
  34. package/dist/client/assets/{gitGraphDiagram-IHSO6WYX-CcEZc2gU.js → gitGraphDiagram-IHSO6WYX-Cmc3LsBg.js} +1 -1
  35. package/dist/client/assets/index-BwMQSNQq.js +456 -0
  36. package/dist/client/assets/index-RGd2Qu1X.css +1 -0
  37. package/dist/client/assets/{infoDiagram-FWYZ7A6U-ByB55OTL.js → infoDiagram-FWYZ7A6U-CHzl_SDV.js} +1 -1
  38. package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-F9Dl36oy.js → ishikawaDiagram-FXEZZL3T-BUVwtCaN.js} +1 -1
  39. package/dist/client/assets/{journeyDiagram-5HDEW3XC-D1lKnOCV.js → journeyDiagram-5HDEW3XC-DrmO4THP.js} +1 -1
  40. package/dist/client/assets/{kanban-definition-HUTT4EX6-DQteUklm.js → kanban-definition-HUTT4EX6-DTZoUd1n.js} +1 -1
  41. package/dist/client/assets/{linear-DLqgDBuT.js → linear-DgCNjduP.js} +1 -1
  42. package/dist/client/assets/{mermaid.core-CXQCNUDG.js → mermaid.core-DLidsBlx.js} +4 -4
  43. package/dist/client/assets/{mindmap-definition-LN4V7U3C-DKTJdBnS.js → mindmap-definition-LN4V7U3C-srFG-Dae.js} +1 -1
  44. package/dist/client/assets/{pegDiagram-2B236MQR-FGOvfDwu.js → pegDiagram-2B236MQR-Qary-lxo.js} +1 -1
  45. package/dist/client/assets/{pieDiagram-ENE6RG2P-CxBVKNO-.js → pieDiagram-ENE6RG2P-D924FFIQ.js} +1 -1
  46. package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-w4LD6J_v.js → quadrantDiagram-ABIIQ3AL-YFBMJKUv.js} +1 -1
  47. package/dist/client/assets/{railroadDiagram-RFXS5EU6-tO6ewc5G.js → railroadDiagram-RFXS5EU6-C__7fBPw.js} +1 -1
  48. package/dist/client/assets/{requirementDiagram-TGXJPOKE-DR43Ck76.js → requirementDiagram-TGXJPOKE-BtAq5f69.js} +1 -1
  49. package/dist/client/assets/{sankeyDiagram-HTMAVEWB-B0-bOi3o.js → sankeyDiagram-HTMAVEWB-BGULYk91.js} +1 -1
  50. package/dist/client/assets/{sequenceDiagram-DBY2YBRQ-DtxJeT6H.js → sequenceDiagram-DBY2YBRQ-BBjCjIFm.js} +1 -1
  51. package/dist/client/assets/{sizeCapture-X5ZJPWSS-DahFyNb5.js → sizeCapture-X5ZJPWSS-DjP0UZy6.js} +1 -1
  52. package/dist/client/assets/{stateDiagram-2N3HPSRC-CTbnADxt.js → stateDiagram-2N3HPSRC-BTqu5zVt.js} +1 -1
  53. package/dist/client/assets/stateDiagram-v2-6OUMAXLB-D5FsphfH.js +1 -0
  54. package/dist/client/assets/{swimlanes-5IMT3BWC-D80zUd4C.js → swimlanes-5IMT3BWC-ClySuTz2.js} +2 -2
  55. package/dist/client/assets/swimlanesDiagram-G3AALYLV-C1_CRJSE.js +8 -0
  56. package/dist/client/assets/{timeline-definition-FHXFAJF6-Af2q5Wdm.js → timeline-definition-FHXFAJF6-DHURyh7H.js} +1 -1
  57. package/dist/client/assets/{vennDiagram-L72KCM5P-Bfz_8Z3x.js → vennDiagram-L72KCM5P-BFdn5KML.js} +1 -1
  58. package/dist/client/assets/{wardleyDiagram-EHGQE667-f3aDYAIS.js → wardleyDiagram-EHGQE667-DKEHwCwO.js} +1 -1
  59. package/dist/client/assets/{xychartDiagram-FW5EYKEG-Bx2KCYuD.js → xychartDiagram-FW5EYKEG-CI5HzOMq.js} +1 -1
  60. package/dist/client/index.html +2 -2
  61. package/dist/client/sw.js +1 -1
  62. package/dist/server/routes/filesystem.js +31 -6
  63. package/dist/server/utils/heicPreview.js +50 -0
  64. package/dist/server/workers/heicPreviewWorker.js +14 -0
  65. package/package.json +3 -1
  66. package/runtime-manifest.json +3 -3
  67. package/dist/client/assets/channel-CT8_3viw.js +0 -1
  68. package/dist/client/assets/classDiagram-OUVF2IWQ-DteGPGJ-.js +0 -1
  69. package/dist/client/assets/classDiagram-v2-EOCWNBFH-DteGPGJ-.js +0 -1
  70. package/dist/client/assets/index-BRJk3mtc.css +0 -1
  71. package/dist/client/assets/index-CzrumlwK.js +0 -451
  72. package/dist/client/assets/stateDiagram-v2-6OUMAXLB-CC9WBig3.js +0 -1
  73. package/dist/client/assets/swimlanesDiagram-G3AALYLV-U7rUp89E.js +0 -8
@@ -52,6 +52,7 @@ function triggerLocalNetworkPermission() {
52
52
  let mainWindow = null;
53
53
  const serviceWindows = new Map();
54
54
  const windowServiceOrigins = new WeakMap();
55
+ const serviceActivity = new Map();
55
56
  let lastFocusedServiceWindow = null;
56
57
  let isQuitting = false;
57
58
  function focusedWorkspaceWindow() {
@@ -71,6 +72,28 @@ function showAndFocusWindow(window) {
71
72
  window.show();
72
73
  window.focus();
73
74
  }
75
+ function serviceActivitySnapshot(targetWindow) {
76
+ const currentOrigin = windowServiceOrigins.get(targetWindow);
77
+ return [...serviceWindows.entries()].flatMap(([origin, window]) => {
78
+ if (window.isDestroyed())
79
+ return [];
80
+ const activity = serviceActivity.get(origin) ?? { runningCount: 0, reviewCount: 0 };
81
+ return [{
82
+ origin,
83
+ label: serviceLabel(origin),
84
+ current: origin === currentOrigin,
85
+ focused: window.isFocused(),
86
+ ...activity,
87
+ }];
88
+ });
89
+ }
90
+ function broadcastServiceActivity() {
91
+ for (const window of serviceWindows.values()) {
92
+ if (window.isDestroyed())
93
+ continue;
94
+ window.webContents.send('desktop:service-activity-changed', serviceActivitySnapshot(window));
95
+ }
96
+ }
74
97
  function serviceLabel(url) {
75
98
  const normalized = normalizeServiceUrl(url);
76
99
  const saved = readDesktopConfig().connections.find((entry) => entry.url === normalized);
@@ -1007,11 +1030,14 @@ function createDesktopWindow(options) {
1007
1030
  const serviceOrigin = windowServiceOrigins.get(window);
1008
1031
  if (serviceOrigin && serviceWindows.get(serviceOrigin) === window) {
1009
1032
  serviceWindows.delete(serviceOrigin);
1033
+ serviceActivity.delete(serviceOrigin);
1034
+ broadcastServiceActivity();
1010
1035
  }
1011
1036
  });
1012
1037
  window.on('focus', () => {
1013
1038
  if (windowServiceOrigins.has(window))
1014
1039
  lastFocusedServiceWindow = window;
1040
+ broadcastServiceActivity();
1015
1041
  // User is looking at the app — the Dock badge has served its purpose.
1016
1042
  clearUnreadNotifications();
1017
1043
  });
@@ -1052,6 +1078,38 @@ function installIpcHandlers() {
1052
1078
  return snapshot();
1053
1079
  });
1054
1080
  ipcMain.handle('desktop:connect', (_event, url) => connectWindow(url));
1081
+ ipcMain.on('desktop:report-service-activity', (event, activity) => {
1082
+ const sourceWindow = BrowserWindow.fromWebContents(event.sender);
1083
+ if (!sourceWindow)
1084
+ return;
1085
+ const origin = windowServiceOrigins.get(sourceWindow);
1086
+ if (!origin)
1087
+ return;
1088
+ const normalizeCount = (value) => Math.min(999, Math.max(0, typeof value === 'number' && Number.isFinite(value) ? Math.floor(value) : 0));
1089
+ const next = {
1090
+ runningCount: normalizeCount(activity?.runningCount),
1091
+ reviewCount: normalizeCount(activity?.reviewCount),
1092
+ };
1093
+ const current = serviceActivity.get(origin);
1094
+ if (current?.runningCount === next.runningCount && current.reviewCount === next.reviewCount) {
1095
+ // The sender may have just reloaded and still needs the complete roster.
1096
+ sourceWindow.webContents.send('desktop:service-activity-changed', serviceActivitySnapshot(sourceWindow));
1097
+ return;
1098
+ }
1099
+ serviceActivity.set(origin, next);
1100
+ broadcastServiceActivity();
1101
+ });
1102
+ ipcMain.handle('desktop:focus-service', (event, origin) => {
1103
+ const sourceWindow = BrowserWindow.fromWebContents(event.sender);
1104
+ if (!sourceWindow || !windowServiceOrigins.has(sourceWindow))
1105
+ return false;
1106
+ const targetWindow = serviceWindows.get(origin);
1107
+ if (!targetWindow || targetWindow.isDestroyed())
1108
+ return false;
1109
+ showAndFocusWindow(targetWindow);
1110
+ broadcastServiceActivity();
1111
+ return true;
1112
+ });
1055
1113
  ipcMain.handle('desktop:start-local', () => startLocalService());
1056
1114
  ipcMain.handle('desktop:install-cli', () => installCli());
1057
1115
  ipcMain.handle('desktop:update-state', () => getDesktopUpdateState());