clay-server 2.10.0 → 2.11.0-beta.10

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.
@@ -36,7 +36,7 @@
36
36
  <button id="update-pill" class="top-bar-pill pill-success"><i data-lucide="arrow-up-circle"></i> <span id="update-version"></span></button>
37
37
  <div id="update-popover" class="top-bar-popover">
38
38
  <div class="popover-row"><button id="update-now" class="popover-action popover-action-primary"><i data-lucide="download"></i> Update now</button></div>
39
- <div class="popover-row"><div class="popover-label">Or run manually:</div><div class="popover-cmd"><code>npx clay-server@latest</code><button class="popover-copy" title="Copy"><i data-lucide="copy"></i></button></div></div>
39
+ <div class="popover-row"><div class="popover-label">Or run manually:</div><div class="popover-cmd"><code id="update-manual-cmd">npx clay-server@latest</code><button class="popover-copy" title="Copy"><i data-lucide="copy"></i></button></div></div>
40
40
  </div>
41
41
  </div>
42
42
  </div>
@@ -68,6 +68,8 @@
68
68
  <div class="icon-strip-separator"></div>
69
69
  <div class="icon-strip-projects" id="icon-strip-projects"></div>
70
70
  <button class="icon-strip-add" id="icon-strip-add" title="Add project"><i data-lucide="plus"></i></button>
71
+ <div class="icon-strip-users hidden" id="icon-strip-users"></div>
72
+ <div class="icon-strip-me" id="icon-strip-me"></div>
71
73
  </div>
72
74
 
73
75
  <!-- === Main Area (sidebar + resize-handle + main-column) === -->
@@ -191,6 +193,10 @@
191
193
  <div id="sidebar-resize-handle"></div>
192
194
  <div id="sidebar-overlay"></div>
193
195
  <div id="main-column">
196
+ <div class="dm-header-bar" id="dm-header-bar">
197
+ <img id="dm-header-avatar" class="dm-header-avatar" alt="">
198
+ <span id="dm-header-name" class="dm-header-name"></span>
199
+ </div>
194
200
  <div class="title-bar-content">
195
201
  <div id="header-left">
196
202
  <button id="sidebar-expand-btn" title="Open sidebar"><i data-lucide="panel-left-open"></i></button>
@@ -330,6 +336,15 @@
330
336
  <div class="config-section-label">EFFORT</div>
331
337
  <div id="config-effort-bar" class="config-segmented"></div>
332
338
  </div>
339
+ <div id="config-thinking-section" class="config-section">
340
+ <div class="config-section-label">THINKING</div>
341
+ <div id="config-thinking-bar" class="config-segmented"></div>
342
+ <div id="config-thinking-budget-row" class="config-budget-row" style="display:none">
343
+ <label class="config-budget-label">Budget tokens</label>
344
+ <input id="config-thinking-budget" type="number" class="config-budget-input"
345
+ min="1024" max="128000" step="1024" value="10000">
346
+ </div>
347
+ </div>
333
348
  <div id="config-beta-section" class="config-section" style="display:none">
334
349
  <div class="config-section-label">BETA</div>
335
350
  <div class="config-toggle-row">
@@ -388,13 +403,13 @@
388
403
  <div class="project-settings-nav-inner">
389
404
  <div class="server-settings-nav-header" id="ps-nav-title">-</div>
390
405
  <div class="server-settings-nav-items">
391
- <div class="settings-nav-category">Project</div>
406
+ <div class="settings-nav-category">General</div>
392
407
  <button class="settings-nav-item active" data-section="profile"><span>Profile</span></button>
393
- <button class="settings-nav-item" data-section="defaults"><span>Model &amp; Behavior</span></button>
408
+ <button class="settings-nav-item" data-section="defaults"><span>Model</span></button>
394
409
  <div class="settings-nav-separator"></div>
395
- <div class="settings-nav-category">Configuration</div>
396
- <button class="settings-nav-item" data-section="instructions"><span>CLAUDE.md</span></button>
397
- <button class="settings-nav-item" data-section="environment"><span>Environment Variables</span></button>
410
+ <div class="settings-nav-category">Config</div>
411
+ <button class="settings-nav-item" data-section="instructions"><span>Instructions</span></button>
412
+ <button class="settings-nav-item" data-section="environment"><span>Environment</span></button>
398
413
  </div>
399
414
  </div>
400
415
  </div>
@@ -427,11 +442,26 @@
427
442
  </div>
428
443
  <div id="ps-emoji-picker-anchor"></div>
429
444
  </div>
445
+ <div class="settings-field" id="ps-owner-field" style="display:none">
446
+ <label class="settings-label">Owner</label>
447
+ <div class="settings-hint">The user whose Claude account is used for all sessions in this project.</div>
448
+ <div class="ps-owner-row">
449
+ <span class="settings-value" id="ps-owner-name">-</span>
450
+ <button class="settings-btn-sm" id="ps-transfer-btn">Transfer</button>
451
+ </div>
452
+ <div class="ps-transfer-form hidden" id="ps-transfer-form">
453
+ <select class="ps-select" id="ps-transfer-select"></select>
454
+ <div class="ps-rename-actions">
455
+ <button class="settings-btn-sm" id="ps-transfer-save">Transfer</button>
456
+ <button class="settings-btn-sm settings-btn-ghost" id="ps-transfer-cancel">Cancel</button>
457
+ </div>
458
+ </div>
459
+ </div>
430
460
  </div>
431
461
  </div>
432
462
  <!-- Defaults -->
433
463
  <div class="ps-section" data-section="defaults">
434
- <h2>Model &amp; Behavior</h2>
464
+ <h2>Model</h2>
435
465
  <p class="ps-section-desc">Configure which model to use and how Claude behaves during sessions.</p>
436
466
  <div class="settings-card">
437
467
  <div class="settings-field">
@@ -467,6 +497,17 @@
467
497
  <div class="settings-btn-group" id="ps-effort-bar"></div>
468
498
  </div>
469
499
  </div>
500
+ <div class="settings-card" id="ps-thinking-card">
501
+ <div class="settings-field">
502
+ <label class="settings-label">Thinking</label>
503
+ <div class="settings-hint">Controls whether Claude shows its reasoning process. Budget mode lets you set a token limit.</div>
504
+ <div class="settings-btn-group" id="ps-thinking-bar"></div>
505
+ <div id="ps-thinking-budget-row" class="settings-budget-row" style="display:none">
506
+ <label class="settings-budget-label">Budget tokens</label>
507
+ <input id="ps-thinking-budget" type="number" class="settings-budget-input" min="1024" max="128000" step="1024" value="10000">
508
+ </div>
509
+ </div>
510
+ </div>
470
511
  </div>
471
512
  <!-- Instructions -->
472
513
  <div class="ps-section" data-section="instructions">
@@ -485,7 +526,7 @@
485
526
  </div>
486
527
  <!-- Environment -->
487
528
  <div class="ps-section" data-section="environment">
488
- <h2>Environment Variables</h2>
529
+ <h2>Environment</h2>
489
530
  <p class="ps-section-desc">Store API keys, tokens, and config for this project. Paste a <code>.env</code> file to import multiple variables at once.</p>
490
531
  <div class="settings-hint ps-env-notice hidden" id="ps-env-override-notice">
491
532
  <i data-lucide="info"></i> A <code>.envrc</code> file exists in the project directory and will take precedence over these settings.
@@ -606,45 +647,50 @@
606
647
  <optgroup label="General">
607
648
  <option value="overview" selected>Status</option>
608
649
  <option value="notifications">Notifications</option>
650
+ <option value="security">Security</option>
651
+ </optgroup>
652
+ <optgroup label="Defaults">
653
+ <option value="models">Model</option>
609
654
  </optgroup>
610
- <optgroup label="Session">
611
- <option value="models">Model &amp; Behavior</option>
612
- <option value="claudemd">CLAUDE.md</option>
613
- <option value="environment">Environment Variables</option>
655
+ <optgroup label="Config">
656
+ <option value="claudemd">Instructions</option>
657
+ <option value="environment">Environment</option>
614
658
  </optgroup>
615
659
  <optgroup label="Admin" class="settings-admin-only">
616
660
  <option value="admin-users">Users</option>
617
661
  <option value="admin-invites">Invites</option>
618
662
  <option value="admin-projects">Projects</option>
619
- <option value="admin-smtp">Email (SMTP)</option>
663
+ <option value="admin-smtp">Email</option>
620
664
  </optgroup>
621
665
  <optgroup label="Server">
622
- <option value="security">Security</option>
623
- <option value="restart">Restart Server</option>
624
- <option value="shutdown">Shutdown Server</option>
666
+ <option value="keep-awake" class="hidden" id="settings-keep-awake-opt">Keep Awake</option>
667
+ <option value="restart">Restart</option>
668
+ <option value="shutdown">Shutdown</option>
625
669
  </optgroup>
626
670
  </select>
627
671
  <div class="server-settings-nav-items">
628
672
  <div class="settings-nav-category">General</div>
629
673
  <button class="settings-nav-item active" data-section="overview"><span>Status</span></button>
630
674
  <button class="settings-nav-item" data-section="notifications"><span>Notifications</span></button>
675
+ <button class="settings-nav-item" data-section="security"><span>Security</span></button>
631
676
  <div class="settings-nav-separator"></div>
632
- <div class="settings-nav-category">Session</div>
633
- <button class="settings-nav-item" data-section="models"><span>Model &amp; Behavior</span></button>
634
- <button class="settings-nav-item" data-section="claudemd"><span>CLAUDE.md</span></button>
635
- <button class="settings-nav-item" data-section="environment"><span>Environment Variables</span></button>
677
+ <div class="settings-nav-category">Defaults</div>
678
+ <button class="settings-nav-item" data-section="models"><span>Model</span></button>
679
+ <div class="settings-nav-separator"></div>
680
+ <div class="settings-nav-category">Config</div>
681
+ <button class="settings-nav-item" data-section="claudemd"><span>Instructions</span></button>
682
+ <button class="settings-nav-item" data-section="environment"><span>Environment</span></button>
636
683
  <div class="settings-nav-separator settings-admin-only"></div>
637
684
  <div class="settings-nav-category settings-admin-only">Admin</div>
638
685
  <button class="settings-nav-item settings-admin-only" data-section="admin-users"><span>Users</span></button>
639
686
  <button class="settings-nav-item settings-admin-only" data-section="admin-invites"><span>Invites</span></button>
640
687
  <button class="settings-nav-item settings-admin-only" data-section="admin-projects"><span>Projects</span></button>
641
- <button class="settings-nav-item settings-admin-only" data-section="admin-smtp"><span>Email (SMTP)</span></button>
688
+ <button class="settings-nav-item settings-admin-only" data-section="admin-smtp"><span>Email</span></button>
642
689
  <div class="settings-nav-separator"></div>
643
690
  <div class="settings-nav-category">Server</div>
644
- <button class="settings-nav-item" data-section="security"><span>Security</span></button>
645
- <div class="settings-nav-separator"></div>
646
- <button class="settings-nav-item" data-section="restart"><span>Restart Server</span></button>
647
- <button class="settings-nav-item settings-nav-danger" data-section="shutdown"><span>Shutdown Server</span></button>
691
+ <button class="settings-nav-item hidden" data-section="keep-awake" id="settings-keep-awake-nav"><span>Keep Awake</span></button>
692
+ <button class="settings-nav-item" data-section="restart"><span>Restart</span></button>
693
+ <button class="settings-nav-item settings-nav-danger" data-section="shutdown"><span>Shutdown</span></button>
648
694
  </div>
649
695
  </div>
650
696
  </div>
@@ -654,18 +700,23 @@
654
700
  <h2>Status</h2>
655
701
  <div class="settings-card">
656
702
  <div class="settings-field">
657
- <label class="settings-label">Project Name</label>
658
- <div class="settings-value" id="settings-project-name">-</div>
659
- </div>
660
- <div class="settings-field">
661
- <label class="settings-label">Working Directory</label>
662
- <div class="settings-value settings-mono" id="settings-project-cwd">-</div>
703
+ <label class="settings-label">Host</label>
704
+ <div class="settings-value" id="settings-hostname">-</div>
705
+ <div class="settings-value settings-mono" id="settings-lan-ip" style="font-size:12px;color:var(--text-muted)"></div>
663
706
  </div>
664
707
  <div class="settings-field">
665
708
  <label class="settings-label">Server Version</label>
666
709
  <div class="settings-value" id="settings-server-version">-</div>
667
710
  <button class="settings-btn-sm settings-btn-update" id="settings-update-check"><i data-lucide="refresh-cw"></i> Check for updates</button>
668
711
  </div>
712
+ <label class="settings-toggle-row">
713
+ <div>
714
+ <span class="settings-label">Early Access</span>
715
+ <div class="settings-hint">Receive pre-release updates before they reach the stable channel.</div>
716
+ </div>
717
+ <input type="checkbox" id="settings-update-channel">
718
+ <span class="toggle-track"><span class="toggle-thumb"></span></span>
719
+ </label>
669
720
  <div class="settings-field-row">
670
721
  <label class="settings-label">Port</label>
671
722
  <span class="settings-value settings-mono" id="settings-port">-</span>
@@ -675,7 +726,14 @@
675
726
  <span class="settings-value settings-badge" id="settings-tls">-</span>
676
727
  </div>
677
728
  <div class="settings-field-row">
678
- <label class="settings-label">Debug Mode</label>
729
+ <div>
730
+ <label class="settings-label">Skip Permissions</label>
731
+ <div class="settings-hint">Auto-approves all tool executions. Restart with <code style="font-size:12px">--dangerously-skip-permissions</code> to enable.</div>
732
+ </div>
733
+ <span class="settings-value settings-badge" id="settings-skip-perms">Disabled</span>
734
+ </div>
735
+ <div class="settings-field-row">
736
+ <label class="settings-label">Debug</label>
679
737
  <span class="settings-value settings-badge" id="settings-debug">-</span>
680
738
  </div>
681
739
  </div>
@@ -712,25 +770,15 @@
712
770
  <span class="settings-value settings-mono" id="settings-project-slug">-</span>
713
771
  </div>
714
772
  </div>
715
- <div class="settings-card hidden" id="settings-keep-awake-card">
716
- <label class="settings-toggle-row">
717
- <div>
718
- <span class="settings-label">Keep Awake</span>
719
- <div class="settings-hint">Prevent the system from sleeping while the server is running (macOS only).</div>
720
- </div>
721
- <input type="checkbox" id="settings-keep-awake">
722
- <span class="toggle-track"><span class="toggle-thumb"></span></span>
723
- </label>
724
- </div>
725
773
  </div>
726
774
  <div class="server-settings-section" data-section="models">
727
- <h2>Model &amp; Behavior</h2>
775
+ <h2>Model</h2>
728
776
  <p class="settings-hint" style="margin-bottom: 20px;">Configure which model to use and how Claude behaves during sessions.</p>
729
777
  <div class="settings-card">
730
778
  <div class="settings-field">
731
779
  <label class="settings-label">Model</label>
732
780
  <div class="settings-hint">Choose the Claude model to use. Larger models are slower but more capable.</div>
733
- <div id="settings-model-list" class="settings-model-list"></div>
781
+ <div id="ss-model-list" class="settings-model-list"></div>
734
782
  </div>
735
783
  </div>
736
784
  <div class="settings-card" id="ss-beta-card" style="display:none">
@@ -760,23 +808,20 @@
760
808
  <div class="settings-btn-group" id="ss-effort-bar"></div>
761
809
  </div>
762
810
  </div>
763
- </div>
764
- <div class="server-settings-section" data-section="security">
765
- <h2>Security</h2>
766
- <div class="settings-card">
767
- <div class="settings-field-row">
768
- <div>
769
- <label class="settings-label">Skip Permissions</label>
770
- <div class="settings-hint">When enabled, all tool executions are auto-approved without asking.</div>
771
- <div class="settings-hint">This setting cannot be changed here. Stop the server and restart with the flag below.</div>
772
- <div class="settings-hint settings-copyable-wrap">
773
- <span class="settings-copyable" id="skip-perms-cmd" data-copy="npx clay-server --dangerously-skip-permissions"><code>npx clay-server --dangerously-skip-permissions</code><button class="settings-copy-btn" type="button" title="Copy">⧉</button></span>
774
- </div>
811
+ <div class="settings-card" id="ss-thinking-card">
812
+ <div class="settings-field">
813
+ <label class="settings-label">Thinking</label>
814
+ <div class="settings-hint">Controls whether Claude shows its reasoning process. Budget mode lets you set a token limit.</div>
815
+ <div class="settings-btn-group" id="ss-thinking-bar"></div>
816
+ <div id="ss-thinking-budget-row" class="settings-budget-row" style="display:none">
817
+ <label class="settings-budget-label">Budget tokens</label>
818
+ <input id="ss-thinking-budget" type="number" class="settings-budget-input" min="1024" max="128000" step="1024" value="10000">
775
819
  </div>
776
- <span class="settings-value settings-badge" id="settings-skip-perms">Disabled</span>
777
820
  </div>
778
821
  </div>
779
- <h3>PIN Protection</h3>
822
+ </div>
823
+ <div class="server-settings-section" data-section="security">
824
+ <h2>Security</h2>
780
825
  <div class="settings-card">
781
826
  <div class="settings-field-row">
782
827
  <div>
@@ -854,7 +899,7 @@
854
899
  </div>
855
900
  </div>
856
901
  <div class="server-settings-section" data-section="environment">
857
- <h2>Shared Environment Variables</h2>
902
+ <h2>Environment</h2>
858
903
  <p class="settings-hint" style="margin-bottom: 16px;">Define environment variables shared across all projects. Project-level variables take precedence over shared ones.</p>
859
904
  <div class="ps-env-header">
860
905
  <button class="settings-btn-sm" id="ss-env-add-btn"><i data-lucide="plus"></i> Add Variable</button>
@@ -864,22 +909,35 @@
864
909
  <!-- rows rendered by JS -->
865
910
  </div>
866
911
  </div>
912
+ <div class="server-settings-section hidden" data-section="keep-awake" id="settings-keep-awake-section">
913
+ <h2>Keep Awake</h2>
914
+ <div class="settings-card">
915
+ <label class="settings-toggle-row">
916
+ <div>
917
+ <span class="settings-label">Keep Awake</span>
918
+ <div class="settings-hint">Prevent the system from sleeping while the server is running (macOS only).</div>
919
+ </div>
920
+ <input type="checkbox" id="settings-keep-awake">
921
+ <span class="toggle-track"><span class="toggle-thumb"></span></span>
922
+ </label>
923
+ </div>
924
+ </div>
867
925
  <div class="server-settings-section" data-section="restart">
868
- <h2>Restart Server</h2>
926
+ <h2>Restart</h2>
869
927
  <p class="settings-hint" style="margin-bottom: 16px;">Restart the Clay daemon process. All active sessions will be briefly interrupted and clients will automatically reconnect.</p>
870
928
  <div class="settings-card">
871
929
  <div class="settings-field">
872
930
  <label class="settings-label">Restart Daemon</label>
873
931
  <div class="settings-hint">Spawns a new daemon process and gracefully shuts down the current one.</div>
874
932
  <div style="margin-top: 12px;">
875
- <button class="settings-btn-sm" id="settings-restart-btn"><i data-lucide="refresh-cw" style="width:14px;height:14px;vertical-align:-2px;margin-right:4px;"></i>Restart Server</button>
933
+ <button class="settings-btn-sm" id="settings-restart-btn"><i data-lucide="refresh-cw" style="width:14px;height:14px;vertical-align:-2px;margin-right:4px;"></i>Restart</button>
876
934
  </div>
877
935
  <div class="settings-hint settings-restart-error hidden" id="settings-restart-error" style="margin-top: 8px;"></div>
878
936
  </div>
879
937
  </div>
880
938
  </div>
881
939
  <div class="server-settings-section" data-section="shutdown">
882
- <h2>Shutdown Server</h2>
940
+ <h2>Shutdown</h2>
883
941
  <div class="settings-danger-zone">
884
942
  <div class="settings-danger-icon"><i data-lucide="alert-triangle"></i></div>
885
943
  <div class="settings-danger-body">
@@ -913,7 +971,8 @@
913
971
  <div class="settings-card" id="admin-projects-body"></div>
914
972
  </div>
915
973
  <div class="server-settings-section settings-admin-only" data-section="admin-smtp">
916
- <h2>Email (SMTP)</h2>
974
+ <h2>Email</h2>
975
+ <p class="settings-hint" style="margin-bottom: 20px;">Configure SMTP to send invite links and one-time login codes via email. Without SMTP, users log in with a PIN instead.</p>
917
976
  <div class="settings-card" id="admin-smtp-body"></div>
918
977
  </div>
919
978
 
@@ -1053,10 +1112,24 @@
1053
1112
  <div class="confirm-backdrop"></div>
1054
1113
  <div class="confirm-dialog add-project-dialog">
1055
1114
  <div class="add-project-title">Add project</div>
1115
+ <div class="add-project-modes">
1116
+ <button class="add-project-mode-btn active" data-mode="existing">Existing directory</button>
1117
+ <button class="add-project-mode-btn" data-mode="create">New project</button>
1118
+ <button class="add-project-mode-btn" data-mode="clone">Clone from GitHub</button>
1119
+ </div>
1056
1120
  <div class="add-project-body">
1057
- <div class="add-project-input-wrap">
1058
- <input type="text" id="add-project-input" placeholder="/" autocomplete="off" spellcheck="false">
1059
- <div id="add-project-suggestions" class="hidden"></div>
1121
+ <div class="add-project-panel active" data-panel="existing">
1122
+ <div class="add-project-input-wrap">
1123
+ <input type="text" id="add-project-input" placeholder="/" autocomplete="off" spellcheck="false">
1124
+ <div id="add-project-suggestions" class="hidden"></div>
1125
+ </div>
1126
+ </div>
1127
+ <div class="add-project-panel" data-panel="create">
1128
+ <input type="text" id="add-project-create-input" placeholder="Project name" autocomplete="off" spellcheck="false">
1129
+ </div>
1130
+ <div class="add-project-panel" data-panel="clone">
1131
+ <input type="text" id="add-project-clone-input" placeholder="https://github.com/user/repo" autocomplete="off" spellcheck="false">
1132
+ <div id="add-project-clone-progress" class="hidden"><span class="clone-spinner"></span><span id="add-project-clone-text">Cloning...</span></div>
1060
1133
  </div>
1061
1134
  <div id="add-project-error" class="hidden"></div>
1062
1135
  </div>
@@ -1415,6 +1488,7 @@
1415
1488
  <script src="https://cdn.jsdelivr.net/npm/qrcode-generator@1.4.4/qrcode.min.js"></script>
1416
1489
  <script src="https://cdn.jsdelivr.net/npm/@xterm/xterm@5/lib/xterm.min.js"></script>
1417
1490
  <script src="https://cdn.jsdelivr.net/npm/@xterm/addon-fit@0/lib/addon-fit.min.js"></script>
1491
+ <script src="https://cdn.jsdelivr.net/npm/@xterm/addon-web-links@0/lib/addon-web-links.min.js"></script>
1418
1492
  <script type="module" src="app.js"></script>
1419
1493
  <div id="pwa-install-modal" class="pwa-modal hidden">
1420
1494
  <div class="pwa-modal-backdrop"></div>