quadwork 1.18.0 → 1.18.1

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.
Files changed (73) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +3 -3
  3. package/out/__next._full.txt +14 -14
  4. package/out/__next._head.txt +4 -4
  5. package/out/__next._index.txt +8 -8
  6. package/out/__next._tree.txt +2 -2
  7. package/out/_next/static/chunks/0ff8u_cv_ch08.js +3 -0
  8. package/out/_next/static/chunks/0p70ihm9n4drm.js +1 -0
  9. package/out/_next/static/chunks/{17uaru~4k8ka9.css → 0tv48-.848bk7.css} +1 -1
  10. package/out/_next/static/chunks/{0hpnwm9coputy.js → 0xwbrozjfr9d5.js} +7 -7
  11. package/out/_next/static/chunks/13fv-yi7.v52g.js +1 -0
  12. package/out/_not-found/__next._full.txt +13 -13
  13. package/out/_not-found/__next._head.txt +4 -4
  14. package/out/_not-found/__next._index.txt +8 -8
  15. package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
  16. package/out/_not-found/__next._not-found.txt +3 -3
  17. package/out/_not-found/__next._tree.txt +2 -2
  18. package/out/_not-found.html +1 -1
  19. package/out/_not-found.txt +13 -13
  20. package/out/app-shell/__next._full.txt +13 -13
  21. package/out/app-shell/__next._head.txt +4 -4
  22. package/out/app-shell/__next._index.txt +8 -8
  23. package/out/app-shell/__next._tree.txt +2 -2
  24. package/out/app-shell/__next.app-shell.__PAGE__.txt +2 -2
  25. package/out/app-shell/__next.app-shell.txt +3 -3
  26. package/out/app-shell.html +1 -1
  27. package/out/app-shell.txt +13 -13
  28. package/out/index.html +1 -1
  29. package/out/index.txt +14 -14
  30. package/out/project/_/__next._full.txt +14 -14
  31. package/out/project/_/__next._head.txt +4 -4
  32. package/out/project/_/__next._index.txt +8 -8
  33. package/out/project/_/__next._tree.txt +2 -2
  34. package/out/project/_/__next.project.$d$id.__PAGE__.txt +3 -3
  35. package/out/project/_/__next.project.$d$id.txt +3 -3
  36. package/out/project/_/__next.project.txt +3 -3
  37. package/out/project/_/queue/__next._full.txt +14 -14
  38. package/out/project/_/queue/__next._head.txt +4 -4
  39. package/out/project/_/queue/__next._index.txt +8 -8
  40. package/out/project/_/queue/__next._tree.txt +2 -2
  41. package/out/project/_/queue/__next.project.$d$id.queue.__PAGE__.txt +3 -3
  42. package/out/project/_/queue/__next.project.$d$id.queue.txt +3 -3
  43. package/out/project/_/queue/__next.project.$d$id.txt +3 -3
  44. package/out/project/_/queue/__next.project.txt +3 -3
  45. package/out/project/_/queue.html +1 -1
  46. package/out/project/_/queue.txt +14 -14
  47. package/out/project/_.html +1 -1
  48. package/out/project/_.txt +14 -14
  49. package/out/settings/__next._full.txt +14 -14
  50. package/out/settings/__next._head.txt +4 -4
  51. package/out/settings/__next._index.txt +8 -8
  52. package/out/settings/__next._tree.txt +2 -2
  53. package/out/settings/__next.settings.__PAGE__.txt +3 -3
  54. package/out/settings/__next.settings.txt +3 -3
  55. package/out/settings.html +1 -1
  56. package/out/settings.txt +14 -14
  57. package/out/setup/__next._full.txt +14 -14
  58. package/out/setup/__next._head.txt +4 -4
  59. package/out/setup/__next._index.txt +8 -8
  60. package/out/setup/__next._tree.txt +2 -2
  61. package/out/setup/__next.setup.__PAGE__.txt +3 -3
  62. package/out/setup/__next.setup.txt +3 -3
  63. package/out/setup.html +1 -1
  64. package/out/setup.txt +14 -14
  65. package/package.json +1 -1
  66. package/server/index.js +14 -3
  67. package/server/routes.js +14 -0
  68. package/out/_next/static/chunks/054b72jq_7mig.js +0 -3
  69. package/out/_next/static/chunks/0_mwyljcf37eu.js +0 -1
  70. package/out/_next/static/chunks/13r2x5-nb_j73.js +0 -1
  71. /package/out/_next/static/{YK5hBW20gX2uKVJaW2987 → WDRw2uNz8RE4CDa5ntj1v}/_buildManifest.js +0 -0
  72. /package/out/_next/static/{YK5hBW20gX2uKVJaW2987 → WDRw2uNz8RE4CDa5ntj1v}/_clientMiddlewareManifest.js +0 -0
  73. /package/out/_next/static/{YK5hBW20gX2uKVJaW2987 → WDRw2uNz8RE4CDa5ntj1v}/_ssgManifest.js +0 -0
package/out/setup.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="geist_mono_8d43a2aa-module__8Li5zG__variable h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/17uaru~4k8ka9.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ze4gu236oq96.js"/><script src="/_next/static/chunks/0.bbxho1vnxin.js" async=""></script><script src="/_next/static/chunks/0n~dq4kpx9xxx.js" async=""></script><script src="/_next/static/chunks/0zfotsowwll1x.js" async=""></script><script src="/_next/static/chunks/0pqt~8bl3ukh4.js" async=""></script><script src="/_next/static/chunks/turbopack-0qm-e3ifrz~2u.js" async=""></script><script src="/_next/static/chunks/0_mwyljcf37eu.js" async=""></script><script src="/_next/static/chunks/0d3shmwh5_nmn.js" async=""></script><script src="/_next/static/chunks/0uz5svjlo9dwl.js" async=""></script><meta name="next-size-adjust" content=""/><title>QuadWork</title><meta name="description" content="Unified dashboard for multi-agent coding teams"/><link rel="icon" href="/favicon.ico?favicon.05o2q2p4kvnq_.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="h-full flex flex-col"><div hidden=""><!--$--><!--/$--></div><header class="sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur" aria-hidden="true"></header><div class="flex flex-1 min-h-0"><button type="button" class="fixed top-14 left-2 z-30 lg:hidden w-10 h-10 flex items-center justify-center bg-bg-surface border border-border text-text-muted hover:text-accent"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M3 5h14M3 10h14M3 15h14"></path></svg></button><aside class="fixed inset-y-0 left-0 z-50 w-52 bg-bg-surface border-r border-border flex flex-col py-3 px-2 items-stretch overflow-y-auto transition-transform duration-200 ease-in-out lg:hidden -translate-x-full"><button type="button" class="self-end shrink-0 w-10 h-10 flex items-center justify-center text-text-muted hover:text-accent mb-1"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M5 5l10 10M15 5L5 15"></path></svg></button><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg><span class="text-xs">Home</span></a><div class="h-px bg-border my-2 "></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 "><a class="flex items-center gap-2 rounded-full transition-colors px-2 py-2 border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a] rounded-sm" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg><span class="text-xs text-text-muted">New Project</span></a></div><div class="h-px bg-border my-2 "></div><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg><span class="text-xs">Settings</span></a></aside><aside class="hidden lg:flex shrink-0 h-full border-r border-border bg-bg-surface flex-col py-3 transition-[width] duration-200 ease-in-out overflow-hidden w-16 items-center"><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg></a><div class="h-px bg-border my-2 w-6 self-center"></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 items-center"><a class="flex items-center gap-2 rounded-full transition-colors w-10 h-10 justify-center border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg></a></div><div class="h-px bg-border my-2 w-6 self-center"></div><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg></a><div class="h-1"></div><button class="flex shrink-0 items-center justify-center w-10 h-10 rounded-sm border border-border text-text-muted hover:text-accent hover:border-accent/50 transition-colors self-center" title="Expand sidebar"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3l5 5-5 5"></path></svg></button></aside><main class="flex-1 min-w-0 overflow-auto"><div class="h-full overflow-y-auto"></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/0ze4gu236oq96.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[52368,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"LocaleProvider\"]\n3:I[43688,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n4:I[26704,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n5:I[22140,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n6:I[39756,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n8:I[94810,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0uz5svjlo9dwl.js\"],\"default\"]\n9:I[97367,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[97367,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\nf:I[97367,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\n11:I[68027,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/17uaru~4k8ka9.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"setup\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"setup\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/17uaru~4k8ka9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0_mwyljcf37eu.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_mono_8d43a2aa-module__8Li5zG__variable h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"h-full flex flex-col\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-1 min-h-0\",\"children\":[[\"$\",\"$L5\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0 overflow-auto\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L8\",null,{}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0uz5svjlo9dwl.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$@c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/17uaru~4k8ka9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"YK5hBW20gX2uKVJaW2987\"}\n"])</script><script>self.__next_f.push([1,"12:[]\nc:\"$W12\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[27201,[\"/_next/static/chunks/0_mwyljcf37eu.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\nb:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"QuadWork\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Unified dashboard for multi-agent coding teams\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.05o2q2p4kvnq_.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L13\",\"3\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="geist_mono_8d43a2aa-module__8Li5zG__variable h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/0tv48-.848bk7.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ze4gu236oq96.js"/><script src="/_next/static/chunks/0.bbxho1vnxin.js" async=""></script><script src="/_next/static/chunks/0n~dq4kpx9xxx.js" async=""></script><script src="/_next/static/chunks/0zfotsowwll1x.js" async=""></script><script src="/_next/static/chunks/0pqt~8bl3ukh4.js" async=""></script><script src="/_next/static/chunks/turbopack-0qm-e3ifrz~2u.js" async=""></script><script src="/_next/static/chunks/13fv-yi7.v52g.js" async=""></script><script src="/_next/static/chunks/0d3shmwh5_nmn.js" async=""></script><script src="/_next/static/chunks/0uz5svjlo9dwl.js" async=""></script><meta name="next-size-adjust" content=""/><title>QuadWork</title><meta name="description" content="Unified dashboard for multi-agent coding teams"/><link rel="icon" href="/favicon.ico?favicon.05o2q2p4kvnq_.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="h-full flex flex-col"><div hidden=""><!--$--><!--/$--></div><header class="sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur" aria-hidden="true"></header><div class="flex flex-1 min-h-0"><button type="button" class="fixed top-14 left-2 z-30 lg:hidden w-10 h-10 flex items-center justify-center bg-bg-surface border border-border text-text-muted hover:text-accent"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M3 5h14M3 10h14M3 15h14"></path></svg></button><aside class="fixed inset-y-0 left-0 z-50 w-52 bg-bg-surface border-r border-border flex flex-col py-3 px-2 items-stretch overflow-y-auto transition-transform duration-200 ease-in-out lg:hidden -translate-x-full"><button type="button" class="self-end shrink-0 w-10 h-10 flex items-center justify-center text-text-muted hover:text-accent mb-1"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M5 5l10 10M15 5L5 15"></path></svg></button><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg><span class="text-xs">Home</span></a><div class="h-px bg-border my-2 "></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 "><a class="flex items-center gap-2 rounded-full transition-colors px-2 py-2 border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a] rounded-sm" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg><span class="text-xs text-text-muted">New Project</span></a></div><div class="h-px bg-border my-2 "></div><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg><span class="text-xs">Settings</span></a></aside><aside class="hidden lg:flex shrink-0 h-full border-r border-border bg-bg-surface flex-col py-3 transition-[width] duration-200 ease-in-out overflow-hidden w-16 items-center"><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg></a><div class="h-px bg-border my-2 w-6 self-center"></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 items-center"><a class="flex items-center gap-2 rounded-full transition-colors w-10 h-10 justify-center border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg></a></div><div class="h-px bg-border my-2 w-6 self-center"></div><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg></a><div class="h-1"></div><button class="flex shrink-0 items-center justify-center w-10 h-10 rounded-sm border border-border text-text-muted hover:text-accent hover:border-accent/50 transition-colors self-center" title="Expand sidebar"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3l5 5-5 5"></path></svg></button></aside><main class="flex-1 min-w-0 overflow-auto"><div class="h-full overflow-y-auto"></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/0ze4gu236oq96.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[52368,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"LocaleProvider\"]\n3:I[43688,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n4:I[26704,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n5:I[22140,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n6:I[39756,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n8:I[94810,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0uz5svjlo9dwl.js\"],\"default\"]\n9:I[97367,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[97367,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\nf:I[97367,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\n11:I[68027,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0tv48-.848bk7.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"setup\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"setup\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0tv48-.848bk7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/13fv-yi7.v52g.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_mono_8d43a2aa-module__8Li5zG__variable h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"h-full flex flex-col\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-1 min-h-0\",\"children\":[[\"$\",\"$L5\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0 overflow-auto\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"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)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L8\",null,{}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0uz5svjlo9dwl.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$@c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0tv48-.848bk7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"WDRw2uNz8RE4CDa5ntj1v\"}\n"])</script><script>self.__next_f.push([1,"12:[]\nc:\"$W12\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[27201,[\"/_next/static/chunks/13fv-yi7.v52g.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\nb:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"QuadWork\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Unified dashboard for multi-agent coding teams\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.05o2q2p4kvnq_.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L13\",\"3\",{}]]\n"])</script></body></html>
package/out/setup.txt CHANGED
@@ -1,22 +1,22 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[52368,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
- 3:I[43688,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
- 4:I[26704,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
- 5:I[22140,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
- 6:I[39756,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
- 7:I[37457,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
- 8:I[94810,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0uz5svjlo9dwl.js"],"default"]
9
- 9:I[97367,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
2
+ 2:I[52368,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
+ 3:I[43688,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
+ 4:I[26704,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
+ 5:I[22140,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
+ 6:I[39756,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
+ 7:I[37457,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
+ 8:I[94810,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0uz5svjlo9dwl.js"],"default"]
9
+ 9:I[97367,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
10
10
  a:"$Sreact.suspense"
11
- d:I[97367,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
12
- f:I[97367,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
13
- 11:I[68027,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1]
14
- :HL["/_next/static/chunks/17uaru~4k8ka9.css","style"]
11
+ d:I[97367,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
12
+ f:I[97367,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
13
+ 11:I[68027,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1]
14
+ :HL["/_next/static/chunks/0tv48-.848bk7.css","style"]
15
15
  :HL["/_next/static/media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
- 0:{"P":null,"c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/17uaru~4k8ka9.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/0_mwyljcf37eu.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L8",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0uz5svjlo9dwl.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/17uaru~4k8ka9.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"YK5hBW20gX2uKVJaW2987"}
16
+ 0:{"P":null,"c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0tv48-.848bk7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/13fv-yi7.v52g.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"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)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L8",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0uz5svjlo9dwl.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0tv48-.848bk7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"WDRw2uNz8RE4CDa5ntj1v"}
17
17
  12:[]
18
18
  c:"$W12"
19
19
  e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
20
- 13:I[27201,["/_next/static/chunks/0_mwyljcf37eu.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
20
+ 13:I[27201,["/_next/static/chunks/13fv-yi7.v52g.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
21
21
  b:null
22
22
  10:[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.05o2q2p4kvnq_.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L13","3",{}]]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quadwork",
3
- "version": "1.18.0",
3
+ "version": "1.18.1",
4
4
  "description": "Unified dashboard for multi-agent coding teams — 4 AI agents, one terminal",
5
5
  "bin": {
6
6
  "quadwork": "./bin/quadwork.js"
package/server/index.js CHANGED
@@ -41,6 +41,17 @@ app.get("/api/health", (_req, res) => {
41
41
  res.json({ status: "ok" });
42
42
  });
43
43
 
44
+ // --- Safe PTY write helper (#670) ---
45
+
46
+ function safeWrite(term, data) {
47
+ if (!term) return false;
48
+ try { term.write(data); return true; }
49
+ catch (err) {
50
+ if (err.code === "EIO") return false;
51
+ throw err;
52
+ }
53
+ }
54
+
44
55
  // --- CLI status detection ---
45
56
 
46
57
  const { execFileSync } = require("child_process");
@@ -1563,7 +1574,7 @@ function spawnButlerPty() {
1563
1574
  if (data.includes("trust") || data.includes("Yes,") || data.includes("1.")) {
1564
1575
  setTimeout(() => {
1565
1576
  if (!trustHandled && butlerSession.term === term) {
1566
- term.write("1\r");
1577
+ safeWrite(term, "1\r");
1567
1578
  trustHandled = true;
1568
1579
  }
1569
1580
  }, 500);
@@ -2168,7 +2179,7 @@ wss.on("connection:terminal", async (ws, req) => {
2168
2179
  return;
2169
2180
  }
2170
2181
  } catch {}
2171
- session.term.write(str);
2182
+ safeWrite(session.term, str);
2172
2183
  });
2173
2184
 
2174
2185
  ws.on("close", () => {
@@ -2226,7 +2237,7 @@ wss.on("connection:butler", async (ws) => {
2226
2237
  return;
2227
2238
  }
2228
2239
  } catch {}
2229
- butlerSession.term.write(str);
2240
+ safeWrite(butlerSession.term, str);
2230
2241
  });
2231
2242
 
2232
2243
  ws.on("close", () => {
package/server/routes.js CHANGED
@@ -1798,6 +1798,20 @@ function summarizeItems(items) {
1798
1798
  return parts.join(" · ");
1799
1799
  }
1800
1800
 
1801
+ router.get("/api/batch-active", (req, res) => {
1802
+ const projectId = req.query.project;
1803
+ if (!projectId) return res.status(400).json({ error: "Missing project" });
1804
+ if (!getRepo(projectId)) return res.status(400).json({ error: "No repo configured for project" });
1805
+ const queuePath = path.join(CONFIG_DIR, projectId, "OVERNIGHT-QUEUE.md");
1806
+ let active = false;
1807
+ try {
1808
+ const text = fs.readFileSync(queuePath, "utf-8");
1809
+ const { issueNumbers } = parseActiveBatch(text);
1810
+ active = issueNumbers.length > 0;
1811
+ } catch {}
1812
+ return res.json({ active });
1813
+ });
1814
+
1801
1815
  router.get("/api/batch-progress", async (req, res) => {
1802
1816
  const projectId = req.query.project;
1803
1817
  if (!projectId) return res.status(400).json({ error: "Missing project" });
@@ -1,3 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54338,e=>{"use strict";var t=e.i(43476),r=e.i(71645),s=e.i(22016),a=e.i(78759),n=e.i(52368);let l={en:{headlineWithProjects:"Pick a project from the sidebar to start working",headlineNoProjects:"Welcome to QuadWork — let's set up your first AI dev team",subtextWithProjects:"Each project has its own 4-agent team and chat. Click any chip in the left sidebar to open one.",subtextNoProjects:"QuadWork runs Head, Dev, and two Reviewers as a team. They open issues, write code, review PRs, and merge — while you sleep.",lookSidebar:"← look at the left sidebar",addProject:"Add Your First Project →",howToWork:"How to Work",helpClass:""},ko:{headlineWithProjects:"사이드바에서 프로젝트를 골라 작업을 시작하세요",headlineNoProjects:"QuadWork에 오신 걸 환영합니다\n- 첫 AI 개발 팀을 설정해볼까요",subtextWithProjects:"각 프로젝트는 자체 4인 에이전트 팀과 채팅을 가집니다.\n왼쪽 사이드바에서 아무 프로젝트나 눌러 열 수 있습니다.",subtextNoProjects:"QuadWork는 Head, Dev, Reviewer 둘을 한 팀으로 운영합니다.\n이슈를 만들고, 코드를 작성하고, PR을 리뷰하고, 병합합니다.\n당신이 쉬는 동안에도요.",lookSidebar:"← 왼쪽 사이드바를 보세요",addProject:"첫 프로젝트 추가 →",howToWork:"사용 방법",helpClass:"ko-help"}};function o({hasProjects:e}){let{locale:i}=(0,n.useLocale)(),c=l[i],[d,x]=(0,r.useState)(!1),u=e?c.headlineWithProjects:c.headlineNoProjects,m=e?c.subtextWithProjects:c.subtextNoProjects;return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center text-center px-6 py-12 border border-border bg-bg-surface",children:[(0,t.jsx)("img",{src:"/quadwork-symbol.svg",alt:"",width:64,height:64,"aria-hidden":!0}),(0,t.jsx)("h1",{className:`mt-5 text-lg font-semibold text-text max-w-md whitespace-pre-line ${c.helpClass}`,children:u}),(0,t.jsx)("p",{className:`mt-2 text-[12px] text-text-muted leading-relaxed max-w-md whitespace-pre-line ${c.helpClass}`,children:m}),(0,t.jsxs)("div",{className:"mt-5 flex items-center gap-3",children:[e?(0,t.jsx)("span",{className:"text-[11px] text-text-muted italic",children:c.lookSidebar}):(0,t.jsx)(s.default,{href:"/setup",className:"px-4 py-2 text-[12px] font-semibold text-bg bg-accent hover:bg-accent-dim transition-colors",children:c.addProject}),(0,t.jsx)("button",{type:"button",onClick:()=>x(!0),className:"px-4 py-2 text-[12px] text-text-muted border border-border hover:text-text hover:border-text-muted transition-colors",children:c.howToWork})]}),(0,t.jsx)(a.default,{open:d,onClose:()=>x(!1)})]})}var i=e.i(99894),c=e.i(93309);let d={en:{butlerAgent:"Butler Agent",collapse:"collapse",expand:"expand",inputPlaceholder:"Message butler...",send:"Send",startButler:"Start Butler",starting:"Starting...",loading:"Loading...",startError:"Failed to start Butler. Check that the selected CLI is installed."},ko:{butlerAgent:"버틀러 에이전트",collapse:"접기",expand:"펼치기",inputPlaceholder:"버틀러에게 메시지...",send:"전송",startButler:"버틀러 시작",starting:"시작 중...",loading:"로딩 중...",startError:"버틀러를 시작할 수 없습니다. 선택한 CLI가 설치되어 있는지 확인하세요."}};function x(){let{locale:e}=(0,n.useLocale)(),s=d[e],[a,l]=(0,r.useState)(null),[o,x]=(0,r.useState)(!1),[u,m]=(0,r.useState)(!1),[h,p]=(0,r.useState)(""),[b,f]=(0,r.useState)(null),g=(0,r.useRef)(null),j=(0,r.useRef)(null),N=(0,r.useRef)(null),y=(0,r.useRef)(null),w=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=!1;return fetch("/api/butler/status").then(e=>e.ok?e.json():null).then(t=>{e||l(!!t?.running)}).catch(()=>{l(!1)}),()=>{e=!0}},[]),(0,r.useEffect)(()=>{!o&&a&&requestAnimationFrame(()=>w.current?.focus())},[o,a]);let v=(0,r.useCallback)(()=>{if(N.current&&j.current&&g.current)try{N.current.fit();let e=y.current;e&&e.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:"resize",cols:j.current.cols,rows:j.current.rows}))}catch{}},[]);(0,r.useEffect)(()=>{if(!a||o||!g.current)return;let e=new i.Terminal({scrollback:1e3,fontSize:11,fontFamily:'"Geist Mono", "JetBrains Mono", "Fira Code", "Cascadia Code", monospace',lineHeight:1.2,letterSpacing:.5,cursorBlink:!1,cursorStyle:"block",disableStdin:!0,theme:{background:"#0a0a0a",foreground:"#e0e0e0",cursor:"#00ff88",cursorAccent:"#0a0a0a",selectionBackground:"#00ff8844",black:"#0a0a0a",red:"#ff4444",green:"#00ff88",yellow:"#ffcc00",blue:"#4488ff",magenta:"#cc44ff",cyan:"#44ccff",white:"#e0e0e0",brightBlack:"#737373",brightRed:"#ff6666",brightGreen:"#00ff88",brightYellow:"#ffdd44",brightBlue:"#66aaff",brightMagenta:"#dd66ff",brightCyan:"#66ddff",brightWhite:"#ffffff"},allowTransparency:!1,drawBoldTextInBrightColors:!0}),t=new c.FitAddon;e.loadAddon(t),e.open(g.current),j.current=e,N.current=t,requestAnimationFrame(()=>v());let r=new ResizeObserver(()=>v());r.observe(g.current);let n=!1,d=null,x=async()=>{if(d)return d;let e="https:"===window.location.protocol?"wss:":"ws:";try{let t=await fetch("/api/config");if(t.ok){let r=(await t.json()).port||8400,s=parseInt(window.location.port,10);d=s&&s!==r?`${e}//${window.location.hostname}:${r}`:`${e}//${window.location.host}`}else d=`${e}//${window.location.host}`}catch{d=`${e}//${window.location.host}`}return d};return(async()=>{let t=await x();if(n)return;let r=new WebSocket(`${t}/ws/butler`);y.current=r;let a=null;r.onopen=()=>{a&&clearInterval(a);let t=0;a=setInterval(()=>{v(),++t>=4&&(clearInterval(a),a=null)},500),r.send(JSON.stringify({type:"resize",cols:e.cols,rows:e.rows})),r.send(JSON.stringify({type:"replay"}))},r.onmessage=t=>{e.write(t.data)},r.onclose=t=>{a&&(clearInterval(a),a=null),n||(e.write(`\r
2
- \x1b[38;2;115;115;115m[session closed: ${t.reason||t.code}]\x1b[0m\r
3
- `),l(!1),"pty-spawn-failed"===t.reason&&f(s.startError))}})(),()=>{n=!0,r.disconnect(),y.current?.close(),e.dispose(),j.current=null,N.current=null,y.current=null}},[a,o,v]);let k=async()=>{m(!0),f(null);try{let e=await fetch("/api/butler/start",{method:"POST"}),t=await e.json();t.ok?l(!0):f(t.error||s.startError)}catch{f(s.startError)}m(!1)},A=()=>{let e=h.trim();if(!e)return;let t=y.current;t&&t.readyState===WebSocket.OPEN&&(t.send(e+"\r"),p(""))};return null===a?(0,t.jsx)("div",{className:"mb-6 border border-border bg-bg-surface",children:(0,t.jsx)("div",{className:"flex items-center px-4 py-2",children:(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-text-muted animate-pulse"}),(0,t.jsx)("span",{className:"text-[11px] font-semibold text-text",children:s.butlerAgent})]})})}):o?(0,t.jsx)("div",{className:"mb-6 border border-border bg-bg-surface",children:(0,t.jsxs)("button",{type:"button",onClick:()=>x(!1),className:"w-full flex items-center justify-between px-4 py-2 text-[11px] text-text-muted hover:text-text transition-colors",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${a?"bg-accent":"bg-text-muted"}`}),(0,t.jsx)("span",{className:"font-semibold text-text",children:s.butlerAgent})]}),(0,t.jsxs)("span",{children:["▸ ",s.expand]})]})}):a?(0,t.jsxs)("div",{className:"mb-6 border border-border bg-bg-surface flex flex-col",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border shrink-0",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-accent"}),(0,t.jsx)("span",{className:"text-[11px] font-semibold text-text",children:s.butlerAgent})]}),(0,t.jsxs)("button",{type:"button",onClick:()=>x(!0),className:"text-[10px] text-text-muted hover:text-text transition-colors",children:["▾ ",s.collapse]})]}),(0,t.jsx)("div",{ref:g,className:"h-[40vh] min-h-[200px] overflow-hidden"}),(0,t.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 border-t border-border shrink-0",children:[(0,t.jsx)("input",{ref:w,type:"text",value:h,onChange:e=>p(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),A())},placeholder:s.inputPlaceholder,className:"flex-1 bg-transparent text-[11px] text-text placeholder:text-text-muted outline-none border border-border px-2 py-1.5"}),(0,t.jsx)("button",{type:"button",onClick:A,className:"text-[11px] text-text-muted hover:text-text px-2 py-1.5 border border-border hover:border-text-muted transition-colors",children:s.send})]})]}):(0,t.jsxs)("div",{className:"mb-6 border border-border bg-bg-surface",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border",children:[(0,t.jsxs)("span",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-text-muted"}),(0,t.jsx)("span",{className:"text-[11px] font-semibold text-text",children:s.butlerAgent})]}),(0,t.jsxs)("button",{type:"button",onClick:()=>x(!0),className:"text-[10px] text-text-muted hover:text-text transition-colors",children:["▾ ",s.collapse]})]}),(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 gap-3",children:[(0,t.jsx)("button",{type:"button",onClick:k,disabled:u,className:"px-4 py-2 text-[12px] font-semibold text-bg bg-accent hover:bg-accent-dim transition-colors disabled:opacity-50",children:u?s.starting:s.startButler}),b&&(0,t.jsx)("p",{className:"text-[11px] text-error max-w-sm text-center",children:b})]})]})}let u={en:{loading:"Loading dashboard...",recentProjects:"Recent Projects",lastModified:"Last modified",justNow:"just now",minsAgo:e=>`${e}m ago`,hoursAgo:e=>`${e}h ago`,daysAgo:e=>`${e}d ago`,newProject:"New Project",globalFeed:"Global Activity Feed",noActivity:"No recent activity.",projects:"Projects",configuredProjects:e=>`${e} configured project${1!==e?"s":""}`,agents:"agents",prs:"PRs",repo:"repo",lastActivity:"last activity",open:"open →",loadError:"Could not load projects from /api/projects. The dashboard may be out of date — check the server logs and reload.",joinCommunity:"Want to talk with the creator?",joinLink:"Join Hunt Town",joinSuffix:"and find @project7.",recentActivity:"Recent Activity",butlerCtaTitle:"Butler Agent",butlerCtaNew:"NEW",butlerCtaDesc:"Your cross-project AI assistant.",butlerCtaLink:"Enable in Settings →"},ko:{loading:"대시보드 로딩 중...",recentProjects:"최근 프로젝트",lastModified:"마지막 수정",justNow:"방금 전",minsAgo:e=>`${e}분 전`,hoursAgo:e=>`${e}시간 전`,daysAgo:e=>`${e}일 전`,newProject:"새 프로젝트",globalFeed:"전체 활동 피드",noActivity:"최근 활동이 없습니다.",projects:"프로젝트",configuredProjects:e=>`${e}개의 프로젝트`,agents:"에이전트",prs:"PR",repo:"저장소",lastActivity:"마지막 활동",open:"열기 →",loadError:"/api/projects에서 프로젝트를 불러올 수 없습니다. 서버 로그를 확인하고 새로고침하세요.",joinCommunity:"제작자와 대화하고 싶으신가요?",joinLink:"Hunt Town 참여",joinSuffix:"에서 @project7을 찾아보세요.",recentActivity:"최근 활동",butlerCtaTitle:"Butler Agent",butlerCtaNew:"NEW",butlerCtaDesc:"크로스 프로젝트 AI 어시스턴트.",butlerCtaLink:"설정에서 활성화 →"}};e.s(["default",0,function(){let{locale:e}=(0,n.useLocale)(),a=u[e],[l,i]=(0,r.useState)([]),[c,d]=(0,r.useState)([]),[m,h]=(0,r.useState)("loading"),[p,b]=(0,r.useState)(!1),[f,g]=(0,r.useState)(()=>"1"===localStorage.getItem("qw-butler-cta-dismissed"));return((0,r.useEffect)(()=>{fetch("/api/projects").then(e=>{if(!e.ok)throw Error(`${e.status}`);return e.json()}).then(e=>{e.projects&&Array.isArray(e.projects)&&i(e.projects.filter(e=>!e.archived)),e.recentEvents&&Array.isArray(e.recentEvents)&&d(e.recentEvents),h("loaded")}).catch(()=>{h("error")}),fetch("/api/config").then(e=>e.ok?e.json():null).then(e=>{e?.butler?.enabled&&b(!0)}).catch(()=>{})},[]),"loading"===m)?(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-text-muted text-[11px] animate-pulse",children:a.loading}):(0,t.jsx)("div",{className:"h-full overflow-y-auto lg:overflow-hidden lg:flex lg:flex-col p-6",children:(0,t.jsxs)("div",{className:"lg:grid lg:grid-cols-[1fr_340px] lg:gap-6 lg:flex-1 lg:min-h-0",children:[(0,t.jsxs)("div",{className:"lg:overflow-y-auto lg:min-h-0",children:[p?(0,t.jsx)(x,{}):"loaded"===m?(0,t.jsxs)(t.Fragment,{children:[!f&&(0,t.jsxs)("div",{className:"mb-3 border border-border bg-bg-surface px-4 py-3 flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsx)("span",{className:"text-[11px] font-semibold text-text",children:a.butlerCtaTitle}),(0,t.jsx)("span",{className:"text-[9px] font-semibold text-accent border border-accent/30 px-1.5 py-0.5 leading-none",children:a.butlerCtaNew}),(0,t.jsx)("span",{className:"text-[11px] text-text-muted hidden sm:inline",children:a.butlerCtaDesc}),(0,t.jsx)(s.default,{href:"/settings#butler",className:"text-[11px] text-accent hover:text-accent-dim transition-colors shrink-0",children:a.butlerCtaLink})]}),(0,t.jsx)("button",{type:"button",onClick:()=>{localStorage.setItem("qw-butler-cta-dismissed","1"),g(!0)},className:"text-text-muted hover:text-text text-[11px] ml-3 shrink-0 transition-colors","aria-label":"Dismiss",children:"×"})]}),(0,t.jsx)("div",{className:"mb-6",children:(0,t.jsx)(o,{hasProjects:l.length>0})})]}):null,"error"===m&&(0,t.jsx)("div",{className:"mb-6 border border-error/30 bg-error/5 text-error text-[11px] px-3 py-2",children:a.loadError}),(0,t.jsxs)("div",{className:"mb-6",children:[(0,t.jsx)("h1",{className:"text-lg font-semibold text-text tracking-tight",children:a.projects}),(0,t.jsx)("p",{className:"text-xs text-text-muted mt-1",children:a.configuredProjects(l.length)})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3 mb-8 lg:mb-0",children:[l.map(e=>(0,t.jsxs)(s.default,{href:`/project/${e.id}`,className:"block border border-border bg-bg-surface p-4 hover:bg-[#1a1a1a] transition-colors group",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${"active"===e.state?"bg-accent":"bg-text-muted"}`}),(0,t.jsx)("span",{className:"text-sm font-semibold text-text",children:e.name}),(0,t.jsx)("span",{className:"text-[10px] text-text-muted",children:e.state})]}),(0,t.jsx)("span",{className:"text-[10px] text-text-muted opacity-0 group-hover:opacity-100 transition-opacity",children:a.open})]}),(0,t.jsxs)("div",{className:"flex gap-4 text-[11px] mb-2",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-text-muted",children:a.agents}),(0,t.jsx)("span",{className:"ml-1.5 text-text",children:e.agentCount})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-text-muted",children:a.prs}),(0,t.jsx)("span",{className:"ml-1.5 text-text",children:e.openPrs})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{className:"text-text-muted",children:a.repo}),(0,t.jsx)("span",{className:"ml-1.5 text-text",children:e.repo})]})]}),e.lastActivity&&(0,t.jsxs)("div",{className:"text-[10px] text-text-muted",children:[a.lastActivity,": ",function(e,t){let r=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(r<1)return t.justNow;if(r<60)return t.minsAgo(r);let s=Math.floor(r/60);if(s<24)return t.hoursAgo(s);let a=Math.floor(s/24);return t.daysAgo(a)}(e.lastActivity,a)]})]},e.id)),(0,t.jsx)(s.default,{href:"/setup",className:"border border-dashed border-border p-4 flex items-center justify-center text-text-muted hover:text-text hover:border-text-muted transition-colors min-h-[88px]",children:(0,t.jsxs)("span",{className:"text-sm",children:["+ ",a.newProject]})})]}),(0,t.jsxs)("div",{className:"mt-4 mb-8 lg:mb-4 text-[11px] text-text-muted",children:[a.joinCommunity," ",(0,t.jsx)("a",{href:"https://discord.gg/syhbYPk3Wq",target:"_blank",rel:"noopener noreferrer",className:"text-text hover:text-accent transition-colors",children:a.joinLink})," ",a.joinSuffix]})]}),(0,t.jsxs)("div",{className:"lg:overflow-y-auto lg:min-h-0 mb-6 lg:mb-0",children:[(0,t.jsx)("h2",{className:"text-xs text-text-muted uppercase tracking-wider mb-3",children:a.recentActivity}),(0,t.jsxs)("div",{className:"border border-border bg-bg-surface",children:[0===c.length&&(0,t.jsx)("div",{className:"px-3 py-3 text-[11px] text-text-muted",children:a.noActivity}),c.map((e,r)=>(0,t.jsxs)("div",{className:"flex gap-3 px-3 py-1.5 border-b border-border/50 last:border-b-0 text-[11px]",children:[(0,t.jsx)("span",{className:"text-text-muted shrink-0 w-10 text-right tabular-nums",children:e.time?.slice(0,5)||""}),(0,t.jsx)("span",{className:"text-accent shrink-0 font-semibold w-12",children:e.projectName}),(0,t.jsx)("span",{className:"text-[#ffcc00] shrink-0 font-semibold w-12",children:e.actor}),(0,t.jsx)("span",{className:"text-text truncate min-w-0",children:e.text})]},`${e.time}-${r}`))]})]})]})})}],54338)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return i}};for(var s in n)Object.defineProperty(r,s,{enumerable:!0,get:n[s]});function o(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function a(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function i(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,a(e));else t.set(r,a(n));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return g},MiddlewareNotFoundError:function(){return y},MissingStaticPage:function(){return v},NormalizeError:function(){return b},PageNotFoundError:function(){return j},SP:function(){return x},ST:function(){return m},WEB_VITALS:function(){return o},execOnce:function(){return a},getDisplayName:function(){return d},getLocationOrigin:function(){return c},getURL:function(){return u},isAbsoluteUrl:function(){return l},isResSent:function(){return f},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return h},stringifyError:function(){return w}};for(var s in n)Object.defineProperty(r,s,{enumerable:!0,get:n[s]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function a(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let i=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>i.test(e);function c(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function u(){let{href:e}=window.location,t=c();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function h(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let x="u">typeof performance,m=x&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class b extends Error{}class j extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class y extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function w(e){return JSON.stringify({message:e.message,stack:e.stack})}},33525,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},18566,(e,t,r)=>{t.exports=e.r(76562)},52368,e=>{"use strict";var t=e.i(43476),r=e.i(71645);let n="qw-locale";function s(e){return"ko"===e?"ko":"en"}let o=(0,r.createContext)(null);e.s(["LocaleProvider",0,function({children:e}){let[a,i]=(0,r.useState)(!1),[l,c]=(0,r.useState)("en");(0,r.useEffect)(()=>{c(function(){try{let e=window.localStorage.getItem(n);if(e)return s(e)}catch{}return window.navigator.language.toLowerCase().startsWith("ko")?"ko":"en"}()),i(!0)},[]),(0,r.useEffect)(()=>{document.documentElement.lang=l;try{window.localStorage.setItem(n,l)}catch{}try{document.cookie=`qw-locale=${l}; path=/; max-age=31536000; samesite=lax`}catch{}},[l]);let u=(0,r.useMemo)(()=>({hydrated:a,locale:l,setLocale:e=>c(s(e))}),[a,l]);return(0,t.jsx)(o.Provider,{value:u,children:e})},"useLocale",0,function(){let e=(0,r.useContext)(o);if(!e)throw Error("useLocale must be used within LocaleProvider");return e}],52368)},67449,e=>{"use strict";let t=[{value:"soft-chime",label:"Soft Chime"},{value:"warm-bell",label:"Warm Bell"},{value:"click",label:"Click"},{value:"alert-tone",label:"Alert Tone"},{value:"pluck",label:"Pluck"}],r="quadwork_notification_sound",n="quadwork_notification_sound_choice",s="quadwork_notification_sound_background_only";function o(e){try{return window.localStorage.getItem(e)}catch{return null}}function a(e,t){try{window.localStorage.setItem(e,t)}catch{}}function i(){return"off"!==o(r)}function l(){let e=o(n);return e&&t.some(t=>t.value===e)?e:"soft-chime"}function c(){let e=o(s);return null===e||"off"!==e}e.s(["NOTIFICATION_SOUND_OPTIONS",0,t,"getNotificationBackgroundOnly",0,c,"getNotificationChoice",0,l,"getNotificationEnabled",0,i,"playNotificationSound",0,function(){if(!i()||c()&&document.hasFocus())return;let e=l();try{let t=new Audio(`/sounds/${e}.mp3`);t.volume=.6,t.play().catch(()=>{})}catch{}},"setNotificationBackgroundOnly",0,function(e){a(s,e?"on":"off")},"setNotificationChoice",0,function(e){a(n,e)},"setNotificationEnabled",0,function(e){a(r,e?"on":"off")}])},95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return i},formatWithValidation:function(){return c},urlObjectKeys:function(){return l}};for(var s in n)Object.defineProperty(r,s,{enumerable:!0,get:n[s]});let o=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:r}=e,n=e.protocol||"",s=e.pathname||"",i=e.hash||"",l=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(c+=":"+e.port)),l&&"object"==typeof l&&(l=String(o.urlQueryToSearchParams(l)));let u=e.search||l&&`?${l}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||a.test(n))&&!1!==c?(c="//"+(c||""),s&&"/"!==s[0]&&(s="/"+s)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),u&&"?"!==u[0]&&(u="?"+u),s=s.replace(/[?#]/g,encodeURIComponent),u=u.replace("#","%23"),`${n}${c}${s}${u}${i}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function c(e){return i(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return s}});let n=e.r(71645);function s(e,t){let r=(0,n.useRef)(null),s=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=s.current;t&&(s.current=null,t())}else e&&(r.current=o(e,n)),t&&(s.current=o(t,n))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let n=e.r(18967),s=e.r(52817);function o(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,s.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return g},useLinkStatus:function(){return j}};for(var s in n)Object.defineProperty(r,s,{enumerable:!0,get:n[s]});let o=e.r(90809),a=e.r(43476),i=o._(e.r(71645)),l=e.r(95057),c=e.r(8372),u=e.r(18581),d=e.r(18967),f=e.r(5550);e.r(33525);let h=e.r(88540),p=e.r(91949),x=e.r(73668),m=e.r(9396);function g(t){var r,n;let s,o,g,[j,v]=(0,i.useOptimistic)(p.IDLE_LINK_STATUS),y=(0,i.useRef)(null),{href:w,as:k,children:N,prefetch:C=null,passHref:S,replace:E,shallow:_,scroll:L,onClick:P,onMouseEnter:M,onTouchStart:O,legacyBehavior:I=!1,onNavigate:$,transitionTypes:T,ref:R,unstable_dynamicOnHover:A,...B}=t;s=N,I&&("string"==typeof s||"number"==typeof s)&&(s=(0,a.jsx)("a",{children:s}));let U=i.default.useContext(c.AppRouterContext),W=!1!==C,F=!1!==C?null===(n=C)||"auto"===n?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,z="string"==typeof(r=k||w)?r:(0,l.formatUrl)(r);if(I){if(s?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});o=i.default.Children.only(s)}let q=I?o&&"object"==typeof o&&o.ref:R,D=i.default.useCallback(e=>(null!==U&&(y.current=(0,p.mountLinkInstance)(e,z,U,F,W,v)),()=>{y.current&&((0,p.unmountLinkForCurrentNavigation)(y.current),y.current=null),(0,p.unmountPrefetchableInstance)(e)}),[W,z,U,F,v]),K={ref:(0,u.useMergedRef)(D,q),onClick(t){I||"function"!=typeof P||P(t),I&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!U||t.defaultPrevented||function(t,r,n,s,o,a,l){if("u">typeof window){let c,{nodeName:u}=t.currentTarget;if("A"===u.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,x.isLocalURL)(r)){s&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(99781);i.default.startTransition(()=>{d(r,s?"replace":"push",!1===o?h.ScrollBehavior.NoScroll:h.ScrollBehavior.Default,n.current,l)})}}(t,z,y,E,L,$,T)},onMouseEnter(e){I||"function"!=typeof M||M(e),I&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),U&&W&&(0,p.onNavigationIntent)(e.currentTarget,!0===A)},onTouchStart:function(e){I||"function"!=typeof O||O(e),I&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),U&&W&&(0,p.onNavigationIntent)(e.currentTarget,!0===A)}};return(0,d.isAbsoluteUrl)(z)?K.href=z:I&&!S&&("a"!==o.type||"href"in o.props)||(K.href=(0,f.addBasePath)(z)),g=I?i.default.cloneElement(o,K):(0,a.jsx)("a",{...B,...K,children:s}),(0,a.jsx)(b.Provider,{value:j,children:g})}e.r(84508);let b=(0,i.createContext)(p.IDLE_LINK_STATUS),j=()=>(0,i.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22140,e=>{"use strict";var t=e.i(43476),r=e.i(22016),n=e.i(18566),s=e.i(71645);function o(){return(0,t.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:(0,t.jsx)("path",{d:"M3 5h14M3 10h14M3 15h14"})})}function a(){return(0,t.jsx)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:(0,t.jsx)("path",{d:"M5 5l10 10M15 5L5 15"})})}function i(){return(0,t.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M3 10L10 3l7 7"}),(0,t.jsx)("path",{d:"M5 8.5V16h3.5v-4h3v4H15V8.5"})]})}function l(){return(0,t.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("circle",{cx:"9",cy:"9",r:"2.5"}),(0,t.jsx)("path",{d:"M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"})]})}function c(){return(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",children:(0,t.jsx)("path",{d:"M8 3v10M3 8h10"})})}function u(){return(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M10 3L5 8l5 5"})})}function d(){return(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M6 3l5 5-5 5"})})}function f({collapsed:e}){return(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:`transition-transform duration-150 ${e?"-rotate-90":""}`,children:(0,t.jsx)("path",{d:"M3 4.5l3 3 3-3"})})}function h({size:e=10}){return(0,t.jsxs)("svg",{width:e,height:e,viewBox:"0 0 16 16",fill:"currentColor",stroke:"none",children:[(0,t.jsx)("path",{d:"M10.5 1.5L14.5 5.5L10 7.5L8.5 12.5L3.5 7.5L8.5 6L10.5 1.5Z"}),(0,t.jsx)("path",{d:"M3.5 7.5L1 15L8.5 12.5"})]})}function p({project:e,isActive:n,expanded:o,pinned:a,hasActiveBatch:i,onContextMenu:l}){let[c,u]=(0,s.useState)(null),d=(0,s.useRef)(null);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.default,{ref:d,href:`/project/${e.id}`,className:`flex items-center gap-2 ${o?"w-full px-2":""} rounded-sm transition-colors ${!o?"":n?"bg-[#1a1a1a]":"hover:bg-[#1a1a1a]"}`,onMouseEnter:()=>{if(o)return;let e=d.current?.getBoundingClientRect();e&&u({top:e.top+e.height/2})},onMouseLeave:()=>u(null),onContextMenu:t=>l(t,e.id),children:[(0,t.jsxs)("div",{className:"relative shrink-0",children:[(0,t.jsx)("div",{className:`w-10 h-10 flex items-center justify-center rounded-full text-[11px] font-semibold uppercase tracking-tight transition-colors ${n?"border-2 border-accent text-accent":"border border-border text-text-muted hover:text-text"}`,children:e.name.slice(0,2)||"?"}),a&&!o&&(0,t.jsx)("div",{className:"absolute -top-1 -right-1 text-accent",children:(0,t.jsx)(h,{size:8})}),i&&(0,t.jsx)("div",{className:"animate-orbit"})]}),o&&(0,t.jsxs)("span",{className:`text-xs truncate flex items-center gap-1 ${n?"text-accent":"text-text-muted"}`,children:[e.name,a&&(0,t.jsx)(h,{size:10})]})]}),!o&&c&&(0,t.jsxs)("div",{className:"fixed px-2 py-1 bg-bg-surface border border-border text-text text-xs whitespace-nowrap pointer-events-none z-50",style:{left:72,top:c.top,transform:"translateY(-50%)"},children:[a&&"📌 ",e.name]})]})}let x="qw-sidebar-expanded",m="qw-sidebar-collapsed-groups";e.s(["default",0,function(){let e=(0,n.usePathname)(),[h,g]=(0,s.useState)([]),[b,j]=(0,s.useState)([]),[v,y]=(0,s.useState)([]),[w,k]=(0,s.useState)(new Set),[N,C]=(0,s.useState)("online"),[S,E]=(0,s.useState)(!1),[_,L]=(0,s.useState)(!1),[P,M]=(0,s.useState)(null),[O,I]=(0,s.useState)(""),$=(0,s.useRef)(null),[T,R]=(0,s.useState)(new Set);(0,s.useEffect)(()=>{L(!1)},[e]),(0,s.useEffect)(()=>{try{if(window.innerWidth>=768){let e=localStorage.getItem(x);"true"===e&&E(!0)}let e=localStorage.getItem(m);e&&k(new Set(JSON.parse(e)))}catch{}},[]),(0,s.useEffect)(()=>{let e=window.matchMedia("(max-width: 767px)"),t=e=>{e.matches&&E(!1)};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,s.useEffect)(()=>{fetch("/api/version").then(e=>e.json()).then(e=>I(e.version||"")).catch(()=>{})},[]),(0,s.useEffect)(()=>{fetch("/api/config").then(e=>{if(!e.ok)throw Error(`Config fetch failed: ${e.status}`);return e.json()}).then(e=>{$.current=e,g((e.projects||[]).filter(e=>!e.archived)),j(e.pinned_projects||[]),y(e.sidebar_groups||[])}).catch(()=>{})},[]),(0,s.useEffect)(()=>{if(0===h.length)return;let e=!1,t=()=>{Promise.all(h.map(e=>fetch(`/api/batch-progress?project=${encodeURIComponent(e.id)}`).then(e=>e.ok?e.json():null).then(t=>({id:e.id,active:t&&Array.isArray(t.items)&&t.items.length>0&&!t.complete})).catch(()=>({id:e.id,active:!1})))).then(t=>{e||R(new Set(t.filter(e=>e.active).map(e=>e.id)))})};t();let r=setInterval(t,3e4);return()=>{e=!0,clearInterval(r)}},[h]),(0,s.useEffect)(()=>{let e,t=!1,r=async()=>{try{let e=await fetch("/api/health",{signal:AbortSignal.timeout(3e3)});if(t)return;e.ok?C(e=>"offline"===e?"recovering":"online"):C("offline")}catch{if(t)return;C("offline")}t||(e=setTimeout(r,5e3))};return r(),()=>{t=!0,clearTimeout(e)}},[]),(0,s.useEffect)(()=>{if("recovering"===N){let e=setTimeout(()=>C("online"),1500);return()=>clearTimeout(e)}},[N]);let A="/"===e,B="/settings"===e,U=e.startsWith("/project/")?e.split("/")[2]:null,W=(0,s.useCallback)(e=>{j(e),fetch("/api/config").then(e=>e.json()).then(t=>{let r={...t,pinned_projects:e};return $.current=r,fetch("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}).catch(()=>{})},[]),F=(0,s.useCallback)(e=>{y(e),fetch("/api/config").then(e=>e.json()).then(t=>{let r={...t,sidebar_groups:e};return $.current=r,fetch("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}).catch(()=>{})},[]),z=(e,t)=>{let r=v.map(t=>({...t,projects:t.projects.filter(t=>t!==e)}));if("__ungrouped__"===t)F(r.filter(e=>e.projects.length>0));else{let n=r.find(e=>e.name===t);n?n.projects.push(e):r.push({name:t,projects:[e]}),F(r.filter(e=>e.projects.length>0))}M(null)},q=(e,t)=>{e.preventDefault(),M({x:e.clientX,y:e.clientY,projectId:t})};(0,s.useEffect)(()=>{if(!P)return;let e=()=>M(null);return window.addEventListener("click",e),()=>window.removeEventListener("click",e)},[P]);let D=new Set(b),K=b.map(e=>h.find(t=>t.id===e)).filter(e=>!!e),Q=new Set(v.flatMap(e=>e.projects)),G=h.filter(e=>!D.has(e.id)),H=G.filter(e=>!Q.has(e.id)),J=e=>(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.default,{href:"/",className:`flex items-center gap-2 rounded-sm transition-colors ${e?"px-2 py-2":"w-10 h-10 justify-center self-center"} ${A?"text-accent":"text-text-muted hover:text-text hover:bg-[#1a1a1a]"}`,title:"Home",children:[(0,t.jsx)(i,{}),e&&(0,t.jsx)("span",{className:"text-xs",children:"Home"})]}),(0,t.jsx)("div",{className:`h-px bg-border my-2 ${e?"":"w-6 self-center"}`}),(0,t.jsxs)("div",{className:`flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 ${e?"":"items-center"}`,children:[K.length>0&&(0,t.jsxs)(t.Fragment,{children:[e&&(0,t.jsx)("span",{className:"text-[10px] uppercase tracking-widest text-text-muted px-2",children:"Pinned"}),K.map(r=>(0,t.jsx)(p,{project:r,isActive:U===r.id,expanded:e,pinned:!0,hasActiveBatch:T.has(r.id),onContextMenu:q},r.id)),(0,t.jsx)("div",{className:`h-px bg-border ${e?"":"w-6"}`})]}),v.map(r=>{let n=r.projects.map(e=>G.find(t=>t.id===e)).filter(e=>!!e);if(0===n.length)return null;let s=w.has(r.name);return(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("button",{onClick:()=>{var e;return e=r.name,void k(t=>{let r=new Set(t);r.has(e)?r.delete(e):r.add(e);try{localStorage.setItem(m,JSON.stringify([...r]))}catch{}return r})},className:`flex items-center gap-1 text-text-muted hover:text-text transition-colors ${e?"px-2 py-0.5":"justify-center w-full"}`,title:`${s?"Expand":"Collapse"} ${r.name}`,children:e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(f,{collapsed:s}),(0,t.jsx)("span",{className:"text-[10px] uppercase tracking-widest truncate",children:r.name})]}):(0,t.jsx)("div",{className:`w-6 h-px ${s?"bg-text-muted":"bg-border"}`})}),!s&&n.map(r=>(0,t.jsx)(p,{project:r,isActive:U===r.id,expanded:e,pinned:!1,hasActiveBatch:T.has(r.id),onContextMenu:q},r.id))]},r.name)}),H.length>0&&v.length>0&&(0,t.jsxs)(t.Fragment,{children:[e&&(0,t.jsx)("span",{className:"text-[10px] uppercase tracking-widest text-text-muted px-2",children:"Ungrouped"}),!e&&v.length>0&&(0,t.jsx)("div",{className:"w-6 h-px bg-border"})]}),H.map(r=>(0,t.jsx)(p,{project:r,isActive:U===r.id,expanded:e,pinned:!1,hasActiveBatch:T.has(r.id),onContextMenu:q},r.id)),(0,t.jsxs)(r.default,{href:"/setup",className:`flex items-center gap-2 rounded-full transition-colors ${e?"px-2 py-2 border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a] rounded-sm":"w-10 h-10 justify-center border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a]"}`,title:"Add project",children:[(0,t.jsx)(c,{}),e&&(0,t.jsx)("span",{className:"text-xs text-text-muted",children:"New Project"})]})]}),P&&(0,t.jsxs)("div",{className:"fixed bg-bg-surface border border-border py-1 z-50 text-xs",style:{left:P.x,top:P.y},onClick:e=>e.stopPropagation(),children:[D.has(P.projectId)?(0,t.jsx)("button",{className:"w-full px-3 py-1.5 text-left text-text hover:bg-[#1a1a1a] transition-colors",onClick:()=>{var e;return e=P.projectId,void(W(b.filter(t=>t!==e)),M(null))},children:"Unpin"}):(0,t.jsx)("button",{className:"w-full px-3 py-1.5 text-left text-text hover:bg-[#1a1a1a] transition-colors",onClick:()=>{var e;return e=P.projectId,void(!b.includes(e)&&(W([e,...b]),M(null)))},children:"Pin to top"}),(0,t.jsx)("div",{className:"h-px bg-border my-1"}),P.showGroupMenu?(0,t.jsxs)("div",{className:"flex flex-col",children:[v.map(e=>(0,t.jsx)("button",{className:"w-full px-3 py-1.5 text-left text-text hover:bg-[#1a1a1a] transition-colors",onClick:()=>z(P.projectId,e.name),children:e.name},e.name)),(0,t.jsx)("button",{className:"w-full px-3 py-1.5 text-left text-text hover:bg-[#1a1a1a] transition-colors",onClick:()=>{let e=prompt("New group name:");if(!e?.trim())return;let t=e.trim();v.some(e=>e.name.toLowerCase()===t.toLowerCase())?alert(`Group "${t}" already exists.`):z(P.projectId,t)},children:"+ New group"}),Q.has(P.projectId)&&(0,t.jsx)("button",{className:"w-full px-3 py-1.5 text-left text-text-muted hover:bg-[#1a1a1a] transition-colors",onClick:()=>z(P.projectId,"__ungrouped__"),children:"Remove from group"})]}):(0,t.jsx)("button",{className:"w-full px-3 py-1.5 text-left text-text hover:bg-[#1a1a1a] transition-colors",onClick:()=>M({...P,showGroupMenu:!0}),children:"Move to group..."})]}),(0,t.jsx)("div",{className:`h-px bg-border my-2 ${e?"":"w-6 self-center"}`}),"online"!==N&&(0,t.jsxs)("div",{className:`mb-2 relative group ${e?"px-2":"self-center"}`,children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("div",{className:`w-3 h-3 shrink-0 rounded-full ${"offline"===N?"bg-red-500 animate-pulse":"bg-green-500"}`}),e&&(0,t.jsx)("span",{className:"text-xs text-text-muted",children:"offline"===N?"Backend offline":"Reconnected"})]}),!e&&(0,t.jsx)("div",{className:"fixed left-16 ml-2 px-2 py-1 bg-bg-surface border border-border text-xs whitespace-nowrap z-50 hidden group-hover:block",style:{transform:"translateY(-50%)",top:"auto"},children:"offline"===N?"Backend offline — run quadwork start":"Backend reconnected"})]}),(0,t.jsxs)(r.default,{href:"/settings",className:`flex items-center gap-2 rounded-sm transition-colors ${e?"px-2 py-2":"w-10 h-10 justify-center self-center"} ${B?"text-accent":"text-text-muted hover:text-text hover:bg-[#1a1a1a]"}`,title:"Settings",children:[(0,t.jsx)(l,{}),e&&(0,t.jsx)("span",{className:"text-xs",children:"Settings"})]}),O&&(0,t.jsxs)("div",{className:`text-[10px] text-text-muted/40 ${e?"px-3":"text-center"} pt-2`,children:["v",O]})]});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{type:"button",onClick:()=>L(!0),className:"fixed top-14 left-2 z-30 lg:hidden w-10 h-10 flex items-center justify-center bg-bg-surface border border-border text-text-muted hover:text-accent",children:(0,t.jsx)(o,{})}),_&&(0,t.jsx)("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>L(!1)}),(0,t.jsxs)("aside",{className:`fixed inset-y-0 left-0 z-50 w-52 bg-bg-surface border-r border-border flex flex-col py-3 px-2 items-stretch overflow-y-auto transition-transform duration-200 ease-in-out lg:hidden ${_?"translate-x-0":"-translate-x-full"}`,children:[(0,t.jsx)("button",{type:"button",onClick:()=>L(!1),className:"self-end shrink-0 w-10 h-10 flex items-center justify-center text-text-muted hover:text-accent mb-1",children:(0,t.jsx)(a,{})}),J(!0)]}),(0,t.jsxs)("aside",{className:`hidden lg:flex shrink-0 h-full border-r border-border bg-bg-surface flex-col py-3 transition-[width] duration-200 ease-in-out overflow-hidden ${S?"w-52 items-stretch px-2":"w-16 items-center"}`,children:[J(S),(0,t.jsx)("div",{className:"h-1"}),(0,t.jsx)("button",{onClick:()=>{E(e=>{let t=!e;try{localStorage.setItem(x,String(t))}catch{}return t})},className:`flex shrink-0 items-center justify-center w-10 h-10 rounded-sm border border-border text-text-muted hover:text-accent hover:border-accent/50 transition-colors ${S?"self-end":"self-center"}`,title:S?"Collapse sidebar":"Expand sidebar",children:S?(0,t.jsx)(u,{}):(0,t.jsx)(d,{})})]})]})}])},26704,e=>{"use strict";var t=e.i(43476),r=e.i(22016),n=e.i(71645);function s({open:e,onClose:r}){return((0,n.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&r()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[e,r]),e)?(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm",onClick:r,role:"dialog","aria-modal":"true","aria-labelledby":"about-title",children:(0,t.jsxs)("div",{className:"relative mx-4 max-w-lg w-full rounded-lg border border-white/10 bg-neutral-950 p-6 shadow-2xl",onClick:e=>e.stopPropagation(),children:[(0,t.jsx)("button",{type:"button",onClick:r,"aria-label":"Close",className:"absolute right-3 top-3 rounded p-1 text-neutral-400 hover:bg-white/5 hover:text-white",children:(0,t.jsx)("svg",{width:"18",height:"18",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:(0,t.jsx)("path",{d:"M4 4l12 12M16 4L4 16",strokeLinecap:"round"})})}),(0,t.jsx)("h2",{id:"about-title",className:"text-lg font-semibold text-white",children:"What is QuadWork?"}),(0,t.jsx)("p",{className:"mt-3 text-sm leading-relaxed text-neutral-300",children:"QuadWork is a local dashboard that runs a team of 4 AI agents — Head, Dev, and two Reviewers — that code, review, and ship while you sleep."}),(0,t.jsx)("p",{className:"mt-3 text-sm leading-relaxed text-neutral-300",children:"Every task follows a strict GitHub workflow: Issue → Branch → Pull Request → 2 Reviews → Merge. Branch protection ensures no agent can skip the process."}),(0,t.jsx)("h3",{className:"mt-5 text-sm font-semibold text-white",children:"Why QuadWork?"}),(0,t.jsxs)("ul",{className:"mt-2 space-y-1.5 text-sm text-neutral-300",children:[(0,t.jsxs)("li",{children:["🤖 ",(0,t.jsx)("b",{children:"Run 24/7"})," — agents work overnight while you rest"]}),(0,t.jsxs)("li",{children:["🛡️ ",(0,t.jsx)("b",{children:"Always reviewed"})," — every PR needs 2 independent approvals"]}),(0,t.jsxs)("li",{children:["🔒 ",(0,t.jsx)("b",{children:"Local-first"})," — runs entirely on your machine, no data leaves"]}),(0,t.jsxs)("li",{children:["🧰 ",(0,t.jsx)("b",{children:"Bring your own CLI"})," — works with Claude Code, Codex, or both"]}),(0,t.jsxs)("li",{children:["📦 ",(0,t.jsx)("b",{children:"One install"})," — ",(0,t.jsx)("code",{className:"rounded bg-white/5 px-1 py-0.5 text-[12px]",children:"npx quadwork init"})," and you're set"]})]}),(0,t.jsx)("div",{className:"mt-5",children:(0,t.jsx)("a",{href:"https://github.com/realproject7/quadwork",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-blue-400 hover:text-blue-300",children:"Read the full docs on GitHub →"})})]})}):null}let o=["sleep.","eat.","enjoy life.","touch grass.","spend time with people.","watch a movie.","take a vacation.","go for a run."],a="quadwork_tagline_animation";function i(e){return!Number.isFinite(e)||e<=0?"0h":e<1?`${(60*e).toFixed(0)}m`:`${e.toFixed(1)}h`}e.s(["default",0,function(){let[e,l]=(0,n.useState)(!1);(0,n.useEffect)(()=>{l(!0)},[]);let[c,u]=(0,n.useState)(!1),[d,f]=(0,n.useState)(null),[h,p]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let e=!1,t=()=>{fetch("/api/activity/stats").then(e=>e.ok?e.json():null).then(t=>{!e&&t&&f(t)}).catch(()=>{})};t();let r=setInterval(t,6e4);return()=>{e=!0,clearInterval(r)}},[]);let[x,m]=(0,n.useState)(!0);(0,n.useEffect)(()=>{try{let e=window.localStorage.getItem(a);"off"===e&&m(!1)}catch{}},[]);let g=function(e,t){let[r,s]=(0,n.useState)(0),[o,a]=(0,n.useState)(""),[i,l]=(0,n.useState)("typing");return(0,n.useEffect)(()=>{let n;if(!t)return;let c=e[r];return"typing"===i?n=o.length<c.length?setTimeout(()=>a(c.slice(0,o.length+1)),70):setTimeout(()=>l("holding"),0):"holding"===i?n=setTimeout(()=>l("deleting"),2e3):o.length>0?n=setTimeout(()=>a(c.slice(0,o.length-1)),35):(s(t=>(t+1)%e.length),l("typing")),()=>clearTimeout(n)},[o,i,r,e,t]),o}(o,x),b=x?g:o[0]||"",[j,v]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!x)return void v(!0);let e=setTimeout(()=>v(!0),5e3);return()=>clearTimeout(e)},[x]);let y=(0,n.useRef)(!1);return((0,n.useEffect)(()=>{x&&(g.length>0?y.current=!0:y.current&&v(!0))},[x,g]),e)?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("header",{className:"sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsxs)(r.default,{href:"/",className:"flex items-center gap-1.5 text-sm font-bold text-accent hover:text-blue-400 shrink-0",children:[(0,t.jsx)("img",{src:"/icon.svg",alt:"",width:18,height:18,className:"inline-block"}),"QuadWork"]}),(0,t.jsx)("span",{className:"hidden sm:inline text-neutral-600",children:"|"}),(0,t.jsxs)("span",{className:"hidden sm:inline text-[13px] text-neutral-400 truncate",children:["Your AI dev team while you"," ",(0,t.jsx)("span",{className:"text-neutral-200",children:b}),x&&(0,t.jsx)("span",{className:"ml-0.5 inline-block w-[1px] h-[12px] align-middle bg-neutral-400 animate-qw-blink"})]}),j&&(0,t.jsx)("button",{type:"button",onClick:()=>{m(e=>{let t=!e;try{window.localStorage.setItem(a,t?"on":"off")}catch{}return t})},"aria-label":x?"Pause tagline animation":"Resume tagline animation","aria-pressed":x,title:x?"Pause tagline animation":"Resume tagline animation",className:"hidden sm:inline-flex items-center justify-center w-3.5 h-3.5 ml-1 rounded-full border border-white/15 text-neutral-500 hover:text-white hover:border-white/40 transition-colors text-[8px]",children:x?"❚❚":"▶"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3 shrink-0",children:[d&&(0,t.jsxs)("div",{className:"relative hidden md:flex items-center gap-2 text-[10px] text-neutral-500",onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),onFocus:()=>p(!0),onBlur:()=>p(!1),tabIndex:0,children:[(0,t.jsx)("span",{className:"text-neutral-200",children:"Your AI team worked:"}),(0,t.jsxs)("span",{children:["Today ",(0,t.jsx)("span",{className:"text-neutral-200",children:i(d.today)})]}),(0,t.jsx)("span",{className:"text-neutral-700",children:"·"}),(0,t.jsxs)("span",{children:["Week ",(0,t.jsx)("span",{className:"text-neutral-200",children:i(d.week)})]}),(0,t.jsx)("span",{className:"text-neutral-700",children:"·"}),(0,t.jsxs)("span",{children:["Month ",(0,t.jsx)("span",{className:"text-neutral-200",children:i(d.month)})]}),h&&(0,t.jsxs)("div",{className:"absolute top-6 right-0 z-50 min-w-[220px] p-2 text-[10px] leading-snug text-neutral-200 bg-neutral-900 border border-white/15 rounded shadow-lg",children:[(0,t.jsx)("div",{className:"mb-1 text-neutral-400 uppercase tracking-wider text-[9px]",children:"Per project"}),0===Object.entries(d.by_project).length&&(0,t.jsx)("div",{className:"text-neutral-500",children:"No activity logged yet"}),Object.entries(d.by_project).map(([e,r])=>(0,t.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,t.jsx)("span",{className:"text-neutral-400 truncate flex-1",children:e}),(0,t.jsx)("span",{className:"tabular-nums text-neutral-200",children:i(r.month)}),(0,t.jsx)("span",{className:"text-neutral-600 text-[9px]",children:"/ mo"})]},e)),(0,t.jsxs)("div",{className:"mt-1 pt-1 border-t border-white/10 text-neutral-500",children:["Lifetime: ",(0,t.jsx)("span",{className:"text-neutral-200",children:i(d.total)})]}),(0,t.jsx)("div",{className:"mt-1 pt-1 border-t border-white/10 text-neutral-500 leading-snug",children:"ⓘ Stats are best-effort. Server restarts may undercount in-flight sessions."})]})]}),(0,t.jsx)("button",{type:"button",onClick:()=>u(!0),"aria-label":"About QuadWork",className:"rounded p-1 text-neutral-400 hover:bg-white/5 hover:text-white",children:(0,t.jsxs)("svg",{width:"18",height:"18",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[(0,t.jsx)("circle",{cx:"10",cy:"10",r:"8"}),(0,t.jsx)("path",{d:"M10 9v5",strokeLinecap:"round"}),(0,t.jsx)("circle",{cx:"10",cy:"6.5",r:"0.8",fill:"currentColor"})]})}),(0,t.jsx)("a",{href:"https://github.com/realproject7/quadwork",target:"_blank",rel:"noopener noreferrer",className:"text-[12px] text-neutral-400 hover:text-white",children:"QuadWork github"})]})]}),(0,t.jsx)(s,{open:c,onClose:()=>u(!1)})]}):(0,t.jsx)("header",{className:"sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur","aria-hidden":"true"})}],26704)},43688,e=>{"use strict";var t=e.i(71645),r=e.i(67449);e.s(["default",0,function(){let e=(0,t.useRef)({}),n=(0,t.useRef)("user"),s=(0,t.useRef)([]),o=(0,t.useRef)(!1),a=(0,t.useRef)(new Set),i=(0,t.useCallback)(t=>{null==e.current[t]&&(e.current[t]=0,a.current.add(t))},[]),l=(0,t.useCallback)(()=>{fetch("/api/config").then(e=>e.ok?e.json():null).then(t=>{if(!t)return;"string"==typeof t.operator_name&&t.operator_name&&(n.current=t.operator_name);let r=t.projects||[];for(let e of(s.current=r,r))i(e.id);let a=new Set(r.map(e=>e.id));for(let t of Object.keys(e.current))a.has(t)||delete e.current[t];o.current=!0}).catch(()=>{})},[i]);(0,t.useEffect)(()=>{l();let e=setInterval(l,3e4);return()=>clearInterval(e)},[l]);let c=(0,t.useCallback)(()=>{if(o.current)for(let t of s.current){let s=e.current[t.id];null!=s&&fetch(`/api/chat?path=/api/messages&channel=general&cursor=${s}&project=${encodeURIComponent(t.id)}`).then(e=>e.ok?e.json():null).then(s=>{if(!s)return;let o=Array.isArray(s)?s:s.messages||[];if(0===o.length)return void a.current.delete(t.id);let i=e.current[t.id]??0,l=Math.max(...o.map(e=>e.id));l>i&&(e.current[t.id]=l);let c=n.current;a.current.has(t.id)?a.current.delete(t.id):o.some(e=>e.id>i&&(void 0===e.type||"chat"===e.type)&&"user"!==e.sender&&e.sender!==c&&"system"!==e.sender)&&(0,r.playNotificationSound)()}).catch(()=>{})}},[]);return(0,t.useEffect)(()=>{let e=setInterval(c,3e3);return()=>clearInterval(e)},[c]),null}])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return r}});let l=e.r(32061);function r({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new l.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,n)=>{"use strict";function l(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return l}})},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return a}});let l=e.r(43476),r=e.r(74080),u=e.r(63599),o=e.r(9885),s=e.r(43369);function a({moduleIds:e}){if("u">typeof window)return null;let t=u.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let l=t.reactLoadableManifest;for(let t of e){if(!l[t])continue;let e=l[t].files;n.push(...e)}}if(0===n.length)return null;let i=(0,s.getAssetTokenQuery)();return(0,l.jsx)(l.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,o.encodeURIPath)(e)}${i}`;return e.endsWith(".css")?(0,l.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,r.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return i}});let l=e.r(43476),r=e.r(71645),u=e.r(67585),o=e.r(52157);function s(e){return{default:e&&"default"in e?e.default:e}}let a={loader:()=>Promise.resolve(s(()=>null)),loading:null,ssr:!0},i=function(e){let t={...a,...e},n=(0,r.lazy)(()=>t.loader().then(s)),i=t.loading;function d(e){let s=i?(0,l.jsx)(i,{isLoading:!0,pastDelay:!0,error:null}):null,a=!t.ssr||!!t.loading,d=a?r.Suspense:r.Fragment,c=t.ssr?(0,l.jsxs)(l.Fragment,{children:["u"<typeof window?(0,l.jsx)(o.PreloadChunks,{moduleIds:t.modules}):null,(0,l.jsx)(n,{...e})]}):(0,l.jsx)(u.BailoutToCSR,{reason:"next/dynamic",children:(0,l.jsx)(n,{...e})});return(0,l.jsx)(d,{...a?{fallback:s}:{},children:c})}return d.displayName="LoadableComponent",d}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r}});let l=e.r(55682)._(e.r(69093));function r(e,t){let n={};"function"==typeof e&&(n.loader=e);let r={...n,...t};return(0,l.default)({...r,modules:r.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},9530,e=>{"use strict";var t=e.i(43476),n=e.i(70703),l=e.i(18566);let r=(0,n.default)(()=>e.A(65615),{loadableGenerated:{modules:[73766]},ssr:!1});e.s(["default",0,function(){let e=(0,l.usePathname)().split("/")[2]||"";return e&&"_"!==e?(0,t.jsx)("div",{className:"w-full h-full",children:(0,t.jsx)(r,{projectId:e})}):null}])},65615,e=>{e.v(t=>Promise.all(["static/chunks/0~-kpl6f_x5s6.js","static/chunks/0hpnwm9coputy.js","static/chunks/0y0dg-lqx5oiw.js","static/chunks/17oc2l.ekcs8b.css"].map(t=>e.l(t))).then(()=>t(73766)))}]);