@phenx-inc/ctlsurf 0.1.18 → 0.1.21

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 (24) hide show
  1. package/out/headless/index.mjs +21 -62
  2. package/out/headless/index.mjs.map +2 -2
  3. package/out/renderer/assets/{cssMode-Cxe23-tB.js → cssMode-C6bY9C4O.js} +3 -3
  4. package/out/renderer/assets/{freemarker2-Be0nj7Oa.js → freemarker2-CkAJiX1K.js} +1 -1
  5. package/out/renderer/assets/{handlebars-C0It7_Nu.js → handlebars-DnLXVUXp.js} +1 -1
  6. package/out/renderer/assets/{html-BW6LB-7J.js → html-Ds5-qvDh.js} +1 -1
  7. package/out/renderer/assets/{htmlMode-D_V-1VlE.js → htmlMode-DYFYy4MK.js} +3 -3
  8. package/out/renderer/assets/{index-D568SpEt.js → index-DwSsD_Xm.js} +41 -24
  9. package/out/renderer/assets/{javascript-D_LoeNc7.js → javascript-CiHhG2a9.js} +2 -2
  10. package/out/renderer/assets/{jsonMode-K3WSinSE.js → jsonMode-DdDRlbXP.js} +3 -3
  11. package/out/renderer/assets/{liquid-BqfOd6m8.js → liquid-BP5mb-uD.js} +1 -1
  12. package/out/renderer/assets/{lspLanguageFeatures-Bjf28WU6.js → lspLanguageFeatures-Dljhj5Gh.js} +1 -1
  13. package/out/renderer/assets/{mdx-BoESjI38.js → mdx-D4u3N7dt.js} +1 -1
  14. package/out/renderer/assets/{python-DlafOOgB.js → python-BQDHXVwp.js} +1 -1
  15. package/out/renderer/assets/{razor-CB6E9DBD.js → razor-BfXW9cDc.js} +1 -1
  16. package/out/renderer/assets/{tsMode-DYu1z_nn.js → tsMode-BGTjG8Ow.js} +1 -1
  17. package/out/renderer/assets/{typescript-CDjkh0d5.js → typescript-422MU_YO.js} +1 -1
  18. package/out/renderer/assets/{xml-C-XlilKZ.js → xml-B6EKhHiy.js} +1 -1
  19. package/out/renderer/assets/{yaml-BTrtxLEo.js → yaml-LkO_eGYb.js} +1 -1
  20. package/out/renderer/index.html +1 -1
  21. package/package.json +1 -1
  22. package/src/main/headless.ts +12 -0
  23. package/src/main/tui.ts +31 -107
  24. package/src/renderer/components/TerminalPanel.tsx +27 -4
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "area",
4
4
  "base",
@@ -1,6 +1,6 @@
1
- import { c as createWebWorker, l as languages } from "./index-D568SpEt.js";
2
- import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-Bjf28WU6.js";
3
- import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-Bjf28WU6.js";
1
+ import { c as createWebWorker, l as languages } from "./index-DwSsD_Xm.js";
2
+ import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-Dljhj5Gh.js";
3
+ import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-Dljhj5Gh.js";
4
4
  const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
5
5
  class WorkerManager {
6
6
  constructor(defaults) {
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-Cxe23-tB.js","./lspLanguageFeatures-Bjf28WU6.js","./htmlMode-D_V-1VlE.js","./jsonMode-K3WSinSE.js","./javascript-D_LoeNc7.js","./typescript-CDjkh0d5.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cssMode-C6bY9C4O.js","./lspLanguageFeatures-Dljhj5Gh.js","./htmlMode-DYFYy4MK.js","./jsonMode-DdDRlbXP.js","./javascript-CiHhG2a9.js","./typescript-422MU_YO.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
  }
@@ -18724,6 +18724,16 @@ var addonWebLinksExports = requireAddonWebLinks();
18724
18724
  let _terminal = null;
18725
18725
  let _fitAddon = null;
18726
18726
  let _currentAgentId = null;
18727
+ let _pinnedToBottom = true;
18728
+ function isAtBottom(terminal) {
18729
+ const buf = terminal.buffer.active;
18730
+ return buf.viewportY >= buf.baseY;
18731
+ }
18732
+ function scrollIfPinned(terminal) {
18733
+ if (_pinnedToBottom) {
18734
+ terminal.scrollToBottom();
18735
+ }
18736
+ }
18727
18737
  function getOrCreateTerminal(onExit) {
18728
18738
  if (_terminal && _fitAddon) {
18729
18739
  return { terminal: _terminal, fitAddon: _fitAddon };
@@ -18761,11 +18771,17 @@ function getOrCreateTerminal(onExit) {
18761
18771
  const fitAddon = new addonFitExports.FitAddon();
18762
18772
  terminal.loadAddon(fitAddon);
18763
18773
  terminal.loadAddon(new addonWebLinksExports.WebLinksAddon());
18774
+ terminal.onScroll(() => {
18775
+ _pinnedToBottom = isAtBottom(terminal);
18776
+ });
18764
18777
  terminal.onData((data) => {
18778
+ _pinnedToBottom = true;
18779
+ terminal.scrollToBottom();
18765
18780
  window.worker.writePty(data);
18766
18781
  });
18767
18782
  window.worker.onPtyData((data) => {
18768
18783
  terminal.write(data);
18784
+ scrollIfPinned(terminal);
18769
18785
  });
18770
18786
  window.worker.onPtyExit((code) => {
18771
18787
  terminal.writeln(`\r
@@ -18788,14 +18804,14 @@ function TerminalPanel({ agent, onSpawn, onExit }) {
18788
18804
  terminal.open(containerRef.current);
18789
18805
  }
18790
18806
  fitAddon.fit();
18791
- terminal.scrollToBottom();
18807
+ scrollIfPinned(terminal);
18792
18808
  let resizeTimeout;
18793
18809
  const handleResize = () => {
18794
18810
  clearTimeout(resizeTimeout);
18795
18811
  resizeTimeout = setTimeout(() => {
18796
18812
  if (_fitAddon && _terminal) {
18797
18813
  _fitAddon.fit();
18798
- _terminal.scrollToBottom();
18814
+ scrollIfPinned(_terminal);
18799
18815
  const { cols, rows } = _terminal;
18800
18816
  window.worker.resizePty(cols, rows);
18801
18817
  }
@@ -18818,6 +18834,7 @@ function TerminalPanel({ agent, onSpawn, onExit }) {
18818
18834
  onSpawn(agent).then(() => {
18819
18835
  if (_fitAddon && _terminal) {
18820
18836
  _fitAddon.fit();
18837
+ _pinnedToBottom = true;
18821
18838
  _terminal.scrollToBottom();
18822
18839
  const { cols, rows } = _terminal;
18823
18840
  window.worker.resizePty(cols, rows);
@@ -206500,7 +206517,7 @@ const lessDefaults = new LanguageServiceDefaultsImpl$3(
206500
206517
  modeConfigurationDefault$2
206501
206518
  );
206502
206519
  function getMode$3() {
206503
- return __vitePreload(() => import("./cssMode-Cxe23-tB.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
206520
+ return __vitePreload(() => import("./cssMode-C6bY9C4O.js"), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
206504
206521
  }
206505
206522
  languages.onLanguage("less", () => {
206506
206523
  getMode$3().then((mode2) => mode2.setupMode(lessDefaults));
@@ -206605,7 +206622,7 @@ const razorLanguageService = registerHTMLLanguageService(
206605
206622
  );
206606
206623
  const razorDefaults = razorLanguageService.defaults;
206607
206624
  function getMode$2() {
206608
- return __vitePreload(() => import("./htmlMode-D_V-1VlE.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
206625
+ return __vitePreload(() => import("./htmlMode-DYFYy4MK.js"), true ? __vite__mapDeps([2,1]) : void 0, import.meta.url);
206609
206626
  }
206610
206627
  function registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {
206611
206628
  const defaults = new LanguageServiceDefaultsImpl$2(languageId, options, modeConfiguration);
@@ -206689,7 +206706,7 @@ const jsonDefaults = new LanguageServiceDefaultsImpl$1(
206689
206706
  );
206690
206707
  const getWorker$1 = () => getMode$1().then((mode2) => mode2.getWorker());
206691
206708
  function getMode$1() {
206692
- return __vitePreload(() => import("./jsonMode-K3WSinSE.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
206709
+ return __vitePreload(() => import("./jsonMode-DdDRlbXP.js"), true ? __vite__mapDeps([3,1]) : void 0, import.meta.url);
206693
206710
  }
206694
206711
  languages.register({
206695
206712
  id: "json",
@@ -206935,7 +206952,7 @@ const getJavaScriptWorker = () => {
206935
206952
  return getMode().then((mode) => mode.getJavaScriptWorker());
206936
206953
  };
206937
206954
  function getMode() {
206938
- return __vitePreload(() => import("./tsMode-DYu1z_nn.js"), true ? [] : void 0, import.meta.url);
206955
+ return __vitePreload(() => import("./tsMode-BGTjG8Ow.js"), true ? [] : void 0, import.meta.url);
206939
206956
  }
206940
206957
  languages.onLanguage("typescript", () => {
206941
206958
  return getMode().then((mode) => mode.setupTypeScript(typescriptDefaults));
@@ -207130,49 +207147,49 @@ registerLanguage({
207130
207147
  extensions: [".ftl", ".ftlh", ".ftlx"],
207131
207148
  aliases: ["FreeMarker2", "Apache FreeMarker2"],
207132
207149
  loader: () => {
207133
- return __vitePreload(() => import("./freemarker2-Be0nj7Oa.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
207150
+ return __vitePreload(() => import("./freemarker2-CkAJiX1K.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
207134
207151
  }
207135
207152
  });
207136
207153
  registerLanguage({
207137
207154
  id: "freemarker2.tag-angle.interpolation-dollar",
207138
207155
  aliases: ["FreeMarker2 (Angle/Dollar)", "Apache FreeMarker2 (Angle/Dollar)"],
207139
207156
  loader: () => {
207140
- return __vitePreload(() => import("./freemarker2-Be0nj7Oa.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationDollar);
207157
+ return __vitePreload(() => import("./freemarker2-CkAJiX1K.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationDollar);
207141
207158
  }
207142
207159
  });
207143
207160
  registerLanguage({
207144
207161
  id: "freemarker2.tag-bracket.interpolation-dollar",
207145
207162
  aliases: ["FreeMarker2 (Bracket/Dollar)", "Apache FreeMarker2 (Bracket/Dollar)"],
207146
207163
  loader: () => {
207147
- return __vitePreload(() => import("./freemarker2-Be0nj7Oa.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationDollar);
207164
+ return __vitePreload(() => import("./freemarker2-CkAJiX1K.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationDollar);
207148
207165
  }
207149
207166
  });
207150
207167
  registerLanguage({
207151
207168
  id: "freemarker2.tag-angle.interpolation-bracket",
207152
207169
  aliases: ["FreeMarker2 (Angle/Bracket)", "Apache FreeMarker2 (Angle/Bracket)"],
207153
207170
  loader: () => {
207154
- return __vitePreload(() => import("./freemarker2-Be0nj7Oa.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationBracket);
207171
+ return __vitePreload(() => import("./freemarker2-CkAJiX1K.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAngleInterpolationBracket);
207155
207172
  }
207156
207173
  });
207157
207174
  registerLanguage({
207158
207175
  id: "freemarker2.tag-bracket.interpolation-bracket",
207159
207176
  aliases: ["FreeMarker2 (Bracket/Bracket)", "Apache FreeMarker2 (Bracket/Bracket)"],
207160
207177
  loader: () => {
207161
- return __vitePreload(() => import("./freemarker2-Be0nj7Oa.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationBracket);
207178
+ return __vitePreload(() => import("./freemarker2-CkAJiX1K.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagBracketInterpolationBracket);
207162
207179
  }
207163
207180
  });
207164
207181
  registerLanguage({
207165
207182
  id: "freemarker2.tag-auto.interpolation-dollar",
207166
207183
  aliases: ["FreeMarker2 (Auto/Dollar)", "Apache FreeMarker2 (Auto/Dollar)"],
207167
207184
  loader: () => {
207168
- return __vitePreload(() => import("./freemarker2-Be0nj7Oa.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
207185
+ return __vitePreload(() => import("./freemarker2-CkAJiX1K.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationDollar);
207169
207186
  }
207170
207187
  });
207171
207188
  registerLanguage({
207172
207189
  id: "freemarker2.tag-auto.interpolation-bracket",
207173
207190
  aliases: ["FreeMarker2 (Auto/Bracket)", "Apache FreeMarker2 (Auto/Bracket)"],
207174
207191
  loader: () => {
207175
- return __vitePreload(() => import("./freemarker2-Be0nj7Oa.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationBracket);
207192
+ return __vitePreload(() => import("./freemarker2-CkAJiX1K.js"), true ? [] : void 0, import.meta.url).then((m) => m.TagAutoInterpolationBracket);
207176
207193
  }
207177
207194
  });
207178
207195
  registerLanguage({
@@ -207193,7 +207210,7 @@ registerLanguage({
207193
207210
  extensions: [".handlebars", ".hbs"],
207194
207211
  aliases: ["Handlebars", "handlebars", "hbs"],
207195
207212
  mimetypes: ["text/x-handlebars-template"],
207196
- loader: () => __vitePreload(() => import("./handlebars-C0It7_Nu.js"), true ? [] : void 0, import.meta.url)
207213
+ loader: () => __vitePreload(() => import("./handlebars-DnLXVUXp.js"), true ? [] : void 0, import.meta.url)
207197
207214
  });
207198
207215
  registerLanguage({
207199
207216
  id: "hcl",
@@ -207206,7 +207223,7 @@ registerLanguage({
207206
207223
  extensions: [".html", ".htm", ".shtml", ".xhtml", ".mdoc", ".jsp", ".asp", ".aspx", ".jshtm"],
207207
207224
  aliases: ["HTML", "htm", "html", "xhtml"],
207208
207225
  mimetypes: ["text/html", "text/x-jshtm", "text/template", "text/ng-template"],
207209
- loader: () => __vitePreload(() => import("./html-BW6LB-7J.js"), true ? [] : void 0, import.meta.url)
207226
+ loader: () => __vitePreload(() => import("./html-Ds5-qvDh.js"), true ? [] : void 0, import.meta.url)
207210
207227
  });
207211
207228
  registerLanguage({
207212
207229
  id: "ini",
@@ -207229,7 +207246,7 @@ registerLanguage({
207229
207246
  filenames: ["jakefile"],
207230
207247
  aliases: ["JavaScript", "javascript", "js"],
207231
207248
  mimetypes: ["text/javascript"],
207232
- loader: () => __vitePreload(() => import("./javascript-D_LoeNc7.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
207249
+ loader: () => __vitePreload(() => import("./javascript-CiHhG2a9.js"), true ? __vite__mapDeps([4,5]) : void 0, import.meta.url)
207233
207250
  });
207234
207251
  registerLanguage({
207235
207252
  id: "julia",
@@ -207268,7 +207285,7 @@ registerLanguage({
207268
207285
  extensions: [".liquid", ".html.liquid"],
207269
207286
  aliases: ["Liquid", "liquid"],
207270
207287
  mimetypes: ["application/liquid"],
207271
- loader: () => __vitePreload(() => import("./liquid-BqfOd6m8.js"), true ? [] : void 0, import.meta.url)
207288
+ loader: () => __vitePreload(() => import("./liquid-BP5mb-uD.js"), true ? [] : void 0, import.meta.url)
207272
207289
  });
207273
207290
  registerLanguage({
207274
207291
  id: "m3",
@@ -207286,7 +207303,7 @@ registerLanguage({
207286
207303
  id: "mdx",
207287
207304
  extensions: [".mdx"],
207288
207305
  aliases: ["MDX", "mdx"],
207289
- loader: () => __vitePreload(() => import("./mdx-BoESjI38.js"), true ? [] : void 0, import.meta.url)
207306
+ loader: () => __vitePreload(() => import("./mdx-D4u3N7dt.js"), true ? [] : void 0, import.meta.url)
207290
207307
  });
207291
207308
  registerLanguage({
207292
207309
  id: "mips",
@@ -207385,7 +207402,7 @@ registerLanguage({
207385
207402
  extensions: [".py", ".rpy", ".pyw", ".cpy", ".gyp", ".gypi"],
207386
207403
  aliases: ["Python", "py"],
207387
207404
  firstLine: "^#!/.*\\bpython[0-9.-]*\\b",
207388
- loader: () => __vitePreload(() => import("./python-DlafOOgB.js"), true ? [] : void 0, import.meta.url)
207405
+ loader: () => __vitePreload(() => import("./python-BQDHXVwp.js"), true ? [] : void 0, import.meta.url)
207389
207406
  });
207390
207407
  registerLanguage({
207391
207408
  id: "qsharp",
@@ -207404,7 +207421,7 @@ registerLanguage({
207404
207421
  extensions: [".cshtml"],
207405
207422
  aliases: ["Razor", "razor"],
207406
207423
  mimetypes: ["text/x-cshtml"],
207407
- loader: () => __vitePreload(() => import("./razor-CB6E9DBD.js"), true ? [] : void 0, import.meta.url)
207424
+ loader: () => __vitePreload(() => import("./razor-BfXW9cDc.js"), true ? [] : void 0, import.meta.url)
207408
207425
  });
207409
207426
  registerLanguage({
207410
207427
  id: "redis",
@@ -207537,7 +207554,7 @@ registerLanguage({
207537
207554
  aliases: ["TypeScript", "ts", "typescript"],
207538
207555
  mimetypes: ["text/typescript"],
207539
207556
  loader: () => {
207540
- return __vitePreload(() => import("./typescript-CDjkh0d5.js"), true ? [] : void 0, import.meta.url);
207557
+ return __vitePreload(() => import("./typescript-422MU_YO.js"), true ? [] : void 0, import.meta.url);
207541
207558
  }
207542
207559
  });
207543
207560
  registerLanguage({
@@ -207582,14 +207599,14 @@ registerLanguage({
207582
207599
  firstLine: "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
207583
207600
  aliases: ["XML", "xml"],
207584
207601
  mimetypes: ["text/xml", "application/xml", "application/xaml+xml", "application/xml-dtd"],
207585
- loader: () => __vitePreload(() => import("./xml-C-XlilKZ.js"), true ? [] : void 0, import.meta.url)
207602
+ loader: () => __vitePreload(() => import("./xml-B6EKhHiy.js"), true ? [] : void 0, import.meta.url)
207586
207603
  });
207587
207604
  registerLanguage({
207588
207605
  id: "yaml",
207589
207606
  extensions: [".yaml", ".yml"],
207590
207607
  aliases: ["YAML", "yaml", "YML", "yml"],
207591
207608
  mimetypes: ["application/x-yaml", "text/x-yaml"],
207592
- loader: () => __vitePreload(() => import("./yaml-BTrtxLEo.js"), true ? [] : void 0, import.meta.url)
207609
+ loader: () => __vitePreload(() => import("./yaml-LkO_eGYb.js"), true ? [] : void 0, import.meta.url)
207593
207610
  });
207594
207611
  var __defProp = Object.defineProperty;
207595
207612
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -1,5 +1,5 @@
1
- import { conf as conf$1, language as language$1 } from "./typescript-CDjkh0d5.js";
2
- import "./index-D568SpEt.js";
1
+ import { conf as conf$1, language as language$1 } from "./typescript-422MU_YO.js";
2
+ import "./index-DwSsD_Xm.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-D568SpEt.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-Bjf28WU6.js";
3
- import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-Bjf28WU6.js";
1
+ import { c as createWebWorker, l as languages, e as editor } from "./index-DwSsD_Xm.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-Dljhj5Gh.js";
3
+ import { a, D, h, R, c, i, j, t, k } from "./lspLanguageFeatures-Dljhj5Gh.js";
4
4
  const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
5
5
  class WorkerManager {
6
6
  constructor(defaults) {
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "area",
4
4
  "base",
@@ -1,4 +1,4 @@
1
- import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-D568SpEt.js";
1
+ import { R as Range$1, l as languages, e as editor, U as Uri, M as MarkerSeverity } from "./index-DwSsD_Xm.js";
2
2
  var DocumentUri;
3
3
  (function(DocumentUri2) {
4
4
  function is(value) {
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const conf = {
3
3
  comments: {
4
4
  blockComment: ["{/*", "*/}"]
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const conf = {
3
3
  comments: {
4
4
  lineComment: "#",
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "area",
4
4
  "base",
@@ -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-D568SpEt.js";
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-DwSsD_Xm.js";
2
2
  class WorkerManager {
3
3
  constructor(_modeId, _defaults) {
4
4
  this._modeId = _modeId;
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const conf = {
3
3
  wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,
4
4
  comments: {
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const conf = {
3
3
  comments: {
4
4
  blockComment: ["<!--", "-->"]
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-D568SpEt.js";
1
+ import { l as languages } from "./index-DwSsD_Xm.js";
2
2
  const conf = {
3
3
  comments: {
4
4
  lineComment: "#"
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>ctlsurf-worker</title>
7
- <script type="module" crossorigin src="./assets/index-D568SpEt.js"></script>
7
+ <script type="module" crossorigin src="./assets/index-DwSsD_Xm.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="./assets/index-DK9wLFFm.css">
9
9
  </head>
10
10
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phenx-inc/ctlsurf",
3
- "version": "0.1.18",
3
+ "version": "0.1.21",
4
4
  "description": "Agent-agnostic terminal and desktop app for ctlsurf — run Claude Code, Codex, or any coding agent with live session logging and remote control",
5
5
  "main": "out/main/index.js",
6
6
  "bin": {
@@ -138,6 +138,12 @@ async function main() {
138
138
  }
139
139
 
140
140
  // Pipe stdin to PTY, with Ctrl+\ as the exit key
141
+ // SGR mouse wheel: \x1b[<64;col;rowM = scroll up, \x1b[<65;col;rowM = scroll down
142
+ const SCROLL_UP_RE = /\x1b\[<64;\d+;\d+M/
143
+ const SCROLL_DOWN_RE = /\x1b\[<65;\d+;\d+M/
144
+ // Use mouse wheel events directly — forward as SGR mouse to the PTY
145
+ // so the inner app can handle them natively
146
+
141
147
  if (process.stdin.isTTY) {
142
148
  process.stdin.setRawMode(true)
143
149
  process.stdin.resume()
@@ -148,6 +154,12 @@ async function main() {
148
154
  shutdown()
149
155
  return
150
156
  }
157
+ // Drop mouse wheel events — Claude Code doesn't support mouse scrolling.
158
+ // Scrolling is handled by the terminal emulator natively when not in
159
+ // alternate screen, or not at all in alternate screen (Claude Code's TUI).
160
+ if (SCROLL_UP_RE.test(str) || SCROLL_DOWN_RE.test(str)) {
161
+ return
162
+ }
151
163
  orchestrator.writePty(str)
152
164
  })
153
165
  }