clay-server 5.2.0-beta.7 → 5.2.0-beta.8

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.
@@ -25,6 +25,7 @@ function bindComposer(id, inputId, wrapperId) {
25
25
  if (!button || !input || !wrapper || button.dataset.speechBound) return;
26
26
  var composer = document.getElementById(id === 'stt-btn' ? 'input-row' : 'home-mate-chat-composer') || wrapper;
27
27
  var toolbar = document.getElementById(id === 'stt-btn' ? 'input-bottom' : 'home-mate-chat-composer') || composer;
28
+ button.addEventListener('click', refreshSpeechBrowser);
28
29
  button.dataset.speechBound = 'true'; button.classList.add('stt-button');
29
30
  var group = document.createElement('span'); group.className = 'stt-controls';
30
31
  button.before(group); group.appendChild(button);
@@ -32,7 +33,7 @@ function bindComposer(id, inputId, wrapperId) {
32
33
  picker.className = 'stt-picker-toggle'; picker.innerHTML = iconHtml('chevron-down');
33
34
  picker.setAttribute('aria-label', 'Choose voice model'); picker.setAttribute('aria-haspopup', 'dialog'); picker.setAttribute('aria-expanded', 'false');
34
35
  picker.title = 'Choose voice model'; group.appendChild(picker);
35
- picker.addEventListener('click', function () { openSpeechPicker(picker); });
36
+ picker.addEventListener('click', function () { refreshSpeechBrowser(); openSpeechPicker(picker); });
36
37
  var row = document.createElement('div'); row.className = 'stt-progress'; row.hidden = true;
37
38
  var status = document.createElement('span'); status.id = id + '-status'; status.className = 'stt-status'; status.setAttribute('role', 'status');
38
39
  var timer = document.createElement('span'); timer.className = 'stt-timer'; timer.setAttribute('aria-hidden', 'true');
@@ -70,7 +71,7 @@ function bindComposer(id, inputId, wrapperId) {
70
71
  function render() {
71
72
  var active = store.get('speechActive'); var own = !!active && active.id === id;
72
73
  var model = voiceModel(); var provider = voiceProvider(model.provider);
73
- var browser = model.provider === 'browser' ? browserSpeechInfo() : null;
74
+ var browser = model.provider === 'browser' ? store.get('speechBrowserIdentity') : null;
74
75
  var pending = own && active.model && active.phase !== 'recording';
75
76
  var autoSend = own && !!active.autoSend;
76
77
  composer.classList.toggle('stt-recording', own);
@@ -117,7 +118,11 @@ function bindComposer(id, inputId, wrapperId) {
117
118
  observer.observe(input, { attributes: true, attributeFilter: ['disabled', 'readonly'] });
118
119
  render();
119
120
  }
121
+ // Browser identity may read layout; refresh on entry and interaction, not transcript updates.
122
+ function refreshSpeechBrowser() { store.set({ speechBrowserIdentity: browserSpeechInfo() }); }
120
123
  export function initSTT() {
124
+ refreshSpeechBrowser();
125
+ window.addEventListener('focus', refreshSpeechBrowser);
121
126
  initSpeechLifecycle(); initSpeechPicker();
122
127
  bindComposer('stt-btn', 'input', 'input-wrapper');
123
128
  bindComposer('home-stt-btn', 'home-mate-chat-input', 'home-mate-chat-composer-frame');
package/lib/sessions.js CHANGED
@@ -778,8 +778,8 @@ function createSessionManager(opts) {
778
778
  }
779
779
 
780
780
  // History entries include tool activity and streamed output, so opening a
781
- // conversation needs a wider window than each incremental scroll-up page.
782
- var INITIAL_HISTORY_SIZE = 500;
781
+ // conversation starts with a 300-entry target, aligned to a complete user turn.
782
+ var INITIAL_HISTORY_SIZE = 300;
783
783
  var HISTORY_PAGE_SIZE = 100;
784
784
 
785
785
  function findTurnBoundary(history, targetIndex) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clay-server",
3
- "version": "5.2.0-beta.7",
3
+ "version": "5.2.0-beta.8",
4
4
  "description": "Self-hosted team workspace for Claude Code and Codex. Multi-user, browser-based, with persistent AI mates.",
5
5
  "bin": {
6
6
  "clay-server": "./bin/cli.js"