@agent-link/server 0.1.181 → 0.1.183
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 +1 -1
- package/web/app.js +17 -0
- package/web/css/base.css +1 -1
- package/web/css/responsive.css +4 -4
package/package.json
CHANGED
package/web/app.js
CHANGED
|
@@ -410,6 +410,22 @@ const App = {
|
|
|
410
410
|
let _resizeHandler = () => { isMobile.value = window.innerWidth <= 768; };
|
|
411
411
|
window.addEventListener('resize', _resizeHandler);
|
|
412
412
|
|
|
413
|
+
// Fix Chrome mobile: when virtual keyboard dismisses, Chrome doesn't
|
|
414
|
+
// restore scroll position (Safari does this natively). Detect keyboard
|
|
415
|
+
// dismiss via visualViewport height increase and reset page scroll.
|
|
416
|
+
let _vvResizeHandler = null;
|
|
417
|
+
if (window.visualViewport) {
|
|
418
|
+
let _lastVVHeight = window.visualViewport.height;
|
|
419
|
+
_vvResizeHandler = () => {
|
|
420
|
+
const h = window.visualViewport.height;
|
|
421
|
+
if (h > _lastVVHeight && !document.activeElement?.matches?.('input, textarea')) {
|
|
422
|
+
window.scrollTo(0, 0);
|
|
423
|
+
}
|
|
424
|
+
_lastVVHeight = h;
|
|
425
|
+
};
|
|
426
|
+
window.visualViewport.addEventListener('resize', _vvResizeHandler);
|
|
427
|
+
}
|
|
428
|
+
|
|
413
429
|
// Close workdir menu on outside click or Escape
|
|
414
430
|
let _workdirMenuClickHandler = (e) => {
|
|
415
431
|
if (!workdirMenuOpen.value) return;
|
|
@@ -685,6 +701,7 @@ const App = {
|
|
|
685
701
|
onUnmounted(() => {
|
|
686
702
|
closeWs(); streaming.cleanup(); cleanupScroll(); cleanupHighlight();
|
|
687
703
|
window.removeEventListener('resize', _resizeHandler);
|
|
704
|
+
if (_vvResizeHandler && window.visualViewport) window.visualViewport.removeEventListener('resize', _vvResizeHandler);
|
|
688
705
|
document.removeEventListener('click', _workdirMenuClickHandler);
|
|
689
706
|
document.removeEventListener('click', _slashMenuClickOutside);
|
|
690
707
|
document.removeEventListener('keydown', _workdirMenuKeyHandler);
|
package/web/css/base.css
CHANGED
|
@@ -76,7 +76,7 @@ body {
|
|
|
76
76
|
display: flex;
|
|
77
77
|
align-items: center;
|
|
78
78
|
justify-content: space-between;
|
|
79
|
-
padding: 0.5rem 1rem;
|
|
79
|
+
padding: calc(0.5rem + env(safe-area-inset-top, 0px)) 1rem 0.5rem;
|
|
80
80
|
background: var(--bg-secondary);
|
|
81
81
|
border-bottom: 1px solid var(--border);
|
|
82
82
|
flex-shrink: 0;
|
package/web/css/responsive.css
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
|
|
45
45
|
/* Top bar */
|
|
46
46
|
.top-bar {
|
|
47
|
-
padding:
|
|
47
|
+
padding: env(safe-area-inset-top, 0px) 0.75rem 0;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
.agent-label {
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
|
|
131
131
|
/* Input area */
|
|
132
132
|
.input-area {
|
|
133
|
-
padding: 0 0.75rem 0.75rem;
|
|
133
|
+
padding: 0 0.75rem calc(0.75rem + env(safe-area-inset-bottom, 0px));
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
.input-card {
|
|
@@ -279,11 +279,11 @@
|
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
.input-area {
|
|
282
|
-
padding: 0 0.5rem 0.5rem;
|
|
282
|
+
padding: 0 0.5rem calc(0.5rem + env(safe-area-inset-bottom, 0px));
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
.top-bar {
|
|
286
|
-
padding:
|
|
286
|
+
padding: env(safe-area-inset-top, 0px) 0.5rem 0;
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
.folder-picker-dialog {
|