clay-server 2.32.0-beta.9 → 2.32.1-beta.1

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/public/app.js CHANGED
@@ -522,6 +522,15 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
522
522
  forceScrollToBottom();
523
523
  });
524
524
 
525
+ // Scroll to bottom when returning to the app (e.g. switching back from another
526
+ // Android app or tab). Without this the browser restores a stale scroll offset
527
+ // and leaves the user stranded mid-session instead of at the latest message.
528
+ document.addEventListener("visibilitychange", function () {
529
+ if (!document.hidden) {
530
+ scrollToBottom();
531
+ }
532
+ });
533
+
525
534
  // Fork session from a user message
526
535
  messagesEl.addEventListener("click", function(e) {
527
536
  var btn = e.target.closest(".msg-action-fork");
@@ -830,6 +830,11 @@
830
830
  overflow: hidden;
831
831
  }
832
832
 
833
+ /* Allow popovers (context picker) to escape when open */
834
+ #attach-wrap:has(#context-sources-picker:not(.hidden)) {
835
+ overflow: visible;
836
+ }
837
+
833
838
  #attach-file-btn,
834
839
  #attach-image-btn,
835
840
  #schedule-btn,
@@ -496,7 +496,7 @@ export function addAuthRequiredMessage(msg) {
496
496
  div.className = "auth-required-msg";
497
497
 
498
498
  var vendor = msg.vendor || "claude";
499
- var loginCmd = msg.loginCommand || (vendor === "codex" ? "codex --login" : "claude login");
499
+ var loginCmd = msg.loginCommand || (vendor === "codex" ? "codex login" : "claude login");
500
500
  var vendorName = msg.text || "Claude Code is not logged in.";
501
501
 
502
502
  var header = document.createElement("div");
@@ -5,6 +5,18 @@ import { getMermaidThemeVars } from './theme.js';
5
5
  // Initialize markdown parser
6
6
  marked.use({ gfm: true, breaks: false });
7
7
 
8
+ // Open external links in a new tab
9
+ marked.use({
10
+ renderer: {
11
+ link({ href, title, text }) {
12
+ var isExternal = href && (href.startsWith('http://') || href.startsWith('https://'));
13
+ var titleAttr = title ? ' title="' + title + '"' : '';
14
+ var targetAttr = isExternal ? ' target="_blank" rel="noopener noreferrer"' : '';
15
+ return '<a href="' + href + '"' + titleAttr + targetAttr + '>' + text + '</a>';
16
+ }
17
+ }
18
+ });
19
+
8
20
  // Initialize mermaid
9
21
  mermaid.initialize({
10
22
  startOnLoad: false,
package/lib/sdk-bridge.js CHANGED
@@ -921,7 +921,7 @@ function createSDKBridge(opts) {
921
921
  type: "auth_required",
922
922
  text: vendorName + " is not logged in.",
923
923
  vendor: session.vendor,
924
- loginCommand: session.vendor === "codex" ? "codex --login" : session.vendor + " login",
924
+ loginCommand: session.vendor === "codex" ? "codex login" : session.vendor + " login",
925
925
  linuxUser: authLinuxUser,
926
926
  canAutoLogin: canAutoLogin,
927
927
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clay-server",
3
- "version": "2.32.0-beta.9",
3
+ "version": "2.32.1-beta.1",
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",