aicodeman 1.16.2 → 1.16.3
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/README.md +2 -1
- package/dist/search-service.d.ts +9 -1
- package/dist/search-service.d.ts.map +1 -1
- package/dist/search-service.js +13 -3
- package/dist/search-service.js.map +1 -1
- package/dist/services/unified-session-service.d.ts +9 -0
- package/dist/services/unified-session-service.d.ts.map +1 -1
- package/dist/services/unified-session-service.js +4 -1
- package/dist/services/unified-session-service.js.map +1 -1
- package/dist/types/search.d.ts +17 -3
- package/dist/types/search.d.ts.map +1 -1
- package/dist/web/public/admin-ui.js +35 -20
- package/dist/web/public/admin-ui.js.br +0 -0
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/{app.4d006245.js → app.f9c6aadd.js} +18 -18
- package/dist/web/public/app.f9c6aadd.js.br +0 -0
- package/dist/web/public/app.f9c6aadd.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.7d0f4047.js → constants.53dc0fa1.js} +43 -0
- package/dist/web/public/constants.53dc0fa1.js.br +0 -0
- package/dist/web/public/constants.53dc0fa1.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/home-sessions.js +119 -8
- package/dist/web/public/home-sessions.js.br +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/i18n.1a8b3412.js +1 -0
- package/dist/web/public/i18n.1a8b3412.js.br +0 -0
- package/dist/web/public/i18n.1a8b3412.js.gz +0 -0
- package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
- package/dist/web/public/index.html +807 -727
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.63794d0b.js.gz +0 -0
- package/dist/web/public/{keyboard-accessory.1f35b482.js → keyboard-accessory.0f524637.js} +207 -5
- package/dist/web/public/keyboard-accessory.0f524637.js.br +0 -0
- package/dist/web/public/keyboard-accessory.0f524637.js.gz +0 -0
- package/dist/web/public/mobile-handlers.32fdd57f.js.gz +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.52b30b35.css +1 -0
- package/dist/web/public/mobile.52b30b35.css.br +0 -0
- package/dist/web/public/mobile.52b30b35.css.gz +0 -0
- package/dist/web/public/notification-manager.5d229063.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.3df9cd95.js → panels-ui.54b0d004.js} +1 -1
- package/dist/web/public/panels-ui.54b0d004.js.br +0 -0
- package/dist/web/public/panels-ui.54b0d004.js.gz +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js +80 -16
- package/dist/web/public/readmymind-ui.js.br +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/session-ui.f4fed187.js.gz +0 -0
- package/dist/web/public/{settings-ui.1c15649c.js → settings-ui.c674f367.js} +9 -9
- package/dist/web/public/settings-ui.c674f367.js.br +0 -0
- package/dist/web/public/settings-ui.c674f367.js.gz +0 -0
- package/dist/web/public/styles.2eb23e0f.css +1 -0
- package/dist/web/public/styles.2eb23e0f.css.br +0 -0
- package/dist/web/public/styles.2eb23e0f.css.gz +0 -0
- package/dist/web/public/subagent-windows.4cc8b005.js.gz +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/terminal-ui.61c7829d.js +4 -0
- package/dist/web/public/terminal-ui.61c7829d.js.br +0 -0
- package/dist/web/public/terminal-ui.61c7829d.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.6cec0fba.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.137ad9f0.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.e5461859.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/routes/search-routes.d.ts +3 -1
- package/dist/web/routes/search-routes.d.ts.map +1 -1
- package/dist/web/routes/search-routes.js +34 -1
- package/dist/web/routes/search-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +151 -9
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/session-history-index.d.ts +108 -0
- package/dist/web/session-history-index.d.ts.map +1 -0
- package/dist/web/session-history-index.js +118 -0
- package/dist/web/session-history-index.js.map +1 -0
- package/package.json +1 -1
- package/dist/web/public/app.4d006245.js.br +0 -0
- package/dist/web/public/app.4d006245.js.gz +0 -0
- package/dist/web/public/constants.7d0f4047.js.br +0 -0
- package/dist/web/public/constants.7d0f4047.js.gz +0 -0
- package/dist/web/public/i18n.ef50083f.js +0 -1
- package/dist/web/public/i18n.ef50083f.js.br +0 -0
- package/dist/web/public/i18n.ef50083f.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.1f35b482.js.br +0 -0
- package/dist/web/public/keyboard-accessory.1f35b482.js.gz +0 -0
- package/dist/web/public/mobile.5d8c896c.css +0 -1
- package/dist/web/public/mobile.5d8c896c.css.br +0 -0
- package/dist/web/public/mobile.5d8c896c.css.gz +0 -0
- package/dist/web/public/panels-ui.3df9cd95.js.br +0 -0
- package/dist/web/public/panels-ui.3df9cd95.js.gz +0 -0
- package/dist/web/public/settings-ui.1c15649c.js.br +0 -0
- package/dist/web/public/settings-ui.1c15649c.js.gz +0 -0
- package/dist/web/public/styles.0024c22e.css +0 -1
- package/dist/web/public/styles.0024c22e.css.br +0 -0
- package/dist/web/public/styles.0024c22e.css.gz +0 -0
- package/dist/web/public/terminal-ui.e7c5d233.js +0 -4
- package/dist/web/public/terminal-ui.e7c5d233.js.br +0 -0
- package/dist/web/public/terminal-ui.e7c5d233.js.gz +0 -0
|
@@ -16,16 +16,16 @@
|
|
|
16
16
|
<link rel="manifest" href="manifest.json">
|
|
17
17
|
<title>Codeman</title>
|
|
18
18
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0%25' y1='0%25' x2='100%25' y2='100%25'%3E%3Cstop offset='0%25' stop-color='%2360a5fa'/%3E%3Cstop offset='100%25' stop-color='%233b82f6'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='32' height='32' rx='6' fill='%230a0a0a'/%3E%3Cpath d='M18 4L8 18h6l-2 10 10-14h-6z' fill='url(%23g)'/%3E%3C/svg%3E">
|
|
19
|
-
<link rel="stylesheet" href="styles.
|
|
20
|
-
<link rel="stylesheet" href="mobile.
|
|
19
|
+
<link rel="stylesheet" href="styles.2eb23e0f.css">
|
|
20
|
+
<link rel="stylesheet" href="mobile.52b30b35.css" media="(max-width: 1023px)">
|
|
21
21
|
<!-- xterm.css loaded async — terminal won't display until xterm.js runs anyway -->
|
|
22
22
|
<link rel="preload" href="vendor/xterm.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
|
23
23
|
<noscript><link rel="stylesheet" href="vendor/xterm.css"></noscript>
|
|
24
24
|
<!-- Preload critical resources — lets browser discover these during HTML parse
|
|
25
25
|
instead of waiting until <script> tags at bottom-of-body are reached. -->
|
|
26
26
|
<link rel="preload" href="vendor/xterm.min.js" as="script">
|
|
27
|
-
<link rel="preload" href="constants.
|
|
28
|
-
<link rel="preload" href="app.
|
|
27
|
+
<link rel="preload" href="constants.53dc0fa1.js" as="script">
|
|
28
|
+
<link rel="preload" href="app.f9c6aadd.js" as="script">
|
|
29
29
|
<!-- Self-hosted xterm.js — eliminates CDN DNS/TLS latency (~100ms).
|
|
30
30
|
'defer' preserves execution order (xterm loads before fit addon). -->
|
|
31
31
|
<script defer src="vendor/xterm.min.js"></script>
|
|
@@ -323,9 +323,9 @@
|
|
|
323
323
|
|
|
324
324
|
<!-- Welcome Overlay (shown when no session active) -->
|
|
325
325
|
<div class="welcome-overlay" id="welcomeOverlay">
|
|
326
|
-
<!-- Open tabs as a
|
|
326
|
+
<!-- Open tabs as a rail docked to the left edge (home-sessions.js).
|
|
327
327
|
Absolutely positioned so the centered content below never moves, and
|
|
328
|
-
therefore only rendered where the gutter is wider than the
|
|
328
|
+
therefore only rendered where the gutter is wider than the rail;
|
|
329
329
|
ships `hidden` and only that module reveals it. -->
|
|
330
330
|
<aside class="home-sessions" id="homeSessions" hidden></aside>
|
|
331
331
|
<div class="welcome-content">
|
|
@@ -397,7 +397,27 @@
|
|
|
397
397
|
</div>
|
|
398
398
|
<div class="search-results" id="searchResults" hidden></div>
|
|
399
399
|
</div>
|
|
400
|
-
<
|
|
400
|
+
<div class="history-header" id="historyHeader">
|
|
401
|
+
<h3 class="history-title" id="historyTitle">Resume Conversation</h3>
|
|
402
|
+
<span class="history-count" id="historyCount" data-i18n-skip></span>
|
|
403
|
+
<div class="history-controls">
|
|
404
|
+
<input
|
|
405
|
+
type="search"
|
|
406
|
+
id="historyFilter"
|
|
407
|
+
class="history-filter"
|
|
408
|
+
placeholder="Filter…"
|
|
409
|
+
autocomplete="off"
|
|
410
|
+
spellcheck="false"
|
|
411
|
+
maxlength="100"
|
|
412
|
+
aria-label="Filter past conversations"
|
|
413
|
+
/>
|
|
414
|
+
<select id="historySort" class="search-select history-sort" aria-label="Sort past conversations">
|
|
415
|
+
<option value="recent">Recent</option>
|
|
416
|
+
<option value="name">Name A–Z</option>
|
|
417
|
+
<option value="folder">Folder A–Z</option>
|
|
418
|
+
</select>
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
401
421
|
<div class="history-list" id="historyList"></div>
|
|
402
422
|
</div>
|
|
403
423
|
<p class="welcome-hint">Or click Run to start</p>
|
|
@@ -1273,778 +1293,837 @@
|
|
|
1273
1293
|
<!-- App Settings Modal -->
|
|
1274
1294
|
<div class="modal" id="appSettingsModal">
|
|
1275
1295
|
<div class="modal-backdrop" onclick="app.closeAppSettings()"></div>
|
|
1276
|
-
<div class="modal-content modal-lg">
|
|
1277
|
-
<div class="modal-header">
|
|
1278
|
-
<h3>
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
<
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
<div class="
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1296
|
+
<div class="modal-content modal-lg set-shell">
|
|
1297
|
+
<div class="modal-header set-shell-head">
|
|
1298
|
+
<h3>Settings</h3>
|
|
1299
|
+
<!-- Close first in the DOM so the focus trap still lands on it, not on
|
|
1300
|
+
Save; row-reverse keeps Save to the left of it on phones. -->
|
|
1301
|
+
<div class="set-head-actions">
|
|
1302
|
+
<button class="modal-close" onclick="app.closeAppSettings()" aria-label="Close app settings">×</button>
|
|
1303
|
+
<button class="set-head-save" onclick="app.saveAppSettings()">Save</button>
|
|
1304
|
+
</div>
|
|
1305
|
+
</div>
|
|
1306
|
+
<div class="set-body">
|
|
1307
|
+
<!-- Left rail: a table of contents over the single scrolling document on
|
|
1308
|
+
the right. On phones it collapses and #appSettingsJump takes over. -->
|
|
1309
|
+
<nav class="set-rail" id="appSettingsRail" aria-label="Settings sections">
|
|
1310
|
+
<div class="set-search">
|
|
1311
|
+
<svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>
|
|
1312
|
+
<input type="search" id="appSettingsSearch" placeholder="Search settings" autocomplete="off" aria-label="Search settings">
|
|
1313
|
+
</div>
|
|
1314
|
+
<div class="set-rail-items" id="appSettingsRailItems">
|
|
1315
|
+
<button type="button" class="set-rail-item active" data-section="settings-terminal">
|
|
1316
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 17l6-6-6-6"/><path d="M12 19h8"/></svg>
|
|
1317
|
+
<span>Terminal & Input</span>
|
|
1318
|
+
</button>
|
|
1319
|
+
<button type="button" class="set-rail-item" data-section="settings-appearance">
|
|
1320
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M12 3a9 9 0 0 0 0 18 4.5 4.5 0 0 0 0-9 4.5 4.5 0 0 1 0-9z"/></svg>
|
|
1321
|
+
<span>Appearance</span>
|
|
1322
|
+
</button>
|
|
1323
|
+
<button type="button" class="set-rail-item" data-section="settings-layout">
|
|
1324
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></svg>
|
|
1325
|
+
<span>Header & Panels</span>
|
|
1326
|
+
</button>
|
|
1327
|
+
<button type="button" class="set-rail-item" data-section="settings-models">
|
|
1328
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3z"/><path d="M12 12l8-4.5M12 12v9M12 12L4 7.5"/></svg>
|
|
1329
|
+
<span>Models</span>
|
|
1330
|
+
</button>
|
|
1331
|
+
<button type="button" class="set-rail-item" data-section="settings-clis">
|
|
1332
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h2"/><path d="M16 3h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-2"/><circle cx="12" cy="12" r="2.5"/></svg>
|
|
1333
|
+
<span>Agents & CLIs</span>
|
|
1334
|
+
</button>
|
|
1335
|
+
<button type="button" class="set-rail-item" data-section="settings-notifications">
|
|
1336
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 8a6 6 0 1 0-12 0c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.7 21a2 2 0 0 1-3.4 0"/></svg>
|
|
1337
|
+
<span>Notifications</span>
|
|
1338
|
+
</button>
|
|
1339
|
+
<button type="button" class="set-rail-item" data-section="settings-voice">
|
|
1340
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="2" width="6" height="12" rx="3"/><path d="M5 11a7 7 0 0 0 14 0"/><path d="M12 18v4"/></svg>
|
|
1341
|
+
<span>Voice</span>
|
|
1342
|
+
</button>
|
|
1343
|
+
<button type="button" class="set-rail-item" data-section="settings-shortcuts">
|
|
1344
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="5" width="20" height="14" rx="2"/><path d="M6 9h.01M10 9h.01M14 9h.01M18 9h.01M6 13h.01M18 13h.01M9 13h6"/></svg>
|
|
1345
|
+
<span>Shortcuts</span>
|
|
1346
|
+
</button>
|
|
1347
|
+
<button type="button" class="set-rail-item" data-section="settings-system">
|
|
1348
|
+
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.6a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9c.26.6.86 1 1.51 1H21a2 2 0 0 1 0 4h-.09c-.65 0-1.25.4-1.51 1z"/></svg>
|
|
1349
|
+
<span>System</span>
|
|
1350
|
+
</button>
|
|
1351
|
+
</div>
|
|
1352
|
+
<p class="set-rail-foot">Settings marked <b>device</b> stay on this browser. The rest sync to every device.</p>
|
|
1353
|
+
</nav>
|
|
1308
1354
|
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
</
|
|
1326
|
-
</div>
|
|
1327
|
-
<
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1355
|
+
<div class="set-doc" id="appSettingsDoc">
|
|
1356
|
+
<!-- Phone only: names the section you are in and opens the jump list -->
|
|
1357
|
+
<button type="button" class="set-jump" id="appSettingsJump" aria-haspopup="menu" aria-expanded="false">
|
|
1358
|
+
<svg class="set-jump-ico" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 17l6-6-6-6"/><path d="M12 19h8"/></svg>
|
|
1359
|
+
<span class="set-jump-label">Terminal & Input</span>
|
|
1360
|
+
<svg class="set-jump-chev" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.3" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
|
|
1361
|
+
</button>
|
|
1362
|
+
<div class="set-jump-veil" id="appSettingsJumpVeil"></div>
|
|
1363
|
+
<div class="set-jump-menu" id="appSettingsJumpMenu" role="menu"></div>
|
|
1364
|
+
|
|
1365
|
+
<p class="set-empty" id="appSettingsSearchEmpty" hidden>No settings match that search.</p>
|
|
1366
|
+
|
|
1367
|
+
<!-- ══ Terminal & Input ══════════════════════════════════════ -->
|
|
1368
|
+
<section class="set-section" id="settings-terminal" data-label="Terminal & Input">
|
|
1369
|
+
<div class="set-section-head">
|
|
1370
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 17l6-6-6-6"/><path d="M12 19h8"/></svg>
|
|
1371
|
+
<h2>Terminal & Input</h2>
|
|
1372
|
+
</div>
|
|
1373
|
+
<p class="set-section-blurb">How keystrokes reach the agent, and how the terminal draws.</p>
|
|
1374
|
+
|
|
1375
|
+
<div class="set-group">
|
|
1376
|
+
<div class="set-group-head"><h4>Typing</h4><span class="set-scope">device</span></div>
|
|
1377
|
+
<div class="set-group-body">
|
|
1378
|
+
<div class="set-row" data-search="local echo typing latency mobile">
|
|
1379
|
+
<div class="set-row-text">
|
|
1380
|
+
<span class="set-row-label">Local Echo</span>
|
|
1381
|
+
<span class="set-row-desc">Paint keystrokes instantly instead of waiting for the round trip. Recommended on phones and high-latency links.</span>
|
|
1382
|
+
</div>
|
|
1383
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsLocalEcho"><span class="slider"></span></label>
|
|
1384
|
+
</div>
|
|
1385
|
+
<div class="set-row" data-search="cjk input ime chinese japanese korean">
|
|
1386
|
+
<div class="set-row-text">
|
|
1387
|
+
<span class="set-row-label">CJK Input</span>
|
|
1388
|
+
<span class="set-row-desc">Dedicated IME field for Chinese, Japanese and Korean composition.</span>
|
|
1389
|
+
</div>
|
|
1390
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsCjkInput"><span class="slider"></span></label>
|
|
1391
|
+
</div>
|
|
1392
|
+
<div class="set-row" data-search="extended keyboard bar tab esc arrows phone">
|
|
1393
|
+
<div class="set-row-text">
|
|
1394
|
+
<span class="set-row-label">Extended Keyboard Bar <span class="set-tag">phone</span></span>
|
|
1395
|
+
<span class="set-row-desc">Extra phone keys: Tab, Shift+Tab, Esc, arrows, Ctrl+O.</span>
|
|
1396
|
+
</div>
|
|
1397
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsExtendedKeyboardBar"><span class="slider"></span></label>
|
|
1398
|
+
</div>
|
|
1331
1399
|
</div>
|
|
1332
|
-
<select id="appSettingsEntranceAnim" class="form-select settings-inline-select">
|
|
1333
|
-
<option value="legacy">Off (default)</option>
|
|
1334
|
-
<option value="terminal">Terminal (CRT)</option>
|
|
1335
|
-
<option value="beamdown">Beam down</option>
|
|
1336
|
-
<option value="quiet">Quiet</option>
|
|
1337
|
-
<option value="playful">Playful</option>
|
|
1338
|
-
<option value="custom">Custom (set in the lab)</option>
|
|
1339
|
-
</select>
|
|
1340
|
-
</div>
|
|
1341
|
-
<div class="settings-item" id="appSettingsWebglRendererItem" title="Use the GPU-accelerated WebGL terminal renderer (desktop only). Turn off to force the DOM renderer if you hit GPU glitches. Codeman also auto-falls-back to the DOM renderer after repeated GPU stalls.">
|
|
1342
|
-
<span class="settings-item-label">WebGL Renderer</span>
|
|
1343
|
-
<label class="switch switch-sm">
|
|
1344
|
-
<input type="checkbox" id="appSettingsWebglRenderer">
|
|
1345
|
-
<span class="slider"></span>
|
|
1346
|
-
</label>
|
|
1347
1400
|
</div>
|
|
1348
|
-
|
|
1349
|
-
<div class="
|
|
1350
|
-
|
|
1351
|
-
<div class="
|
|
1352
|
-
<
|
|
1353
|
-
|
|
1401
|
+
|
|
1402
|
+
<div class="set-group">
|
|
1403
|
+
<div class="set-group-head"><h4>Scrolling & rendering</h4></div>
|
|
1404
|
+
<div class="set-group-body">
|
|
1405
|
+
<div class="set-row" data-search="wheel scroll local history scrollback transcript">
|
|
1406
|
+
<div class="set-row-text">
|
|
1407
|
+
<span class="set-row-label">Wheel Scrolls Local History <span class="set-scope">device</span></span>
|
|
1408
|
+
<span class="set-row-desc">Plain wheel or two-finger swipe pages the terminal's own scrollback instead of the CLI transcript. Shift+wheel always reaches local scrollback.</span>
|
|
1409
|
+
</div>
|
|
1410
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsTerminalWheelLocal"><span class="slider"></span></label>
|
|
1411
|
+
</div>
|
|
1412
|
+
<div class="set-row" id="appSettingsWebglRendererItem" data-search="webgl renderer gpu terminal">
|
|
1413
|
+
<div class="set-row-text">
|
|
1414
|
+
<span class="set-row-label">WebGL Renderer <span class="set-tag">desktop</span> <span class="set-scope">device</span></span>
|
|
1415
|
+
<span class="set-row-desc">GPU-accelerated terminal drawing. Codeman falls back to the DOM renderer after repeated GPU stalls.</span>
|
|
1416
|
+
</div>
|
|
1417
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsWebglRenderer"><span class="slider"></span></label>
|
|
1418
|
+
</div>
|
|
1419
|
+
<div class="set-row" id="appSettingsGestureControlItem" data-search="gesture control camera hand tracking">
|
|
1420
|
+
<div class="set-row-text">
|
|
1421
|
+
<span class="set-row-label">Gesture Control <span class="set-tag set-tag-beta">beta</span> <span class="set-scope">synced</span></span>
|
|
1422
|
+
<span class="set-row-desc">Camera hand-tracking overlay. Applied on reload; the instance must run with CODEMAN_GESTURE=1.</span>
|
|
1423
|
+
</div>
|
|
1424
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsGestureControl"><span class="slider"></span></label>
|
|
1425
|
+
</div>
|
|
1354
1426
|
</div>
|
|
1355
|
-
<label class="switch switch-sm">
|
|
1356
|
-
<input type="checkbox" id="appSettingsTerminalWheelLocal">
|
|
1357
|
-
<span class="slider"></span>
|
|
1358
|
-
</label>
|
|
1359
1427
|
</div>
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1428
|
+
</section>
|
|
1429
|
+
|
|
1430
|
+
<!-- ══ Appearance ═══════════════════════════════════════════════ -->
|
|
1431
|
+
<section class="set-section" id="settings-appearance" data-label="Appearance">
|
|
1432
|
+
<div class="set-section-head">
|
|
1433
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M12 3a9 9 0 0 0 0 18 4.5 4.5 0 0 0 0-9 4.5 4.5 0 0 1 0-9z"/></svg>
|
|
1434
|
+
<h2>Appearance</h2>
|
|
1435
|
+
</div>
|
|
1436
|
+
<p class="set-section-blurb">Theme, motion, and what this install calls itself.</p>
|
|
1437
|
+
|
|
1438
|
+
<div class="set-group">
|
|
1439
|
+
<div class="set-group-head"><h4>Theme</h4><span class="set-scope">device</span></div>
|
|
1440
|
+
<div class="set-group-body">
|
|
1441
|
+
<div class="set-row has-field" data-search="skin theme palette colors dark light">
|
|
1442
|
+
<div class="set-row-text">
|
|
1443
|
+
<span class="set-row-label">Skin</span>
|
|
1444
|
+
<span class="set-row-desc">Palette for the terminal and the UI.</span>
|
|
1445
|
+
</div>
|
|
1446
|
+
<select id="appSettingsSkin" class="set-select">
|
|
1447
|
+
<optgroup label="Light">
|
|
1448
|
+
<option value="paper-gray">Paper Gray</option>
|
|
1449
|
+
<option value="solarized-light">Solarized Light</option>
|
|
1450
|
+
<option value="catppuccin-latte">Catppuccin Latte</option>
|
|
1451
|
+
<option value="rose-pine-dawn">Rosé Pine Dawn</option>
|
|
1452
|
+
</optgroup>
|
|
1453
|
+
<optgroup label="Dark">
|
|
1454
|
+
<option value="daylight-blue">Daylight Blue</option>
|
|
1455
|
+
<option value="daylight-green">Daylight Green</option>
|
|
1456
|
+
<option value="og">OG Codeman</option>
|
|
1457
|
+
</optgroup>
|
|
1458
|
+
</select>
|
|
1459
|
+
</div>
|
|
1460
|
+
<div class="set-row has-field" data-search="entrance animations motion tabs windows">
|
|
1461
|
+
<div class="set-row-text">
|
|
1462
|
+
<span class="set-row-label">Entrance Animations</span>
|
|
1463
|
+
<span class="set-row-desc">How new tabs, panes and agent windows arrive. Add ?animlab=1 to the URL for per-surface control.</span>
|
|
1464
|
+
</div>
|
|
1465
|
+
<select id="appSettingsEntranceAnim" class="set-select">
|
|
1466
|
+
<option value="legacy">Off (default)</option>
|
|
1467
|
+
<option value="terminal">Terminal (CRT)</option>
|
|
1468
|
+
<option value="beamdown">Beam down</option>
|
|
1469
|
+
<option value="quiet">Quiet</option>
|
|
1470
|
+
<option value="playful">Playful</option>
|
|
1471
|
+
<option value="custom">Custom (set in the lab)</option>
|
|
1472
|
+
</select>
|
|
1473
|
+
</div>
|
|
1364
1474
|
</div>
|
|
1365
|
-
<label class="switch switch-sm">
|
|
1366
|
-
<input type="checkbox" id="appSettingsLocalEcho">
|
|
1367
|
-
<span class="slider"></span>
|
|
1368
|
-
</label>
|
|
1369
1475
|
</div>
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1476
|
+
|
|
1477
|
+
<div class="set-group">
|
|
1478
|
+
<div class="set-group-head"><h4>Identity</h4></div>
|
|
1479
|
+
<div class="set-group-body">
|
|
1480
|
+
<div class="set-row has-field" data-search="display name branding title">
|
|
1481
|
+
<div class="set-row-text">
|
|
1482
|
+
<span class="set-row-label">Display Name <span class="set-scope">synced</span></span>
|
|
1483
|
+
<span class="set-row-desc">Shown in the browser UI and the window title. Unicode is fine.</span>
|
|
1484
|
+
</div>
|
|
1485
|
+
<input type="text" id="appSettingsDisplayName" class="set-input" maxlength="40" placeholder="Codeman" autocomplete="off">
|
|
1486
|
+
</div>
|
|
1487
|
+
<div class="set-row has-field" data-search="language interface chinese english">
|
|
1488
|
+
<div class="set-row-text">
|
|
1489
|
+
<span class="set-row-label">Interface Language <span class="set-scope">device</span></span>
|
|
1490
|
+
<span class="set-row-desc">Dialogs and status messages use the same language.</span>
|
|
1491
|
+
</div>
|
|
1492
|
+
<select id="appSettingsLanguage" class="set-select">
|
|
1493
|
+
<option value="en">English</option>
|
|
1494
|
+
<option value="zh-CN">简体中文</option>
|
|
1495
|
+
</select>
|
|
1496
|
+
</div>
|
|
1374
1497
|
</div>
|
|
1375
|
-
<label class="switch switch-sm">
|
|
1376
|
-
<input type="checkbox" id="appSettingsCjkInput">
|
|
1377
|
-
<span class="slider"></span>
|
|
1378
|
-
</label>
|
|
1379
1498
|
</div>
|
|
1380
1499
|
|
|
1381
|
-
<div class="
|
|
1382
|
-
<div class="
|
|
1383
|
-
|
|
1384
|
-
<
|
|
1500
|
+
<div class="set-group">
|
|
1501
|
+
<div class="set-group-head"><h4>Tabs</h4><span class="set-scope">device</span></div>
|
|
1502
|
+
<div class="set-group-body">
|
|
1503
|
+
<div class="set-row" data-search="tall tabs folder name two rows">
|
|
1504
|
+
<div class="set-row-text">
|
|
1505
|
+
<span class="set-row-label">Tall Tabs</span>
|
|
1506
|
+
<span class="set-row-desc">Show the folder under the session name and let the tab bar wrap.</span>
|
|
1507
|
+
</div>
|
|
1508
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsTabTwoRows"><span class="slider"></span></label>
|
|
1509
|
+
</div>
|
|
1510
|
+
<div class="set-row" data-search="pop out detach tab window">
|
|
1511
|
+
<div class="set-row-text">
|
|
1512
|
+
<span class="set-row-label">Pop-out Button on Tabs</span>
|
|
1513
|
+
<span class="set-row-desc">Open a session in its own window from the tab.</span>
|
|
1514
|
+
</div>
|
|
1515
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsShowTabDetachButton"><span class="slider"></span></label>
|
|
1516
|
+
</div>
|
|
1517
|
+
<div class="set-row" id="appSettingsMobileOverviewItem" data-search="overview home screen phone logo">
|
|
1518
|
+
<div class="set-row-text">
|
|
1519
|
+
<span class="set-row-label">Overview Home Screen <span class="set-tag">phone</span></span>
|
|
1520
|
+
<span class="set-row-desc">The C logo opens the session overview instead of the welcome screen.</span>
|
|
1521
|
+
</div>
|
|
1522
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsMobileOverview" checked><span class="slider"></span></label>
|
|
1523
|
+
</div>
|
|
1385
1524
|
</div>
|
|
1386
|
-
<label class="switch switch-sm">
|
|
1387
|
-
<input type="checkbox" id="appSettingsExtendedKeyboardBar">
|
|
1388
|
-
<span class="slider"></span>
|
|
1389
|
-
</label>
|
|
1390
1525
|
</div>
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1526
|
+
</section>
|
|
1527
|
+
|
|
1528
|
+
<!-- ══ Header & Panels ═══════════════════════════════════════ -->
|
|
1529
|
+
<section class="set-section" id="settings-layout" data-label="Header & Panels">
|
|
1530
|
+
<div class="set-section-head">
|
|
1531
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></svg>
|
|
1532
|
+
<h2>Header & Panels</h2>
|
|
1533
|
+
</div>
|
|
1534
|
+
<p class="set-section-blurb">Pick the buttons and panels you actually use. Everything else stays out of the way.</p>
|
|
1535
|
+
|
|
1536
|
+
<div class="set-group">
|
|
1537
|
+
<div class="set-group-head"><h4>Header buttons</h4><span class="set-scope">device</span></div>
|
|
1538
|
+
<p class="set-group-hint">Tap to show a control in the header. Multi-monitor is the one entry here that syncs across devices.</p>
|
|
1539
|
+
<div class="set-group-body">
|
|
1540
|
+
<div class="set-chips" data-search="header buttons plan usage font stats lifecycle response file viewer attachments monitor session away cron redraw">
|
|
1541
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowPlanUsageLimits"><span>Plan Usage</span></label>
|
|
1542
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowFontControls"><span>Font Size</span></label>
|
|
1543
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowSystemStats" checked><span>System Stats</span></label>
|
|
1544
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowLifecycleLog"><span>Lifecycle Log</span></label>
|
|
1545
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowResponseViewer"><span>Response Viewer</span></label>
|
|
1546
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowFileViewerButton"><span>File Viewer</span></label>
|
|
1547
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowAttachmentsButton"><span>Attachments</span></label>
|
|
1548
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowMultiMonitorButton"><span>Multi-monitor</span></label>
|
|
1549
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowSessionButton"><span>Session Manager</span></label>
|
|
1550
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowAwayDigestButton"><span>Away Digest</span></label>
|
|
1551
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowCronButton"><span>Cron</span></label>
|
|
1552
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowRedrawButton"><span>Redraw Terminal</span></label>
|
|
1553
|
+
</div>
|
|
1395
1554
|
</div>
|
|
1396
|
-
<label class="switch switch-sm">
|
|
1397
|
-
<input type="checkbox" id="appSettingsGestureControl">
|
|
1398
|
-
<span class="slider"></span>
|
|
1399
|
-
</label>
|
|
1400
1555
|
</div>
|
|
1401
1556
|
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
<span class="settings-item-label">Font Controls</span>
|
|
1413
|
-
<label class="switch switch-sm">
|
|
1414
|
-
<input type="checkbox" id="appSettingsShowFontControls">
|
|
1415
|
-
<span class="slider"></span>
|
|
1416
|
-
</label>
|
|
1417
|
-
</div>
|
|
1418
|
-
<div class="settings-item" title="Show CPU and memory usage in header">
|
|
1419
|
-
<span class="settings-item-label">System Stats</span>
|
|
1420
|
-
<label class="switch switch-sm">
|
|
1421
|
-
<input type="checkbox" id="appSettingsShowSystemStats" checked>
|
|
1422
|
-
<span class="slider"></span>
|
|
1423
|
-
</label>
|
|
1424
|
-
</div>
|
|
1425
|
-
<div class="settings-item" title="Show session lifecycle log button in header">
|
|
1426
|
-
<span class="settings-item-label">Lifecycle Log</span>
|
|
1427
|
-
<label class="switch switch-sm">
|
|
1428
|
-
<input type="checkbox" id="appSettingsShowLifecycleLog">
|
|
1429
|
-
<span class="slider"></span>
|
|
1430
|
-
</label>
|
|
1431
|
-
</div>
|
|
1432
|
-
<div class="settings-item" title="Show the response viewer (eye) button in header">
|
|
1433
|
-
<span class="settings-item-label">Response Viewer</span>
|
|
1434
|
-
<label class="switch switch-sm">
|
|
1435
|
-
<input type="checkbox" id="appSettingsShowResponseViewer">
|
|
1436
|
-
<span class="slider"></span>
|
|
1437
|
-
</label>
|
|
1438
|
-
</div>
|
|
1439
|
-
<div class="settings-item" title="Show the file viewer button in header (opens the file browser panel for the active session)">
|
|
1440
|
-
<span class="settings-item-label">File Viewer</span>
|
|
1441
|
-
<label class="switch switch-sm">
|
|
1442
|
-
<input type="checkbox" id="appSettingsShowFileViewerButton">
|
|
1443
|
-
<span class="slider"></span>
|
|
1444
|
-
</label>
|
|
1445
|
-
</div>
|
|
1446
|
-
<div class="settings-item" title="Show the attachments button in header (opens the attachment history drawer)">
|
|
1447
|
-
<span class="settings-item-label">Attachments Button</span>
|
|
1448
|
-
<label class="switch switch-sm">
|
|
1449
|
-
<input type="checkbox" id="appSettingsShowAttachmentsButton">
|
|
1450
|
-
<span class="slider"></span>
|
|
1451
|
-
</label>
|
|
1452
|
-
</div>
|
|
1453
|
-
<div class="settings-item" title="Show the multi-monitor button in the header (opens Codeman spanned across all displays)">
|
|
1454
|
-
<span class="settings-item-label">Multi-monitor Button</span>
|
|
1455
|
-
<label class="switch switch-sm">
|
|
1456
|
-
<input type="checkbox" id="appSettingsShowMultiMonitorButton">
|
|
1457
|
-
<span class="slider"></span>
|
|
1458
|
-
</label>
|
|
1459
|
-
</div>
|
|
1460
|
-
<div class="settings-item" title="Show the session manager button in the header (opens the session manager — sessions also stay reachable via the Ctrl+K palette)">
|
|
1461
|
-
<span class="settings-item-label">Session Manager Button</span>
|
|
1462
|
-
<label class="switch switch-sm">
|
|
1463
|
-
<input type="checkbox" id="appSettingsShowSessionButton">
|
|
1464
|
-
<span class="slider"></span>
|
|
1465
|
-
</label>
|
|
1466
|
-
</div>
|
|
1467
|
-
<div class="settings-item" title="Show the away digest button in the header (opens the 'what happened while you were away' summary)">
|
|
1468
|
-
<span class="settings-item-label">Away Digest Button</span>
|
|
1469
|
-
<label class="switch switch-sm">
|
|
1470
|
-
<input type="checkbox" id="appSettingsShowAwayDigestButton">
|
|
1471
|
-
<span class="slider"></span>
|
|
1472
|
-
</label>
|
|
1473
|
-
</div>
|
|
1474
|
-
<div class="settings-item" title="Show the Cron button in the footer toolbar (opens the cron jobs manager)">
|
|
1475
|
-
<span class="settings-item-label">Cron Button</span>
|
|
1476
|
-
<label class="switch switch-sm">
|
|
1477
|
-
<input type="checkbox" id="appSettingsShowCronButton">
|
|
1478
|
-
<span class="slider"></span>
|
|
1479
|
-
</label>
|
|
1480
|
-
</div>
|
|
1481
|
-
<div class="settings-item" title="Show a terminal redraw button in the header — refit the terminal to the current screen size (useful when switching between devices)">
|
|
1482
|
-
<span class="settings-item-label">Redraw Terminal Button</span>
|
|
1483
|
-
<label class="switch switch-sm">
|
|
1484
|
-
<input type="checkbox" id="appSettingsShowRedrawButton">
|
|
1485
|
-
<span class="slider"></span>
|
|
1486
|
-
</label>
|
|
1557
|
+
<div class="set-group">
|
|
1558
|
+
<div class="set-group-head"><h4>Panels</h4><span class="set-scope">device</span></div>
|
|
1559
|
+
<div class="set-group-body">
|
|
1560
|
+
<div class="set-chips" data-search="panels monitor project insights file browser subagents">
|
|
1561
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowMonitor" checked><span>Monitor</span></label>
|
|
1562
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowProjectInsights"><span>Project Insights</span></label>
|
|
1563
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowFileBrowser"><span>File Browser</span></label>
|
|
1564
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowSubagents"><span>Subagents</span></label>
|
|
1565
|
+
</div>
|
|
1566
|
+
</div>
|
|
1487
1567
|
</div>
|
|
1488
1568
|
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
<
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1569
|
+
<div class="set-group">
|
|
1570
|
+
<div class="set-group-head"><h4>Cross-session features</h4><span class="set-scope">synced</span></div>
|
|
1571
|
+
<p class="set-group-hint">Approvals answers prompts from any session in one place. Read My Mind captures your prompts and predicts the next one on demand; both cost tokens and never auto-send.</p>
|
|
1572
|
+
<div class="set-group-body">
|
|
1573
|
+
<div class="set-chips" data-search="approvals inbox read my mind ultracode agents floating windows workflow">
|
|
1574
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsApprovalsInbox"><span>Approvals Inbox</span></label>
|
|
1575
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsReadMyMind"><span>Read My Mind</span></label>
|
|
1576
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsShowUltracodeAgents"><span>Ultracode Agents</span></label>
|
|
1577
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsUltracodeFloatingWindows"><span>Ultracode Windows</span></label>
|
|
1578
|
+
</div>
|
|
1579
|
+
</div>
|
|
1497
1580
|
</div>
|
|
1498
1581
|
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1582
|
+
<div class="set-group">
|
|
1583
|
+
<div class="set-group-head"><h4>Subagent windows</h4></div>
|
|
1584
|
+
<div class="set-group-body">
|
|
1585
|
+
<div class="set-row" data-search="subagent tracking background agents">
|
|
1586
|
+
<div class="set-row-text">
|
|
1587
|
+
<span class="set-row-label">Track background agents <span class="set-scope">synced</span></span>
|
|
1588
|
+
<span class="set-row-desc">Follow Claude Code subagents in real time.</span>
|
|
1589
|
+
</div>
|
|
1590
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsSubagentTracking" checked><span class="slider"></span></label>
|
|
1591
|
+
</div>
|
|
1592
|
+
<div class="set-row" data-search="subagent active tab only windows">
|
|
1593
|
+
<div class="set-row-text">
|
|
1594
|
+
<span class="set-row-label">Active tab only <span class="set-scope">device</span></span>
|
|
1595
|
+
<span class="set-row-desc">Only show agent windows for the selected session.</span>
|
|
1596
|
+
</div>
|
|
1597
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsSubagentActiveTabOnly" checked><span class="slider"></span></label>
|
|
1598
|
+
</div>
|
|
1599
|
+
</div>
|
|
1507
1600
|
</div>
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1601
|
+
</section>
|
|
1602
|
+
|
|
1603
|
+
<!-- ══ Models ═══════════════════════════════════════════════════ -->
|
|
1604
|
+
<section class="set-section" id="settings-models" data-label="Models">
|
|
1605
|
+
<div class="set-section-head">
|
|
1606
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3z"/><path d="M12 12l8-4.5M12 12v9M12 12L4 7.5"/></svg>
|
|
1607
|
+
<h2>Models</h2>
|
|
1608
|
+
</div>
|
|
1609
|
+
<p class="set-section-blurb">One place for what new sessions run on, and what background tasks are routed to.</p>
|
|
1610
|
+
|
|
1611
|
+
<div class="set-group">
|
|
1612
|
+
<div class="set-group-head"><h4>New Claude sessions</h4><span class="set-scope">synced</span></div>
|
|
1613
|
+
<p class="set-group-hint">A soft default, pinned via the case's .claude/settings.local.json. /model still switches inside a running session.</p>
|
|
1614
|
+
<div class="set-group-body">
|
|
1615
|
+
<!-- Cards are built from the select below by settings-ui.js, which keeps
|
|
1616
|
+
the select as the single source of truth for load/save. -->
|
|
1617
|
+
<div class="set-modelgrid" id="appSettingsModelCards" role="radiogroup" aria-label="Model for new Claude sessions" data-search="model opus sonnet haiku fable claude"></div>
|
|
1618
|
+
<select id="appSettingsClaudeModel" class="set-select set-field-hidden" aria-hidden="true" tabindex="-1">
|
|
1619
|
+
<option value="" data-meta="Whatever the CLI picks">Default (CLI setting)</option>
|
|
1620
|
+
<option value="claude-fable-5" data-meta="Most powerful" data-base="claude-fable-5" data-ctx="1">Fable 5</option>
|
|
1621
|
+
<option value="claude-fable-5[1m]" data-variant="1m" data-base="claude-fable-5">Fable 5 (1M context)</option>
|
|
1622
|
+
<option value="opus" data-meta="Most capable" data-base="opus" data-ctx="1">Opus</option>
|
|
1623
|
+
<option value="opus[1m]" data-variant="1m" data-base="opus">Opus (1M context)</option>
|
|
1624
|
+
<option value="claude-opus-4-6" data-meta="Previous generation" data-base="claude-opus-4-6" data-ctx="1">Opus 4.6</option>
|
|
1625
|
+
<option value="claude-opus-4-6[1m]" data-variant="1m" data-base="claude-opus-4-6">Opus 4.6 (1M context)</option>
|
|
1626
|
+
<option value="sonnet" data-meta="Balanced" data-base="sonnet">Sonnet</option>
|
|
1627
|
+
<option value="haiku" data-meta="Fast & cheap" data-base="haiku">Haiku</option>
|
|
1628
|
+
</select>
|
|
1629
|
+
<div class="set-row" id="appSettingsContextRow" data-search="1m context window opus long">
|
|
1630
|
+
<div class="set-row-text">
|
|
1631
|
+
<span class="set-row-label">1M context window</span>
|
|
1632
|
+
<span class="set-row-desc" id="appSettingsContextDesc">Available for Fable 5, Opus and Opus 4.6.</span>
|
|
1633
|
+
</div>
|
|
1634
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsOpusContext1m"><span class="slider"></span></label>
|
|
1635
|
+
</div>
|
|
1636
|
+
<div class="set-row set-row-block" data-search="thinking effort ultracode xhigh max reasoning">
|
|
1637
|
+
<div class="set-row-text">
|
|
1638
|
+
<span class="set-row-label">Thinking effort</span>
|
|
1639
|
+
<span class="set-row-desc">Switchable in-session with /effort. Ultracode runs multi-agent workflows.</span>
|
|
1640
|
+
</div>
|
|
1641
|
+
<div class="set-segment" id="appSettingsEffortSegment" role="radiogroup" aria-label="Thinking effort"></div>
|
|
1642
|
+
<select id="appSettingsThinkingEffort" class="set-select set-field-hidden" aria-hidden="true" tabindex="-1">
|
|
1643
|
+
<option value="">Default</option>
|
|
1644
|
+
<option value="low">Low</option>
|
|
1645
|
+
<option value="medium">Medium</option>
|
|
1646
|
+
<option value="high">High</option>
|
|
1647
|
+
<option value="xhigh">XHigh</option>
|
|
1648
|
+
<option value="max">Max</option>
|
|
1649
|
+
<option value="ultracode">Ultracode</option>
|
|
1650
|
+
</select>
|
|
1651
|
+
</div>
|
|
1652
|
+
</div>
|
|
1514
1653
|
</div>
|
|
1515
1654
|
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
</
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1655
|
+
<div class="set-group set-group-advanced" id="appSettingsTaskRouting">
|
|
1656
|
+
<div class="set-group-head set-group-head-toggle" role="button" tabindex="0" aria-expanded="false">
|
|
1657
|
+
<h4>Task routing</h4>
|
|
1658
|
+
<span class="set-scope">synced</span>
|
|
1659
|
+
<span class="set-adv">Advanced
|
|
1660
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><path d="M6 9l6 6 6-6"/></svg>
|
|
1661
|
+
</span>
|
|
1662
|
+
</div>
|
|
1663
|
+
<p class="set-group-hint">Models for orchestrator and background work. Leave on the default unless you are tuning cost.</p>
|
|
1664
|
+
<div class="set-group-body">
|
|
1665
|
+
<div class="set-row has-field" data-search="default model tasks orchestrator">
|
|
1666
|
+
<div class="set-row-text">
|
|
1667
|
+
<span class="set-row-label">Default for tasks</span>
|
|
1668
|
+
<span class="set-row-desc">Used for execution tasks. Optimizer suggestions stay advisory.</span>
|
|
1669
|
+
</div>
|
|
1670
|
+
<select id="appSettingsDefaultModel" class="set-select">
|
|
1671
|
+
<option value="">Default (CLI default)</option>
|
|
1672
|
+
<option value="claude-fable-5">Fable 5 (Most powerful)</option>
|
|
1673
|
+
<option value="opus">Opus (Most capable)</option>
|
|
1674
|
+
<option value="sonnet">Sonnet (Balanced)</option>
|
|
1675
|
+
<option value="haiku">Haiku (Fast & cheap)</option>
|
|
1676
|
+
</select>
|
|
1677
|
+
</div>
|
|
1678
|
+
<div class="set-minigrid" data-search="explore implement test review agent type overrides">
|
|
1679
|
+
<div class="set-mini">
|
|
1680
|
+
<span class="set-mini-label">Explore</span>
|
|
1681
|
+
<select id="appSettingsModelExplore" class="set-select">
|
|
1682
|
+
<option value="">Use default</option>
|
|
1683
|
+
<option value="haiku">Haiku</option>
|
|
1684
|
+
<option value="sonnet">Sonnet</option>
|
|
1685
|
+
<option value="opus">Opus</option>
|
|
1686
|
+
<option value="claude-fable-5">Fable 5</option>
|
|
1687
|
+
</select>
|
|
1688
|
+
</div>
|
|
1689
|
+
<div class="set-mini">
|
|
1690
|
+
<span class="set-mini-label">Implement</span>
|
|
1691
|
+
<select id="appSettingsModelImplement" class="set-select">
|
|
1692
|
+
<option value="">Use default</option>
|
|
1693
|
+
<option value="haiku">Haiku</option>
|
|
1694
|
+
<option value="sonnet">Sonnet</option>
|
|
1695
|
+
<option value="opus">Opus</option>
|
|
1696
|
+
<option value="claude-fable-5">Fable 5</option>
|
|
1697
|
+
</select>
|
|
1698
|
+
</div>
|
|
1699
|
+
<div class="set-mini">
|
|
1700
|
+
<span class="set-mini-label">Test</span>
|
|
1701
|
+
<select id="appSettingsModelTest" class="set-select">
|
|
1702
|
+
<option value="">Use default</option>
|
|
1703
|
+
<option value="haiku">Haiku</option>
|
|
1704
|
+
<option value="sonnet">Sonnet</option>
|
|
1705
|
+
<option value="opus">Opus</option>
|
|
1706
|
+
<option value="claude-fable-5">Fable 5</option>
|
|
1707
|
+
</select>
|
|
1708
|
+
</div>
|
|
1709
|
+
<div class="set-mini">
|
|
1710
|
+
<span class="set-mini-label">Review</span>
|
|
1711
|
+
<select id="appSettingsModelReview" class="set-select">
|
|
1712
|
+
<option value="">Use default</option>
|
|
1713
|
+
<option value="haiku">Haiku</option>
|
|
1714
|
+
<option value="sonnet">Sonnet</option>
|
|
1715
|
+
<option value="opus">Opus</option>
|
|
1716
|
+
<option value="claude-fable-5">Fable 5</option>
|
|
1717
|
+
</select>
|
|
1718
|
+
</div>
|
|
1719
|
+
</div>
|
|
1720
|
+
<div class="set-row" data-search="optimizer recommendations advisory">
|
|
1721
|
+
<div class="set-row-text">
|
|
1722
|
+
<span class="set-row-label">Show optimizer recommendations</span>
|
|
1723
|
+
<span class="set-row-desc">Advisory only. Never overrides your choice.</span>
|
|
1724
|
+
</div>
|
|
1725
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsShowModelRecommendations" checked><span class="slider"></span></label>
|
|
1726
|
+
</div>
|
|
1727
|
+
</div>
|
|
1573
1728
|
</div>
|
|
1729
|
+
</section>
|
|
1574
1730
|
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
<div class="
|
|
1578
|
-
<
|
|
1579
|
-
<
|
|
1580
|
-
<input type="checkbox" id="appSettingsSubagentTracking" checked>
|
|
1581
|
-
<span class="slider"></span>
|
|
1582
|
-
</label>
|
|
1583
|
-
</div>
|
|
1584
|
-
<div class="settings-item" title="Only show subagent windows when their parent tab is selected">
|
|
1585
|
-
<span class="settings-item-label">Active Tab Only</span>
|
|
1586
|
-
<label class="switch switch-sm">
|
|
1587
|
-
<input type="checkbox" id="appSettingsSubagentActiveTabOnly" checked>
|
|
1588
|
-
<span class="slider"></span>
|
|
1589
|
-
</label>
|
|
1731
|
+
<!-- ══ Agents & CLIs ═════════════════════════════════════════ -->
|
|
1732
|
+
<section class="set-section" id="settings-clis" data-label="Agents & CLIs">
|
|
1733
|
+
<div class="set-section-head">
|
|
1734
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h2"/><path d="M16 3h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-2"/><circle cx="12" cy="12" r="2.5"/></svg>
|
|
1735
|
+
<h2>Agents & CLIs</h2>
|
|
1590
1736
|
</div>
|
|
1737
|
+
<p class="set-section-blurb">Launch flags for the CLIs Codeman spawns.</p>
|
|
1591
1738
|
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1739
|
+
<div class="set-group">
|
|
1740
|
+
<div class="set-group-head"><h4>Claude</h4><span class="set-scope">synced</span></div>
|
|
1741
|
+
<div class="set-group-body">
|
|
1742
|
+
<div class="set-row has-field" data-search="startup mode permissions auto allowed tools">
|
|
1743
|
+
<div class="set-row-text">
|
|
1744
|
+
<span class="set-row-label">Startup Mode</span>
|
|
1745
|
+
<span class="set-row-desc">How the CLI is launched in new sessions. Auto Mode runs without routine prompts behind a background safety classifier.</span>
|
|
1746
|
+
</div>
|
|
1747
|
+
<select id="appSettingsClaudeMode" class="set-select">
|
|
1748
|
+
<option value="dangerously-skip-permissions">Skip Permissions (default)</option>
|
|
1749
|
+
<option value="auto">Auto (classifier-guarded, low prompts)</option>
|
|
1750
|
+
<option value="normal">Normal (with prompts)</option>
|
|
1751
|
+
<option value="allowedTools">Allowed Tools Only</option>
|
|
1752
|
+
</select>
|
|
1753
|
+
</div>
|
|
1754
|
+
<div class="set-row has-field" id="allowedToolsRow" style="display: none;" data-search="allowed tools list">
|
|
1755
|
+
<div class="set-row-text">
|
|
1756
|
+
<span class="set-row-label">Allowed Tools</span>
|
|
1757
|
+
<span class="set-row-desc">Comma-separated list of tools to allow.</span>
|
|
1758
|
+
</div>
|
|
1759
|
+
<input type="text" id="appSettingsAllowedTools" class="set-input" placeholder="Read,Glob,Grep,Bash">
|
|
1760
|
+
</div>
|
|
1761
|
+
<div class="set-row" data-search="ralph todo tracker loop">
|
|
1762
|
+
<div class="set-row-text">
|
|
1763
|
+
<span class="set-row-label">Ralph / Todo Tracker</span>
|
|
1764
|
+
<span class="set-row-desc">Auto-enable for new sessions. Otherwise it enables itself on Ralph pattern detection.</span>
|
|
1765
|
+
</div>
|
|
1766
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsRalphEnabled"><span class="slider"></span></label>
|
|
1767
|
+
</div>
|
|
1768
|
+
<div class="set-row" data-search="agent teams experimental">
|
|
1769
|
+
<div class="set-row-text">
|
|
1770
|
+
<span class="set-row-label">Agent Teams</span>
|
|
1771
|
+
<span class="set-row-desc">Experimental multi-agent teams for all new Claude sessions.</span>
|
|
1772
|
+
</div>
|
|
1773
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsAgentTeams"><span class="slider"></span></label>
|
|
1774
|
+
</div>
|
|
1775
|
+
<div class="set-row" data-search="agent skill codeman api workers">
|
|
1776
|
+
<div class="set-row-text">
|
|
1777
|
+
<span class="set-row-label">Codeman Agent Skill</span>
|
|
1778
|
+
<span class="set-row-desc">Let new sessions start workers, send prompts and wait for results over the API.</span>
|
|
1779
|
+
</div>
|
|
1780
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsAgentSkill"><span class="slider"></span></label>
|
|
1781
|
+
</div>
|
|
1782
|
+
<div class="set-row" data-search="remote auto reconnect ssh">
|
|
1783
|
+
<div class="set-row-text">
|
|
1784
|
+
<span class="set-row-label">Remote auto-reconnect</span>
|
|
1785
|
+
<span class="set-row-desc">Reattach remote SSH sessions to their durable tmux after a dropped link.</span>
|
|
1786
|
+
</div>
|
|
1787
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsRemoteAutoReconnect"><span class="slider"></span></label>
|
|
1788
|
+
</div>
|
|
1789
|
+
<div class="set-row" data-search="nice priority cpu">
|
|
1790
|
+
<div class="set-row-text">
|
|
1791
|
+
<span class="set-row-label">Nice priority</span>
|
|
1792
|
+
<span class="set-row-desc">Lower the CPU priority of new sessions to reduce system impact.</span>
|
|
1793
|
+
</div>
|
|
1794
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsNiceEnabled"><span class="slider"></span></label>
|
|
1795
|
+
</div>
|
|
1796
|
+
<div class="set-row" id="niceValueRow" data-search="nice value priority number">
|
|
1797
|
+
<div class="set-row-text">
|
|
1798
|
+
<span class="set-row-label">Nice value</span>
|
|
1799
|
+
<span class="set-row-desc">-20 to 19. Higher means lower priority. Default 10.</span>
|
|
1800
|
+
</div>
|
|
1801
|
+
<input type="number" id="appSettingsNiceValue" class="set-num" min="-20" max="19" value="10">
|
|
1802
|
+
</div>
|
|
1803
|
+
</div>
|
|
1600
1804
|
</div>
|
|
1601
1805
|
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1806
|
+
<div class="set-group" id="appSettingsCodexGroup">
|
|
1807
|
+
<div class="set-group-head"><h4>Codex</h4><span class="set-scope">synced</span></div>
|
|
1808
|
+
<div class="set-group-body">
|
|
1809
|
+
<div class="set-row" data-search="codex bypass approvals sandbox">
|
|
1810
|
+
<div class="set-row-text">
|
|
1811
|
+
<span class="set-row-label">Bypass approvals and sandbox</span>
|
|
1812
|
+
<span class="set-row-desc">Start new Codex sessions with --dangerously-bypass-approvals-and-sandbox.</span>
|
|
1813
|
+
</div>
|
|
1814
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsCodexDangerouslyBypassApprovals"><span class="slider"></span></label>
|
|
1815
|
+
</div>
|
|
1816
|
+
<div class="set-row" data-search="codex animations status effects">
|
|
1817
|
+
<div class="set-row-text">
|
|
1818
|
+
<span class="set-row-label">Animated status effects</span>
|
|
1819
|
+
<span class="set-row-desc">Decorative Codex TUI motion. Leave off to reduce remote and mobile redraws.</span>
|
|
1820
|
+
</div>
|
|
1821
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsCodexAnimations"><span class="slider"></span></label>
|
|
1822
|
+
</div>
|
|
1616
1823
|
</div>
|
|
1617
1824
|
</div>
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1825
|
+
</section>
|
|
1826
|
+
|
|
1827
|
+
<!-- ══ Notifications ════════════════════════════════════════════ -->
|
|
1828
|
+
<section class="set-section" id="settings-notifications" data-label="Notifications">
|
|
1829
|
+
<div class="set-section-head">
|
|
1830
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 8a6 6 0 1 0-12 0c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.7 21a2 2 0 0 1-3.4 0"/></svg>
|
|
1831
|
+
<h2>Notifications</h2>
|
|
1621
1832
|
</div>
|
|
1833
|
+
<p class="set-section-blurb">What reaches you, and on which channel.</p>
|
|
1622
1834
|
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1835
|
+
<div class="set-group">
|
|
1836
|
+
<div class="set-group-head"><h4>Channels</h4><span class="set-scope">device</span></div>
|
|
1837
|
+
<div class="set-group-body">
|
|
1838
|
+
<div class="set-row" data-search="enable notifications master">
|
|
1839
|
+
<div class="set-row-text">
|
|
1840
|
+
<span class="set-row-label">Notifications</span>
|
|
1841
|
+
<span class="set-row-desc">Master switch for every layer below.</span>
|
|
1842
|
+
</div>
|
|
1843
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsNotifEnabled" checked><span class="slider"></span></label>
|
|
1844
|
+
</div>
|
|
1845
|
+
<div class="set-row" data-search="browser notifications os permission">
|
|
1846
|
+
<div class="set-row-text">
|
|
1847
|
+
<span class="set-row-label">Browser</span>
|
|
1848
|
+
<span class="set-row-desc">OS notifications while the tab is hidden. Remote access needs HTTPS: codeman web --https</span>
|
|
1849
|
+
</div>
|
|
1850
|
+
<div class="set-row-actions">
|
|
1851
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsNotifBrowser"><span class="slider"></span></label>
|
|
1852
|
+
<button class="btn-toolbar btn-sm" onclick="app.notificationManager?.requestPermission()" title="Request browser notification permission">Ask</button>
|
|
1853
|
+
<span class="settings-status" id="notifPermissionStatus">?</span>
|
|
1854
|
+
</div>
|
|
1855
|
+
</div>
|
|
1856
|
+
<div class="set-row" data-search="push notifications subscribe pwa">
|
|
1857
|
+
<div class="set-row-text">
|
|
1858
|
+
<span class="set-row-label">Push</span>
|
|
1859
|
+
<span class="set-row-desc">Works with the tab closed, and through a Cloudflare tunnel. Requires HTTPS or localhost; iOS requires the PWA.</span>
|
|
1860
|
+
</div>
|
|
1861
|
+
<div class="set-row-actions">
|
|
1862
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsPushEnabled"><span class="slider"></span></label>
|
|
1863
|
+
<button class="btn-toolbar btn-sm" id="pushSubscribeBtn" onclick="app.togglePushSubscription()" title="Subscribe or unsubscribe to push notifications">Subscribe</button>
|
|
1864
|
+
<span class="settings-status" id="pushSubscriptionStatus">off</span>
|
|
1865
|
+
</div>
|
|
1866
|
+
</div>
|
|
1867
|
+
<div class="set-row" data-search="audio alerts beep sound">
|
|
1868
|
+
<div class="set-row-text">
|
|
1869
|
+
<span class="set-row-label">Audio alerts</span>
|
|
1870
|
+
<span class="set-row-desc">Short beep on critical events.</span>
|
|
1871
|
+
</div>
|
|
1872
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsNotifAudio"><span class="slider"></span></label>
|
|
1873
|
+
</div>
|
|
1874
|
+
<div class="set-row" data-search="idle threshold stuck minutes">
|
|
1875
|
+
<div class="set-row-text">
|
|
1876
|
+
<span class="set-row-label">Idle threshold</span>
|
|
1877
|
+
<span class="set-row-desc">Notify when a session sits idle longer than this.</span>
|
|
1878
|
+
</div>
|
|
1879
|
+
<div class="set-row-actions">
|
|
1880
|
+
<input type="number" id="appSettingsNotifStuckMins" class="set-num" value="10" min="1" max="120">
|
|
1881
|
+
<span class="set-unit">min</span>
|
|
1882
|
+
</div>
|
|
1883
|
+
</div>
|
|
1884
|
+
</div>
|
|
1628
1885
|
</div>
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
<
|
|
1886
|
+
|
|
1887
|
+
<div class="set-group">
|
|
1888
|
+
<div class="set-group-head"><h4>Levels</h4><span class="set-scope">device</span></div>
|
|
1889
|
+
<div class="set-group-body">
|
|
1890
|
+
<div class="set-chips" data-search="critical warning info levels">
|
|
1891
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsNotifCritical" checked><span>Critical</span></label>
|
|
1892
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsNotifWarning" checked><span>Warning</span></label>
|
|
1893
|
+
<label class="set-chip"><input type="checkbox" id="appSettingsNotifInfo" checked><span>Info</span></label>
|
|
1894
|
+
</div>
|
|
1895
|
+
</div>
|
|
1632
1896
|
</div>
|
|
1633
|
-
|
|
1634
|
-
<div class="
|
|
1635
|
-
<
|
|
1636
|
-
<
|
|
1897
|
+
|
|
1898
|
+
<div class="set-group">
|
|
1899
|
+
<div class="set-group-head"><h4>Per event</h4><span class="set-scope">device</span></div>
|
|
1900
|
+
<div class="set-group-body">
|
|
1901
|
+
<div class="event-type-grid" data-search="per event permission question idle response respawn task subagent">
|
|
1902
|
+
<div class="event-header">Event</div>
|
|
1903
|
+
<div class="event-header">On</div>
|
|
1904
|
+
<div class="event-header">Browser</div>
|
|
1905
|
+
<div class="event-header">Push</div>
|
|
1906
|
+
<div class="event-header">Sound</div>
|
|
1907
|
+
|
|
1908
|
+
<div class="event-label">Permission prompts</div>
|
|
1909
|
+
<input type="checkbox" id="eventPermissionEnabled" checked>
|
|
1910
|
+
<input type="checkbox" id="eventPermissionBrowser" checked>
|
|
1911
|
+
<input type="checkbox" id="eventPermissionPush" checked>
|
|
1912
|
+
<input type="checkbox" id="eventPermissionAudio" checked>
|
|
1913
|
+
|
|
1914
|
+
<div class="event-label">Questions from Claude</div>
|
|
1915
|
+
<input type="checkbox" id="eventQuestionEnabled" checked>
|
|
1916
|
+
<input type="checkbox" id="eventQuestionBrowser" checked>
|
|
1917
|
+
<input type="checkbox" id="eventQuestionPush" checked>
|
|
1918
|
+
<input type="checkbox" id="eventQuestionAudio" checked>
|
|
1919
|
+
|
|
1920
|
+
<div class="event-label">Session idle</div>
|
|
1921
|
+
<input type="checkbox" id="eventIdleEnabled" checked>
|
|
1922
|
+
<input type="checkbox" id="eventIdleBrowser" checked>
|
|
1923
|
+
<input type="checkbox" id="eventIdlePush">
|
|
1924
|
+
<input type="checkbox" id="eventIdleAudio">
|
|
1925
|
+
|
|
1926
|
+
<div class="event-label">Response complete</div>
|
|
1927
|
+
<input type="checkbox" id="eventStopEnabled">
|
|
1928
|
+
<input type="checkbox" id="eventStopBrowser">
|
|
1929
|
+
<input type="checkbox" id="eventStopPush">
|
|
1930
|
+
<input type="checkbox" id="eventStopAudio">
|
|
1931
|
+
|
|
1932
|
+
<div class="event-label">Respawn cycles</div>
|
|
1933
|
+
<input type="checkbox" id="eventRespawnEnabled" checked>
|
|
1934
|
+
<input type="checkbox" id="eventRespawnBrowser">
|
|
1935
|
+
<input type="checkbox" id="eventRespawnPush">
|
|
1936
|
+
<input type="checkbox" id="eventRespawnAudio">
|
|
1937
|
+
|
|
1938
|
+
<div class="event-label">Task complete</div>
|
|
1939
|
+
<input type="checkbox" id="eventRalphEnabled" checked>
|
|
1940
|
+
<input type="checkbox" id="eventRalphBrowser" checked>
|
|
1941
|
+
<input type="checkbox" id="eventRalphPush">
|
|
1942
|
+
<input type="checkbox" id="eventRalphAudio" checked>
|
|
1943
|
+
|
|
1944
|
+
<div class="event-label">Subagent activity</div>
|
|
1945
|
+
<input type="checkbox" id="eventSubagentEnabled">
|
|
1946
|
+
<input type="checkbox" id="eventSubagentBrowser">
|
|
1947
|
+
<input type="checkbox" id="eventSubagentPush">
|
|
1948
|
+
<input type="checkbox" id="eventSubagentAudio">
|
|
1949
|
+
</div>
|
|
1950
|
+
</div>
|
|
1637
1951
|
</div>
|
|
1638
|
-
|
|
1639
|
-
<div id="updateProgress" style="display:none; padding:8px 10px; margin:4px 0 8px; font-size:13px; border:1px solid var(--border); border-radius:6px"></div>
|
|
1952
|
+
</section>
|
|
1640
1953
|
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
<div class="form-row">
|
|
1647
|
-
<label>Startup Mode</label>
|
|
1648
|
-
<select id="appSettingsClaudeMode" class="form-select">
|
|
1649
|
-
<option value="dangerously-skip-permissions">Skip Permissions (default)</option>
|
|
1650
|
-
<option value="auto">Auto (classifier-guarded, low prompts)</option>
|
|
1651
|
-
<option value="normal">Normal (with prompts)</option>
|
|
1652
|
-
<option value="allowedTools">Allowed Tools Only</option>
|
|
1653
|
-
</select>
|
|
1654
|
-
<span class="form-hint">How Claude CLI is started in screen sessions. Auto Mode runs without routine prompts behind a background safety classifier (needs Claude Code 2.1.207+ and Opus 4.6+/Sonnet 4.6+/Fable 5)</span>
|
|
1655
|
-
</div>
|
|
1656
|
-
<div class="form-row" id="allowedToolsRow" style="display: none;">
|
|
1657
|
-
<label>Allowed Tools</label>
|
|
1658
|
-
<input type="text" id="appSettingsAllowedTools" placeholder="Read,Glob,Grep,Bash">
|
|
1659
|
-
<span class="form-hint">Comma-separated list of tools to allow</span>
|
|
1660
|
-
</div>
|
|
1661
|
-
<div class="form-row form-row-switch">
|
|
1662
|
-
<label>Enable Ralph / Todo Tracker</label>
|
|
1663
|
-
<label class="switch">
|
|
1664
|
-
<input type="checkbox" id="appSettingsRalphEnabled">
|
|
1665
|
-
<span class="slider"></span>
|
|
1666
|
-
</label>
|
|
1667
|
-
<span class="form-hint">Auto-enable for new sessions (otherwise auto-enables on Ralph pattern detection)</span>
|
|
1668
|
-
</div>
|
|
1669
|
-
<!-- Claude Permissions Section -->
|
|
1670
|
-
<div class="form-section-header">Claude Permissions</div>
|
|
1671
|
-
<div class="form-row form-row-switch">
|
|
1672
|
-
<label>Agent Teams</label>
|
|
1673
|
-
<label class="switch">
|
|
1674
|
-
<input type="checkbox" id="appSettingsAgentTeams">
|
|
1675
|
-
<span class="slider"></span>
|
|
1676
|
-
</label>
|
|
1677
|
-
<span class="form-hint">Enable experimental Agent Teams for all new Claude sessions (disabled by default)</span>
|
|
1678
|
-
</div>
|
|
1679
|
-
<div class="form-row form-row-switch">
|
|
1680
|
-
<label>Agent Skill</label>
|
|
1681
|
-
<label class="switch">
|
|
1682
|
-
<input type="checkbox" id="appSettingsAgentSkill">
|
|
1683
|
-
<span class="slider"></span>
|
|
1684
|
-
</label>
|
|
1685
|
-
<span class="form-hint">Give new Claude sessions the Codeman skill (start workers, send prompts, wait for results via the API)</span>
|
|
1686
|
-
</div>
|
|
1687
|
-
<div class="form-row">
|
|
1688
|
-
<label>Claude Model</label>
|
|
1689
|
-
<select id="appSettingsClaudeModel" class="form-select">
|
|
1690
|
-
<option value="">Default (CLI setting)</option>
|
|
1691
|
-
<option value="claude-fable-5[1m]">Fable 5 (1M context)</option>
|
|
1692
|
-
<option value="claude-fable-5">Fable 5</option>
|
|
1693
|
-
<option value="opus[1m]">Opus (1M context)</option>
|
|
1694
|
-
<option value="opus">Opus</option>
|
|
1695
|
-
<option value="claude-opus-4-6[1m]">Opus 4.6 (1M context)</option>
|
|
1696
|
-
<option value="claude-opus-4-6">Opus 4.6</option>
|
|
1697
|
-
<option value="sonnet">Sonnet</option>
|
|
1698
|
-
<option value="haiku">Haiku</option>
|
|
1699
|
-
</select>
|
|
1700
|
-
<span class="form-hint">Model for new Claude sessions (pinned via the case's .claude/settings.local.json) — takes precedence over the 1M Opus toggle below</span>
|
|
1701
|
-
</div>
|
|
1702
|
-
<div class="form-row form-row-switch">
|
|
1703
|
-
<label>1M Opus Context</label>
|
|
1704
|
-
<label class="switch">
|
|
1705
|
-
<input type="checkbox" id="appSettingsOpusContext1m">
|
|
1706
|
-
<span class="slider"></span>
|
|
1707
|
-
</label>
|
|
1708
|
-
<span class="form-hint">Use 1M token context window (model: opus[1m]) for all new sessions — ignored when a Claude Model is selected above</span>
|
|
1709
|
-
</div>
|
|
1710
|
-
<div class="form-row form-row-switch">
|
|
1711
|
-
<label>Remote auto-reconnect</label>
|
|
1712
|
-
<label class="switch">
|
|
1713
|
-
<input type="checkbox" id="appSettingsRemoteAutoReconnect">
|
|
1714
|
-
<span class="slider"></span>
|
|
1715
|
-
</label>
|
|
1716
|
-
<span class="form-hint">Automatically re-establish remote (SSH) sessions when the connection drops, reattaching to the durable remote tmux session (on by default; bounded backoff)</span>
|
|
1717
|
-
</div>
|
|
1718
|
-
<div class="form-row">
|
|
1719
|
-
<label>Thinking Effort</label>
|
|
1720
|
-
<select id="appSettingsThinkingEffort" class="form-select">
|
|
1721
|
-
<option value="">Default</option>
|
|
1722
|
-
<option value="low">Low</option>
|
|
1723
|
-
<option value="medium">Medium</option>
|
|
1724
|
-
<option value="high">High</option>
|
|
1725
|
-
<option value="xhigh">XHigh</option>
|
|
1726
|
-
<option value="max">Max</option>
|
|
1727
|
-
<option value="ultracode">Ultracode (multi-agent workflows)</option>
|
|
1728
|
-
</select>
|
|
1729
|
-
<span class="form-hint">Default effort for new Claude sessions — soft default, switchable anytime in-session via /effort (e.g. /effort ultracode)</span>
|
|
1730
|
-
</div>
|
|
1731
|
-
<!-- Nice Priority Section -->
|
|
1732
|
-
<div class="form-section-header">Nice Priority</div>
|
|
1733
|
-
<div class="form-row form-row-switch">
|
|
1734
|
-
<label>Enable Nice Priority Reduction</label>
|
|
1735
|
-
<label class="switch">
|
|
1736
|
-
<input type="checkbox" id="appSettingsNiceEnabled">
|
|
1737
|
-
<span class="slider"></span>
|
|
1738
|
-
</label>
|
|
1739
|
-
<span class="form-hint">Lower priority of Claude sessions (reduces system impact, only affects new sessions)</span>
|
|
1740
|
-
</div>
|
|
1741
|
-
<div class="form-row" id="niceValueRow">
|
|
1742
|
-
<label>Nice Value</label>
|
|
1743
|
-
<input type="number" id="appSettingsNiceValue" min="-20" max="19" value="10" style="width: 80px;">
|
|
1744
|
-
<span class="form-hint">Process priority (-20 to 19, higher = lower priority, default: 10)</span>
|
|
1745
|
-
</div>
|
|
1746
|
-
</div>
|
|
1747
|
-
<!-- Codex CLI Tab -->
|
|
1748
|
-
<div class="modal-tab-content hidden" id="settings-codex">
|
|
1749
|
-
<div class="form-section-header">Codex CLI</div>
|
|
1750
|
-
<div class="form-row form-row-switch">
|
|
1751
|
-
<label>Bypass Approvals and Sandbox</label>
|
|
1752
|
-
<label class="switch">
|
|
1753
|
-
<input type="checkbox" id="appSettingsCodexDangerouslyBypassApprovals">
|
|
1754
|
-
<span class="slider"></span>
|
|
1755
|
-
</label>
|
|
1756
|
-
<span class="form-hint">Start new Codex sessions with --dangerously-bypass-approvals-and-sandbox</span>
|
|
1757
|
-
</div>
|
|
1758
|
-
<div class="form-row form-row-switch">
|
|
1759
|
-
<label>Animated Status Effects</label>
|
|
1760
|
-
<label class="switch">
|
|
1761
|
-
<input type="checkbox" id="appSettingsCodexAnimations">
|
|
1762
|
-
<span class="slider"></span>
|
|
1763
|
-
</label>
|
|
1764
|
-
<span class="form-hint">Decorative Codex TUI motion for new local sessions. Leave off to reduce remote and mobile redraws.</span>
|
|
1765
|
-
</div>
|
|
1766
|
-
</div>
|
|
1767
|
-
<!-- Models Tab -->
|
|
1768
|
-
<div class="modal-tab-content hidden" id="settings-models">
|
|
1769
|
-
<div class="form-row">
|
|
1770
|
-
<label>Default Model</label>
|
|
1771
|
-
<select id="appSettingsDefaultModel" class="form-select">
|
|
1772
|
-
<option value="">Default (CLI default)</option>
|
|
1773
|
-
<option value="claude-fable-5">Fable 5 (Most powerful)</option>
|
|
1774
|
-
<option value="opus">Opus (Most capable)</option>
|
|
1775
|
-
<option value="sonnet">Sonnet (Balanced)</option>
|
|
1776
|
-
<option value="haiku">Haiku (Fast & cheap)</option>
|
|
1777
|
-
</select>
|
|
1778
|
-
<span class="form-hint">Model used for execution tasks. Optimizer suggestions are advisory only.</span>
|
|
1779
|
-
</div>
|
|
1780
|
-
<div class="form-row form-row-switch">
|
|
1781
|
-
<label>Show Optimizer Recommendations</label>
|
|
1782
|
-
<label class="switch">
|
|
1783
|
-
<input type="checkbox" id="appSettingsShowModelRecommendations" checked>
|
|
1784
|
-
<span class="slider"></span>
|
|
1785
|
-
</label>
|
|
1786
|
-
<span class="form-hint">Show what the optimizer recommends (doesn't override your choice)</span>
|
|
1787
|
-
</div>
|
|
1788
|
-
<div class="form-section-header">Agent Type Overrides</div>
|
|
1789
|
-
<p class="form-hint" style="margin: 0 0 12px 0;">Optionally set specific models for each task type. Leave as "Use Default" to use your default model.</p>
|
|
1790
|
-
<div class="form-row">
|
|
1791
|
-
<label>Explore Tasks</label>
|
|
1792
|
-
<select id="appSettingsModelExplore" class="form-select">
|
|
1793
|
-
<option value="">Use Default</option>
|
|
1794
|
-
<option value="haiku">Haiku</option>
|
|
1795
|
-
<option value="sonnet">Sonnet</option>
|
|
1796
|
-
<option value="opus">Opus</option>
|
|
1797
|
-
<option value="claude-fable-5">Fable 5</option>
|
|
1798
|
-
</select>
|
|
1799
|
-
<span class="form-hint">Quick searches, codebase exploration</span>
|
|
1800
|
-
</div>
|
|
1801
|
-
<div class="form-row">
|
|
1802
|
-
<label>Implement Tasks</label>
|
|
1803
|
-
<select id="appSettingsModelImplement" class="form-select">
|
|
1804
|
-
<option value="">Use Default</option>
|
|
1805
|
-
<option value="haiku">Haiku</option>
|
|
1806
|
-
<option value="sonnet">Sonnet</option>
|
|
1807
|
-
<option value="opus">Opus</option>
|
|
1808
|
-
<option value="claude-fable-5">Fable 5</option>
|
|
1809
|
-
</select>
|
|
1810
|
-
<span class="form-hint">Code writing, feature implementation</span>
|
|
1811
|
-
</div>
|
|
1812
|
-
<div class="form-row">
|
|
1813
|
-
<label>Test Tasks</label>
|
|
1814
|
-
<select id="appSettingsModelTest" class="form-select">
|
|
1815
|
-
<option value="">Use Default</option>
|
|
1816
|
-
<option value="haiku">Haiku</option>
|
|
1817
|
-
<option value="sonnet">Sonnet</option>
|
|
1818
|
-
<option value="opus">Opus</option>
|
|
1819
|
-
<option value="claude-fable-5">Fable 5</option>
|
|
1820
|
-
</select>
|
|
1821
|
-
<span class="form-hint">Writing and running tests</span>
|
|
1822
|
-
</div>
|
|
1823
|
-
<div class="form-row">
|
|
1824
|
-
<label>Review Tasks</label>
|
|
1825
|
-
<select id="appSettingsModelReview" class="form-select">
|
|
1826
|
-
<option value="">Use Default</option>
|
|
1827
|
-
<option value="haiku">Haiku</option>
|
|
1828
|
-
<option value="sonnet">Sonnet</option>
|
|
1829
|
-
<option value="opus">Opus</option>
|
|
1830
|
-
<option value="claude-fable-5">Fable 5</option>
|
|
1831
|
-
</select>
|
|
1832
|
-
<span class="form-hint">Code review, quality checks</span>
|
|
1833
|
-
</div>
|
|
1834
|
-
</div>
|
|
1835
|
-
<!-- Paths Tab -->
|
|
1836
|
-
<div class="modal-tab-content hidden" id="settings-paths">
|
|
1837
|
-
<div class="form-row">
|
|
1838
|
-
<label>Default CLAUDE.md Template</label>
|
|
1839
|
-
<input type="text" id="appSettingsClaudeMdPath" placeholder="/path/to/CLAUDE.md template">
|
|
1840
|
-
<span class="form-hint">Used when creating new cases. Leave empty for built-in template.</span>
|
|
1841
|
-
</div>
|
|
1842
|
-
<div class="form-row">
|
|
1843
|
-
<label>Default Working Directory</label>
|
|
1844
|
-
<input type="text" id="appSettingsDefaultDir" placeholder="~/projects">
|
|
1845
|
-
<span class="form-hint">Default directory for new sessions.</span>
|
|
1846
|
-
</div>
|
|
1847
|
-
</div>
|
|
1848
|
-
<!-- Notifications Tab -->
|
|
1849
|
-
<div class="modal-tab-content hidden" id="settings-notifications">
|
|
1850
|
-
<div class="settings-grid">
|
|
1851
|
-
<!-- Master Control Section -->
|
|
1852
|
-
<div class="settings-section-header">Master Control</div>
|
|
1853
|
-
<div class="settings-item" title="Master toggle for all notification layers">
|
|
1854
|
-
<span class="settings-item-label">Enable Notifications</span>
|
|
1855
|
-
<label class="switch switch-sm">
|
|
1856
|
-
<input type="checkbox" id="appSettingsNotifEnabled" checked>
|
|
1857
|
-
<span class="slider"></span>
|
|
1858
|
-
</label>
|
|
1954
|
+
<!-- ══ Voice ════════════════════════════════════════════════════ -->
|
|
1955
|
+
<section class="set-section" id="settings-voice" data-label="Voice">
|
|
1956
|
+
<div class="set-section-head">
|
|
1957
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="2" width="6" height="12" rx="3"/><path d="M5 11a7 7 0 0 0 14 0"/><path d="M12 18v4"/></svg>
|
|
1958
|
+
<h2>Voice</h2>
|
|
1859
1959
|
</div>
|
|
1860
|
-
<
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1960
|
+
<p class="set-section-blurb">Dictation into the composer.</p>
|
|
1961
|
+
|
|
1962
|
+
<div class="set-group">
|
|
1963
|
+
<div class="set-group-head"><h4>Provider</h4><span class="set-scope">device</span></div>
|
|
1964
|
+
<div class="set-group-body">
|
|
1965
|
+
<div class="set-row" data-search="voice provider active">
|
|
1966
|
+
<div class="set-row-text"><span class="set-row-label">Active provider</span></div>
|
|
1967
|
+
<span class="voice-provider-status" id="voiceProviderStatus">—</span>
|
|
1968
|
+
</div>
|
|
1969
|
+
<div class="set-row has-field" data-search="voice insert mode compose">
|
|
1970
|
+
<div class="set-row-text">
|
|
1971
|
+
<span class="set-row-label">Insert mode</span>
|
|
1972
|
+
<span class="set-row-desc">Where dictated text lands.</span>
|
|
1973
|
+
</div>
|
|
1974
|
+
<select id="voiceInsertMode" class="set-select">
|
|
1975
|
+
<option value="direct">Direct to input</option>
|
|
1976
|
+
<option value="compose">Compose dialog</option>
|
|
1977
|
+
</select>
|
|
1978
|
+
</div>
|
|
1869
1979
|
</div>
|
|
1870
1980
|
</div>
|
|
1871
|
-
<span class="form-hint" style="grid-column: 1 / -1; margin-top: -8px;">For remote access, HTTPS is required. Start with: <code>codeman web --https</code></span>
|
|
1872
1981
|
|
|
1873
|
-
<div class="
|
|
1874
|
-
<
|
|
1875
|
-
<div class="
|
|
1876
|
-
<
|
|
1877
|
-
<
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1982
|
+
<div class="set-group">
|
|
1983
|
+
<div class="set-group-head"><h4>Deepgram Nova-3</h4><span class="set-scope">device</span></div>
|
|
1984
|
+
<div class="set-group-body">
|
|
1985
|
+
<div class="set-row has-field" data-search="deepgram api key">
|
|
1986
|
+
<div class="set-row-text">
|
|
1987
|
+
<span class="set-row-label">API key</span>
|
|
1988
|
+
<span class="set-row-desc">Stored on this device only, never sent to the server. Get a key at console.deepgram.com</span>
|
|
1989
|
+
</div>
|
|
1990
|
+
<div class="set-row-actions set-row-actions-wide">
|
|
1991
|
+
<input type="password" id="voiceDeepgramKey" class="set-input" placeholder="Enter Deepgram API key" autocomplete="off">
|
|
1992
|
+
<button class="btn-toolbar btn-sm" onclick="app.toggleDeepgramKeyVisibility()" id="voiceKeyToggleBtn" type="button">Show</button>
|
|
1993
|
+
</div>
|
|
1994
|
+
</div>
|
|
1995
|
+
<div class="set-row has-field" data-search="voice language">
|
|
1996
|
+
<div class="set-row-text"><span class="set-row-label">Language</span></div>
|
|
1997
|
+
<select id="voiceLanguage" class="set-select">
|
|
1998
|
+
<option value="en-US">English (US)</option>
|
|
1999
|
+
<option value="en-GB">English (UK)</option>
|
|
2000
|
+
<option value="es">Spanish</option>
|
|
2001
|
+
<option value="fr">French</option>
|
|
2002
|
+
<option value="de">German</option>
|
|
2003
|
+
<option value="ja">Japanese</option>
|
|
2004
|
+
<option value="multi">Auto-detect (multi)</option>
|
|
2005
|
+
</select>
|
|
2006
|
+
</div>
|
|
2007
|
+
<div class="set-row has-field" data-search="voice keyterms domain keywords">
|
|
2008
|
+
<div class="set-row-text">
|
|
2009
|
+
<span class="set-row-label">Domain keywords</span>
|
|
2010
|
+
<span class="set-row-desc">Comma-separated terms to boost recognition accuracy.</span>
|
|
2011
|
+
</div>
|
|
2012
|
+
<input type="text" id="voiceKeyterms" class="set-input" placeholder="codeman, tmux, respawn, subagent">
|
|
2013
|
+
</div>
|
|
1882
2014
|
</div>
|
|
1883
2015
|
</div>
|
|
1884
|
-
|
|
2016
|
+
</section>
|
|
1885
2017
|
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
<div class="
|
|
1889
|
-
<
|
|
1890
|
-
<
|
|
1891
|
-
<input type="checkbox" id="appSettingsNotifAudio">
|
|
1892
|
-
<span class="slider"></span>
|
|
1893
|
-
</label>
|
|
2018
|
+
<!-- ══ Shortcuts ════════════════════════════════════════════════ -->
|
|
2019
|
+
<section class="set-section" id="settings-shortcuts" data-label="Shortcuts">
|
|
2020
|
+
<div class="set-section-head">
|
|
2021
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="5" width="20" height="14" rx="2"/><path d="M6 9h.01M10 9h.01M14 9h.01M18 9h.01M6 13h.01M18 13h.01M9 13h6"/></svg>
|
|
2022
|
+
<h2>Shortcuts</h2>
|
|
1894
2023
|
</div>
|
|
1895
|
-
<
|
|
1896
|
-
|
|
1897
|
-
<div class="
|
|
1898
|
-
|
|
1899
|
-
<
|
|
2024
|
+
<p class="set-section-blurb">Click a binding to capture a new key combination.</p>
|
|
2025
|
+
<div class="set-group">
|
|
2026
|
+
<div class="set-group-head"><h4>Keyboard</h4><span class="set-scope">device</span></div>
|
|
2027
|
+
<div class="set-group-body">
|
|
2028
|
+
<div id="appSettingsShortcutsList" data-search="keyboard shortcuts bindings keys">
|
|
2029
|
+
<!-- Populated by app.renderShortcutSettingsList() -->
|
|
2030
|
+
</div>
|
|
1900
2031
|
</div>
|
|
1901
2032
|
</div>
|
|
2033
|
+
</section>
|
|
1902
2034
|
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
<span class="settings-item-label">Critical</span>
|
|
1909
|
-
<label class="switch switch-sm">
|
|
1910
|
-
<input type="checkbox" id="appSettingsNotifCritical" checked>
|
|
1911
|
-
<span class="slider"></span>
|
|
1912
|
-
</label>
|
|
2035
|
+
<!-- ══ System ═══════════════════════════════════════════════════ -->
|
|
2036
|
+
<section class="set-section" id="settings-system" data-label="System">
|
|
2037
|
+
<div class="set-section-head">
|
|
2038
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.6a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9c.26.6.86 1 1.51 1H21a2 2 0 0 1 0 4h-.09c-.65 0-1.25.4-1.51 1z"/></svg>
|
|
2039
|
+
<h2>System</h2>
|
|
1913
2040
|
</div>
|
|
1914
|
-
<
|
|
1915
|
-
<span class="settings-item-label">Warning</span>
|
|
1916
|
-
<label class="switch switch-sm">
|
|
1917
|
-
<input type="checkbox" id="appSettingsNotifWarning" checked>
|
|
1918
|
-
<span class="slider"></span>
|
|
1919
|
-
</label>
|
|
1920
|
-
</div>
|
|
1921
|
-
<div class="settings-item" title="Auto-accepts, auto-clears, agent completions">
|
|
1922
|
-
<span class="settings-item-label">Info</span>
|
|
1923
|
-
<label class="switch switch-sm">
|
|
1924
|
-
<input type="checkbox" id="appSettingsNotifInfo" checked>
|
|
1925
|
-
<span class="slider"></span>
|
|
1926
|
-
</label>
|
|
1927
|
-
</div>
|
|
1928
|
-
</div>
|
|
2041
|
+
<p class="set-section-blurb">Paths, automation, remote access and updates.</p>
|
|
1929
2042
|
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
<input type="checkbox" id="eventQuestionEnabled" checked>
|
|
1949
|
-
<input type="checkbox" id="eventQuestionBrowser" checked>
|
|
1950
|
-
<input type="checkbox" id="eventQuestionPush" checked>
|
|
1951
|
-
<input type="checkbox" id="eventQuestionAudio" checked>
|
|
1952
|
-
|
|
1953
|
-
<div class="event-label">Session idle</div>
|
|
1954
|
-
<input type="checkbox" id="eventIdleEnabled" checked>
|
|
1955
|
-
<input type="checkbox" id="eventIdleBrowser" checked>
|
|
1956
|
-
<input type="checkbox" id="eventIdlePush">
|
|
1957
|
-
<input type="checkbox" id="eventIdleAudio">
|
|
1958
|
-
|
|
1959
|
-
<div class="event-label">Response complete</div>
|
|
1960
|
-
<input type="checkbox" id="eventStopEnabled">
|
|
1961
|
-
<input type="checkbox" id="eventStopBrowser">
|
|
1962
|
-
<input type="checkbox" id="eventStopPush">
|
|
1963
|
-
<input type="checkbox" id="eventStopAudio">
|
|
1964
|
-
|
|
1965
|
-
<div class="event-label">Respawn cycles</div>
|
|
1966
|
-
<input type="checkbox" id="eventRespawnEnabled" checked>
|
|
1967
|
-
<input type="checkbox" id="eventRespawnBrowser">
|
|
1968
|
-
<input type="checkbox" id="eventRespawnPush">
|
|
1969
|
-
<input type="checkbox" id="eventRespawnAudio">
|
|
1970
|
-
|
|
1971
|
-
<div class="event-label">Task complete</div>
|
|
1972
|
-
<input type="checkbox" id="eventRalphEnabled" checked>
|
|
1973
|
-
<input type="checkbox" id="eventRalphBrowser" checked>
|
|
1974
|
-
<input type="checkbox" id="eventRalphPush">
|
|
1975
|
-
<input type="checkbox" id="eventRalphAudio" checked>
|
|
1976
|
-
|
|
1977
|
-
<div class="event-label">Subagent activity</div>
|
|
1978
|
-
<input type="checkbox" id="eventSubagentEnabled">
|
|
1979
|
-
<input type="checkbox" id="eventSubagentBrowser">
|
|
1980
|
-
<input type="checkbox" id="eventSubagentPush">
|
|
1981
|
-
<input type="checkbox" id="eventSubagentAudio">
|
|
1982
|
-
</div>
|
|
1983
|
-
</div>
|
|
1984
|
-
|
|
1985
|
-
<!-- Voice Tab -->
|
|
1986
|
-
<div class="modal-tab-content hidden" id="settings-voice">
|
|
1987
|
-
<div class="settings-grid">
|
|
1988
|
-
<div class="settings-section-header">Provider</div>
|
|
1989
|
-
<div class="settings-item">
|
|
1990
|
-
<span class="settings-item-label">Active Provider</span>
|
|
1991
|
-
<span class="voice-provider-status" id="voiceProviderStatus">—</span>
|
|
1992
|
-
</div>
|
|
1993
|
-
|
|
1994
|
-
<div class="settings-section-header">Behavior</div>
|
|
1995
|
-
<div class="settings-item" style="grid-column: 1 / -1;">
|
|
1996
|
-
<span class="settings-item-label">Insert mode</span>
|
|
1997
|
-
<select id="voiceInsertMode" class="form-select" style="width: auto;">
|
|
1998
|
-
<option value="direct">Direct to input</option>
|
|
1999
|
-
<option value="compose">Compose dialog</option>
|
|
2000
|
-
</select>
|
|
2043
|
+
<div class="set-group">
|
|
2044
|
+
<div class="set-group-head"><h4>Paths</h4><span class="set-scope">synced</span></div>
|
|
2045
|
+
<div class="set-group-body">
|
|
2046
|
+
<div class="set-row has-field" data-search="claude.md template path new cases">
|
|
2047
|
+
<div class="set-row-text">
|
|
2048
|
+
<span class="set-row-label">CLAUDE.md template</span>
|
|
2049
|
+
<span class="set-row-desc">Used when creating new cases. Leave empty for the built-in template.</span>
|
|
2050
|
+
</div>
|
|
2051
|
+
<input type="text" id="appSettingsClaudeMdPath" class="set-input" placeholder="/path/to/CLAUDE.md template">
|
|
2052
|
+
</div>
|
|
2053
|
+
<div class="set-row has-field" data-search="default working directory">
|
|
2054
|
+
<div class="set-row-text">
|
|
2055
|
+
<span class="set-row-label">Default working directory</span>
|
|
2056
|
+
<span class="set-row-desc">Starting directory for new sessions.</span>
|
|
2057
|
+
</div>
|
|
2058
|
+
<input type="text" id="appSettingsDefaultDir" class="set-input" placeholder="~/projects">
|
|
2059
|
+
</div>
|
|
2060
|
+
</div>
|
|
2001
2061
|
</div>
|
|
2002
2062
|
|
|
2003
|
-
<div class="
|
|
2004
|
-
|
|
2005
|
-
<
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2063
|
+
<div class="set-group">
|
|
2064
|
+
<div class="set-group-head"><h4>Automation</h4><span class="set-scope">synced</span></div>
|
|
2065
|
+
<div class="set-group-body">
|
|
2066
|
+
<div class="set-row" data-search="image watcher popup screenshots">
|
|
2067
|
+
<div class="set-row-text">
|
|
2068
|
+
<span class="set-row-label">Image watcher</span>
|
|
2069
|
+
<span class="set-row-desc">Detect and pop up new images found in session directories.</span>
|
|
2070
|
+
</div>
|
|
2071
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsImageWatcherEnabled"><span class="slider"></span></label>
|
|
2072
|
+
</div>
|
|
2009
2073
|
</div>
|
|
2010
|
-
<span class="form-hint">Stored locally only, never sent to server. Get a key at <a href="https://console.deepgram.com" target="_blank" rel="noopener" style="color: var(--accent);">console.deepgram.com</a></span>
|
|
2011
|
-
</div>
|
|
2012
|
-
|
|
2013
|
-
<div class="form-row" style="grid-column: 1 / -1;">
|
|
2014
|
-
<label for="voiceLanguage">Language</label>
|
|
2015
|
-
<select id="voiceLanguage" class="form-select">
|
|
2016
|
-
<option value="en-US">English (US)</option>
|
|
2017
|
-
<option value="en-GB">English (UK)</option>
|
|
2018
|
-
<option value="es">Spanish</option>
|
|
2019
|
-
<option value="fr">French</option>
|
|
2020
|
-
<option value="de">German</option>
|
|
2021
|
-
<option value="ja">Japanese</option>
|
|
2022
|
-
<option value="multi">Auto-detect (multi)</option>
|
|
2023
|
-
</select>
|
|
2024
2074
|
</div>
|
|
2025
2075
|
|
|
2026
|
-
<div class="
|
|
2027
|
-
<
|
|
2028
|
-
<
|
|
2029
|
-
|
|
2076
|
+
<div class="set-group">
|
|
2077
|
+
<div class="set-group-head"><h4>Remote access</h4><span class="set-scope">synced</span></div>
|
|
2078
|
+
<div class="set-group-body">
|
|
2079
|
+
<div class="set-row" data-search="cloudflare tunnel remote access url">
|
|
2080
|
+
<div class="set-row-text">
|
|
2081
|
+
<span class="set-row-label">Cloudflare Tunnel</span>
|
|
2082
|
+
<span class="set-row-desc">Expose Codeman on a public URL. Set CODEMAN_PASSWORD first.</span>
|
|
2083
|
+
</div>
|
|
2084
|
+
<label class="switch switch-sm"><input type="checkbox" id="appSettingsTunnelEnabled"><span class="slider"></span></label>
|
|
2085
|
+
</div>
|
|
2086
|
+
<div class="set-row" id="tunnelUrlRow" style="display:none">
|
|
2087
|
+
<div class="set-row-text"><span class="set-row-label">Tunnel URL</span></div>
|
|
2088
|
+
<div class="set-row-actions">
|
|
2089
|
+
<span id="tunnelUrlDisplay" class="set-copy" title="Click to copy"></span>
|
|
2090
|
+
<button class="btn-icon-sm" id="tunnelQrBtn" onclick="app.showTunnelQR()" title="Show QR code">⊞</button>
|
|
2091
|
+
</div>
|
|
2092
|
+
</div>
|
|
2093
|
+
<div class="set-row" id="tunnelUploadUrlRow" style="display:none">
|
|
2094
|
+
<div class="set-row-text"><span class="set-row-label">Upload URL</span></div>
|
|
2095
|
+
<span id="tunnelUploadUrlDisplay" class="set-copy" title="Click to copy"></span>
|
|
2096
|
+
</div>
|
|
2097
|
+
</div>
|
|
2030
2098
|
</div>
|
|
2031
|
-
</div>
|
|
2032
|
-
</div>
|
|
2033
2099
|
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2100
|
+
<div class="set-group">
|
|
2101
|
+
<div class="set-group-head"><h4>Updates</h4></div>
|
|
2102
|
+
<div class="set-group-body">
|
|
2103
|
+
<div class="set-row" data-search="version current release">
|
|
2104
|
+
<div class="set-row-text"><span class="set-row-label">Current version</span></div>
|
|
2105
|
+
<span class="set-static mono" id="updateCurrentVersion">—</span>
|
|
2106
|
+
</div>
|
|
2107
|
+
<div class="set-row" id="updateCheckRow" data-search="check for updates github release">
|
|
2108
|
+
<div class="set-row-text">
|
|
2109
|
+
<span class="set-row-label">Check for updates</span>
|
|
2110
|
+
<span class="set-row-desc">Looks at GitHub for a newer Codeman release.</span>
|
|
2111
|
+
</div>
|
|
2112
|
+
<button class="btn-toolbar btn-sm" id="updateCheckBtn" onclick="app.checkForUpdate()">Check now</button>
|
|
2113
|
+
</div>
|
|
2114
|
+
<div id="updateResult" class="set-note" style="display:none"></div>
|
|
2115
|
+
<div class="set-row" id="updateActionRow" style="display:none">
|
|
2116
|
+
<div class="set-row-text"><span class="set-row-label" id="updateActionLabel">Update available</span></div>
|
|
2117
|
+
<button class="btn-toolbar btn-sm btn-primary" id="updateNowBtn" onclick="app.startSelfUpdate()">Update now</button>
|
|
2118
|
+
</div>
|
|
2119
|
+
<div id="updateNotes" class="set-notes" style="display:none"></div>
|
|
2120
|
+
<div id="updateProgress" class="set-progress" style="display:none"></div>
|
|
2121
|
+
</div>
|
|
2043
2122
|
</div>
|
|
2044
|
-
</
|
|
2123
|
+
</section>
|
|
2045
2124
|
</div>
|
|
2046
2125
|
</div>
|
|
2047
|
-
<div class="form-actions">
|
|
2126
|
+
<div class="form-actions set-foot">
|
|
2048
2127
|
<button class="btn-toolbar" onclick="app.closeAppSettings()">Cancel</button>
|
|
2049
2128
|
<button class="btn-toolbar btn-primary" onclick="app.saveAppSettings()">Save</button>
|
|
2050
2129
|
</div>
|
|
@@ -2813,6 +2892,7 @@
|
|
|
2813
2892
|
<input type="text" id="readMyMindPrompt" class="readmymind-prompt-input" data-i18n-skip aria-label="Predicted prompt, editable" onkeydown="if(event.key==='Enter')app.sendReadMyMind(true)">
|
|
2814
2893
|
</div>
|
|
2815
2894
|
<div class="readmymind-why" id="readMyMindWhy" data-i18n-skip></div>
|
|
2895
|
+
<div class="readmymind-alternates" id="readMyMindAlternates" data-i18n-skip style="display:none"></div>
|
|
2816
2896
|
</div>
|
|
2817
2897
|
<div class="readmymind-error" style="display:none">No suggestion this time. Rethink to try again.</div>
|
|
2818
2898
|
</div>
|
|
@@ -2836,23 +2916,23 @@
|
|
|
2836
2916
|
<div class="approvals-list"></div>
|
|
2837
2917
|
</div>
|
|
2838
2918
|
|
|
2839
|
-
<script defer src="constants.
|
|
2840
|
-
<script defer src="i18n.
|
|
2919
|
+
<script defer src="constants.53dc0fa1.js"></script>
|
|
2920
|
+
<script defer src="i18n.1a8b3412.js"></script>
|
|
2841
2921
|
<script defer src="mobile-handlers.32fdd57f.js"></script>
|
|
2842
2922
|
<script defer src="voice-input.e5461859.js"></script>
|
|
2843
2923
|
<script defer src="notification-manager.5d229063.js"></script>
|
|
2844
|
-
<script defer src="keyboard-accessory.
|
|
2924
|
+
<script defer src="keyboard-accessory.0f524637.js"></script>
|
|
2845
2925
|
<script defer src="input-cjk.63794d0b.js"></script>
|
|
2846
2926
|
<!-- Hardened markdown HTML sanitizer (wires DOMPurify). Must precede app.js. -->
|
|
2847
2927
|
<script defer src="sanitize-html.bc7078d6.js"></script>
|
|
2848
|
-
<script defer src="app.
|
|
2849
|
-
<script defer src="terminal-ui.
|
|
2928
|
+
<script defer src="app.f9c6aadd.js"></script>
|
|
2929
|
+
<script defer src="terminal-ui.61c7829d.js"></script>
|
|
2850
2930
|
<script defer src="respawn-ui.ff0dae4c.js"></script>
|
|
2851
2931
|
<script defer src="ralph-panel.6de2d0f8.js"></script>
|
|
2852
2932
|
<script defer src="orchestrator-panel.js"></script>
|
|
2853
2933
|
<script defer src="cron-ui.js"></script>
|
|
2854
|
-
<script defer src="settings-ui.
|
|
2855
|
-
<script defer src="panels-ui.
|
|
2934
|
+
<script defer src="settings-ui.c674f367.js"></script>
|
|
2935
|
+
<script defer src="panels-ui.54b0d004.js"></script>
|
|
2856
2936
|
<script defer src="readmymind-ui.js"></script>
|
|
2857
2937
|
<script defer src="ultracode-panel.js"></script>
|
|
2858
2938
|
<script defer src="approvals-ui.js"></script>
|