@quanta-intellect/vessel-browser 0.1.136 → 0.1.137

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.
@@ -2657,6 +2657,16 @@
2657
2657
  display: flex;
2658
2658
  flex-direction: column;
2659
2659
  gap: 10px;
2660
+ overscroll-behavior: contain;
2661
+ scrollbar-gutter: stable;
2662
+ background: var(--bg-secondary);
2663
+ contain: layout paint;
2664
+ isolation: isolate;
2665
+ transform: translateZ(0);
2666
+ }
2667
+
2668
+ .sidebar-messages.scroll-fade::after {
2669
+ display: none;
2660
2670
  }
2661
2671
 
2662
2672
  /* Fade-in when tab content switches */
@@ -3538,6 +3548,8 @@
3538
3548
  word-break: break-word;
3539
3549
  user-select: text;
3540
3550
  animation: message-enter 300ms var(--ease-out-expo) both;
3551
+ content-visibility: auto;
3552
+ contain-intrinsic-size: auto 80px;
3541
3553
  }
3542
3554
 
3543
3555
  @keyframes message-enter {
@@ -4547,20 +4547,39 @@ const FlowProgress = () => {
4547
4547
  });
4548
4548
  };
4549
4549
  function useScrollFade(el) {
4550
+ let frameId;
4551
+ let hasTopFade;
4552
+ let hasBottomFade;
4550
4553
  const update = () => {
4554
+ frameId = void 0;
4551
4555
  const { scrollTop, scrollHeight, clientHeight } = el;
4552
4556
  const atTop = scrollTop <= 2;
4553
4557
  const atBottom = scrollTop + clientHeight >= scrollHeight - 2;
4554
- el.classList.toggle("fade-top", !atTop);
4555
- el.classList.toggle("fade-bottom", !atBottom);
4558
+ const nextTopFade = !atTop;
4559
+ const nextBottomFade = !atBottom;
4560
+ if (hasTopFade !== nextTopFade) {
4561
+ hasTopFade = nextTopFade;
4562
+ el.classList.toggle("fade-top", nextTopFade);
4563
+ }
4564
+ if (hasBottomFade !== nextBottomFade) {
4565
+ hasBottomFade = nextBottomFade;
4566
+ el.classList.toggle("fade-bottom", nextBottomFade);
4567
+ }
4568
+ };
4569
+ const scheduleUpdate = () => {
4570
+ if (frameId !== void 0) return;
4571
+ frameId = requestAnimationFrame(update);
4556
4572
  };
4557
4573
  el.classList.add("scroll-fade");
4558
- el.addEventListener("scroll", update, { passive: true });
4559
- queueMicrotask(update);
4560
- const observer = new MutationObserver(update);
4574
+ el.addEventListener("scroll", scheduleUpdate, { passive: true });
4575
+ queueMicrotask(scheduleUpdate);
4576
+ const observer = new MutationObserver(scheduleUpdate);
4561
4577
  observer.observe(el, { childList: true, subtree: true });
4562
4578
  onCleanup(() => {
4563
- el.removeEventListener("scroll", update);
4579
+ el.removeEventListener("scroll", scheduleUpdate);
4580
+ if (frameId !== void 0) {
4581
+ cancelAnimationFrame(frameId);
4582
+ }
4564
4583
  observer.disconnect();
4565
4584
  });
4566
4585
  }
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta http-equiv="Content-Security-Policy" content="default-src 'self'; base-uri 'none'; object-src 'none'; frame-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; font-src 'self' data:; form-action 'self';" />
7
7
  <title>Vessel</title>
8
- <script type="module" crossorigin src="./assets/index-D13TOsuR.js"></script>
9
- <link rel="stylesheet" crossorigin href="./assets/index-CWy6khUL.css">
8
+ <script type="module" crossorigin src="./assets/index-k2scA5OB.js"></script>
9
+ <link rel="stylesheet" crossorigin href="./assets/index-CdUTXTU4.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@quanta-intellect/vessel-browser",
3
3
  "mcpName": "io.github.unmodeled-tyler/vessel-browser",
4
- "version": "0.1.136",
4
+ "version": "0.1.137",
5
5
  "description": "AI-native web browser runtime for autonomous agents with human supervision",
6
6
  "main": "./out/main/index.js",
7
7
  "bin": {