clay-server 4.3.0-beta.3 → 4.3.0-beta.4

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.
@@ -518,7 +518,7 @@ button.top-bar-pill.pill-accent:hover { background: color-mix(in srgb, var(--acc
518
518
  .popover-copy:hover { color: var(--text); border-color: var(--text-dimmer); }
519
519
  .popover-copy.copied { color: var(--success); border-color: var(--success); }
520
520
 
521
- /* Skip permissions pill */
521
+ /* Quiet native toolbar control for session permission mode. */
522
522
  .session-permission-control {
523
523
  display: inline-flex;
524
524
  align-items: center;
@@ -535,35 +535,40 @@ button.top-bar-pill.pill-accent:hover { background: color-mix(in srgb, var(--acc
535
535
  flex: 0 0 auto;
536
536
  gap: 1px;
537
537
  padding: 2px;
538
- border: 1px solid color-mix(in srgb, var(--border, #45484f) 88%, transparent);
539
- border-radius: 10px;
540
- background: color-mix(in srgb, var(--surface-raised, rgba(0,0,0,.18)) 86%, transparent);
541
- box-shadow: inset 0 1px 0 rgba(255,255,255,.04), 0 2px 8px rgba(0,0,0,.12);
538
+ border: 1px solid color-mix(in srgb, var(--border) 82%, transparent);
539
+ border-radius: 8px;
540
+ background: color-mix(in srgb, var(--bg-alt) 72%, transparent);
542
541
  }
543
542
  .session-permission-segmented button {
544
543
  position: relative;
545
- flex: 0 0 auto;
544
+ flex: 0 0 48px;
545
+ width: 48px;
546
+ height: 22px;
546
547
  border: 0;
547
548
  border-radius: 7px;
548
- padding: 4px 9px;
549
- color: var(--text-muted, inherit);
549
+ padding: 3px 4px;
550
+ color: var(--text-secondary);
550
551
  background: transparent;
551
552
  font: inherit;
553
+ font-weight: 500;
552
554
  font-size: 11px;
553
555
  line-height: 1;
554
556
  white-space: nowrap;
555
557
  cursor: pointer;
556
- transition: color .15s ease, background .15s ease, box-shadow .15s ease;
557
- }
558
- .session-permission-segmented button:hover:not(:disabled) { color: var(--text, #fff); background: rgba(255,255,255,.07); }
559
- .session-permission-segmented button:focus-visible { outline: 2px solid var(--accent, #6f8cff); outline-offset: 1px; z-index: 1; }
560
- .session-permission-segmented button.active { background: var(--accent, #6f8cff); color: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.2); }
561
- .session-permission-segmented button:disabled { cursor: not-allowed; opacity: .5; }
558
+ transition: color .15s ease, background .15s ease, box-shadow .15s ease, border-color .15s ease;
559
+ }
560
+ .session-permission-segmented button:hover:not(:disabled) { color: var(--text); background: color-mix(in srgb, var(--bg) 76%, transparent); }
561
+ .session-permission-segmented button:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; z-index: 1; }
562
+ .session-permission-segmented button.active { border: 1px solid var(--border); background: var(--input-bg); color: var(--text); font-weight: var(--font-weight-heading, 600); box-shadow: 0 1px 2px rgba(var(--shadow-rgb), .12); }
563
+ :root.light-theme .session-permission-segmented button.active { background: var(--bg); }
564
+ .session-permission-segmented button:disabled { cursor: not-allowed; }
565
+ .session-permission-control:not(.permission-pending) .session-permission-segmented button:disabled { color: var(--text-muted); opacity: .65; }
562
566
  .session-permission-control.permission-pending .session-permission-segmented button:disabled { cursor: wait; }
563
- .session-permission-segmented button.pending { color: #fff; }
564
- .permission-spinner { display: inline-block; visibility: hidden; width: 10px; height: 10px; margin-left: 4px; vertical-align: -1px; border: 1.5px solid currentColor; border-right-color: transparent; border-radius: 50%; }
567
+ .session-permission-segmented button.pending { color: var(--text); background: color-mix(in srgb, var(--bg) 42%, transparent); }
568
+ .session-permission-segmented button.pending .permission-label { visibility: hidden; }
569
+ .permission-spinner { position: absolute; inset: 50% auto auto 50%; display: block; visibility: hidden; width: 10px; height: 10px; transform: translate(-50%, -50%); border: 1.5px solid currentColor; border-right-color: transparent; border-radius: 50%; }
565
570
  .session-permission-segmented button.pending .permission-spinner { visibility: visible; animation: permission-spin .7s linear infinite; }
566
- @keyframes permission-spin { to { transform: rotate(360deg); } }
571
+ @keyframes permission-spin { to { transform: translate(-50%, -50%) rotate(360deg); } }
567
572
  .session-permission-status {
568
573
  flex: 0 1 auto;
569
574
  min-width: 0;
@@ -592,12 +597,8 @@ button.top-bar-pill.pill-accent:hover { background: color-mix(in srgb, var(--acc
592
597
  }
593
598
  .permission-runtime-fallback .session-permission-status { color: var(--warning, #d49a55); }
594
599
  .permission-globally-forced .session-permission-status { color: var(--warning, #d49a55); }
595
- .permission-label-short { display: none; }
596
600
  @media (max-width: 760px) {
597
- .permission-label-long { display: none; }
598
- .permission-label-short { display: inline; }
599
601
  .session-permission-control { column-gap: 4px; }
600
- .session-permission-segmented button { padding-inline: 7px; }
601
602
  .session-permission-status {
602
603
  max-width: 132px;
603
604
  font-size: 9px;
@@ -365,31 +365,35 @@ body.pane-mode #input-area {
365
365
  line-height: 1;
366
366
  }
367
367
 
368
- /* Header-scoped (two-class) selectors: pane.css loads BEFORE menus.css in
369
- style.css, so the base .session-full-access rules would win a specificity
370
- tie and keep the pill at its 22px title-bar size inside the 24px pane
371
- header. Scope under .split-pane-header to outrank them. */
368
+ /* Header-scoped selectors keep the compact permission control clear of the
369
+ title and close affordance while preserving the shared header rhythm. */
370
+ .split-pane-header {
371
+ height: 28px;
372
+ min-height: 28px;
373
+ }
374
+
372
375
  .split-pane-header .split-pane-full-access {
373
- height: 22px;
376
+ height: 24px;
374
377
  align-self: center;
375
378
  margin-left: 0;
376
379
  padding: 0;
377
380
  gap: 4px;
378
- font-size: 10px;
381
+ font-size: 11px;
379
382
  letter-spacing: 0.02em;
380
383
  flex-wrap: nowrap;
381
384
  flex: 0 0 auto;
382
- overflow: hidden;
383
385
  }
384
386
 
385
387
  .split-pane-header .session-permission-segmented button {
386
- min-height: 18px;
387
- padding: 3px 6px;
388
- font-size: 10px;
388
+ min-height: 20px;
389
+ height: 20px;
390
+ font-size: 11px;
389
391
  }
390
392
 
391
- .split-pane-header .permission-label-long { display: none; }
392
- .split-pane-header .permission-label-short { display: inline; }
393
+ .split-pane-header .session-permission-segmented {
394
+ height: 24px;
395
+ padding: 1px;
396
+ }
393
397
 
394
398
  .split-pane-header .session-permission-status {
395
399
  flex: 0 0 auto;
@@ -410,9 +410,9 @@
410
410
  <button id="header-info-btn" type="button" title="Session info"><i data-lucide="info"></i></button>
411
411
  <div id="header-full-access-btn" class="session-permission-control hidden" role="group" aria-label="Session permission mode">
412
412
  <div class="session-permission-segmented">
413
- <button type="button" data-permission-mode="default"><span class="permission-label">Ask</span><span class="permission-spinner" aria-hidden="true"></span></button>
414
- <button type="button" data-permission-mode="auto"><span class="permission-label">Auto</span><span class="permission-spinner" aria-hidden="true"></span></button>
415
- <button type="button" data-permission-mode="bypassPermissions" aria-label="Skip permissions" title="Skip permissions"><span class="permission-label-long permission-label">Skip permissions</span><span class="permission-label-short permission-label" aria-hidden="true">Skip</span><span class="permission-spinner" aria-hidden="true"></span></button>
413
+ <button type="button" data-permission-mode="default" aria-label="Ask permissions" title="Ask permissions"><span class="permission-label">Ask</span><span class="permission-spinner" aria-hidden="true"></span></button>
414
+ <button type="button" data-permission-mode="auto" aria-label="Auto permissions" title="Auto permissions"><span class="permission-label">Auto</span><span class="permission-spinner" aria-hidden="true"></span></button>
415
+ <button type="button" data-permission-mode="bypassPermissions" aria-label="Skip permissions" title="Skip permissions"><span class="permission-label">Skip</span><span class="permission-spinner" aria-hidden="true"></span></button>
416
416
  </div>
417
417
  <span class="session-permission-status hidden" aria-live="polite"></span>
418
418
  </div>
@@ -46,9 +46,9 @@ export function createPermissionControl(className, ariaLabel) {
46
46
  control.setAttribute("role", "group");
47
47
  control.setAttribute("aria-label", ariaLabel || "Session permission mode");
48
48
  control.innerHTML = '<div class="session-permission-segmented">' +
49
- '<button type="button" data-permission-mode="default"><span class="permission-label">Ask</span><span class="permission-spinner" aria-hidden="true"></span></button>' +
50
- '<button type="button" data-permission-mode="auto"><span class="permission-label">Auto</span><span class="permission-spinner" aria-hidden="true"></span></button>' +
51
- '<button type="button" data-permission-mode="bypassPermissions" aria-label="Skip permissions" title="Skip permissions"><span class="permission-label-long permission-label">Skip permissions</span><span class="permission-label-short permission-label" aria-hidden="true">Skip</span><span class="permission-spinner" aria-hidden="true"></span></button>' +
49
+ '<button type="button" data-permission-mode="default" aria-label="Ask permissions" title="Ask permissions"><span class="permission-label">Ask</span><span class="permission-spinner" aria-hidden="true"></span></button>' +
50
+ '<button type="button" data-permission-mode="auto" aria-label="Auto permissions" title="Auto permissions"><span class="permission-label">Auto</span><span class="permission-spinner" aria-hidden="true"></span></button>' +
51
+ '<button type="button" data-permission-mode="bypassPermissions" aria-label="Skip permissions" title="Skip permissions"><span class="permission-label">Skip</span><span class="permission-spinner" aria-hidden="true"></span></button>' +
52
52
  '</div><span class="session-permission-status" aria-live="polite"></span>';
53
53
  control.querySelector(".session-permission-status").setAttribute("aria-atomic", "true");
54
54
  return control;
@@ -101,6 +101,7 @@ export function renderPermissionControl(control, state) {
101
101
  control.classList.toggle("permission-globally-forced", globallyForced);
102
102
  control.classList.toggle("permission-runtime-fallback", state.permissionMode === "auto" && !!state.effectivePermissionMode && state.effectivePermissionMode !== "auto");
103
103
  control.setAttribute("aria-busy", pending ? "true" : "false");
104
+ var buttonTitles = { default: "Ask permissions", auto: "Auto permissions", bypassPermissions: "Skip permissions" };
104
105
  var buttons = control.querySelectorAll("[data-permission-mode]");
105
106
  for (var i = 0; i < buttons.length; i++) {
106
107
  var mode = buttons[i].dataset.permissionMode;
@@ -113,8 +114,7 @@ export function renderPermissionControl(control, state) {
113
114
  buttons[i].classList.toggle("pending", requested);
114
115
  buttons[i].setAttribute("aria-pressed", selected ? "true" : "false");
115
116
  buttons[i].setAttribute("aria-busy", requested ? "true" : "false");
116
- if (unsupported) buttons[i].title = "Auto permissions are unavailable for this Claude session.";
117
- else buttons[i].removeAttribute("title");
117
+ buttons[i].title = unsupported ? "Auto permissions are unavailable for this Claude session." : buttonTitles[mode];
118
118
  }
119
119
  var status = control.querySelector(".session-permission-status");
120
120
  if (status) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clay-server",
3
- "version": "4.3.0-beta.3",
3
+ "version": "4.3.0-beta.4",
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"