clay-server 2.24.3-beta.3 → 2.24.3-beta.5

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/lib/project.js CHANGED
@@ -420,7 +420,10 @@ function createProjectContext(opts) {
420
420
  });
421
421
  var _projMode = typeof opts.onGetProjectDefaultMode === "function" ? opts.onGetProjectDefaultMode(slug) : null;
422
422
  var _srvMode = typeof opts.onGetServerDefaultMode === "function" ? opts.onGetServerDefaultMode() : null;
423
- sm.currentPermissionMode = (_projMode && _projMode.mode) || (_srvMode && _srvMode.mode) || "default";
423
+ sm._savedDefaultMode = (_projMode && _projMode.mode) || (_srvMode && _srvMode.mode) || "default";
424
+ // Immediately apply the saved default so config_state on connect reflects it
425
+ // before the SDK has warmed up and fired system/init.
426
+ if (sm._savedDefaultMode) sm.currentPermissionMode = sm._savedDefaultMode;
424
427
 
425
428
  var _projEffort = typeof opts.onGetProjectDefaultEffort === "function" ? opts.onGetProjectDefaultEffort(slug) : null;
426
429
  var _srvEffort = typeof opts.onGetServerDefaultEffort === "function" ? opts.onGetServerDefaultEffort() : null;
@@ -429,6 +432,8 @@ function createProjectContext(opts) {
429
432
  var _projModel = typeof opts.onGetProjectDefaultModel === "function" ? opts.onGetProjectDefaultModel(slug) : null;
430
433
  var _srvModel = typeof opts.onGetServerDefaultModel === "function" ? opts.onGetServerDefaultModel() : null;
431
434
  sm._savedDefaultModel = (_projModel && _projModel.model) || (_srvModel && _srvModel.model) || null;
435
+ // Immediately apply the saved default so config_state on connect reflects it
436
+ // before the SDK has warmed up and fired system/init.
432
437
  if (sm._savedDefaultModel) sm.currentModel = sm._savedDefaultModel;
433
438
 
434
439
  // --- SDK bridge ---
@@ -4,7 +4,7 @@ import { iconHtml, refreshIcons } from './icons.js';
4
4
  import { openProjectSettings } from './project-settings.js';
5
5
  import { triggerShare } from './qrcode.js';
6
6
  import { parseEmojis } from './markdown.js';
7
- import { getCurrentTheme } from './theme.js';
7
+ import { getCurrentTheme, getChatLayout, setChatLayout } from './theme.js';
8
8
  import { showMateProfilePopover } from './profile.js';
9
9
  import { closeArchive } from './sticky-notes.js';
10
10
  import { closeScheduler } from './scheduler.js';
@@ -1721,6 +1721,27 @@ function renderSheetSettings(listEl) {
1721
1721
 
1722
1722
  listEl.appendChild(themeBtn);
1723
1723
 
1724
+ // Chat Layout switch button
1725
+ var currentLayout = getChatLayout();
1726
+ var isBubble = currentLayout === "bubble";
1727
+ var layoutBtn = document.createElement("button");
1728
+ layoutBtn.className = "mobile-more-item";
1729
+ layoutBtn.innerHTML = '<i data-lucide="' + (isBubble ? "monitor" : "message-circle") + '"></i>'
1730
+ + '<span class="mobile-more-item-label">Switch to ' + (isBubble ? "Channel" : "Bubble") + '</span>';
1731
+
1732
+ layoutBtn.addEventListener("click", function () {
1733
+ var next = getChatLayout() === "bubble" ? "channel" : "bubble";
1734
+ setChatLayout(next);
1735
+ fetch('/api/user/chat-layout', {
1736
+ method: 'PUT',
1737
+ headers: { 'Content-Type': 'application/json' },
1738
+ body: JSON.stringify({ layout: next })
1739
+ });
1740
+ closeMobileSheet();
1741
+ });
1742
+
1743
+ listEl.appendChild(layoutBtn);
1744
+
1724
1745
  // "Open as app" — only show if not already in PWA standalone mode
1725
1746
  if (!document.documentElement.classList.contains("pwa-standalone")) {
1726
1747
  var pwaBtn = document.createElement("button");
package/lib/terminal.js CHANGED
@@ -13,7 +13,7 @@ function createTerminal(cwd, cols, rows, osUserInfo) {
13
13
  // Determine shell: prefer target user's shell, then $SHELL, then platform default
14
14
  var shell = (osUserInfo && osUserInfo.shell)
15
15
  || process.env.SHELL
16
- || (process.platform === "win32" ? process.env.COMSPEC || "cmd.exe" : "/bin/zsh");
16
+ || (process.platform === "win32" ? process.env.COMSPEC || "cmd.exe" : "/bin/sh");
17
17
 
18
18
  // Build a minimal, isolated environment (no daemon env leakage)
19
19
  var termEnv = buildUserEnv(osUserInfo);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clay-server",
3
- "version": "2.24.3-beta.3",
3
+ "version": "2.24.3-beta.5",
4
4
  "description": "Self-hosted Claude Code in your browser. Multi-session, multi-user, push notifications.",
5
5
  "bin": {
6
6
  "clay-server": "./bin/cli.js",