@phenx-inc/ctlsurf 0.7.0 → 0.8.0
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 +26 -10
- package/out/headless/index.mjs.map +2 -2
- package/out/main/index.js +31 -9
- package/out/preload/index.js +8 -0
- package/out/renderer/assets/{cssMode-eTXVdAkZ.js → cssMode-BQN8v2ok.js} +3 -3
- package/out/renderer/assets/{freemarker2-B5BKaiK4.js → freemarker2-DbxGYYVp.js} +1 -1
- package/out/renderer/assets/{handlebars-BIdLd2wU.js → handlebars-3auU1CAd.js} +1 -1
- package/out/renderer/assets/{html-BXL4cnLS.js → html-D8xFiRmI.js} +1 -1
- package/out/renderer/assets/{htmlMode-46N3XG2c.js → htmlMode-M3MApZ4n.js} +3 -3
- package/out/renderer/assets/{index-dRvutfbl.js → index---H6cxNl.js} +696 -33
- package/out/renderer/assets/{index-Cf-RsxoC.css → index-B-iM7dFC.css} +195 -0
- package/out/renderer/assets/{javascript-n_iZZzDX.js → javascript-BO_ViZM5.js} +2 -2
- package/out/renderer/assets/{jsonMode-DXDczSNu.js → jsonMode-CKp2zvZu.js} +3 -3
- package/out/renderer/assets/{liquid-B1QweUh7.js → liquid-C1eHcrht.js} +1 -1
- package/out/renderer/assets/{lspLanguageFeatures-DqzMqkRk.js → lspLanguageFeatures-CHWJx_Tl.js} +1 -1
- package/out/renderer/assets/{mdx-BCv8lm5e.js → mdx-Qqdtk7fL.js} +1 -1
- package/out/renderer/assets/{python-BLNzYwDv.js → python-DKu7rNbs.js} +1 -1
- package/out/renderer/assets/{razor-CvAww8bG.js → razor-BOMpCo6z.js} +1 -1
- package/out/renderer/assets/{tsMode-C7m6Kr5E.js → tsMode-yAjlPR-D.js} +1 -1
- package/out/renderer/assets/{typescript-DhPw4VVg.js → typescript-BiJRCUcL.js} +1 -1
- package/out/renderer/assets/{xml-B0WLFJ2U.js → xml-D4PvYeQq.js} +1 -1
- package/out/renderer/assets/{yaml-BWyn9Wd7.js → yaml-BeHVkmnS.js} +1 -1
- package/out/renderer/index.html +2 -2
- package/package.json +1 -1
- package/src/main/index.ts +7 -0
- package/src/main/orchestrator.ts +38 -9
- package/src/preload/index.ts +11 -0
- package/src/renderer/App.tsx +5 -0
- package/src/renderer/components/SpeakControls.tsx +235 -0
- package/src/renderer/components/VoiceInput.tsx +159 -3
- package/src/renderer/lib/localWhisper.ts +48 -4
- package/src/renderer/lib/speech.ts +299 -0
- package/src/renderer/styles.css +195 -0
package/out/headless/index.mjs
CHANGED
|
@@ -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.
|
|
5474
|
+
version: "0.8.0",
|
|
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: {
|
|
@@ -7179,31 +7179,47 @@ var Orchestrator = class {
|
|
|
7179
7179
|
get logChatEnabled() {
|
|
7180
7180
|
return !!this.settings.logChat;
|
|
7181
7181
|
}
|
|
7182
|
+
get speakRepliesEnabled() {
|
|
7183
|
+
return !!this.settings.speakReplies;
|
|
7184
|
+
}
|
|
7182
7185
|
setLogChat(enabled) {
|
|
7183
7186
|
this.settings.logChat = enabled;
|
|
7184
7187
|
this.saveSettings();
|
|
7185
7188
|
this.bridge.setLoggingEnabled(enabled);
|
|
7186
|
-
|
|
7187
|
-
|
|
7188
|
-
|
|
7189
|
-
|
|
7190
|
-
|
|
7191
|
-
|
|
7189
|
+
this.restartActiveChatLogging();
|
|
7190
|
+
}
|
|
7191
|
+
setSpeakReplies(enabled) {
|
|
7192
|
+
this.settings.speakReplies = enabled;
|
|
7193
|
+
this.saveSettings();
|
|
7194
|
+
this.restartActiveChatLogging();
|
|
7195
|
+
}
|
|
7196
|
+
// Re-evaluate the transcript tailer for the active tab against the current
|
|
7197
|
+
// logChat / speakReplies flags. Both setters funnel through here.
|
|
7198
|
+
restartActiveChatLogging() {
|
|
7199
|
+
this.stopChatLogging();
|
|
7200
|
+
if (!this.activeTabId) return;
|
|
7201
|
+
const tab = this.tabs.get(this.activeTabId);
|
|
7202
|
+
if (tab) this.startChatLogging(tab.agent, tab.cwd);
|
|
7192
7203
|
}
|
|
7193
7204
|
// Agents with native session transcripts (Claude Code, Codex) get exact
|
|
7194
7205
|
// chat text tailed from their JSONL logs; everything else falls back to
|
|
7195
7206
|
// the terminal screen-scraper bridge.
|
|
7196
7207
|
startChatLogging(agent, cwd) {
|
|
7197
7208
|
this.stopChatLogging();
|
|
7198
|
-
if (!this.settings.logChat) return;
|
|
7209
|
+
if (!this.settings.logChat && !this.settings.speakReplies) return;
|
|
7199
7210
|
if (supportsTranscriptLogging(agent.id)) {
|
|
7200
7211
|
this.transcriptTailer = new TranscriptTailer({
|
|
7201
7212
|
agentId: agent.id,
|
|
7202
7213
|
cwd,
|
|
7203
|
-
sink: (entry) =>
|
|
7214
|
+
sink: (entry) => {
|
|
7215
|
+
if (this.settings.logChat) this.workerWs.sendChatLog(entry);
|
|
7216
|
+
if (this.settings.speakReplies && entry.type === "terminal_output") {
|
|
7217
|
+
this.events.onAgentMessage?.(entry.content);
|
|
7218
|
+
}
|
|
7219
|
+
}
|
|
7204
7220
|
});
|
|
7205
7221
|
this.transcriptTailer.start();
|
|
7206
|
-
} else {
|
|
7222
|
+
} else if (this.settings.logChat) {
|
|
7207
7223
|
this.bridge.startSession();
|
|
7208
7224
|
}
|
|
7209
7225
|
}
|