termdock 1.4.122 → 1.4.124
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/client/assets/{ModelPreview-CJe-PWxc.js → ModelPreview-Be2smem8.js} +1 -1
- package/dist/client/assets/{abnfDiagram-VRR7QNED-CZGYYTkL.js → abnfDiagram-VRR7QNED-BlflMbiO.js} +1 -1
- package/dist/client/assets/{arc-C9ovRRCB.js → arc-BLcH6XEC.js} +1 -1
- package/dist/client/assets/{architectureDiagram-ZJ3FMSHR-CfijFgFE.js → architectureDiagram-ZJ3FMSHR-CnBbD-1o.js} +1 -1
- package/dist/client/assets/{blockDiagram-677ZJIJ3-_ewP5xzy.js → blockDiagram-677ZJIJ3-DPF-Ts3E.js} +1 -1
- package/dist/client/assets/{c4Diagram-LMCZKHZV-BdFNzfaB.js → c4Diagram-LMCZKHZV-bj_qgr87.js} +1 -1
- package/dist/client/assets/channel-CwqZRIbt.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-Bk-Zrlca.js → chunk-2Q5K7J3B-BLPLyR9K.js} +1 -1
- package/dist/client/assets/{chunk-32BRIVSS-CXmu1n-P.js → chunk-32BRIVSS-DWlXbXJt.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-D1ewEFAt.js → chunk-5VM5RSS4-CEM0N0ye.js} +1 -1
- package/dist/client/assets/{chunk-EX3LRPZG-Nb-EMdx-.js → chunk-EX3LRPZG-Dty9y4gw.js} +1 -1
- package/dist/client/assets/{chunk-JWPE2WC7-BMh6fTUm.js → chunk-JWPE2WC7-dlwhK_i1.js} +1 -1
- package/dist/client/assets/{chunk-MOJQB5TN-DGTq8m1i.js → chunk-MOJQB5TN-CX08FiG7.js} +1 -1
- package/dist/client/assets/{chunk-RYQCIY6F-DnIXl6Ku.js → chunk-RYQCIY6F-CoYfVCEL.js} +1 -1
- package/dist/client/assets/{chunk-V7JOEXUC-d6x1hwlS.js → chunk-V7JOEXUC-C_nJAEZ6.js} +1 -1
- package/dist/client/assets/{chunk-VR4S4FIN-Cst36NFV.js → chunk-VR4S4FIN-CxTZ4h0g.js} +1 -1
- package/dist/client/assets/{chunk-XXDRQBXY-DDzcV3AA.js → chunk-XXDRQBXY-CRcElLUQ.js} +1 -1
- package/dist/client/assets/classDiagram-OUVF2IWQ-CsBWdSSp.js +1 -0
- package/dist/client/assets/classDiagram-v2-EOCWNBFH-CsBWdSSp.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-DPcjHu-a.js → cose-bilkent-JH36ORCC-DopCQZMr.js} +1 -1
- package/dist/client/assets/{cynefin-VYW2F7L2-DLWGJOKu.js → cynefin-VYW2F7L2-C5lwo5rG.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-TSTJHNR4-ChwiuhwW.js → cynefinDiagram-TSTJHNR4-BqE-HnNf.js} +1 -1
- package/dist/client/assets/{dagre-VKFMJZFB-DMn68BCd.js → dagre-VKFMJZFB-Qnuvs3u5.js} +1 -1
- package/dist/client/assets/{diagram-FQU43EPY-BWzt083-.js → diagram-FQU43EPY-T6rXZ6sy.js} +1 -1
- package/dist/client/assets/{diagram-G47NLZAW-1Ifm4uV0.js → diagram-G47NLZAW-BlKH1yFL.js} +1 -1
- package/dist/client/assets/{diagram-NH7WQ7WH-Bo_SF-cE.js → diagram-NH7WQ7WH-BsAh_h83.js} +1 -1
- package/dist/client/assets/{diagram-OA4YK3LP-DLX-LCJB.js → diagram-OA4YK3LP-DFFBJ56F.js} +1 -1
- package/dist/client/assets/{diagram-WEI45ONY-Bf5qmb8B.js → diagram-WEI45ONY-BAt9TFgr.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-CCIWWBDH-jmsp3qMg.js → ebnfDiagram-CCIWWBDH-CZqTgzyZ.js} +1 -1
- package/dist/client/assets/{erDiagram-Q63AITRT-BSJ9O_Uj.js → erDiagram-Q63AITRT-Des9G2E2.js} +1 -1
- package/dist/client/assets/{flowDiagram-23GEKE2U-BhcIFwIa.js → flowDiagram-23GEKE2U-D-GCzapP.js} +1 -1
- package/dist/client/assets/{ganttDiagram-NO4QXBWP-Dl4sz2ED.js → ganttDiagram-NO4QXBWP-BGH_iM7_.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-IHSO6WYX-BpXwoKi_.js → gitGraphDiagram-IHSO6WYX-dheKFUpw.js} +1 -1
- package/dist/client/assets/index-BCdd_adt.css +1 -0
- package/dist/client/assets/index-DjYnI5kP.js +457 -0
- package/dist/client/assets/{infoDiagram-FWYZ7A6U-1n8vVZDv.js → infoDiagram-FWYZ7A6U-BZYW2clU.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-BOoubbH7.js → ishikawaDiagram-FXEZZL3T-Di9GvVpK.js} +1 -1
- package/dist/client/assets/{journeyDiagram-5HDEW3XC-C4gMgc1B.js → journeyDiagram-5HDEW3XC-Bm_oN9-6.js} +1 -1
- package/dist/client/assets/{kanban-definition-HUTT4EX6-BHIXqAjV.js → kanban-definition-HUTT4EX6-tj1z1JQG.js} +1 -1
- package/dist/client/assets/{linear-CpIhx6Gc.js → linear-QXJ-Ae7F.js} +1 -1
- package/dist/client/assets/{mermaid.core-CiIhxnwD.js → mermaid.core-C2fDWTc4.js} +4 -4
- package/dist/client/assets/{mindmap-definition-LN4V7U3C-YQsnBsmN.js → mindmap-definition-LN4V7U3C-BilCFNik.js} +1 -1
- package/dist/client/assets/{pegDiagram-2B236MQR-CwVOSvS2.js → pegDiagram-2B236MQR-Cedi8jLg.js} +1 -1
- package/dist/client/assets/{pieDiagram-ENE6RG2P-BwKxsCxJ.js → pieDiagram-ENE6RG2P-u8doKeCT.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-BQxwGIv5.js → quadrantDiagram-ABIIQ3AL-CTksDMFb.js} +1 -1
- package/dist/client/assets/{railroadDiagram-RFXS5EU6-Cx9SFycV.js → railroadDiagram-RFXS5EU6-a3hmKcli.js} +1 -1
- package/dist/client/assets/{requirementDiagram-TGXJPOKE-39fPSSwK.js → requirementDiagram-TGXJPOKE-0CbosJM9.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-HTMAVEWB-DZCrgI-t.js → sankeyDiagram-HTMAVEWB-DM9MM942.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-DBY2YBRQ-gNACCCge.js → sequenceDiagram-DBY2YBRQ-DJYOI_VF.js} +1 -1
- package/dist/client/assets/{sizeCapture-X5ZJPWSS-YBXDWHbB.js → sizeCapture-X5ZJPWSS-CayWxIRi.js} +1 -1
- package/dist/client/assets/{stateDiagram-2N3HPSRC-CTCeQOUM.js → stateDiagram-2N3HPSRC-BktX6ilb.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-6OUMAXLB-DK505RoL.js +1 -0
- package/dist/client/assets/{swimlanes-5IMT3BWC-BjOcSMgp.js → swimlanes-5IMT3BWC-Duvbluwj.js} +2 -2
- package/dist/client/assets/swimlanesDiagram-G3AALYLV-CZTzB1q3.js +8 -0
- package/dist/client/assets/{timeline-definition-FHXFAJF6-xMu52AIk.js → timeline-definition-FHXFAJF6-TdPH8RG8.js} +1 -1
- package/dist/client/assets/{vennDiagram-L72KCM5P-CxJiaNeN.js → vennDiagram-L72KCM5P-MQSsBdGx.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-EHGQE667-BDyiY3dI.js → wardleyDiagram-EHGQE667-BcsapLTw.js} +1 -1
- package/dist/client/assets/{xychartDiagram-FW5EYKEG-CA_fqKyA.js → xychartDiagram-FW5EYKEG-BSUPwtFh.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/client/sw.js +1 -1
- package/dist/server/cli.js +17 -2
- package/dist/server/routes/filesystem.js +239 -59
- package/dist/server/routes/terminal.js +47 -5
- package/dist/server/utils/fileWatchPolicy.js +136 -0
- package/dist/server/utils/settings.js +29 -0
- package/dist/server/utils/terminalColorEnvironment.js +46 -0
- package/package.json +1 -1
- package/runtime-manifest.json +2 -2
- package/dist/client/assets/channel-WCBYqzX4.js +0 -1
- package/dist/client/assets/classDiagram-OUVF2IWQ-NZpzVwgO.js +0 -1
- package/dist/client/assets/classDiagram-v2-EOCWNBFH-NZpzVwgO.js +0 -1
- package/dist/client/assets/index-CoDf9qRl.js +0 -457
- package/dist/client/assets/index-UhZwBu7l.css +0 -1
- package/dist/client/assets/stateDiagram-v2-6OUMAXLB-B_dCwMIY.js +0 -1
- package/dist/client/assets/swimlanesDiagram-G3AALYLV-DHr2qtGf.js +0 -8
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
export const WATCH_IGNORED_NAMES = new Set([
|
|
4
|
+
'.git', 'node_modules', 'dist', 'build', '.next', '.nuxt', '.turbo', 'coverage', 'target', '.gradle', '.idea', '.DS_Store',
|
|
5
|
+
]);
|
|
6
|
+
export const WATCH_RESOURCE_BACKOFF_MS = 60_000;
|
|
7
|
+
export function enqueueLatestWatchEvent(pending, eventPath, eventType, maxPending) {
|
|
8
|
+
if (!pending.has(eventPath) && pending.size >= maxPending)
|
|
9
|
+
return 'overflow';
|
|
10
|
+
pending.set(eventPath, eventType);
|
|
11
|
+
return 'queued';
|
|
12
|
+
}
|
|
13
|
+
function isSameOrDescendant(parentPath, candidatePath) {
|
|
14
|
+
const relative = path.relative(parentPath, candidatePath);
|
|
15
|
+
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Recursive watchers already cover every descendant. Keep only the shallowest
|
|
19
|
+
* roots so expanding a folder inside an already watched folder cannot allocate
|
|
20
|
+
* another overlapping native watcher.
|
|
21
|
+
*/
|
|
22
|
+
export function minimizeRecursiveWatchRoots(roots) {
|
|
23
|
+
const uniqueRoots = [...new Set(roots.map((root) => path.resolve(root)))];
|
|
24
|
+
uniqueRoots.sort((a, b) => a.split(path.sep).length - b.split(path.sep).length || a.localeCompare(b));
|
|
25
|
+
const minimal = [];
|
|
26
|
+
for (const root of uniqueRoots) {
|
|
27
|
+
if (!minimal.some((parent) => isSameOrDescendant(parent, root)))
|
|
28
|
+
minimal.push(root);
|
|
29
|
+
}
|
|
30
|
+
return minimal;
|
|
31
|
+
}
|
|
32
|
+
export function getWatchErrorCode(error) {
|
|
33
|
+
if (!error || typeof error !== 'object')
|
|
34
|
+
return null;
|
|
35
|
+
const code = error.code;
|
|
36
|
+
return typeof code === 'string' ? code.toUpperCase() : null;
|
|
37
|
+
}
|
|
38
|
+
export function isWatchResourceExhaustion(error) {
|
|
39
|
+
const code = getWatchErrorCode(error);
|
|
40
|
+
if (code === 'EMFILE' || code === 'ENFILE' || code === 'ENOSPC')
|
|
41
|
+
return true;
|
|
42
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
43
|
+
return /\b(?:EMFILE|ENFILE|ENOSPC)\b|too many open files|inotify/i.test(message);
|
|
44
|
+
}
|
|
45
|
+
export function countInotifyWatchDescriptors(fdInfo) {
|
|
46
|
+
return fdInfo.split('\n').filter((line) => line.startsWith('inotify wd:')).length;
|
|
47
|
+
}
|
|
48
|
+
/** Best-effort Linux-only snapshot. Call only on watcher failures, never on the hot path. */
|
|
49
|
+
export async function inspectLinuxInotifyUsage() {
|
|
50
|
+
if (process.platform !== 'linux' || typeof process.getuid !== 'function')
|
|
51
|
+
return null;
|
|
52
|
+
const uid = process.getuid();
|
|
53
|
+
let partial = false;
|
|
54
|
+
let maxUserInstances = null;
|
|
55
|
+
let maxUserWatches = null;
|
|
56
|
+
try {
|
|
57
|
+
const raw = await fs.promises.readFile('/proc/sys/fs/inotify/max_user_instances', 'utf8');
|
|
58
|
+
const parsed = Number.parseInt(raw.trim(), 10);
|
|
59
|
+
if (Number.isFinite(parsed))
|
|
60
|
+
maxUserInstances = parsed;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
partial = true;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const raw = await fs.promises.readFile('/proc/sys/fs/inotify/max_user_watches', 'utf8');
|
|
67
|
+
const parsed = Number.parseInt(raw.trim(), 10);
|
|
68
|
+
if (Number.isFinite(parsed))
|
|
69
|
+
maxUserWatches = parsed;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
partial = true;
|
|
73
|
+
}
|
|
74
|
+
let procEntries;
|
|
75
|
+
try {
|
|
76
|
+
procEntries = await fs.promises.readdir('/proc', { withFileTypes: true });
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return { maxUserInstances, maxUserWatches, observedUserInstances: 0, observedUserWatches: 0, topConsumers: [], partial: true };
|
|
80
|
+
}
|
|
81
|
+
const consumers = [];
|
|
82
|
+
for (const procEntry of procEntries) {
|
|
83
|
+
if (!procEntry.isDirectory() || !/^\d+$/.test(procEntry.name))
|
|
84
|
+
continue;
|
|
85
|
+
const pid = Number(procEntry.name);
|
|
86
|
+
const procPath = `/proc/${procEntry.name}`;
|
|
87
|
+
try {
|
|
88
|
+
if ((await fs.promises.stat(procPath)).uid !== uid)
|
|
89
|
+
continue;
|
|
90
|
+
const fdEntries = await fs.promises.readdir(`${procPath}/fd`);
|
|
91
|
+
let instances = 0;
|
|
92
|
+
let watches = 0;
|
|
93
|
+
for (const fd of fdEntries) {
|
|
94
|
+
try {
|
|
95
|
+
if ((await fs.promises.readlink(`${procPath}/fd/${fd}`)) !== 'anon_inode:inotify')
|
|
96
|
+
continue;
|
|
97
|
+
instances += 1;
|
|
98
|
+
try {
|
|
99
|
+
watches += countInotifyWatchDescriptors(await fs.promises.readFile(`${procPath}/fdinfo/${fd}`, 'utf8'));
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
partial = true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Processes and descriptors can disappear while /proc is sampled.
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (instances === 0)
|
|
110
|
+
continue;
|
|
111
|
+
let command = procEntry.name;
|
|
112
|
+
try {
|
|
113
|
+
const rawCommand = await fs.promises.readFile(`${procPath}/comm`, 'utf8');
|
|
114
|
+
command = rawCommand.trim() || command;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
partial = true;
|
|
118
|
+
}
|
|
119
|
+
consumers.push({ pid, command, instances, watches });
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
const code = getWatchErrorCode(error);
|
|
123
|
+
if (code !== 'ENOENT' && code !== 'ESRCH')
|
|
124
|
+
partial = true;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
consumers.sort((a, b) => b.watches - a.watches || b.instances - a.instances || a.pid - b.pid);
|
|
128
|
+
return {
|
|
129
|
+
maxUserInstances,
|
|
130
|
+
maxUserWatches,
|
|
131
|
+
observedUserInstances: consumers.reduce((total, item) => total + item.instances, 0),
|
|
132
|
+
observedUserWatches: consumers.reduce((total, item) => total + item.watches, 0),
|
|
133
|
+
topConsumers: consumers.slice(0, 8),
|
|
134
|
+
partial,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
@@ -60,6 +60,16 @@ export function normalizeNewSessionAgentSlug(value) {
|
|
|
60
60
|
const slug = value.trim().toLowerCase();
|
|
61
61
|
return /^[a-z][a-z0-9-]{0,39}$/.test(slug) ? slug : null;
|
|
62
62
|
}
|
|
63
|
+
export function normalizeFileSortModes(value) {
|
|
64
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
65
|
+
return {};
|
|
66
|
+
return Object.fromEntries(Object.entries(value)
|
|
67
|
+
.filter(([filePath, mode]) => (mode === 'modified'
|
|
68
|
+
&& filePath.length > 0
|
|
69
|
+
&& filePath.length <= 4096
|
|
70
|
+
&& (filePath.startsWith('/') || /^[a-zA-Z]:[\\/]/.test(filePath))))
|
|
71
|
+
.slice(-500));
|
|
72
|
+
}
|
|
63
73
|
function normalizeSettings(value) {
|
|
64
74
|
const raw = value && typeof value === 'object' && !Array.isArray(value)
|
|
65
75
|
? value
|
|
@@ -106,6 +116,7 @@ function normalizeSettings(value) {
|
|
|
106
116
|
: 12_000,
|
|
107
117
|
newSessionAgentSlug: normalizeNewSessionAgentSlug(raw.newSessionAgentSlug),
|
|
108
118
|
runningSessionButtonEnabled: raw.runningSessionButtonEnabled === true,
|
|
119
|
+
fileSortModes: normalizeFileSortModes(raw.fileSortModes),
|
|
109
120
|
updatedAt: typeof raw.updatedAt === 'number' ? raw.updatedAt : Date.now(),
|
|
110
121
|
};
|
|
111
122
|
}
|
|
@@ -408,3 +419,21 @@ export function setRunningSessionButtonEnabledSetting(enabled) {
|
|
|
408
419
|
settings.runningSessionButtonEnabled = enabled;
|
|
409
420
|
});
|
|
410
421
|
}
|
|
422
|
+
export function getFileSortModesSetting() {
|
|
423
|
+
return { ...loadSettings().fileSortModes };
|
|
424
|
+
}
|
|
425
|
+
export function setFileSortModesSetting(modes) {
|
|
426
|
+
return updateSettings((settings) => {
|
|
427
|
+
settings.fileSortModes = normalizeFileSortModes(modes);
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
export function setFileSortModeSetting(filePath, mode) {
|
|
431
|
+
return updateSettings((settings) => {
|
|
432
|
+
const next = { ...settings.fileSortModes };
|
|
433
|
+
if (mode === 'modified')
|
|
434
|
+
next[filePath] = mode;
|
|
435
|
+
else
|
|
436
|
+
delete next[filePath];
|
|
437
|
+
settings.fileSortModes = normalizeFileSortModes(next);
|
|
438
|
+
});
|
|
439
|
+
}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import { execFile } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
export const TERMDOCK_OUTER_TERM = 'xterm-256color';
|
|
5
|
+
export const TERMDOCK_TRUECOLOR_FEATURE_SLOT = 'terminal-features[100]';
|
|
6
|
+
export const TERMDOCK_TRUECOLOR_OVERRIDE_SLOT = 'terminal-overrides[100]';
|
|
1
7
|
export function buildInteractiveColorEnvironment(source) {
|
|
2
8
|
const env = { ...source, COLORTERM: 'truecolor' };
|
|
3
9
|
delete env.NO_COLOR;
|
|
@@ -24,3 +30,43 @@ export function buildTmuxColorEnvironmentCommands(sessionName, forceColor = fals
|
|
|
24
30
|
}
|
|
25
31
|
return commands;
|
|
26
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Pick the richest tmux TERM that applications on this host can resolve.
|
|
35
|
+
* Older/minimal Linux installations may ship tmux without the matching
|
|
36
|
+
* tmux-256color terminfo entry, in which case screen-256color is safer.
|
|
37
|
+
*/
|
|
38
|
+
export async function resolveTmuxInnerTerm() {
|
|
39
|
+
try {
|
|
40
|
+
await execFileAsync('infocmp', ['tmux-256color'], {
|
|
41
|
+
timeout: 2000,
|
|
42
|
+
maxBuffer: 64 * 1024,
|
|
43
|
+
});
|
|
44
|
+
return 'tmux-256color';
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return 'screen-256color';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Keep Termdock's known xterm.js capabilities independent of each host's
|
|
52
|
+
* ~/.tmux.conf. A fixed array slot makes repeated preparation idempotent.
|
|
53
|
+
* terminal-features is available in modern tmux; legacy releases use Tc.
|
|
54
|
+
*/
|
|
55
|
+
export async function ensureTmuxColorCapabilities(runTmux, sessionName, innerTerm = 'tmux-256color') {
|
|
56
|
+
try {
|
|
57
|
+
await runTmux([
|
|
58
|
+
'set-option', '-s', TERMDOCK_TRUECOLOR_FEATURE_SLOT,
|
|
59
|
+
`${TERMDOCK_OUTER_TERM}:RGB`,
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
await runTmux([
|
|
64
|
+
'set-option', '-s', TERMDOCK_TRUECOLOR_OVERRIDE_SLOT,
|
|
65
|
+
`${TERMDOCK_OUTER_TERM}:Tc`,
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
if (!sessionName)
|
|
69
|
+
return;
|
|
70
|
+
await runTmux(['set-option', '-t', sessionName, 'default-terminal', innerTerm]);
|
|
71
|
+
await runTmux(['set-environment', '-t', sessionName, 'TERM', innerTerm]);
|
|
72
|
+
}
|
package/package.json
CHANGED
package/runtime-manifest.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "termdock",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.124",
|
|
5
5
|
"runtimeProtocolVersion": 1,
|
|
6
6
|
"minimumDesktopVersion": "1.4.46",
|
|
7
7
|
"nodeMajor": 22,
|
|
8
8
|
"dependencyHash": "sha256-3I9X7zF4J4BUYOvxi3lIuWSKfDy6S6GD61w8Ay95Ypw=",
|
|
9
|
-
"serverBundleHash": "sha256-
|
|
9
|
+
"serverBundleHash": "sha256-AQWKjPHpOh2fs4wIcz59s8q5lmO5UVedCyrCLFFeW9w=",
|
|
10
10
|
"entrypoint": "dist/server/cli.js",
|
|
11
11
|
"clientEntrypoint": "dist/client/index.html"
|
|
12
12
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{U as a,C as n}from"./mermaid.core-CiIhxnwD.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as t,C as e}from"./chunk-V7JOEXUC-d6x1hwlS.js";import{b as i}from"./mermaid.core-CiIhxnwD.js";import"./chunk-5VM5RSS4-D1ewEFAt.js";import"./chunk-XXDRQBXY-DDzcV3AA.js";import"./chunk-VR4S4FIN-Cst36NFV.js";import"./chunk-32BRIVSS-CXmu1n-P.js";import"./purify.es-CC4Brkr_.js";import"./index-CoDf9qRl.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as t,C as e}from"./chunk-V7JOEXUC-d6x1hwlS.js";import{b as i}from"./mermaid.core-CiIhxnwD.js";import"./chunk-5VM5RSS4-D1ewEFAt.js";import"./chunk-XXDRQBXY-DDzcV3AA.js";import"./chunk-VR4S4FIN-Cst36NFV.js";import"./chunk-32BRIVSS-CXmu1n-P.js";import"./purify.es-CC4Brkr_.js";import"./index-CoDf9qRl.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};
|