@agent-link/server 0.1.174 → 0.1.175
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 +11 -1
- package/web/css/tools.css +6 -0
- package/web/modules/appHelpers.js +7 -6
package/package.json
CHANGED
package/web/app.js
CHANGED
|
@@ -666,13 +666,23 @@ const App = {
|
|
|
666
666
|
watch(loop.loopsList, () => { loadingLoops.value = false; });
|
|
667
667
|
|
|
668
668
|
// ── Lifecycle ──
|
|
669
|
-
|
|
669
|
+
function _onVisibilityChange() {
|
|
670
|
+
if (!document.hidden) {
|
|
671
|
+
nextTick(() => scrollToBottom(true));
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
onMounted(() => {
|
|
676
|
+
connect(scheduleHighlight);
|
|
677
|
+
document.addEventListener('visibilitychange', _onVisibilityChange);
|
|
678
|
+
});
|
|
670
679
|
onUnmounted(() => {
|
|
671
680
|
closeWs(); streaming.cleanup(); cleanupScroll(); cleanupHighlight();
|
|
672
681
|
window.removeEventListener('resize', _resizeHandler);
|
|
673
682
|
document.removeEventListener('click', _workdirMenuClickHandler);
|
|
674
683
|
document.removeEventListener('click', _slashMenuClickOutside);
|
|
675
684
|
document.removeEventListener('keydown', _workdirMenuKeyHandler);
|
|
685
|
+
document.removeEventListener('visibilitychange', _onVisibilityChange);
|
|
676
686
|
});
|
|
677
687
|
|
|
678
688
|
return {
|
package/web/css/tools.css
CHANGED
|
@@ -93,6 +93,12 @@
|
|
|
93
93
|
border-left: 1px solid var(--border);
|
|
94
94
|
padding-left: 8px;
|
|
95
95
|
overflow: hidden;
|
|
96
|
+
animation: toolExpand 0.15s ease-out;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@keyframes toolExpand {
|
|
100
|
+
from { opacity: 0; max-height: 0; }
|
|
101
|
+
to { opacity: 1; max-height: 500px; }
|
|
96
102
|
}
|
|
97
103
|
|
|
98
104
|
.tool-block {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @returns {{ onScroll, scrollToBottom, cleanup }}
|
|
7
7
|
*/
|
|
8
8
|
export function createScrollManager(selector) {
|
|
9
|
-
let
|
|
9
|
+
let _rafId = null;
|
|
10
10
|
let _userScrolledUp = false;
|
|
11
11
|
|
|
12
12
|
function onScroll(e) {
|
|
@@ -16,16 +16,17 @@ export function createScrollManager(selector) {
|
|
|
16
16
|
|
|
17
17
|
function scrollToBottom(force) {
|
|
18
18
|
if (_userScrolledUp && !force) return;
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
if (document.hidden) return;
|
|
20
|
+
if (_rafId) return;
|
|
21
|
+
_rafId = requestAnimationFrame(() => {
|
|
22
|
+
_rafId = null;
|
|
22
23
|
const el = document.querySelector(selector);
|
|
23
24
|
if (el) el.scrollTop = el.scrollHeight;
|
|
24
|
-
}
|
|
25
|
+
});
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
function cleanup() {
|
|
28
|
-
if (
|
|
29
|
+
if (_rafId) { cancelAnimationFrame(_rafId); _rafId = null; }
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
return { onScroll, scrollToBottom, cleanup };
|