@kw-yeh/vibeflow 4.0.3 → 4.0.5

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/dist/vibeflow.mjs CHANGED
@@ -257,6 +257,11 @@ var init_pty = __esm({
257
257
  scrollback(key) {
258
258
  return this.scrollbacks.get(key) ?? null;
259
259
  }
260
+ async isScrolledBack() {
261
+ return false;
262
+ }
263
+ async scrollToBottom() {
264
+ }
260
265
  shutdown() {
261
266
  for (const key of Array.from(this.sessions.keys())) this.killNow(key);
262
267
  }
@@ -416,6 +421,20 @@ var init_tmux_backend = __esm({
416
421
  scrollback() {
417
422
  return null;
418
423
  }
424
+ /** The attached client sits on the alternate screen, so history is tmux copy-mode. */
425
+ async isScrolledBack(key) {
426
+ const { code: code2, stdout } = await this.tmux(
427
+ "display-message",
428
+ "-p",
429
+ "-t",
430
+ `=${this.sessionName(key)}:`,
431
+ "#{pane_in_mode}"
432
+ );
433
+ return code2 === 0 && stdout.trim() === "1";
434
+ }
435
+ async scrollToBottom(key) {
436
+ await this.tmux("send-keys", "-t", `=${this.sessionName(key)}:`, "-X", "cancel");
437
+ }
419
438
  attachArgs(key) {
420
439
  return ["-L", TMUX_SOCKET, "-f", this.confPath, "attach-session", "-t", `=${this.sessionName(key)}`];
421
440
  }
@@ -1840,6 +1859,10 @@ function createBridge(t) {
1840
1859
  resize: (sessionKey, cols, rows) => t.send("pty:resize", { sessionKey, cols, rows }),
1841
1860
  /** Kill a task's PTY session (tears down the session and its watchers). */
1842
1861
  kill: (sessionKey) => t.send("pty:kill", sessionKey),
1862
+ /** Whether the session's own history view (tmux copy-mode) is off the live output. */
1863
+ isScrolledBack: (sessionKey) => t.invoke("pty:scrolled", sessionKey),
1864
+ /** Return the session's own history view to the live output. */
1865
+ scrollToBottom: (sessionKey) => t.invoke("pty:scroll-bottom", sessionKey),
1843
1866
  /** Whether the task's pinned Claude conversation already exists on disk. */
1844
1867
  sessionExists: (taskId) => t.invoke("claude:sessionExists", taskId),
1845
1868
  /**
@@ -4941,6 +4964,9 @@ function createCore({ sessions, bus, version }) {
4941
4964
  sessions.resize(requireSessionKey(p.sessionKey), p.cols, p.rows);
4942
4965
  },
4943
4966
  "pty:kill": (sessionKey) => teardownSession(requireSessionKey(sessionKey)),
4967
+ // History a frontend cannot scroll itself (tmux copy-mode).
4968
+ "pty:scrolled": (sessionKey) => sessions.isScrolledBack(requireSessionKey(sessionKey)),
4969
+ "pty:scroll-bottom": (sessionKey) => sessions.scrollToBottom(requireSessionKey(sessionKey)),
4944
4970
  // Does the task's pinned Claude conversation exist on disk? Used to decide
4945
4971
  // whether selecting a task may auto-resume (session present) or should
4946
4972
  // leave the interactive terminal for manual commands.
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/edcc6abb24dfd492.css" as="style"/><link rel="stylesheet" href="/_next/static/css/edcc6abb24dfd492.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-c8aa5df0425f6b7b.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-320afeed07d86516.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/0iT_99y5BhZs3U_2l_mSN/_buildManifest.js" defer=""></script><script src="/_next/static/0iT_99y5BhZs3U_2l_mSN/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"0iT_99y5BhZs3U_2l_mSN","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/5576c1267923e491.css" as="style"/><link rel="stylesheet" href="/_next/static/css/5576c1267923e491.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-c8aa5df0425f6b7b.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-fde992b12936b886.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/jWK_7LAWT3o0Q0pMgqN9g/_buildManifest.js" defer=""></script><script src="/_next/static/jWK_7LAWT3o0Q0pMgqN9g/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"jWK_7LAWT3o0Q0pMgqN9g","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
package/dist/web/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/edcc6abb24dfd492.css" as="style"/><link rel="stylesheet" href="/_next/static/css/edcc6abb24dfd492.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-c8aa5df0425f6b7b.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-320afeed07d86516.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/0iT_99y5BhZs3U_2l_mSN/_buildManifest.js" defer=""></script><script src="/_next/static/0iT_99y5BhZs3U_2l_mSN/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"0iT_99y5BhZs3U_2l_mSN","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/5576c1267923e491.css" as="style"/><link rel="stylesheet" href="/_next/static/css/5576c1267923e491.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-c8aa5df0425f6b7b.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-fde992b12936b886.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/jWK_7LAWT3o0Q0pMgqN9g/_buildManifest.js" defer=""></script><script src="/_next/static/jWK_7LAWT3o0Q0pMgqN9g/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"jWK_7LAWT3o0Q0pMgqN9g","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>