@phenx-inc/ctlsurf 0.13.1 → 0.13.4

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 (38) hide show
  1. package/LICENSE +22 -0
  2. package/out/headless/index.mjs +9 -18
  3. package/out/headless/index.mjs.map +3 -3
  4. package/out/main/index.js +17 -22
  5. package/out/preload/index.js +1 -0
  6. package/out/renderer/assets/{cssMode-KhYyY-BM.js → cssMode-CAEObGNt.js} +3 -3
  7. package/out/renderer/assets/{freemarker2-BFsSgcWk.js → freemarker2-D63hnnDq.js} +1 -1
  8. package/out/renderer/assets/{handlebars-Be6_aBsm.js → handlebars-UYo_IYpi.js} +1 -1
  9. package/out/renderer/assets/{html-G8mvsyfc.js → html-2dvYDi3g.js} +1 -1
  10. package/out/renderer/assets/{htmlMode-Cfd5VCjw.js → htmlMode-B6fxDDPF.js} +3 -3
  11. package/out/renderer/assets/{index-Bi_MjBqs.css → index-BEekQe3-.css} +116 -0
  12. package/out/renderer/assets/{index-MqgBcJzy.js → index-CMb4AqkZ.js} +552 -411
  13. package/out/renderer/assets/{javascript-XyDWi6dC.js → javascript-8RyFDDdk.js} +2 -2
  14. package/out/renderer/assets/{jsonMode-DZT5gBVW.js → jsonMode-CqspkWCb.js} +3 -3
  15. package/out/renderer/assets/{liquid-BuajCNJ9.js → liquid-DaEnAsYY.js} +1 -1
  16. package/out/renderer/assets/{lspLanguageFeatures-BYkg2Yc-.js → lspLanguageFeatures-Czkp5sZb.js} +1 -1
  17. package/out/renderer/assets/{mdx-D0Qx2GMS.js → mdx-Q-qSZsFg.js} +1 -1
  18. package/out/renderer/assets/{python-ChncNy6S.js → python-Sw0S0BJV.js} +1 -1
  19. package/out/renderer/assets/{razor-C6MUtfaS.js → razor-C7zQmabz.js} +1 -1
  20. package/out/renderer/assets/{tsMode-C2aMdzdU.js → tsMode-BWdOxk6v.js} +1 -1
  21. package/out/renderer/assets/{typescript-CB71AtAT.js → typescript-BrdIiKZf.js} +1 -1
  22. package/out/renderer/assets/{xml-tHS1Ec9w.js → xml-DbKLNPOq.js} +1 -1
  23. package/out/renderer/assets/{yaml-CZcp5ueF.js → yaml-ehupJBsZ.js} +1 -1
  24. package/out/renderer/index.html +2 -2
  25. package/package.json +2 -2
  26. package/src/main/bridge.ts +3 -2
  27. package/src/main/index.ts +6 -0
  28. package/src/main/pty.ts +2 -5
  29. package/src/main/ticketStore.ts +2 -1
  30. package/src/main/timeTracker.ts +4 -1
  31. package/src/main/transcripts.ts +3 -2
  32. package/src/preload/index.ts +2 -0
  33. package/src/renderer/App.tsx +1 -0
  34. package/src/renderer/components/SettingsDialog.tsx +13 -0
  35. package/src/renderer/components/SpeakControls.tsx +5 -0
  36. package/src/renderer/components/TerminalPanel.tsx +151 -30
  37. package/src/renderer/lib/speech.ts +2 -1
  38. package/src/renderer/styles.css +116 -0
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright © 2026 Phenx, Inc. All rights reserved.
2
+
3
+ This software, including its source code, design, and documentation
4
+ (the "Software"), is the confidential and proprietary property of
5
+ Phenx, Inc. ("Phenx").
6
+
7
+ No license or right to use, copy, modify, merge, publish, distribute,
8
+ sublicense, sell, reverse engineer, decompile, or create derivative works
9
+ of the Software, in whole or in part, is granted except under a separate
10
+ written agreement signed by Phenx. Unauthorized use, reproduction, or
11
+ distribution is strictly prohibited and may result in civil and criminal
12
+ penalties.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ PHENX BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM OR
18
+ IN CONNECTION WITH THE SOFTWARE OR ITS USE.
19
+
20
+ Third-party components distributed with the Software are licensed under
21
+ their own terms by their respective authors; those licenses continue to
22
+ apply to those components.
@@ -5471,7 +5471,7 @@ var require_package = __commonJS({
5471
5471
  "package.json"(exports, module) {
5472
5472
  module.exports = {
5473
5473
  name: "@phenx-inc/ctlsurf",
5474
- version: "0.13.1",
5474
+ version: "0.13.4",
5475
5475
  description: "Agent-agnostic terminal and desktop app for ctlsurf \u2014 run Claude Code, Codex, or any coding agent with live session logging and remote control",
5476
5476
  main: "out/main/index.js",
5477
5477
  bin: {
@@ -5509,7 +5509,7 @@ var require_package = __commonJS({
5509
5509
  "node-pty",
5510
5510
  "xterm"
5511
5511
  ],
5512
- license: "MIT",
5512
+ license: "SEE LICENSE IN LICENSE",
5513
5513
  engines: {
5514
5514
  node: ">=18"
5515
5515
  },
@@ -5578,10 +5578,7 @@ var PtyManager = class {
5578
5578
  constructor(agent, cwd) {
5579
5579
  const shell = agent.command;
5580
5580
  const args = agent.args || [];
5581
- try {
5582
- console.log(`[pty] Spawning: ${shell} ${args.join(" ")} in ${cwd}`);
5583
- } catch {
5584
- }
5581
+ log(`[pty] Spawning: ${shell} ${args.join(" ")} in ${cwd}`);
5585
5582
  this.process = pty.spawn(shell, args, {
5586
5583
  name: "xterm-256color",
5587
5584
  cwd,
@@ -5847,7 +5844,7 @@ var ConversationBridge = class {
5847
5844
  this.inputBuffer = "";
5848
5845
  this.terminalCapture.reset();
5849
5846
  this.sessionActive = true;
5850
- console.log("[bridge] Session started");
5847
+ log("[bridge] Session started");
5851
5848
  }
5852
5849
  feedOutput(data) {
5853
5850
  if (!this.sessionActive || !this.loggingEnabled) return;
@@ -5927,7 +5924,7 @@ var ConversationBridge = class {
5927
5924
  this.sessionActive = false;
5928
5925
  this.inputBuffer = "";
5929
5926
  this.outputBuffer = "";
5930
- console.log("[bridge] Session ended");
5927
+ log("[bridge] Session ended");
5931
5928
  }
5932
5929
  };
5933
5930
  var DEFAULT_COLS = 80;
@@ -6141,7 +6138,7 @@ var TranscriptTailer = class {
6141
6138
  this.sinceMs = Date.now();
6142
6139
  this.files.clear();
6143
6140
  this.pollTimer = setInterval(() => this.poll(), POLL_INTERVAL_MS);
6144
- console.log(`[transcripts] Tailing ${this.agentId} transcripts for ${this.cwd}`);
6141
+ log(`[transcripts] Tailing ${this.agentId} transcripts for ${this.cwd}`);
6145
6142
  }
6146
6143
  stop() {
6147
6144
  if (!this.pollTimer) return;
@@ -6149,7 +6146,7 @@ var TranscriptTailer = class {
6149
6146
  this.pollTimer = null;
6150
6147
  this.poll();
6151
6148
  this.files.clear();
6152
- console.log("[transcripts] Stopped");
6149
+ log("[transcripts] Stopped");
6153
6150
  }
6154
6151
  poll() {
6155
6152
  try {
@@ -6952,10 +6949,7 @@ function isSameLocalDay(a, b) {
6952
6949
  return da.getFullYear() === db.getFullYear() && da.getMonth() === db.getMonth() && da.getDate() === db.getDate();
6953
6950
  }
6954
6951
  function log2(...args) {
6955
- try {
6956
- console.log("[time-tracker]", ...args);
6957
- } catch {
6958
- }
6952
+ log("[time-tracker]", ...args);
6959
6953
  }
6960
6954
  function findPageByTitle(pages, title) {
6961
6955
  for (const p of pages) {
@@ -7244,10 +7238,7 @@ var COLUMNS2 = [
7244
7238
  { name: "Created", type: "date" }
7245
7239
  ];
7246
7240
  function log3(...args) {
7247
- try {
7248
- console.log("[ticket-store]", ...args);
7249
- } catch {
7250
- }
7241
+ log("[ticket-store]", ...args);
7251
7242
  }
7252
7243
  function findPageByTitle2(pages, title) {
7253
7244
  for (const p of pages) {