clay-server 2.26.0 → 2.26.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.
Files changed (2) hide show
  1. package/lib/public/app.js +79 -52
  2. package/package.json +1 -1
package/lib/public/app.js CHANGED
@@ -4388,8 +4388,12 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
4388
4388
  if (dhBar) dhBar.remove();
4389
4389
  var dbBadges = document.querySelectorAll(".debate-header-badge");
4390
4390
  for (var dbi = 0; dbi < dbBadges.length; dbi++) dbBadges[dbi].remove();
4391
- // Clean up ended mode banner if debate is not active on this session
4391
+ // Clean up all debate mode banners if debate is not active on this session
4392
+ if (debateFloorMode) exitDebateFloorMode();
4393
+ if (debateConcludeMode) exitDebateConcludeMode();
4392
4394
  if (debateEndedMode) exitDebateEndedMode();
4395
+ var dbBanner = document.getElementById("debate-floor-banner");
4396
+ if (dbBanner) dbBanner.remove();
4393
4397
  }
4394
4398
  scrollToBottom();
4395
4399
  // Scroll to tool element if navigating from file edit history
@@ -5478,7 +5482,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
5478
5482
 
5479
5483
  // --- Debate ---
5480
5484
  case "debate_preparing":
5481
- showDebateSticky("preparing", msg);
5485
+ if (!replayingHistory) showDebateSticky("preparing", msg);
5482
5486
  handleDebatePreparing(msg);
5483
5487
  break;
5484
5488
 
@@ -5491,7 +5495,7 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
5491
5495
  break;
5492
5496
 
5493
5497
  case "debate_started":
5494
- showDebateSticky("live", msg);
5498
+ if (!replayingHistory) showDebateSticky("live", msg);
5495
5499
  if (replayingHistory) {
5496
5500
  renderDebateStarted(msg);
5497
5501
  } else {
@@ -5538,11 +5542,11 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
5538
5542
  break;
5539
5543
 
5540
5544
  case "debate_conclude_confirm":
5541
- showDebateConcludeConfirm(msg);
5545
+ if (!replayingHistory) showDebateConcludeConfirm(msg);
5542
5546
  break;
5543
5547
 
5544
5548
  case "debate_user_floor":
5545
- showDebateUserFloor(msg);
5549
+ if (!replayingHistory) showDebateUserFloor(msg);
5546
5550
  break;
5547
5551
 
5548
5552
  case "debate_user_floor_done":
@@ -5555,11 +5559,11 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
5555
5559
 
5556
5560
  case "debate_resumed":
5557
5561
  handleDebateResumed(msg);
5558
- showDebateSticky("live", msg);
5562
+ if (!replayingHistory) showDebateSticky("live", msg);
5559
5563
  break;
5560
5564
 
5561
5565
  case "debate_ended":
5562
- showDebateSticky("ended", msg);
5566
+ if (!replayingHistory) showDebateSticky("ended", msg);
5563
5567
  if (replayingHistory) {
5564
5568
  renderDebateEnded(msg);
5565
5569
  } else {
@@ -5896,8 +5900,8 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
5896
5900
  handleDmSend: function () { handleDmSend(); },
5897
5901
  isDebateEndedMode: function () { return debateEndedMode; },
5898
5902
  handleDebateEndedSend: function () { handleDebateEndedSend(); },
5899
- isDebateConcludeMode: function () { return false; },
5900
- handleDebateConcludeSend: null,
5903
+ isDebateConcludeMode: function () { return debateConcludeMode; },
5904
+ handleDebateConcludeSend: function () { handleDebateConcludeSend(); },
5901
5905
  isDebateFloorMode: function () { return debateFloorMode; },
5902
5906
  handleDebateFloorSend: function () { handleDebateFloorSend(); },
5903
5907
  isMateDm: function () { return dmMode && dmTargetUser && dmTargetUser.isMate; },
@@ -7222,17 +7226,77 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
7222
7226
  var debateHandRaiseOpen = false;
7223
7227
 
7224
7228
  function showDebateConcludeConfirm(msg) {
7225
- showDebateBottomBar("conclude", msg);
7226
- scrollToBottom();
7229
+ showDebateConcludeMode();
7227
7230
  }
7228
7231
 
7229
7232
  var debateFloorMode = false;
7233
+ var debateConcludeMode = false;
7234
+
7235
+ function showDebateConcludeMode() {
7236
+ removeDebateBottomBar();
7237
+ debateConcludeMode = true;
7238
+ var inputArea = document.getElementById("input-area");
7239
+ if (inputArea) {
7240
+ inputArea.classList.add("debate-floor-mode");
7241
+ inputArea.style.display = "";
7242
+ }
7243
+ var existingBanner = document.getElementById("debate-floor-banner");
7244
+ if (existingBanner) existingBanner.remove();
7245
+ var banner = document.createElement("div");
7246
+ banner.id = "debate-floor-banner";
7247
+ banner.className = "debate-floor-banner";
7248
+ banner.innerHTML = iconHtml("check-circle") + " <span>The moderator is ready to conclude</span>" +
7249
+ '<button class="debate-floor-done-btn debate-floor-end-btn" id="debate-floor-end-btn">End Debate</button>';
7250
+ if (inputArea && inputArea.parentNode) {
7251
+ inputArea.parentNode.insertBefore(banner, inputArea);
7252
+ }
7253
+ refreshIcons();
7254
+ var endBtn = document.getElementById("debate-floor-end-btn");
7255
+ if (endBtn) {
7256
+ endBtn.addEventListener("click", function () {
7257
+ if (ws && ws.readyState === 1) {
7258
+ ws.send(JSON.stringify({ type: "debate_conclude_response", action: "end" }));
7259
+ }
7260
+ exitDebateConcludeMode();
7261
+ });
7262
+ }
7263
+ var inputEl = document.getElementById("input");
7264
+ if (inputEl) {
7265
+ inputEl._origPlaceholder = inputEl._origPlaceholder || inputEl.placeholder;
7266
+ inputEl.placeholder = "Add a direction to continue the debate...";
7267
+ inputEl.focus();
7268
+ }
7269
+ scrollToBottom();
7270
+ }
7271
+
7272
+ function exitDebateConcludeMode() {
7273
+ debateConcludeMode = false;
7274
+ var inputArea = document.getElementById("input-area");
7275
+ if (inputArea) inputArea.classList.remove("debate-floor-mode");
7276
+ var banner = document.getElementById("debate-floor-banner");
7277
+ if (banner) banner.remove();
7278
+ var inputEl = document.getElementById("input");
7279
+ if (inputEl && inputEl._origPlaceholder) {
7280
+ inputEl.placeholder = inputEl._origPlaceholder;
7281
+ delete inputEl._origPlaceholder;
7282
+ }
7283
+ }
7284
+
7285
+ function handleDebateConcludeSend() {
7286
+ var text = inputEl.value.trim();
7287
+ if (ws && ws.readyState === 1) {
7288
+ ws.send(JSON.stringify({ type: "debate_conclude_response", action: "continue", text: text }));
7289
+ }
7290
+ inputEl.value = "";
7291
+ exitDebateConcludeMode();
7292
+ showDebateBottomBar("live");
7293
+ }
7230
7294
 
7231
7295
  var debateEndedMode = false;
7232
7296
 
7233
7297
  function showDebateEndedMode(msg) {
7234
- debateEndedMode = true;
7235
7298
  removeDebateBottomBar();
7299
+ debateEndedMode = true;
7236
7300
  var inputArea = document.getElementById("input-area");
7237
7301
  if (inputArea) {
7238
7302
  inputArea.classList.add("debate-floor-mode");
@@ -7296,9 +7360,9 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
7296
7360
  }
7297
7361
 
7298
7362
  function showDebateUserFloor(msg) {
7299
- debateFloorMode = true;
7300
7363
  // Remove debate bottom bar and show input area in floor mode
7301
7364
  removeDebateBottomBar();
7365
+ debateFloorMode = true;
7302
7366
  var inputArea = document.getElementById("input-area");
7303
7367
  if (inputArea) {
7304
7368
  inputArea.classList.add("debate-floor-mode");
@@ -7469,44 +7533,6 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
7469
7533
  ws.send(JSON.stringify({ type: "debate_stop" }));
7470
7534
  }
7471
7535
  });
7472
- } else if (mode === "conclude") {
7473
- bar.innerHTML =
7474
- '<div class="debate-bottom-inner debate-bottom-conclude">' +
7475
- '<div class="debate-bottom-conclude-label">' + iconHtml("check-circle") + ' The moderator is ready to conclude. End the debate?</div>' +
7476
- '<textarea class="debate-bottom-conclude-input" id="debate-bottom-conclude-input" rows="3" placeholder="Or add a direction to continue..."></textarea>' +
7477
- '<div class="debate-bottom-conclude-actions">' +
7478
- '<button class="debate-bottom-continue" id="debate-bottom-continue">Continue</button>' +
7479
- '<button class="debate-bottom-end" id="debate-bottom-end">End Debate</button>' +
7480
- '</div>' +
7481
- '</div>';
7482
-
7483
- inputArea.parentNode.insertBefore(bar, inputArea);
7484
- inputArea.style.display = "none";
7485
- refreshIcons();
7486
-
7487
- var textArea = document.getElementById("debate-bottom-conclude-input");
7488
- document.getElementById("debate-bottom-end").addEventListener("click", function () {
7489
- if (ws && ws.readyState === 1) {
7490
- ws.send(JSON.stringify({ type: "debate_conclude_response", action: "end" }));
7491
- }
7492
- removeDebateBottomBar();
7493
- });
7494
- document.getElementById("debate-bottom-continue").addEventListener("click", function () {
7495
- var text = textArea ? textArea.value.trim() : "";
7496
- if (ws && ws.readyState === 1) {
7497
- ws.send(JSON.stringify({ type: "debate_conclude_response", action: "continue", text: text }));
7498
- }
7499
- removeDebateBottomBar();
7500
- showDebateBottomBar("live");
7501
- });
7502
- if (textArea) {
7503
- textArea.addEventListener("keydown", function (e) {
7504
- if (e.key === "Enter" && !e.shiftKey) {
7505
- e.preventDefault();
7506
- document.getElementById("debate-bottom-continue").click();
7507
- }
7508
- });
7509
- }
7510
7536
  }
7511
7537
  }
7512
7538
 
@@ -7526,8 +7552,9 @@ import { initDebate, handleDebatePreparing, handleDebateStarted, handleDebateRes
7526
7552
  var handBar = document.getElementById("debate-hand-raise-bar");
7527
7553
  if (handBar) handBar.remove();
7528
7554
  debateHandRaiseOpen = false;
7529
- // Clean up floor/ended modes
7555
+ // Clean up floor/conclude/ended modes
7530
7556
  if (debateFloorMode) exitDebateFloorMode();
7557
+ if (debateConcludeMode) exitDebateConcludeMode();
7531
7558
  if (debateEndedMode) exitDebateEndedMode();
7532
7559
  // Restore input area
7533
7560
  var inputArea = document.getElementById("input-area");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clay-server",
3
- "version": "2.26.0",
3
+ "version": "2.26.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",