@phenx-inc/ctlsurf 0.12.1 → 0.13.1
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/out/headless/index.mjs +25 -19
- package/out/headless/index.mjs.map +2 -2
- package/out/main/index.js +30 -18
- package/out/renderer/assets/{cssMode-D7r66wvO.js → cssMode-KhYyY-BM.js} +3 -3
- package/out/renderer/assets/{freemarker2-jSWJIjPG.js → freemarker2-BFsSgcWk.js} +1 -1
- package/out/renderer/assets/{handlebars-BnFyz5RH.js → handlebars-Be6_aBsm.js} +1 -1
- package/out/renderer/assets/{html-Bl5UFavp.js → html-G8mvsyfc.js} +1 -1
- package/out/renderer/assets/{htmlMode-D4VByBT6.js → htmlMode-Cfd5VCjw.js} +3 -3
- package/out/renderer/assets/{index-Cc_TqOCL.css → index-Bi_MjBqs.css} +116 -8
- package/out/renderer/assets/{index-DxhW1emk.js → index-MqgBcJzy.js} +259 -87
- package/out/renderer/assets/{javascript-CMN1OmwG.js → javascript-XyDWi6dC.js} +2 -2
- package/out/renderer/assets/{jsonMode-CJ5AYSPV.js → jsonMode-DZT5gBVW.js} +3 -3
- package/out/renderer/assets/{liquid-BGMIDTEm.js → liquid-BuajCNJ9.js} +1 -1
- package/out/renderer/assets/{lspLanguageFeatures-DGifVYB5.js → lspLanguageFeatures-BYkg2Yc-.js} +1 -1
- package/out/renderer/assets/{mdx-B2Z7R10Q.js → mdx-D0Qx2GMS.js} +1 -1
- package/out/renderer/assets/{python-LMDMSSdn.js → python-ChncNy6S.js} +1 -1
- package/out/renderer/assets/{razor-BZSrziPu.js → razor-C6MUtfaS.js} +1 -1
- package/out/renderer/assets/{tsMode-DF9m6_3n.js → tsMode-C2aMdzdU.js} +1 -1
- package/out/renderer/assets/{typescript-rZeCMf0a.js → typescript-CB71AtAT.js} +1 -1
- package/out/renderer/assets/{xml-fNSZ-7so.js → xml-tHS1Ec9w.js} +1 -1
- package/out/renderer/assets/{yaml-1wxIuvzh.js → yaml-CZcp5ueF.js} +1 -1
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
- package/src/main/index.ts +9 -0
- package/src/main/orchestrator.ts +1 -1
- package/src/main/ticketStore.ts +26 -20
- package/src/renderer/App.tsx +14 -2
- package/src/renderer/components/CtlsurfPanel.tsx +169 -35
- package/src/renderer/components/TerminalPanel.tsx +7 -21
- package/src/renderer/components/TicketPanel.tsx +80 -24
- package/src/renderer/styles.css +116 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-KhYyY-BM.js","./lspLanguageFeatures-BYkg2Yc-.js","./htmlMode-Cfd5VCjw.js","./jsonMode-DZT5gBVW.js","./javascript-XyDWi6dC.js","./typescript-CB71AtAT.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
function getDefaultExportFromCjs(x) {
|
|
3
3
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
|
|
4
4
|
}
|
|
@@ -18829,24 +18829,9 @@ function copySelectionAsEmailTable(terminal) {
|
|
|
18829
18829
|
})
|
|
18830
18830
|
);
|
|
18831
18831
|
}
|
|
18832
|
-
function openExternal(uri) {
|
|
18833
|
-
const win = window.open();
|
|
18834
|
-
if (win) {
|
|
18835
|
-
try {
|
|
18836
|
-
win.opener = null;
|
|
18837
|
-
} catch {
|
|
18838
|
-
}
|
|
18839
|
-
win.location.href = uri;
|
|
18840
|
-
}
|
|
18841
|
-
}
|
|
18842
18832
|
function handleTerminalLink(_event, uri) {
|
|
18843
|
-
|
|
18844
|
-
|
|
18845
|
-
window.dispatchEvent(new CustomEvent("ctlsurf-open-url", { detail: { url: embedUrl } }));
|
|
18846
|
-
} else {
|
|
18847
|
-
openExternal(uri);
|
|
18848
|
-
}
|
|
18849
|
-
}).catch(() => openExternal(uri));
|
|
18833
|
+
const openInPanel = (url) => window.dispatchEvent(new CustomEvent("ctlsurf-open-url", { detail: { url } }));
|
|
18834
|
+
window.worker.getEmbedUrl(uri).then((embedUrl) => openInPanel(embedUrl || uri)).catch(() => openInPanel(uri));
|
|
18850
18835
|
}
|
|
18851
18836
|
const _terminals = /* @__PURE__ */ new Map();
|
|
18852
18837
|
function isAtBottom(terminal) {
|
|
@@ -20322,49 +20307,170 @@ function SpeakControls({ remote = false }) {
|
|
|
20322
20307
|
error && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "speak-error", children: error })
|
|
20323
20308
|
] });
|
|
20324
20309
|
}
|
|
20310
|
+
function displayUrl(raw) {
|
|
20311
|
+
try {
|
|
20312
|
+
const u = new URL(raw);
|
|
20313
|
+
u.searchParams.delete("_code");
|
|
20314
|
+
u.searchParams.delete("embed");
|
|
20315
|
+
return u.toString();
|
|
20316
|
+
} catch {
|
|
20317
|
+
return raw;
|
|
20318
|
+
}
|
|
20319
|
+
}
|
|
20325
20320
|
function CtlsurfPanel({ navigate }) {
|
|
20326
20321
|
const webviewRef = reactExports.useRef(null);
|
|
20327
|
-
const [
|
|
20322
|
+
const [src, setSrc] = reactExports.useState(null);
|
|
20323
|
+
const [address, setAddress] = reactExports.useState("");
|
|
20324
|
+
const [loading, setLoading] = reactExports.useState(false);
|
|
20325
|
+
const [nav, setNav] = reactExports.useState({ back: false, forward: false });
|
|
20328
20326
|
const [key, setKey] = reactExports.useState(0);
|
|
20329
|
-
const
|
|
20327
|
+
const hasSrcRef = reactExports.useRef(false);
|
|
20328
|
+
const readyRef = reactExports.useRef(false);
|
|
20329
|
+
const pendingRef = reactExports.useRef(null);
|
|
20330
|
+
const resolve2 = reactExports.useCallback(async (raw) => {
|
|
20331
|
+
try {
|
|
20332
|
+
return await window.worker.getEmbedUrl(raw) || raw;
|
|
20333
|
+
} catch {
|
|
20334
|
+
return raw;
|
|
20335
|
+
}
|
|
20336
|
+
}, []);
|
|
20337
|
+
const load = reactExports.useCallback((url) => {
|
|
20338
|
+
if (!url) return;
|
|
20339
|
+
setAddress(displayUrl(url));
|
|
20340
|
+
if (!hasSrcRef.current) {
|
|
20341
|
+
hasSrcRef.current = true;
|
|
20342
|
+
setSrc(url);
|
|
20343
|
+
return;
|
|
20344
|
+
}
|
|
20345
|
+
const wv = webviewRef.current;
|
|
20346
|
+
if (wv && readyRef.current) wv.loadURL(url);
|
|
20347
|
+
else pendingRef.current = url;
|
|
20348
|
+
}, []);
|
|
20349
|
+
const loadProject = reactExports.useCallback(async () => {
|
|
20330
20350
|
try {
|
|
20331
20351
|
const info = await window.worker.getWebviewInfo();
|
|
20332
|
-
|
|
20352
|
+
load(info.pageUrl || info.frontendUrl);
|
|
20333
20353
|
} catch (err) {
|
|
20334
20354
|
console.error("[ctlsurf] Failed to get webview info:", err);
|
|
20335
|
-
|
|
20355
|
+
load("https://app.ctlsurf.com");
|
|
20336
20356
|
}
|
|
20337
|
-
};
|
|
20357
|
+
}, [load]);
|
|
20338
20358
|
reactExports.useEffect(() => {
|
|
20339
|
-
if (!navigate?.url)
|
|
20359
|
+
if (!navigate?.url) loadProject();
|
|
20340
20360
|
}, []);
|
|
20341
20361
|
reactExports.useEffect(() => {
|
|
20342
|
-
if (navigate?.url)
|
|
20343
|
-
setUrl(navigate.url);
|
|
20344
|
-
setKey((k2) => k2 + 1);
|
|
20345
|
-
}
|
|
20362
|
+
if (navigate?.url) resolve2(navigate.url).then(load);
|
|
20346
20363
|
}, [navigate?.n]);
|
|
20347
20364
|
reactExports.useEffect(() => {
|
|
20348
20365
|
const unsub = window.worker.onCwdChanged(() => {
|
|
20349
|
-
|
|
20366
|
+
hasSrcRef.current = false;
|
|
20367
|
+
readyRef.current = false;
|
|
20368
|
+
pendingRef.current = null;
|
|
20369
|
+
setSrc(null);
|
|
20350
20370
|
setKey((k2) => k2 + 1);
|
|
20351
|
-
|
|
20371
|
+
loadProject();
|
|
20352
20372
|
});
|
|
20353
20373
|
return unsub;
|
|
20354
|
-
}, []);
|
|
20355
|
-
|
|
20356
|
-
|
|
20357
|
-
|
|
20358
|
-
|
|
20359
|
-
|
|
20360
|
-
|
|
20361
|
-
|
|
20362
|
-
|
|
20363
|
-
|
|
20364
|
-
|
|
20365
|
-
|
|
20366
|
-
|
|
20367
|
-
|
|
20374
|
+
}, [loadProject]);
|
|
20375
|
+
reactExports.useEffect(() => {
|
|
20376
|
+
const wv = webviewRef.current;
|
|
20377
|
+
if (!wv) return;
|
|
20378
|
+
const syncNav = () => setNav({ back: wv.canGoBack?.() ?? false, forward: wv.canGoForward?.() ?? false });
|
|
20379
|
+
const onReady = () => {
|
|
20380
|
+
readyRef.current = true;
|
|
20381
|
+
if (pendingRef.current) {
|
|
20382
|
+
wv.loadURL(pendingRef.current);
|
|
20383
|
+
pendingRef.current = null;
|
|
20384
|
+
}
|
|
20385
|
+
syncNav();
|
|
20386
|
+
};
|
|
20387
|
+
const onNavigate = (e) => {
|
|
20388
|
+
const url = e.url;
|
|
20389
|
+
if (url) setAddress(displayUrl(url));
|
|
20390
|
+
syncNav();
|
|
20391
|
+
};
|
|
20392
|
+
const onStart = () => setLoading(true);
|
|
20393
|
+
const onStop = () => {
|
|
20394
|
+
setLoading(false);
|
|
20395
|
+
syncNav();
|
|
20396
|
+
};
|
|
20397
|
+
wv.addEventListener("dom-ready", onReady);
|
|
20398
|
+
wv.addEventListener("did-navigate", onNavigate);
|
|
20399
|
+
wv.addEventListener("did-navigate-in-page", onNavigate);
|
|
20400
|
+
wv.addEventListener("did-start-loading", onStart);
|
|
20401
|
+
wv.addEventListener("did-stop-loading", onStop);
|
|
20402
|
+
return () => {
|
|
20403
|
+
wv.removeEventListener("dom-ready", onReady);
|
|
20404
|
+
wv.removeEventListener("did-navigate", onNavigate);
|
|
20405
|
+
wv.removeEventListener("did-navigate-in-page", onNavigate);
|
|
20406
|
+
wv.removeEventListener("did-start-loading", onStart);
|
|
20407
|
+
wv.removeEventListener("did-stop-loading", onStop);
|
|
20408
|
+
};
|
|
20409
|
+
}, [src, key]);
|
|
20410
|
+
const onSubmit = (e) => {
|
|
20411
|
+
e.preventDefault();
|
|
20412
|
+
let target = address.trim();
|
|
20413
|
+
if (!target) return;
|
|
20414
|
+
if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(target)) target = "https://" + target;
|
|
20415
|
+
resolve2(target).then(load);
|
|
20416
|
+
};
|
|
20417
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ctlsurf-panel", children: [
|
|
20418
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ctlsurf-addressbar", children: [
|
|
20419
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
20420
|
+
"button",
|
|
20421
|
+
{
|
|
20422
|
+
type: "button",
|
|
20423
|
+
className: "ctlsurf-nav-btn",
|
|
20424
|
+
title: "Back",
|
|
20425
|
+
disabled: !nav.back,
|
|
20426
|
+
onClick: () => webviewRef.current?.goBack?.(),
|
|
20427
|
+
children: "‹"
|
|
20428
|
+
}
|
|
20429
|
+
),
|
|
20430
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
20431
|
+
"button",
|
|
20432
|
+
{
|
|
20433
|
+
type: "button",
|
|
20434
|
+
className: "ctlsurf-nav-btn",
|
|
20435
|
+
title: "Forward",
|
|
20436
|
+
disabled: !nav.forward,
|
|
20437
|
+
onClick: () => webviewRef.current?.goForward?.(),
|
|
20438
|
+
children: "›"
|
|
20439
|
+
}
|
|
20440
|
+
),
|
|
20441
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
20442
|
+
"button",
|
|
20443
|
+
{
|
|
20444
|
+
type: "button",
|
|
20445
|
+
className: "ctlsurf-nav-btn",
|
|
20446
|
+
title: loading ? "Stop" : "Reload",
|
|
20447
|
+
onClick: () => loading ? webviewRef.current?.stop?.() : webviewRef.current?.reload?.(),
|
|
20448
|
+
children: loading ? "×" : "⟳"
|
|
20449
|
+
}
|
|
20450
|
+
),
|
|
20451
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("form", { className: "ctlsurf-address-form", onSubmit, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
20452
|
+
"input",
|
|
20453
|
+
{
|
|
20454
|
+
className: "ctlsurf-address-input",
|
|
20455
|
+
value: address,
|
|
20456
|
+
spellCheck: false,
|
|
20457
|
+
placeholder: "Enter a URL",
|
|
20458
|
+
onChange: (e) => setAddress(e.target.value),
|
|
20459
|
+
onFocus: (e) => e.currentTarget.select()
|
|
20460
|
+
}
|
|
20461
|
+
) })
|
|
20462
|
+
] }),
|
|
20463
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ctlsurf-webview-host", children: src ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
20464
|
+
"webview",
|
|
20465
|
+
{
|
|
20466
|
+
ref: webviewRef,
|
|
20467
|
+
src,
|
|
20468
|
+
style: { width: "100%", height: "100%" },
|
|
20469
|
+
allowpopups: "true"
|
|
20470
|
+
},
|
|
20471
|
+
key
|
|
20472
|
+
) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ctlsurf-webview-loading", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: { color: "#565f89", fontSize: "13px" }, children: "Loading ctlsurf..." }) }) })
|
|
20473
|
+
] });
|
|
20368
20474
|
}
|
|
20369
20475
|
function _arrayLikeToArray(r, a) {
|
|
20370
20476
|
(null == a || a > r.length) && (a = r.length);
|
|
@@ -207916,7 +208022,7 @@ const lessDefaults = new LanguageServiceDefaultsImpl$3(
|
|
|
207916
208022
|
modeConfigurationDefault$2
|
|
207917
208023
|
);
|
|
207918
208024
|
function getMode$3() {
|
|
207919
|
-
return __vitePreload(() => import("./cssMode-
|
|
208025
|
+
return __vitePreload(() => import("./cssMode-KhYyY-BM.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
|
|
207920
208026
|
}
|
|
207921
208027
|
languages.onLanguage("less", () => {
|
|
207922
208028
|
getMode$3().then((mode2) => mode2.setupMode(lessDefaults));
|
|
@@ -208021,7 +208127,7 @@ const razorLanguageService = registerHTMLLanguageService(
|
|
|
208021
208127
|
);
|
|
208022
208128
|
const razorDefaults = razorLanguageService.defaults;
|
|
208023
208129
|
function getMode$2() {
|
|
208024
|
-
return __vitePreload(() => import("./htmlMode-
|
|
208130
|
+
return __vitePreload(() => import("./htmlMode-Cfd5VCjw.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
|
|
208025
208131
|
}
|
|
208026
208132
|
function registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {
|
|
208027
208133
|
const defaults = new LanguageServiceDefaultsImpl$2(languageId, options, modeConfiguration);
|
|
@@ -208105,7 +208211,7 @@ const jsonDefaults = new LanguageServiceDefaultsImpl$1(
|
|
|
208105
208211
|
);
|
|
208106
208212
|
const getWorker$1 = () => getMode$1().then((mode2) => mode2.getWorker());
|
|
208107
208213
|
function getMode$1() {
|
|
208108
|
-
return __vitePreload(() => import("./jsonMode-
|
|
208214
|
+
return __vitePreload(() => import("./jsonMode-DZT5gBVW.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
|
|
208109
208215
|
}
|
|
208110
208216
|
languages.register({
|
|
208111
208217
|
id: "json",
|
|
@@ -208351,7 +208457,7 @@ const getJavaScriptWorker = () => {
|
|
|
208351
208457
|
return getMode().then((mode) => mode.getJavaScriptWorker());
|
|
208352
208458
|
};
|
|
208353
208459
|
function getMode() {
|
|
208354
|
-
return __vitePreload(() => import("./tsMode-
|
|
208460
|
+
return __vitePreload(() => import("./tsMode-C2aMdzdU.js"), true ? [] : void 0, import.meta.url);
|
|
208355
208461
|
}
|
|
208356
208462
|
languages.onLanguage("typescript", () => {
|
|
208357
208463
|
return getMode().then((mode) => mode.setupTypeScript(typescriptDefaults));
|
|
@@ -208546,49 +208652,49 @@ registerLanguage({
|
|
|
208546
208652
|
extensions: [".ftl", ".ftlh", ".ftlx"],
|
|
208547
208653
|
aliases: ["FreeMarker2", "Apache FreeMarker2"],
|
|
208548
208654
|
loader: () => {
|
|
208549
|
-
return __vitePreload(() => import("./freemarker2-
|
|
208655
|
+
return __vitePreload(() => import("./freemarker2-BFsSgcWk.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
208550
208656
|
}
|
|
208551
208657
|
});
|
|
208552
208658
|
registerLanguage({
|
|
208553
208659
|
id: "freemarker2.tag-angle.interpolation-dollar",
|
|
208554
208660
|
aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
|
|
208555
208661
|
loader: () => {
|
|
208556
|
-
return __vitePreload(() => import("./freemarker2-
|
|
208662
|
+
return __vitePreload(() => import("./freemarker2-BFsSgcWk.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationDollar);
|
|
208557
208663
|
}
|
|
208558
208664
|
});
|
|
208559
208665
|
registerLanguage({
|
|
208560
208666
|
id: "freemarker2.tag-bracket.interpolation-dollar",
|
|
208561
208667
|
aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
|
|
208562
208668
|
loader: () => {
|
|
208563
|
-
return __vitePreload(() => import("./freemarker2-
|
|
208669
|
+
return __vitePreload(() => import("./freemarker2-BFsSgcWk.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationDollar);
|
|
208564
208670
|
}
|
|
208565
208671
|
});
|
|
208566
208672
|
registerLanguage({
|
|
208567
208673
|
id: "freemarker2.tag-angle.interpolation-bracket",
|
|
208568
208674
|
aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
|
|
208569
208675
|
loader: () => {
|
|
208570
|
-
return __vitePreload(() => import("./freemarker2-
|
|
208676
|
+
return __vitePreload(() => import("./freemarker2-BFsSgcWk.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationBracket);
|
|
208571
208677
|
}
|
|
208572
208678
|
});
|
|
208573
208679
|
registerLanguage({
|
|
208574
208680
|
id: "freemarker2.tag-bracket.interpolation-bracket",
|
|
208575
208681
|
aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
|
|
208576
208682
|
loader: () => {
|
|
208577
|
-
return __vitePreload(() => import("./freemarker2-
|
|
208683
|
+
return __vitePreload(() => import("./freemarker2-BFsSgcWk.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationBracket);
|
|
208578
208684
|
}
|
|
208579
208685
|
});
|
|
208580
208686
|
registerLanguage({
|
|
208581
208687
|
id: "freemarker2.tag-auto.interpolation-dollar",
|
|
208582
208688
|
aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
|
|
208583
208689
|
loader: () => {
|
|
208584
|
-
return __vitePreload(() => import("./freemarker2-
|
|
208690
|
+
return __vitePreload(() => import("./freemarker2-BFsSgcWk.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
|
|
208585
208691
|
}
|
|
208586
208692
|
});
|
|
208587
208693
|
registerLanguage({
|
|
208588
208694
|
id: "freemarker2.tag-auto.interpolation-bracket",
|
|
208589
208695
|
aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
|
|
208590
208696
|
loader: () => {
|
|
208591
|
-
return __vitePreload(() => import("./freemarker2-
|
|
208697
|
+
return __vitePreload(() => import("./freemarker2-BFsSgcWk.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationBracket);
|
|
208592
208698
|
}
|
|
208593
208699
|
});
|
|
208594
208700
|
registerLanguage({
|
|
@@ -208609,7 +208715,7 @@ registerLanguage({
|
|
|
208609
208715
|
extensions: [".handlebars", ".hbs"],
|
|
208610
208716
|
aliases: ["Handlebars", "handlebars", "hbs"],
|
|
208611
208717
|
mimetypes: ["text/x-handlebars-template"],
|
|
208612
|
-
loader: () => __vitePreload(() => import("./handlebars-
|
|
208718
|
+
loader: () => __vitePreload(() => import("./handlebars-Be6_aBsm.js"), true ? [] : void 0, import.meta.url)
|
|
208613
208719
|
});
|
|
208614
208720
|
registerLanguage({
|
|
208615
208721
|
id: "hcl",
|
|
@@ -208622,7 +208728,7 @@ registerLanguage({
|
|
|
208622
208728
|
extensions: [".html", ".htm", ".shtml", ".xhtml", ".mdoc", ".jsp", ".asp", ".aspx", ".jshtm"],
|
|
208623
208729
|
aliases: ["HTML", "htm", "html", "xhtml"],
|
|
208624
208730
|
mimetypes: ["text/html", "text/x-jshtm", "text/template", "text/ng-template"],
|
|
208625
|
-
loader: () => __vitePreload(() => import("./html-
|
|
208731
|
+
loader: () => __vitePreload(() => import("./html-G8mvsyfc.js"), true ? [] : void 0, import.meta.url)
|
|
208626
208732
|
});
|
|
208627
208733
|
registerLanguage({
|
|
208628
208734
|
id: "ini",
|
|
@@ -208645,7 +208751,7 @@ registerLanguage({
|
|
|
208645
208751
|
filenames: ["jakefile"],
|
|
208646
208752
|
aliases: ["JavaScript", "javascript", "js"],
|
|
208647
208753
|
mimetypes: ["text/javascript"],
|
|
208648
|
-
loader: () => __vitePreload(() => import("./javascript-
|
|
208754
|
+
loader: () => __vitePreload(() => import("./javascript-XyDWi6dC.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
|
|
208649
208755
|
});
|
|
208650
208756
|
registerLanguage({
|
|
208651
208757
|
id: "julia",
|
|
@@ -208684,7 +208790,7 @@ registerLanguage({
|
|
|
208684
208790
|
extensions: [".liquid", ".html.liquid"],
|
|
208685
208791
|
aliases: ["Liquid", "liquid"],
|
|
208686
208792
|
mimetypes: ["application/liquid"],
|
|
208687
|
-
loader: () => __vitePreload(() => import("./liquid-
|
|
208793
|
+
loader: () => __vitePreload(() => import("./liquid-BuajCNJ9.js"), true ? [] : void 0, import.meta.url)
|
|
208688
208794
|
});
|
|
208689
208795
|
registerLanguage({
|
|
208690
208796
|
id: "m3",
|
|
@@ -208702,7 +208808,7 @@ registerLanguage({
|
|
|
208702
208808
|
id: "mdx",
|
|
208703
208809
|
extensions: [".mdx"],
|
|
208704
208810
|
aliases: ["MDX", "mdx"],
|
|
208705
|
-
loader: () => __vitePreload(() => import("./mdx-
|
|
208811
|
+
loader: () => __vitePreload(() => import("./mdx-D0Qx2GMS.js"), true ? [] : void 0, import.meta.url)
|
|
208706
208812
|
});
|
|
208707
208813
|
registerLanguage({
|
|
208708
208814
|
id: "mips",
|
|
@@ -208801,7 +208907,7 @@ registerLanguage({
|
|
|
208801
208907
|
extensions: [".py", ".rpy", ".pyw", ".cpy", ".gyp", ".gypi"],
|
|
208802
208908
|
aliases: ["Python", "py"],
|
|
208803
208909
|
firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
|
|
208804
|
-
loader: () => __vitePreload(() => import("./python-
|
|
208910
|
+
loader: () => __vitePreload(() => import("./python-ChncNy6S.js"), true ? [] : void 0, import.meta.url)
|
|
208805
208911
|
});
|
|
208806
208912
|
registerLanguage({
|
|
208807
208913
|
id: "qsharp",
|
|
@@ -208820,7 +208926,7 @@ registerLanguage({
|
|
|
208820
208926
|
extensions: [".cshtml"],
|
|
208821
208927
|
aliases: ["Razor", "razor"],
|
|
208822
208928
|
mimetypes: ["text/x-cshtml"],
|
|
208823
|
-
loader: () => __vitePreload(() => import("./razor-
|
|
208929
|
+
loader: () => __vitePreload(() => import("./razor-C6MUtfaS.js"), true ? [] : void 0, import.meta.url)
|
|
208824
208930
|
});
|
|
208825
208931
|
registerLanguage({
|
|
208826
208932
|
id: "redis",
|
|
@@ -208953,7 +209059,7 @@ registerLanguage({
|
|
|
208953
209059
|
aliases: ["TypeScript", "ts", "typescript"],
|
|
208954
209060
|
mimetypes: ["text/typescript"],
|
|
208955
209061
|
loader: () => {
|
|
208956
|
-
return __vitePreload(() => import("./typescript-
|
|
209062
|
+
return __vitePreload(() => import("./typescript-CB71AtAT.js"), true ? [] : void 0, import.meta.url);
|
|
208957
209063
|
}
|
|
208958
209064
|
});
|
|
208959
209065
|
registerLanguage({
|
|
@@ -208998,14 +209104,14 @@ registerLanguage({
|
|
|
208998
209104
|
firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
|
|
208999
209105
|
aliases: ["XML", "xml"],
|
|
209000
209106
|
mimetypes: ["text/xml", "application/xml", "application/xaml+xml", "application/xml-dtd"],
|
|
209001
|
-
loader: () => __vitePreload(() => import("./xml-
|
|
209107
|
+
loader: () => __vitePreload(() => import("./xml-tHS1Ec9w.js"), true ? [] : void 0, import.meta.url)
|
|
209002
209108
|
});
|
|
209003
209109
|
registerLanguage({
|
|
209004
209110
|
id: "yaml",
|
|
209005
209111
|
extensions: [".yaml", ".yml"],
|
|
209006
209112
|
aliases: ["YAML", "yaml", "YML", "yml"],
|
|
209007
209113
|
mimetypes: ["application/x-yaml", "text/x-yaml"],
|
|
209008
|
-
loader: () => __vitePreload(() => import("./yaml-
|
|
209114
|
+
loader: () => __vitePreload(() => import("./yaml-CZcp5ueF.js"), true ? [] : void 0, import.meta.url)
|
|
209009
209115
|
});
|
|
209010
209116
|
var __defProp = Object.defineProperty;
|
|
209011
209117
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
@@ -213518,6 +213624,47 @@ function TagIcon({ size: size2 = 16 }) {
|
|
|
213518
213624
|
}
|
|
213519
213625
|
);
|
|
213520
213626
|
}
|
|
213627
|
+
function SendIcon({ size: size2 = 15 }) {
|
|
213628
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
213629
|
+
"svg",
|
|
213630
|
+
{
|
|
213631
|
+
viewBox: "0 0 24 24",
|
|
213632
|
+
width: size2,
|
|
213633
|
+
height: size2,
|
|
213634
|
+
fill: "none",
|
|
213635
|
+
stroke: "currentColor",
|
|
213636
|
+
strokeWidth: "2",
|
|
213637
|
+
strokeLinecap: "round",
|
|
213638
|
+
strokeLinejoin: "round",
|
|
213639
|
+
"aria-hidden": "true",
|
|
213640
|
+
children: [
|
|
213641
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("line", { x1: "22", y1: "2", x2: "11", y2: "13" }),
|
|
213642
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })
|
|
213643
|
+
]
|
|
213644
|
+
}
|
|
213645
|
+
);
|
|
213646
|
+
}
|
|
213647
|
+
function ticketPrompt(t, refs) {
|
|
213648
|
+
const lines = [
|
|
213649
|
+
"Please work on this ticket:",
|
|
213650
|
+
`Title: ${t.title || "Untitled"}`,
|
|
213651
|
+
`Priority: ${t.priority}`
|
|
213652
|
+
];
|
|
213653
|
+
const desc = t.description?.trim();
|
|
213654
|
+
if (desc) lines.push("", desc);
|
|
213655
|
+
lines.push(
|
|
213656
|
+
"",
|
|
213657
|
+
"ctlsurf references (use the ctlsurf MCP tools to read details or update status):",
|
|
213658
|
+
`- Ticket row ID: ${t.id}`
|
|
213659
|
+
);
|
|
213660
|
+
if (refs) {
|
|
213661
|
+
lines.push(
|
|
213662
|
+
`- Tickets datastore block ID: ${refs.blockId}`,
|
|
213663
|
+
`- Agent Datastore page ID: ${refs.pageId}`
|
|
213664
|
+
);
|
|
213665
|
+
}
|
|
213666
|
+
return lines.join("\n");
|
|
213667
|
+
}
|
|
213521
213668
|
function Segmented({ options, value, onChange }) {
|
|
213522
213669
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ticket-segmented", children: options.map((o) => {
|
|
213523
213670
|
const active = o.value === value;
|
|
@@ -213537,33 +213684,47 @@ function Segmented({ options, value, onChange }) {
|
|
|
213537
213684
|
);
|
|
213538
213685
|
}) });
|
|
213539
213686
|
}
|
|
213540
|
-
function TicketCard({ ticket, onClick }) {
|
|
213541
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("
|
|
213542
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
213543
|
-
|
|
213544
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
213545
|
-
|
|
213546
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("
|
|
213547
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
213548
|
-
|
|
213549
|
-
|
|
213550
|
-
|
|
213551
|
-
|
|
213687
|
+
function TicketCard({ ticket, onClick, onSend }) {
|
|
213688
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ticket-card", children: [
|
|
213689
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("button", { className: "ticket-card-open", onClick, title: "Edit ticket", children: [
|
|
213690
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ticket-card-bar", style: { background: colorOf(STATUS_OPTIONS, ticket.status) } }),
|
|
213691
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ticket-card-main", children: [
|
|
213692
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ticket-card-title", children: ticket.title || "Untitled" }),
|
|
213693
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ticket-card-meta", children: [
|
|
213694
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ticket-card-status", style: { color: colorOf(STATUS_OPTIONS, ticket.status) }, children: [
|
|
213695
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ticket-seg-dot", style: { background: colorOf(STATUS_OPTIONS, ticket.status) } }),
|
|
213696
|
+
ticket.status
|
|
213697
|
+
] }),
|
|
213698
|
+
ticket.created && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ticket-card-date", children: formatDate(ticket.created) })
|
|
213699
|
+
] })
|
|
213700
|
+
] }),
|
|
213701
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
213702
|
+
"span",
|
|
213703
|
+
{
|
|
213704
|
+
className: "ticket-card-pri",
|
|
213705
|
+
style: { color: colorOf(PRIORITY_OPTIONS, ticket.priority), borderColor: `${colorOf(PRIORITY_OPTIONS, ticket.priority)}66` },
|
|
213706
|
+
children: ticket.priority
|
|
213707
|
+
}
|
|
213708
|
+
)
|
|
213552
213709
|
] }),
|
|
213553
213710
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
213554
|
-
"
|
|
213711
|
+
"button",
|
|
213555
213712
|
{
|
|
213556
|
-
|
|
213557
|
-
|
|
213558
|
-
|
|
213713
|
+
type: "button",
|
|
213714
|
+
className: "ticket-card-send",
|
|
213715
|
+
onClick: onSend,
|
|
213716
|
+
title: "Send to coding terminal",
|
|
213717
|
+
"aria-label": "Send ticket to coding terminal",
|
|
213718
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(SendIcon, {})
|
|
213559
213719
|
}
|
|
213560
213720
|
)
|
|
213561
213721
|
] });
|
|
213562
213722
|
}
|
|
213563
|
-
function TicketPane() {
|
|
213723
|
+
function TicketPane({ onSendToTerminal }) {
|
|
213564
213724
|
const [project, setProject] = reactExports.useState(null);
|
|
213565
213725
|
const [view, setView] = reactExports.useState("list");
|
|
213566
213726
|
const [tickets, setTickets] = reactExports.useState([]);
|
|
213727
|
+
const [refs, setRefs] = reactExports.useState(null);
|
|
213567
213728
|
const [listLoading, setListLoading] = reactExports.useState(false);
|
|
213568
213729
|
const [listError, setListError] = reactExports.useState(null);
|
|
213569
213730
|
const [showDone, setShowDone] = reactExports.useState(false);
|
|
@@ -213578,13 +213739,17 @@ function TicketPane() {
|
|
|
213578
213739
|
setListError(null);
|
|
213579
213740
|
try {
|
|
213580
213741
|
const r = await window.worker.listTickets();
|
|
213581
|
-
if (r?.ok)
|
|
213582
|
-
|
|
213742
|
+
if (r?.ok) {
|
|
213743
|
+
setTickets(r.tickets || []);
|
|
213744
|
+
setRefs(r.blockId && r.pageId ? { blockId: r.blockId, pageId: r.pageId } : null);
|
|
213745
|
+
} else {
|
|
213583
213746
|
setTickets([]);
|
|
213747
|
+
setRefs(null);
|
|
213584
213748
|
setListError(r?.error || "Failed to load tickets");
|
|
213585
213749
|
}
|
|
213586
213750
|
} catch (err) {
|
|
213587
213751
|
setTickets([]);
|
|
213752
|
+
setRefs(null);
|
|
213588
213753
|
setListError(err?.message || "Failed to load tickets");
|
|
213589
213754
|
} finally {
|
|
213590
213755
|
setListLoading(false);
|
|
@@ -213684,7 +213849,7 @@ function TicketPane() {
|
|
|
213684
213849
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ticket-empty-title", children: "No tickets yet" }),
|
|
213685
213850
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ticket-empty-hint", children: "Log the first one for this project." })
|
|
213686
213851
|
] }),
|
|
213687
|
-
!listLoading && activeTickets.map((t) => /* @__PURE__ */ jsxRuntimeExports.jsx(TicketCard, { ticket: t, onClick: () => openEditForm(t) }, t.id)),
|
|
213852
|
+
!listLoading && activeTickets.map((t) => /* @__PURE__ */ jsxRuntimeExports.jsx(TicketCard, { ticket: t, onClick: () => openEditForm(t), onSend: () => onSendToTerminal(ticketPrompt(t, refs)) }, t.id)),
|
|
213688
213853
|
!listLoading && activeTickets.length === 0 && doneTickets.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ticket-list-msg", children: "Nothing open — all caught up." }),
|
|
213689
213854
|
!listLoading && doneTickets.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
213690
213855
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -213701,7 +213866,7 @@ function TicketPane() {
|
|
|
213701
213866
|
]
|
|
213702
213867
|
}
|
|
213703
213868
|
),
|
|
213704
|
-
showDone && doneTickets.map((t) => /* @__PURE__ */ jsxRuntimeExports.jsx(TicketCard, { ticket: t, onClick: () => openEditForm(t) }, t.id))
|
|
213869
|
+
showDone && doneTickets.map((t) => /* @__PURE__ */ jsxRuntimeExports.jsx(TicketCard, { ticket: t, onClick: () => openEditForm(t), onSend: () => onSendToTerminal(ticketPrompt(t, refs)) }, t.id))
|
|
213705
213870
|
] })
|
|
213706
213871
|
] }),
|
|
213707
213872
|
tickets.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ticket-drawer-footer", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ticket-drawer-hint", children: doneTickets.length > 0 ? `${activeTickets.length} open · ${doneTickets.length} done` : `${tickets.length} ticket${tickets.length === 1 ? "" : "s"}` }) })
|
|
@@ -213897,6 +214062,13 @@ function App() {
|
|
|
213897
214062
|
focusTerminal(activeTabId);
|
|
213898
214063
|
setTimeout(() => window.worker.writePty(activeTabId, "\r"), 80);
|
|
213899
214064
|
}, [activeTabId]);
|
|
214065
|
+
const handleSendToTerminal = reactExports.useCallback((text2) => {
|
|
214066
|
+
const trimmed = text2.trim();
|
|
214067
|
+
if (!trimmed) return;
|
|
214068
|
+
window.worker.writePty(activeTabId, trimmed);
|
|
214069
|
+
focusTerminal(activeTabId);
|
|
214070
|
+
setTimeout(() => window.worker.writePty(activeTabId, "\r"), 120);
|
|
214071
|
+
}, [activeTabId]);
|
|
213900
214072
|
const cwdRef = reactExports.useRef(null);
|
|
213901
214073
|
const handleSpawn = reactExports.useCallback(async (tabId, agent) => {
|
|
213902
214074
|
setTabs((prev) => prev.map((t) => t.id === tabId ? { ...t, agentStatus: "active" } : t));
|
|
@@ -214109,7 +214281,7 @@ function App() {
|
|
|
214109
214281
|
] })
|
|
214110
214282
|
},
|
|
214111
214283
|
{ id: "ctlsurf", label: "ctlsurf", content: /* @__PURE__ */ jsxRuntimeExports.jsx(CtlsurfPanel, { navigate: ctlsurfNav }) },
|
|
214112
|
-
{ id: "tickets", label: "Tickets", content: /* @__PURE__ */ jsxRuntimeExports.jsx(TicketPane, {}) }
|
|
214284
|
+
{ id: "tickets", label: "Tickets", content: /* @__PURE__ */ jsxRuntimeExports.jsx(TicketPane, { onSendToTerminal: handleSendToTerminal }) }
|
|
214113
214285
|
];
|
|
214114
214286
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "app", children: [
|
|
214115
214287
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "titlebar", children: [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { conf as conf$1, language as language$1 } from "./typescript-
|
|
2
|
-
import "./index-
|
|
1
|
+
import { conf as conf$1, language as language$1 } from "./typescript-CB71AtAT.js";
|
|
2
|
+
import "./index-MqgBcJzy.js";
|
|
3
3
|
const conf = conf$1;
|
|
4
4
|
const language = {
|
|
5
5
|
// Set defaultToken to invalid to see what you do not tokenize yet
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { c as createWebWorker, l as languages, e as editor } from "./index-
|
|
2
|
-
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-
|
|
3
|
-
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-
|
|
1
|
+
import { c as createWebWorker, l as languages, e as editor } from "./index-MqgBcJzy.js";
|
|
2
|
+
import { f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter, H as HoverAdapter, b as DocumentSymbolAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, S as SelectionRangeAdapter, e as DiagnosticsAdapter } from "./lspLanguageFeatures-BYkg2Yc-.js";
|
|
3
|
+
import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-BYkg2Yc-.js";
|
|
4
4
|
const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
|
|
5
5
|
class WorkerManager {
|
|
6
6
|
constructor(defaults) {
|
package/out/renderer/assets/{lspLanguageFeatures-DGifVYB5.js → lspLanguageFeatures-BYkg2Yc-.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-
|
|
1
|
+
import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-MqgBcJzy.js";
|
|
2
2
|
var DocumentUri;
|
|
3
3
|
(function(DocumentUri2) {
|
|
4
4
|
function is(value) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createWebWorker, e as editor, U as Uri, a as MarkerTag, M as MarkerSeverity, l as languages, t as typescriptDefaults, R as Range } from "./index-
|
|
1
|
+
import { c as createWebWorker, e as editor, U as Uri, a as MarkerTag, M as MarkerSeverity, l as languages, t as typescriptDefaults, R as Range } from "./index-MqgBcJzy.js";
|
|
2
2
|
class WorkerManager {
|
|
3
3
|
constructor(_modeId, _defaults) {
|
|
4
4
|
this._modeId = _modeId;
|