@agent-link/server 0.1.129 → 0.1.130

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-link/server",
3
- "version": "0.1.129",
3
+ "version": "0.1.130",
4
4
  "description": "AgentLink relay server",
5
5
  "license": "MIT",
6
6
  "repository": {
package/web/app.js CHANGED
@@ -300,6 +300,24 @@ const App = {
300
300
  let _resizeHandler = () => { isMobile.value = window.innerWidth <= 768; };
301
301
  window.addEventListener('resize', _resizeHandler);
302
302
 
303
+ // ── iOS Safari keyboard fix ──
304
+ // Safari doesn't reliably support interactive-widget=resizes-content,
305
+ // so we use visualViewport API to shrink layout when the keyboard opens.
306
+ let _vvResizeHandler = null;
307
+ let _vvScrollHandler = null;
308
+ if (window.visualViewport) {
309
+ const vv = window.visualViewport;
310
+ const updateViewportHeight = () => {
311
+ // vv.height excludes the virtual keyboard; use it to constrain the layout
312
+ document.documentElement.style.height = vv.height + 'px';
313
+ };
314
+ _vvResizeHandler = updateViewportHeight;
315
+ _vvScrollHandler = updateViewportHeight;
316
+ vv.addEventListener('resize', _vvResizeHandler);
317
+ vv.addEventListener('scroll', _vvScrollHandler);
318
+ updateViewportHeight();
319
+ }
320
+
303
321
  // Close workdir menu on outside click or Escape
304
322
  let _workdirMenuClickHandler = (e) => {
305
323
  if (!workdirMenuOpen.value) return;
@@ -452,7 +470,16 @@ const App = {
452
470
 
453
471
  // ── Lifecycle ──
454
472
  onMounted(() => { connect(scheduleHighlight); });
455
- onUnmounted(() => { closeWs(); streaming.cleanup(); window.removeEventListener('resize', _resizeHandler); document.removeEventListener('click', _workdirMenuClickHandler); document.removeEventListener('keydown', _workdirMenuKeyHandler); });
473
+ onUnmounted(() => {
474
+ closeWs(); streaming.cleanup();
475
+ window.removeEventListener('resize', _resizeHandler);
476
+ document.removeEventListener('click', _workdirMenuClickHandler);
477
+ document.removeEventListener('keydown', _workdirMenuKeyHandler);
478
+ if (window.visualViewport) {
479
+ if (_vvResizeHandler) window.visualViewport.removeEventListener('resize', _vvResizeHandler);
480
+ if (_vvScrollHandler) window.visualViewport.removeEventListener('scroll', _vvScrollHandler);
481
+ }
482
+ });
456
483
 
457
484
  return {
458
485
  status, agentName, hostname, workDir, sessionId, error,
package/web/style.css CHANGED
@@ -53,6 +53,7 @@
53
53
  html {
54
54
  height: 100%;
55
55
  height: 100dvh;
56
+ overflow: hidden;
56
57
  }
57
58
 
58
59
  body {