tmux-ide 2.0.0 → 2.1.0

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 (377) hide show
  1. package/dashboard/out/404/index.html +1 -0
  2. package/dashboard/out/404.html +1 -0
  3. package/dashboard/out/__next.__PAGE__.txt +9 -0
  4. package/dashboard/out/__next._full.txt +21 -0
  5. package/dashboard/out/__next._head.txt +5 -0
  6. package/dashboard/out/__next._index.txt +7 -0
  7. package/dashboard/out/__next._tree.txt +4 -0
  8. package/dashboard/out/_next/static/WTHSCKfFb30xXXhXuq66f/_buildManifest.js +11 -0
  9. package/dashboard/out/_next/static/WTHSCKfFb30xXXhXuq66f/_clientMiddlewareManifest.json +1 -0
  10. package/dashboard/out/_next/static/WTHSCKfFb30xXXhXuq66f/_ssgManifest.js +1 -0
  11. package/dashboard/out/_next/static/chunks/048e2449530877e2.js +1 -0
  12. package/dashboard/out/_next/static/chunks/053c57bda6abb959.js +1 -0
  13. package/dashboard/out/_next/static/chunks/056760c6c2dd9172.js +1 -0
  14. package/dashboard/out/_next/static/chunks/06ab47357b6d3e35.js +1 -0
  15. package/dashboard/out/_next/static/chunks/0921cbe5dfd6738e.js +1 -0
  16. package/dashboard/out/_next/static/chunks/0b2599bf468cf5ea.js +1 -0
  17. package/dashboard/out/_next/static/chunks/0c012eac08ef2c4f.js +1 -0
  18. package/dashboard/out/_next/static/chunks/0c29e87fcdcffac3.js +1 -0
  19. package/dashboard/out/_next/static/chunks/0e1e98854430c693.js +1 -0
  20. package/dashboard/out/_next/static/chunks/0e24498976a88976.js +1 -0
  21. package/dashboard/out/_next/static/chunks/0e5bf11ff0b9ab90.js +1 -0
  22. package/dashboard/out/_next/static/chunks/0eae0a45ab8416c8.js +1 -0
  23. package/dashboard/out/_next/static/chunks/104797400d9d38ad.js +1 -0
  24. package/dashboard/out/_next/static/chunks/10cfcfce475f9d2d.js +1 -0
  25. package/dashboard/out/_next/static/chunks/11bac38e7cfb4ecc.js +1 -0
  26. package/dashboard/out/_next/static/chunks/120c5f6501ec3529.js +1 -0
  27. package/dashboard/out/_next/static/chunks/121fceb2b1dcd79f.js +1 -0
  28. package/dashboard/out/_next/static/chunks/13726b63e1be6b98.js +1 -0
  29. package/dashboard/out/_next/static/chunks/140c6ce631514660.js +1 -0
  30. package/dashboard/out/_next/static/chunks/1435ee3a51174c97.js +1 -0
  31. package/dashboard/out/_next/static/chunks/14dc927d2e2cca91.js +1 -0
  32. package/dashboard/out/_next/static/chunks/179c3031b292d98e.js +1 -0
  33. package/dashboard/out/_next/static/chunks/181e88957c47e5c1.js +1 -0
  34. package/dashboard/out/_next/static/chunks/18f70ba23873c432.js +1 -0
  35. package/dashboard/out/_next/static/chunks/1b58303b027fd135.js +1 -0
  36. package/dashboard/out/_next/static/chunks/1b5f49a358dcc71e.js +1 -0
  37. package/dashboard/out/_next/static/chunks/1bba44b81585099a.js +1 -0
  38. package/dashboard/out/_next/static/chunks/1bea8dee19a3e9ae.js +1 -0
  39. package/dashboard/out/_next/static/chunks/1cfad21646fc250e.js +1 -0
  40. package/dashboard/out/_next/static/chunks/1d053dc9e1e428ef.js +1 -0
  41. package/dashboard/out/_next/static/chunks/1e7d7639c6f0ee5e.js +1 -0
  42. package/dashboard/out/_next/static/chunks/1f42504ca81463f1.js +1 -0
  43. package/dashboard/out/_next/static/chunks/20c92047399305b4.js +1 -0
  44. package/dashboard/out/_next/static/chunks/214560e9514a9a4d.js +1 -0
  45. package/dashboard/out/_next/static/chunks/21d4ef106914e997.js +1 -0
  46. package/dashboard/out/_next/static/chunks/2586e83fc3dc2588.js +1 -0
  47. package/dashboard/out/_next/static/chunks/267136a09e94f5c2.js +1 -0
  48. package/dashboard/out/_next/static/chunks/271c50b329917c10.js +1 -0
  49. package/dashboard/out/_next/static/chunks/27fccecefffd88b5.js +1 -0
  50. package/dashboard/out/_next/static/chunks/28f058ed331315b6.js +1 -0
  51. package/dashboard/out/_next/static/chunks/28f704f2cc5713eb.js +1 -0
  52. package/dashboard/out/_next/static/chunks/290f67a6cd150a98.js +1 -0
  53. package/dashboard/out/_next/static/chunks/2ad12f4dcc30d30a.js +1 -0
  54. package/dashboard/out/_next/static/chunks/2b650b172078ab92.js +1 -0
  55. package/dashboard/out/_next/static/chunks/2bd91076019a6453.js +1 -0
  56. package/dashboard/out/_next/static/chunks/2e1278563a8e26be.js +1 -0
  57. package/dashboard/out/_next/static/chunks/309eb70780a3d67d.js +1 -0
  58. package/dashboard/out/_next/static/chunks/30f71950992e2307.js +1 -0
  59. package/dashboard/out/_next/static/chunks/31191873c2075784.js +1 -0
  60. package/dashboard/out/_next/static/chunks/31a790921a0c035e.js +1 -0
  61. package/dashboard/out/_next/static/chunks/34f8d7a5a06e8e32.js +1 -0
  62. package/dashboard/out/_next/static/chunks/36b3716436d9bc9d.js +1 -0
  63. package/dashboard/out/_next/static/chunks/3770b7d0ff004de3.js +1 -0
  64. package/dashboard/out/_next/static/chunks/381ab3bd4cffbf4d.js +1 -0
  65. package/dashboard/out/_next/static/chunks/38aa4eada5dcd1a4.js +1 -0
  66. package/dashboard/out/_next/static/chunks/39723132b78cb77e.js +1 -0
  67. package/dashboard/out/_next/static/chunks/399efdcc3fe56e09.js +1 -0
  68. package/dashboard/out/_next/static/chunks/3a8431a9221b0706.js +1 -0
  69. package/dashboard/out/_next/static/chunks/3a9b40810ce88cbf.js +1 -0
  70. package/dashboard/out/_next/static/chunks/3b322e3e9476ecdf.js +1 -0
  71. package/dashboard/out/_next/static/chunks/3bb14befeeb08c28.js +1 -0
  72. package/dashboard/out/_next/static/chunks/3c99637ebd462b20.js +1 -0
  73. package/dashboard/out/_next/static/chunks/3cbb9217d56459d8.js +1 -0
  74. package/dashboard/out/_next/static/chunks/3d438e0929a762f7.js +1 -0
  75. package/dashboard/out/_next/static/chunks/3e6d4834e0752f76.js +2 -0
  76. package/dashboard/out/_next/static/chunks/3e6f8cedaad4e89b.js +1 -0
  77. package/dashboard/out/_next/static/chunks/3e701259ce1b53e3.js +1 -0
  78. package/dashboard/out/_next/static/chunks/41562f7ab7c033eb.js +1 -0
  79. package/dashboard/out/_next/static/chunks/418fadd8a94e2fd7.js +1 -0
  80. package/dashboard/out/_next/static/chunks/42345437bb922e9c.js +1 -0
  81. package/dashboard/out/_next/static/chunks/434b6bd78c97b668.js +1 -0
  82. package/dashboard/out/_next/static/chunks/434febe897d33e2d.js +1 -0
  83. package/dashboard/out/_next/static/chunks/45d28707dd8ce1c1.js +1 -0
  84. package/dashboard/out/_next/static/chunks/4620a640e88cb1b7.js +1 -0
  85. package/dashboard/out/_next/static/chunks/468f8eb604502ea4.js +1 -0
  86. package/dashboard/out/_next/static/chunks/495f5cedf8afe823.js +1 -0
  87. package/dashboard/out/_next/static/chunks/49a89d1704d27740.js +1 -0
  88. package/dashboard/out/_next/static/chunks/49e5c37d15f63def.js +1 -0
  89. package/dashboard/out/_next/static/chunks/4a46ad186a8587ee.css +2 -0
  90. package/dashboard/out/_next/static/chunks/4a5c728574935d50.js +1 -0
  91. package/dashboard/out/_next/static/chunks/4b27ebd4d9304d8f.js +1 -0
  92. package/dashboard/out/_next/static/chunks/4b965aa320a9b358.js +1 -0
  93. package/dashboard/out/_next/static/chunks/4bb2da90bbe5794f.js +1 -0
  94. package/dashboard/out/_next/static/chunks/4d2f1c6f631e4b85.js +1 -0
  95. package/dashboard/out/_next/static/chunks/4d696d5a64dab42e.js +1 -0
  96. package/dashboard/out/_next/static/chunks/4f660dadb3f1e9e2.js +1 -0
  97. package/dashboard/out/_next/static/chunks/507b50d47f949333.js +1 -0
  98. package/dashboard/out/_next/static/chunks/50b1b7063bb044e2.js +1 -0
  99. package/dashboard/out/_next/static/chunks/50c0c2e3c4f02508.js +1 -0
  100. package/dashboard/out/_next/static/chunks/50d7ba9803e65b02.js +1 -0
  101. package/dashboard/out/_next/static/chunks/51535a6d4c98c7a4.js +1 -0
  102. package/dashboard/out/_next/static/chunks/526de6cc16c7dd2f.js +1 -0
  103. package/dashboard/out/_next/static/chunks/5307604f8632b3fd.js +1 -0
  104. package/dashboard/out/_next/static/chunks/5480bd722260f231.js +1 -0
  105. package/dashboard/out/_next/static/chunks/54c61c82e5f1dca5.js +1 -0
  106. package/dashboard/out/_next/static/chunks/555de6ac6bb9034c.js +1 -0
  107. package/dashboard/out/_next/static/chunks/562b89ee76a4b90c.js +1 -0
  108. package/dashboard/out/_next/static/chunks/5747f9a32edff429.js +1 -0
  109. package/dashboard/out/_next/static/chunks/57ee141430b4c05c.js +1 -0
  110. package/dashboard/out/_next/static/chunks/584c066a0837dd9a.js +1 -0
  111. package/dashboard/out/_next/static/chunks/5856aed4670a6253.js +1 -0
  112. package/dashboard/out/_next/static/chunks/58fe563414726511.js +1 -0
  113. package/dashboard/out/_next/static/chunks/5948196b2729b18c.js +1 -0
  114. package/dashboard/out/_next/static/chunks/5ab77c69e7306f97.js +1 -0
  115. package/dashboard/out/_next/static/chunks/5b3fa4c99d61611c.js +1 -0
  116. package/dashboard/out/_next/static/chunks/5cc87abaef616661.js +1 -0
  117. package/dashboard/out/_next/static/chunks/5dfa7913f99bb966.js +1 -0
  118. package/dashboard/out/_next/static/chunks/5e49b008432770f1.js +1 -0
  119. package/dashboard/out/_next/static/chunks/5e5a33dd81c45c47.js +1 -0
  120. package/dashboard/out/_next/static/chunks/5ee61bed638eb8a8.js +1 -0
  121. package/dashboard/out/_next/static/chunks/5eed557b9f45ae4a.js +1 -0
  122. package/dashboard/out/_next/static/chunks/60446823a7d30c1b.js +1 -0
  123. package/dashboard/out/_next/static/chunks/605150c490861442.js +1 -0
  124. package/dashboard/out/_next/static/chunks/609056d51c0bf332.js +1 -0
  125. package/dashboard/out/_next/static/chunks/60ec91dfeb50071b.js +1 -0
  126. package/dashboard/out/_next/static/chunks/61bc7be0bba6a33f.js +1 -0
  127. package/dashboard/out/_next/static/chunks/61f4a5c9ce23e55e.js +1 -0
  128. package/dashboard/out/_next/static/chunks/63aae3585be04e65.js +1 -0
  129. package/dashboard/out/_next/static/chunks/64e0e1ee7ef4f01b.js +1 -0
  130. package/dashboard/out/_next/static/chunks/66e9b4c26ff1aaaf.js +1 -0
  131. package/dashboard/out/_next/static/chunks/67068847aa1b5e98.js +1 -0
  132. package/dashboard/out/_next/static/chunks/68d7de1f2e202c26.js +1 -0
  133. package/dashboard/out/_next/static/chunks/698ca3ea1937ba4f.js +1 -0
  134. package/dashboard/out/_next/static/chunks/69eb97c24b5b6b9d.js +1 -0
  135. package/dashboard/out/_next/static/chunks/6b1ac098c228a479.js +1 -0
  136. package/dashboard/out/_next/static/chunks/6bb8020cb796bcc1.js +1 -0
  137. package/dashboard/out/_next/static/chunks/6cb5c58418022991.js +193 -0
  138. package/dashboard/out/_next/static/chunks/6cf8b1db17f2a155.js +1 -0
  139. package/dashboard/out/_next/static/chunks/6e7613643906ea88.js +1 -0
  140. package/dashboard/out/_next/static/chunks/6ea27ceb2e6feae5.js +1 -0
  141. package/dashboard/out/_next/static/chunks/6f95a8dbcf23dded.js +1 -0
  142. package/dashboard/out/_next/static/chunks/6fd44e759d82f64e.js +1 -0
  143. package/dashboard/out/_next/static/chunks/716ec29c268c38f6.js +1 -0
  144. package/dashboard/out/_next/static/chunks/717b399dfcf7c02c.js +1 -0
  145. package/dashboard/out/_next/static/chunks/72badd90e1c91348.js +1 -0
  146. package/dashboard/out/_next/static/chunks/72f9296dbb7ae3c4.js +1 -0
  147. package/dashboard/out/_next/static/chunks/73aa31e1144d8191.js +1 -0
  148. package/dashboard/out/_next/static/chunks/73f98ded8fe2e879.js +1 -0
  149. package/dashboard/out/_next/static/chunks/740a2e8ace15e13b.js +1 -0
  150. package/dashboard/out/_next/static/chunks/74e57c16e7304b6b.js +1 -0
  151. package/dashboard/out/_next/static/chunks/7628dead4d113df2.js +1 -0
  152. package/dashboard/out/_next/static/chunks/7717c88c07ed96e6.js +1 -0
  153. package/dashboard/out/_next/static/chunks/775581f7956d9a27.js +1 -0
  154. package/dashboard/out/_next/static/chunks/77d3b6661befdb98.js +1 -0
  155. package/dashboard/out/_next/static/chunks/78435c0e1c77fea7.js +1 -0
  156. package/dashboard/out/_next/static/chunks/791336748b9c9393.js +1 -0
  157. package/dashboard/out/_next/static/chunks/79ea68dfae65ef2f.js +1 -0
  158. package/dashboard/out/_next/static/chunks/7bae777a472eb13c.js +1 -0
  159. package/dashboard/out/_next/static/chunks/7fd847f47237a35c.js +1 -0
  160. package/dashboard/out/_next/static/chunks/804d718be0370058.css +1 -0
  161. package/dashboard/out/_next/static/chunks/807cb3c1923995ab.js +1 -0
  162. package/dashboard/out/_next/static/chunks/8286b39407d94447.js +1 -0
  163. package/dashboard/out/_next/static/chunks/84e4305b8dc830ed.js +1 -0
  164. package/dashboard/out/_next/static/chunks/850f99dbfabb53e0.js +1 -0
  165. package/dashboard/out/_next/static/chunks/85594127e66b6b7f.js +1 -0
  166. package/dashboard/out/_next/static/chunks/858c11169c183c9c.js +1 -0
  167. package/dashboard/out/_next/static/chunks/85e27005dfe4c3e3.js +1 -0
  168. package/dashboard/out/_next/static/chunks/8707bd3d8ddc1f1c.js +1 -0
  169. package/dashboard/out/_next/static/chunks/8851e5d7ef894973.js +1 -0
  170. package/dashboard/out/_next/static/chunks/88ba3782cc614989.js +1 -0
  171. package/dashboard/out/_next/static/chunks/8a0c9a181784c2ef.js +1 -0
  172. package/dashboard/out/_next/static/chunks/8ad01ae355a6e7f6.js +1 -0
  173. package/dashboard/out/_next/static/chunks/8d2ed93b0d0a4b4f.js +1 -0
  174. package/dashboard/out/_next/static/chunks/8dc352ebd5310d3c.js +1 -0
  175. package/dashboard/out/_next/static/chunks/8dd1d722c8c1a22c.js +1 -0
  176. package/dashboard/out/_next/static/chunks/8e60fe307e3e4986.js +1 -0
  177. package/dashboard/out/_next/static/chunks/8eea4dd71e25f32a.js +1 -0
  178. package/dashboard/out/_next/static/chunks/8f468a65bac34eaa.js +1 -0
  179. package/dashboard/out/_next/static/chunks/9057e5382d6a5059.js +1 -0
  180. package/dashboard/out/_next/static/chunks/931d056437805ecb.js +1 -0
  181. package/dashboard/out/_next/static/chunks/954eb11648dd8cff.js +1 -0
  182. package/dashboard/out/_next/static/chunks/955034d876d14bb3.js +1 -0
  183. package/dashboard/out/_next/static/chunks/966c4895773249f6.js +1 -0
  184. package/dashboard/out/_next/static/chunks/96aff410a6ab106c.js +1 -0
  185. package/dashboard/out/_next/static/chunks/99b396c821c1dd2d.js +1 -0
  186. package/dashboard/out/_next/static/chunks/9a255fd2cf4922ae.js +1 -0
  187. package/dashboard/out/_next/static/chunks/9b1f6aa73bc864b2.js +1 -0
  188. package/dashboard/out/_next/static/chunks/9b9ce582c533aa79.js +1 -0
  189. package/dashboard/out/_next/static/chunks/9c19bd3c773c6611.js +1 -0
  190. package/dashboard/out/_next/static/chunks/9ceeaa847eb15ca2.js +1 -0
  191. package/dashboard/out/_next/static/chunks/9d2e6e7b8b65f845.js +1 -0
  192. package/dashboard/out/_next/static/chunks/9de23802066128ff.js +1 -0
  193. package/dashboard/out/_next/static/chunks/9e327f94b3701170.js +1 -0
  194. package/dashboard/out/_next/static/chunks/9e7818421c2d455a.js +1 -0
  195. package/dashboard/out/_next/static/chunks/9e935acbcf2fb519.js +1 -0
  196. package/dashboard/out/_next/static/chunks/9ed9f68340343b51.js +1 -0
  197. package/dashboard/out/_next/static/chunks/9f94a0242455fc20.js +1 -0
  198. package/dashboard/out/_next/static/chunks/9fff46b5aaecf47e.js +1 -0
  199. package/dashboard/out/_next/static/chunks/a06d267a5c557657.js +1 -0
  200. package/dashboard/out/_next/static/chunks/a0eb8c81c54722fe.js +1 -0
  201. package/dashboard/out/_next/static/chunks/a16808e83106427d.js +1 -0
  202. package/dashboard/out/_next/static/chunks/a2215e2bc72739ef.js +1 -0
  203. package/dashboard/out/_next/static/chunks/a2de9e6696eb9c17.js +1 -0
  204. package/dashboard/out/_next/static/chunks/a33420b8c14090d6.js +1 -0
  205. package/dashboard/out/_next/static/chunks/a360bffef39d818b.js +1 -0
  206. package/dashboard/out/_next/static/chunks/a42852fdf5287cf5.js +1 -0
  207. package/dashboard/out/_next/static/chunks/a4efc88488322b67.js +1 -0
  208. package/dashboard/out/_next/static/chunks/a696a91d14101bdb.js +1 -0
  209. package/dashboard/out/_next/static/chunks/a6dad97d9634a72d.js +1 -0
  210. package/dashboard/out/_next/static/chunks/a6dad97d9634a72d.js.map +1 -0
  211. package/dashboard/out/_next/static/chunks/a705c7261712bd8e.js +1 -0
  212. package/dashboard/out/_next/static/chunks/a7d1e4b067ace180.js +1 -0
  213. package/dashboard/out/_next/static/chunks/a8590c121a7efaa5.js +1 -0
  214. package/dashboard/out/_next/static/chunks/a95953a83a6df6cf.js +1 -0
  215. package/dashboard/out/_next/static/chunks/a9d0a757d3b4afed.js +1 -0
  216. package/dashboard/out/_next/static/chunks/a9dc35514619c872.js +1 -0
  217. package/dashboard/out/_next/static/chunks/ab1821552066a74d.js +1 -0
  218. package/dashboard/out/_next/static/chunks/ac96bc0eccebe15a.js +1 -0
  219. package/dashboard/out/_next/static/chunks/acc03cfaaf6bb30f.js +1 -0
  220. package/dashboard/out/_next/static/chunks/acc298ae059b9fe4.js +1 -0
  221. package/dashboard/out/_next/static/chunks/ad076b6e996d250c.js +1 -0
  222. package/dashboard/out/_next/static/chunks/ae53b64af7ba16d5.js +1 -0
  223. package/dashboard/out/_next/static/chunks/ae5da7fa4bc5fa95.js +1 -0
  224. package/dashboard/out/_next/static/chunks/aefcf0eb033a155e.js +1 -0
  225. package/dashboard/out/_next/static/chunks/b12d43100ee10526.js +1 -0
  226. package/dashboard/out/_next/static/chunks/b137952dd5566a41.js +1 -0
  227. package/dashboard/out/_next/static/chunks/b2832d8a2d332a47.js +1 -0
  228. package/dashboard/out/_next/static/chunks/b417aa09c15f63c6.js +1 -0
  229. package/dashboard/out/_next/static/chunks/b48e152ba7bf6caf.js +1 -0
  230. package/dashboard/out/_next/static/chunks/b4cbef8e4714bf92.js +1 -0
  231. package/dashboard/out/_next/static/chunks/b568ff8383a37f53.js +1 -0
  232. package/dashboard/out/_next/static/chunks/b6e1495dd89a39e3.js +1 -0
  233. package/dashboard/out/_next/static/chunks/b73a21bd67528440.js +1 -0
  234. package/dashboard/out/_next/static/chunks/b77ee62bc71dcec7.js +1 -0
  235. package/dashboard/out/_next/static/chunks/b7f454615c11d4eb.js +1 -0
  236. package/dashboard/out/_next/static/chunks/b818ea32a839590f.js +1 -0
  237. package/dashboard/out/_next/static/chunks/b901ce78c1c65d66.js +1 -0
  238. package/dashboard/out/_next/static/chunks/b93d647b803be9fa.js +1 -0
  239. package/dashboard/out/_next/static/chunks/b960b09ff1ecd6bb.js +1 -0
  240. package/dashboard/out/_next/static/chunks/ba717c7779a778fc.js +1 -0
  241. package/dashboard/out/_next/static/chunks/bacb0ae7458d18b6.js +1 -0
  242. package/dashboard/out/_next/static/chunks/bb51f68b27346852.js +1 -0
  243. package/dashboard/out/_next/static/chunks/bb67f22e1ab632ae.js +1 -0
  244. package/dashboard/out/_next/static/chunks/bbae97ec58d1bb9d.js +1 -0
  245. package/dashboard/out/_next/static/chunks/bbaf38ee90307765.js +1 -0
  246. package/dashboard/out/_next/static/chunks/be01598fe1fce5db.js +1 -0
  247. package/dashboard/out/_next/static/chunks/bf4cbbc095987fec.js +1 -0
  248. package/dashboard/out/_next/static/chunks/c18f823797d57446.js +1 -0
  249. package/dashboard/out/_next/static/chunks/c1bcece34ec5b295.js +1 -0
  250. package/dashboard/out/_next/static/chunks/c1ccbc3a51adaf0a.js +1 -0
  251. package/dashboard/out/_next/static/chunks/c1f54a628f27791c.js +1 -0
  252. package/dashboard/out/_next/static/chunks/c21916bf5d232151.js +1 -0
  253. package/dashboard/out/_next/static/chunks/c27e570f0fc2f78b.js +1 -0
  254. package/dashboard/out/_next/static/chunks/c322b8005eebc0d8.js +1 -0
  255. package/dashboard/out/_next/static/chunks/c3900ac2b009b764.js +1 -0
  256. package/dashboard/out/_next/static/chunks/c3c597c8eb77ad6b.js +1 -0
  257. package/dashboard/out/_next/static/chunks/c58d45c1d88e208c.js +1 -0
  258. package/dashboard/out/_next/static/chunks/c63875998d7a655f.js +1 -0
  259. package/dashboard/out/_next/static/chunks/c6eaa7c8e7209c8e.js +1 -0
  260. package/dashboard/out/_next/static/chunks/c6f820f71162a59a.js +1 -0
  261. package/dashboard/out/_next/static/chunks/c7ce0941d1dfe7ed.js +1 -0
  262. package/dashboard/out/_next/static/chunks/c877259f784ec8e5.js +1 -0
  263. package/dashboard/out/_next/static/chunks/cb8057e86aaa1c68.js +1 -0
  264. package/dashboard/out/_next/static/chunks/ccb4e306ee4859b1.js +1 -0
  265. package/dashboard/out/_next/static/chunks/ccde62b0fa8112eb.js +1 -0
  266. package/dashboard/out/_next/static/chunks/cd421f0971c63c31.js +1 -0
  267. package/dashboard/out/_next/static/chunks/cde0317494d4adb7.js +1 -0
  268. package/dashboard/out/_next/static/chunks/cfae64434b92b8b6.js +1 -0
  269. package/dashboard/out/_next/static/chunks/cfc0e19310ec0a36.js +1 -0
  270. package/dashboard/out/_next/static/chunks/d0f344c7d0bcb59a.js +1 -0
  271. package/dashboard/out/_next/static/chunks/d1871c73e74e1f50.js +1 -0
  272. package/dashboard/out/_next/static/chunks/d18f658850711061.js +1 -0
  273. package/dashboard/out/_next/static/chunks/d25d9c48880697f6.js +1 -0
  274. package/dashboard/out/_next/static/chunks/d3f0a72bbc3060b0.js +1 -0
  275. package/dashboard/out/_next/static/chunks/d5fca429bc89060b.js +1 -0
  276. package/dashboard/out/_next/static/chunks/d6a6c75c9a4bef49.js +1 -0
  277. package/dashboard/out/_next/static/chunks/d6a8f93aa8f1e345.js +1 -0
  278. package/dashboard/out/_next/static/chunks/d7deab676b19ba0e.js +1 -0
  279. package/dashboard/out/_next/static/chunks/d80030dde88cec85.js +1 -0
  280. package/dashboard/out/_next/static/chunks/da84f9774c076ff1.js +1 -0
  281. package/dashboard/out/_next/static/chunks/da98ecc6b9b0ceb2.js +1 -0
  282. package/dashboard/out/_next/static/chunks/db550aabce60b912.js +4 -0
  283. package/dashboard/out/_next/static/chunks/dc87f77fcc029482.js +1 -0
  284. package/dashboard/out/_next/static/chunks/dd05f30acdb63a53.js +1 -0
  285. package/dashboard/out/_next/static/chunks/dea150155499b903.js +1 -0
  286. package/dashboard/out/_next/static/chunks/df4358754ff1d5e8.js +1 -0
  287. package/dashboard/out/_next/static/chunks/df8b21ff12d23b0e.js +1 -0
  288. package/dashboard/out/_next/static/chunks/df8fc68d77debf2c.js +1 -0
  289. package/dashboard/out/_next/static/chunks/df9ed1ffec90589f.js +1 -0
  290. package/dashboard/out/_next/static/chunks/dfa65ece1598f934.js +1 -0
  291. package/dashboard/out/_next/static/chunks/dfaab5cdd41a20d9.js +1 -0
  292. package/dashboard/out/_next/static/chunks/e00c03c942b5ae3e.js +1 -0
  293. package/dashboard/out/_next/static/chunks/e02d27cf679bece1.js +1 -0
  294. package/dashboard/out/_next/static/chunks/e0b747585f78513a.js +1 -0
  295. package/dashboard/out/_next/static/chunks/e19b71ca23fd7df0.js +1 -0
  296. package/dashboard/out/_next/static/chunks/e21cbe89d0cda120.js +1 -0
  297. package/dashboard/out/_next/static/chunks/e2a0386930edd34f.js +1 -0
  298. package/dashboard/out/_next/static/chunks/e375de19a36e2f38.js +1 -0
  299. package/dashboard/out/_next/static/chunks/e5241b4a6496a9e0.js +1 -0
  300. package/dashboard/out/_next/static/chunks/e569dd07c96eb4dd.js +1 -0
  301. package/dashboard/out/_next/static/chunks/e61c3ea91233f948.js +1 -0
  302. package/dashboard/out/_next/static/chunks/e73b42c5d34c4c28.js +1 -0
  303. package/dashboard/out/_next/static/chunks/e7c5b2105f651e87.js +1 -0
  304. package/dashboard/out/_next/static/chunks/e878e58a69bb01b6.js +1 -0
  305. package/dashboard/out/_next/static/chunks/e8f090a4dc571062.js +1 -0
  306. package/dashboard/out/_next/static/chunks/e98dc34dac91cdad.js +1 -0
  307. package/dashboard/out/_next/static/chunks/ea67cf7a0c5e7233.js +1 -0
  308. package/dashboard/out/_next/static/chunks/eacc98a1e3512fa9.js +1 -0
  309. package/dashboard/out/_next/static/chunks/eae9cd74d9bbed8b.js +1 -0
  310. package/dashboard/out/_next/static/chunks/eb187fd345852b34.js +1 -0
  311. package/dashboard/out/_next/static/chunks/ecea46df7a40b427.js +1 -0
  312. package/dashboard/out/_next/static/chunks/ecf48b83f4245d9c.js +1 -0
  313. package/dashboard/out/_next/static/chunks/eda41732bf966c6d.js +1 -0
  314. package/dashboard/out/_next/static/chunks/ee174a433049f43a.js +1 -0
  315. package/dashboard/out/_next/static/chunks/ee66b2d3b76de72e.js +1 -0
  316. package/dashboard/out/_next/static/chunks/ef058d3041c3d8ab.js +1 -0
  317. package/dashboard/out/_next/static/chunks/f3544b800b0d4969.js +1 -0
  318. package/dashboard/out/_next/static/chunks/f3b280e604b97509.js +1 -0
  319. package/dashboard/out/_next/static/chunks/f42e1d3693232993.js +1 -0
  320. package/dashboard/out/_next/static/chunks/f5a5fdd80166d304.js +1 -0
  321. package/dashboard/out/_next/static/chunks/f60adc5dd6169316.js +1 -0
  322. package/dashboard/out/_next/static/chunks/f6255bc2e6c68ce8.js +1 -0
  323. package/dashboard/out/_next/static/chunks/f6bb677d2d8840db.js +1 -0
  324. package/dashboard/out/_next/static/chunks/f6f3bf016239c33a.js +1 -0
  325. package/dashboard/out/_next/static/chunks/f6f57a46cd074bfe.js +1 -0
  326. package/dashboard/out/_next/static/chunks/f7feb9c1199e8cf6.js +1 -0
  327. package/dashboard/out/_next/static/chunks/f831087bf964cc3d.js +1 -0
  328. package/dashboard/out/_next/static/chunks/fa5a2f7244935aa2.js +1 -0
  329. package/dashboard/out/_next/static/chunks/fa73f36df4c38fa0.js +1 -0
  330. package/dashboard/out/_next/static/chunks/faa1461722d6a88d.js +1 -0
  331. package/dashboard/out/_next/static/chunks/fbf706b9a0edb7e6.js +1 -0
  332. package/dashboard/out/_next/static/chunks/fc2b8c8b7446bbc2.js +1 -0
  333. package/dashboard/out/_next/static/chunks/fd516f3930c128c1.js +1 -0
  334. package/dashboard/out/_next/static/chunks/fd663e7ff8de4887.js +1 -0
  335. package/dashboard/out/_next/static/chunks/fe5b656cc9bdd60e.js +1 -0
  336. package/dashboard/out/_next/static/chunks/turbopack-2f5dec4a537c0ee7.js +4 -0
  337. package/dashboard/out/_next/static/media/02263ebadd758ea4-s.8da66e7f.woff2 +0 -0
  338. package/dashboard/out/_next/static/media/2fe89d53234c61d4-s.cb53f04b.woff2 +0 -0
  339. package/dashboard/out/_next/static/media/59b15b4bcd7b1eb5-s.afa48be3.woff2 +0 -0
  340. package/dashboard/out/_next/static/media/5e05ae5b48faa55e-s.6b5ea6af.woff2 +0 -0
  341. package/dashboard/out/_next/static/media/68757d6cddeff913-s.e6cd1753.woff2 +0 -0
  342. package/dashboard/out/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2 +0 -0
  343. package/dashboard/out/_next/static/media/a7afbb44bec2bb18-s.1dcddae6.woff2 +0 -0
  344. package/dashboard/out/_next/static/media/e390973e931a41c5-s.a82ecf4e.woff2 +0 -0
  345. package/dashboard/out/_next/static/media/e532fa1b9921e1cd-s.764b43eb.woff2 +0 -0
  346. package/dashboard/out/_next/static/media/effe91970fc4db64-s.p.19510058.woff2 +0 -0
  347. package/dashboard/out/_not-found/__next._full.txt +15 -0
  348. package/dashboard/out/_not-found/__next._head.txt +5 -0
  349. package/dashboard/out/_not-found/__next._index.txt +7 -0
  350. package/dashboard/out/_not-found/__next._not-found.__PAGE__.txt +5 -0
  351. package/dashboard/out/_not-found/__next._not-found.txt +4 -0
  352. package/dashboard/out/_not-found/__next._tree.txt +2 -0
  353. package/dashboard/out/_not-found/index.html +1 -0
  354. package/dashboard/out/_not-found/index.txt +15 -0
  355. package/dashboard/out/index.html +1 -0
  356. package/dashboard/out/index.txt +21 -0
  357. package/dashboard/out/project/__fallback/__next._full.txt +19 -0
  358. package/dashboard/out/project/__fallback/__next._head.txt +5 -0
  359. package/dashboard/out/project/__fallback/__next._index.txt +7 -0
  360. package/dashboard/out/project/__fallback/__next._tree.txt +5 -0
  361. package/dashboard/out/project/__fallback/__next.project.$d$name.__PAGE__.txt +7 -0
  362. package/dashboard/out/project/__fallback/__next.project.$d$name.txt +4 -0
  363. package/dashboard/out/project/__fallback/__next.project.txt +4 -0
  364. package/dashboard/out/project/__fallback/index.html +1 -0
  365. package/dashboard/out/project/__fallback/index.txt +19 -0
  366. package/package.json +5 -2
  367. package/src/command-center/server.test.ts +3 -7
  368. package/src/command-center/server.ts +4 -9
  369. package/src/command-center/static.test.ts +105 -0
  370. package/src/command-center/static.ts +122 -0
  371. package/src/launch.test.ts +1 -74
  372. package/src/launch.ts +49 -68
  373. package/src/lib/daemon.ts +23 -1
  374. package/src/lib/orchestrator.ts +9 -11
  375. package/src/stop.test.ts +1 -26
  376. package/src/stop.ts +1 -20
  377. package/src/widgets/lib/pane-comms.ts +15 -0
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><!--WTHSCKfFb30xXXhXuq66f--><html lang="en" class="ibm_plex_mono_3af83e03-module__xSMCQa__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/effe91970fc4db64-s.p.19510058.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/4a46ad186a8587ee.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/b417aa09c15f63c6.js"/><script src="/_next/static/chunks/4b965aa320a9b358.js" async=""></script><script src="/_next/static/chunks/3e6d4834e0752f76.js" async=""></script><script src="/_next/static/chunks/96aff410a6ab106c.js" async=""></script><script src="/_next/static/chunks/db550aabce60b912.js" async=""></script><script src="/_next/static/chunks/turbopack-2f5dec4a537c0ee7.js" async=""></script><script src="/_next/static/chunks/d6a6c75c9a4bef49.js" async=""></script><script src="/_next/static/chunks/c322b8005eebc0d8.js" async=""></script><script src="/_next/static/chunks/5e49b008432770f1.js" async=""></script><script src="/_next/static/chunks/c6f820f71162a59a.js" async=""></script><meta name="next-size-adjust" content=""/><title>tmux-ide</title><meta name="description" content="Command center for tmux-ide"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]" style="font-family:var(--font-mono), ui-monospace, monospace"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("data-theme","theme","dark",null,["light","dark"],null,true,true)</script><div class="h-6 flex items-center px-3 bg-[var(--bg-weak)] border-b text-[11px] sticky top-0 z-30"><span class="text-[var(--accent)] font-medium">tmux-ide</span><span class="flex-1"></span><span class="w-4"></span><span class="text-[var(--dim)] ml-3"></span></div><div class="h-screen flex flex-col"><div class="flex items-center justify-between px-4 h-7 bg-[var(--surface)] border-b border-[var(--border)] shrink-0"><span class="text-[var(--accent)]">tmux-ide command center</span><div class="flex items-center gap-2"><span class="inline-block w-[6px] h-[6px] bg-[var(--green)]"></span><span class="text-[var(--dim)]">0 sessions</span></div></div><div class="flex-1 overflow-auto"><div class="px-4 py-8 text-[var(--dim)]">no tmux-ide sessions running</div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/b417aa09c15f63c6.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[77198,[\"/_next/static/chunks/d6a6c75c9a4bef49.js\"],\"Providers\"]\n3:I[49429,[\"/_next/static/chunks/d6a6c75c9a4bef49.js\"],\"TopBar\"]\n4:I[76277,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"default\"]\n5:I[92511,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"default\"]\n6:I[94575,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"ClientPageRoot\"]\n7:I[77851,[\"/_next/static/chunks/d6a6c75c9a4bef49.js\",\"/_next/static/chunks/c6f820f71162a59a.js\"],\"default\"]\na:I[13013,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"OutletBoundary\"]\nb:\"$Sreact.suspense\"\nd:I[13013,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"ViewportBoundary\"]\nf:I[13013,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"MetadataBoundary\"]\n11:I[38848,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"default\"]\n:HL[\"/_next/static/chunks/4a46ad186a8587ee.css\",\"style\"]\n:HL[\"/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/effe91970fc4db64-s.p.19510058.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"WTHSCKfFb30xXXhXuq66f\",\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/4a46ad186a8587ee.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/d6a6c75c9a4bef49.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"ibm_plex_mono_3af83e03-module__xSMCQa__variable\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]\",\"style\":{\"fontFamily\":\"var(--font-mono), ui-monospace, monospace\"},\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",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\":[[\"$\",\"$L6\",null,{\"Component\":\"$7\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@8\",\"$@9\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/c6f820f71162a59a.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$La\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@c\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:{}\n9:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\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,"c:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"tmux-ide\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Command center for tmux-ide\"}]]\n"])</script></body></html>
@@ -0,0 +1,21 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[77198,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"Providers"]
3
+ 3:I[49429,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"TopBar"]
4
+ 4:I[76277,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
5
+ 5:I[92511,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
6
+ 6:I[94575,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"ClientPageRoot"]
7
+ 7:I[77851,["/_next/static/chunks/d6a6c75c9a4bef49.js","/_next/static/chunks/c6f820f71162a59a.js"],"default"]
8
+ a:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"OutletBoundary"]
9
+ b:"$Sreact.suspense"
10
+ d:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"ViewportBoundary"]
11
+ f:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"MetadataBoundary"]
12
+ 11:I[38848,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
13
+ :HL["/_next/static/chunks/4a46ad186a8587ee.css","style"]
14
+ :HL["/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
+ :HL["/_next/static/media/effe91970fc4db64-s.p.19510058.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
+ 0:{"P":null,"b":"WTHSCKfFb30xXXhXuq66f","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/4a46ad186a8587ee.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/d6a6c75c9a4bef49.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"ibm_plex_mono_3af83e03-module__xSMCQa__variable","suppressHydrationWarning":true,"children":["$","body",null,{"className":"min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]","style":{"fontFamily":"var(--font-mono), ui-monospace, monospace"},"children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",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":[["$","$L6",null,{"Component":"$7","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@8","$@9"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/c6f820f71162a59a.js","async":true,"nonce":"$undefined"}]],["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$b",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[]],"S":true}
17
+ 8:{}
18
+ 9:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
19
+ e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
20
+ c:null
21
+ 10:[["$","title","0",{"children":"tmux-ide"}],["$","meta","1",{"name":"description","content":"Command center for tmux-ide"}]]
@@ -0,0 +1,19 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[77198,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"Providers"]
3
+ 3:I[49429,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"TopBar"]
4
+ 4:I[76277,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
5
+ 5:I[92511,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
6
+ 6:I[36508,["/_next/static/chunks/d6a6c75c9a4bef49.js","/_next/static/chunks/bbaf38ee90307765.js","/_next/static/chunks/6cb5c58418022991.js"],"default",1]
7
+ 7:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"OutletBoundary"]
8
+ 8:"$Sreact.suspense"
9
+ a:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"ViewportBoundary"]
10
+ c:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"MetadataBoundary"]
11
+ e:I[38848,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
12
+ :HL["/_next/static/chunks/4a46ad186a8587ee.css","style"]
13
+ :HL["/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
+ :HL["/_next/static/media/effe91970fc4db64-s.p.19510058.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
+ :HL["/_next/static/chunks/804d718be0370058.css","style"]
16
+ 0:{"P":null,"b":"WTHSCKfFb30xXXhXuq66f","c":["","project","__fallback",""],"q":"","i":false,"f":[[["",{"children":["project",{"children":[["name","__fallback","d"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/4a46ad186a8587ee.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/d6a6c75c9a4bef49.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"ibm_plex_mono_3af83e03-module__xSMCQa__variable","suppressHydrationWarning":true,"children":["$","body",null,{"className":"min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]","style":{"fontFamily":"var(--font-mono), ui-monospace, monospace"},"children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",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,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L6",null,{}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/804d718be0370058.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/bbaf38ee90307765.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/6cb5c58418022991.js","async":true,"nonce":"$undefined"}]],["$","$L7",null,{"children":["$","$8",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$8",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true}
17
+ b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
18
+ 9:null
19
+ d:[["$","title","0",{"children":"tmux-ide"}],["$","meta","1",{"name":"description","content":"Command center for tmux-ide"}]]
@@ -0,0 +1,5 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"ViewportBoundary"]
3
+ 3:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"MetadataBoundary"]
4
+ 4:"$Sreact.suspense"
5
+ 0:{"buildId":"WTHSCKfFb30xXXhXuq66f","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"tmux-ide"}],["$","meta","1",{"name":"description","content":"Command center for tmux-ide"}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
@@ -0,0 +1,7 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[77198,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"Providers"]
3
+ 3:I[49429,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"TopBar"]
4
+ 4:I[76277,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
5
+ 5:I[92511,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
6
+ :HL["/_next/static/chunks/4a46ad186a8587ee.css","style"]
7
+ 0:{"buildId":"WTHSCKfFb30xXXhXuq66f","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/4a46ad186a8587ee.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/d6a6c75c9a4bef49.js","async":true}]],["$","html",null,{"lang":"en","className":"ibm_plex_mono_3af83e03-module__xSMCQa__variable","suppressHydrationWarning":true,"children":["$","body",null,{"className":"min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]","style":{"fontFamily":"var(--font-mono), ui-monospace, monospace"},"children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}],"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."}]}]]}]}]],[]]}]]}]}]}]]}],"loading":null,"isPartial":false}
@@ -0,0 +1,5 @@
1
+ :HL["/_next/static/chunks/4a46ad186a8587ee.css","style"]
2
+ :HL["/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
+ :HL["/_next/static/media/effe91970fc4db64-s.p.19510058.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
4
+ :HL["/_next/static/chunks/804d718be0370058.css","style"]
5
+ 0:{"buildId":"WTHSCKfFb30xXXhXuq66f","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"project","paramType":null,"paramKey":"project","hasRuntimePrefetch":false,"slots":{"children":{"name":"name","paramType":"d","paramKey":"__fallback","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
@@ -0,0 +1,7 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[36508,["/_next/static/chunks/d6a6c75c9a4bef49.js","/_next/static/chunks/bbaf38ee90307765.js","/_next/static/chunks/6cb5c58418022991.js"],"default",1]
3
+ 3:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"OutletBoundary"]
4
+ 4:"$Sreact.suspense"
5
+ :HL["/_next/static/chunks/804d718be0370058.css","style"]
6
+ 0:{"buildId":"WTHSCKfFb30xXXhXuq66f","rsc":["$","$1","c",{"children":[["$","$L2",null,{}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/804d718be0370058.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/bbaf38ee90307765.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/6cb5c58418022991.js","async":true}]],["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"loading":null,"isPartial":false}
7
+ 5:null
@@ -0,0 +1,4 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[76277,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
3
+ 3:I[92511,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
4
+ 0:{"buildId":"WTHSCKfFb30xXXhXuq66f","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
@@ -0,0 +1,4 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[76277,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
3
+ 3:I[92511,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
4
+ 0:{"buildId":"WTHSCKfFb30xXXhXuq66f","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><!--WTHSCKfFb30xXXhXuq66f--><html lang="en" class="ibm_plex_mono_3af83e03-module__xSMCQa__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/effe91970fc4db64-s.p.19510058.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/4a46ad186a8587ee.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/804d718be0370058.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/b417aa09c15f63c6.js"/><script src="/_next/static/chunks/4b965aa320a9b358.js" async=""></script><script src="/_next/static/chunks/3e6d4834e0752f76.js" async=""></script><script src="/_next/static/chunks/96aff410a6ab106c.js" async=""></script><script src="/_next/static/chunks/db550aabce60b912.js" async=""></script><script src="/_next/static/chunks/turbopack-2f5dec4a537c0ee7.js" async=""></script><script src="/_next/static/chunks/d6a6c75c9a4bef49.js" async=""></script><script src="/_next/static/chunks/c322b8005eebc0d8.js" async=""></script><script src="/_next/static/chunks/5e49b008432770f1.js" async=""></script><script src="/_next/static/chunks/bbaf38ee90307765.js" async=""></script><script src="/_next/static/chunks/6cb5c58418022991.js" async=""></script><meta name="next-size-adjust" content=""/><title>tmux-ide</title><meta name="description" content="Command center for tmux-ide"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]" style="font-family:var(--font-mono), ui-monospace, monospace"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("data-theme","theme","dark",null,["light","dark"],null,true,true)</script><div class="h-6 flex items-center px-3 bg-[var(--bg-weak)] border-b text-[11px] sticky top-0 z-30"><span class="text-[var(--accent)] font-medium">tmux-ide</span><span class="flex-1"></span><span class="w-4"></span><span class="text-[var(--dim)] ml-3"></span></div><div class="h-screen flex items-center justify-center text-[var(--dim)]">loading...</div><!--$--><!--/$--><script src="/_next/static/chunks/b417aa09c15f63c6.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[77198,[\"/_next/static/chunks/d6a6c75c9a4bef49.js\"],\"Providers\"]\n3:I[49429,[\"/_next/static/chunks/d6a6c75c9a4bef49.js\"],\"TopBar\"]\n4:I[76277,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"default\"]\n5:I[92511,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"default\"]\n6:I[36508,[\"/_next/static/chunks/d6a6c75c9a4bef49.js\",\"/_next/static/chunks/bbaf38ee90307765.js\",\"/_next/static/chunks/6cb5c58418022991.js\"],\"default\",1]\n7:I[13013,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[13013,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"ViewportBoundary\"]\nc:I[13013,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"MetadataBoundary\"]\ne:I[38848,[\"/_next/static/chunks/c322b8005eebc0d8.js\",\"/_next/static/chunks/5e49b008432770f1.js\"],\"default\"]\n:HL[\"/_next/static/chunks/4a46ad186a8587ee.css\",\"style\"]\n:HL[\"/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/effe91970fc4db64-s.p.19510058.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/chunks/804d718be0370058.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"WTHSCKfFb30xXXhXuq66f\",\"c\":[\"\",\"project\",\"__fallback\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"project\",{\"children\":[[\"name\",\"__fallback\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/4a46ad186a8587ee.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/d6a6c75c9a4bef49.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"ibm_plex_mono_3af83e03-module__xSMCQa__variable\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]\",\"style\":{\"fontFamily\":\"var(--font-mono), ui-monospace, monospace\"},\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",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,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L6\",null,{}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/804d718be0370058.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/bbaf38ee90307765.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/6cb5c58418022991.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"9:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"tmux-ide\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Command center for tmux-ide\"}]]\n"])</script></body></html>
@@ -0,0 +1,19 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[77198,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"Providers"]
3
+ 3:I[49429,["/_next/static/chunks/d6a6c75c9a4bef49.js"],"TopBar"]
4
+ 4:I[76277,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
5
+ 5:I[92511,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
6
+ 6:I[36508,["/_next/static/chunks/d6a6c75c9a4bef49.js","/_next/static/chunks/bbaf38ee90307765.js","/_next/static/chunks/6cb5c58418022991.js"],"default",1]
7
+ 7:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"OutletBoundary"]
8
+ 8:"$Sreact.suspense"
9
+ a:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"ViewportBoundary"]
10
+ c:I[13013,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"MetadataBoundary"]
11
+ e:I[38848,["/_next/static/chunks/c322b8005eebc0d8.js","/_next/static/chunks/5e49b008432770f1.js"],"default"]
12
+ :HL["/_next/static/chunks/4a46ad186a8587ee.css","style"]
13
+ :HL["/_next/static/media/99e609270109b47d-s.p.64b9304e.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
+ :HL["/_next/static/media/effe91970fc4db64-s.p.19510058.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
+ :HL["/_next/static/chunks/804d718be0370058.css","style"]
16
+ 0:{"P":null,"b":"WTHSCKfFb30xXXhXuq66f","c":["","project","__fallback",""],"q":"","i":false,"f":[[["",{"children":["project",{"children":[["name","__fallback","d"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/4a46ad186a8587ee.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/d6a6c75c9a4bef49.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"ibm_plex_mono_3af83e03-module__xSMCQa__variable","suppressHydrationWarning":true,"children":["$","body",null,{"className":"min-h-screen bg-[var(--bg)] text-[var(--fg)] antialiased text-[13px] leading-[1.5]","style":{"fontFamily":"var(--font-mono), ui-monospace, monospace"},"children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",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,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L6",null,{}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/804d718be0370058.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/bbaf38ee90307765.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/6cb5c58418022991.js","async":true,"nonce":"$undefined"}]],["$","$L7",null,{"children":["$","$8",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$8",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true}
17
+ b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
18
+ 9:null
19
+ d:[["$","title","0",{"children":"tmux-ide"}],["$","meta","1",{"name":"description","content":"Command center for tmux-ide"}]]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tmux-ide",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Turn any project into a tmux-powered terminal IDE with a simple ide.yml",
5
5
  "type": "module",
6
6
  "bin": {
@@ -11,10 +11,13 @@
11
11
  "src",
12
12
  "scripts",
13
13
  "skill",
14
- "templates"
14
+ "templates",
15
+ "dashboard/out"
15
16
  ],
16
17
  "scripts": {
17
18
  "build": "tsc --noEmit",
19
+ "build:dashboard": "cd dashboard && npx next build",
20
+ "prepublishOnly": "npm run build:dashboard",
18
21
  "typecheck": "tsc --noEmit",
19
22
  "dev": "bun bin/cli.ts",
20
23
  "test": "bun test",
@@ -490,15 +490,11 @@ describe("GET /api/events (SSE)", () => {
490
490
  });
491
491
 
492
492
  describe("GET /", () => {
493
- it("returns health check with API metadata", async () => {
493
+ it("returns a response for root path", async () => {
494
494
  const app = createApp();
495
495
  const res = await app.request("/");
496
- expect(res.status).toBe(200);
497
-
498
- const body = (await res.json()) as { status: string; message: string; docs: string };
499
- expect(body.status).toBe("ok");
500
- expect(body.message).toBe("tmux-ide command center API");
501
- expect(body.docs).toBe("/api/sessions");
496
+ // With dashboard/out: serves HTML (200). Without: middleware falls through (404).
497
+ expect([200, 404]).toContain(res.status);
502
498
  });
503
499
  });
504
500
 
@@ -79,6 +79,7 @@ import { TunnelManager } from "../lib/tunnels/manager.ts";
79
79
  import { RemoteRegistry } from "../lib/hq/registry.ts";
80
80
  import { RegistrationPayloadSchema } from "../lib/hq/types.ts";
81
81
  import { dispatchResearch, loadResearchState } from "../lib/research.ts";
82
+ import { serveDashboard } from "./static.ts";
82
83
 
83
84
  export interface CreateAppOptions {
84
85
  authService?: AuthService;
@@ -1409,18 +1410,12 @@ export function createApp(options: CreateAppOptions = {}): Hono {
1409
1410
  return c.json({
1410
1411
  ok: true,
1411
1412
  uptime: Math.round(process.uptime()),
1412
- version: "2.0.0",
1413
+ version: "2.1.0",
1413
1414
  });
1414
1415
  });
1415
1416
 
1416
- // Root: API info
1417
- app.get("/", (c) => {
1418
- return c.json({
1419
- status: "ok",
1420
- message: "tmux-ide command center API",
1421
- docs: "/api/sessions",
1422
- });
1423
- });
1417
+ // Serve the Next.js static dashboard for all non-API routes
1418
+ app.use("*", serveDashboard());
1424
1419
 
1425
1420
  return app;
1426
1421
  }
@@ -0,0 +1,105 @@
1
+ import { describe, it, expect } from "bun:test";
2
+ import { existsSync } from "node:fs";
3
+ import { resolve, dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { Hono } from "hono";
6
+ import { serveDashboard } from "./static.ts";
7
+
8
+ const pkgRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../..");
9
+ const outDir = join(pkgRoot, "dashboard", "out");
10
+ const hasDashboardBuild = existsSync(join(outDir, "index.html"));
11
+
12
+ describe("serveDashboard", () => {
13
+ it("serves index.html for root path", async () => {
14
+ if (!hasDashboardBuild) return; // skip in CI where dashboard isn't built
15
+
16
+ const app = new Hono();
17
+ app.get("/api/test", (c) => c.json({ ok: true }));
18
+ app.use("*", serveDashboard());
19
+
20
+ const res = await app.request("/");
21
+ expect(res.status).toBe(200);
22
+ const contentType = res.headers.get("content-type");
23
+ expect(contentType).toContain("text/html");
24
+ });
25
+
26
+ it("does not intercept /api routes", async () => {
27
+ const app = new Hono();
28
+ app.get("/api/test", (c) => c.json({ ok: true }));
29
+ app.use("*", serveDashboard());
30
+
31
+ const res = await app.request("/api/test");
32
+ expect(res.status).toBe(200);
33
+ const body = await res.json();
34
+ expect(body).toEqual({ ok: true });
35
+ });
36
+
37
+ it("does not intercept /health", async () => {
38
+ const app = new Hono();
39
+ app.get("/health", (c) => c.json({ ok: true }));
40
+ app.use("*", serveDashboard());
41
+
42
+ const res = await app.request("/health");
43
+ expect(res.status).toBe(200);
44
+ const body = await res.json();
45
+ expect(body).toEqual({ ok: true });
46
+ });
47
+
48
+ it("serves fallback HTML for /project/any-name/", async () => {
49
+ if (!hasDashboardBuild) return; // skip in CI where dashboard isn't built
50
+
51
+ const app = new Hono();
52
+ app.use("*", serveDashboard());
53
+
54
+ const res = await app.request("/project/my-project/");
55
+ expect(res.status).toBe(200);
56
+ const contentType = res.headers.get("content-type");
57
+ expect(contentType).toContain("text/html");
58
+ });
59
+
60
+ it("sets immutable cache for _next/static assets", async () => {
61
+ if (!hasDashboardBuild) return; // skip in CI where dashboard isn't built
62
+
63
+ const app = new Hono();
64
+ app.use("*", serveDashboard());
65
+
66
+ const { readdirSync } = await import("node:fs");
67
+
68
+ const staticDir = join(outDir, "_next", "static");
69
+ if (!existsSync(staticDir)) return;
70
+
71
+ const findFile = (dir: string): string | null => {
72
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
73
+ if (entry.isFile() && entry.name.endsWith(".js")) {
74
+ return `/_next/static/${dir.slice(staticDir.length + 1)}/${entry.name}`.replace(
75
+ /\/+/g,
76
+ "/",
77
+ );
78
+ }
79
+ if (entry.isDirectory()) {
80
+ const found = findFile(join(dir, entry.name));
81
+ if (found) return found;
82
+ }
83
+ }
84
+ return null;
85
+ };
86
+
87
+ const jsFile = findFile(staticDir);
88
+ if (jsFile) {
89
+ const res = await app.request(jsFile);
90
+ expect(res.status).toBe(200);
91
+ const cacheControl = res.headers.get("cache-control");
92
+ expect(cacheControl).toContain("immutable");
93
+ }
94
+ });
95
+
96
+ it("falls through when dashboard is not built", async () => {
97
+ // Simulate no dashboard by using a middleware that won't find files
98
+ const app = new Hono();
99
+ app.use("*", serveDashboard());
100
+ app.all("*", (c) => c.json({ fallback: true }, 200));
101
+
102
+ const res = await app.request("/nonexistent-path");
103
+ expect(res.status).toBe(200);
104
+ });
105
+ });
@@ -0,0 +1,122 @@
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
+ import { resolve, dirname, join, extname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import type { MiddlewareHandler } from "hono";
5
+
6
+ const MIME_TYPES: Record<string, string> = {
7
+ ".html": "text/html; charset=utf-8",
8
+ ".js": "application/javascript; charset=utf-8",
9
+ ".css": "text/css; charset=utf-8",
10
+ ".json": "application/json; charset=utf-8",
11
+ ".svg": "image/svg+xml",
12
+ ".png": "image/png",
13
+ ".ico": "image/x-icon",
14
+ ".woff2": "font/woff2",
15
+ ".txt": "text/plain; charset=utf-8",
16
+ };
17
+
18
+ /** File read cache: path -> { content, mimeType } */
19
+ const fileCache = new Map<string, { content: Uint8Array; mimeType: string }>();
20
+
21
+ /**
22
+ * Resolve the dashboard `out/` directory.
23
+ * Works both in development (running from source) and after npm install.
24
+ */
25
+ function resolveDashboardOut(): string | null {
26
+ const pkgRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../..");
27
+ const outDir = join(pkgRoot, "dashboard", "out");
28
+ if (existsSync(outDir)) return outDir;
29
+ return null;
30
+ }
31
+
32
+ /**
33
+ * Read a file from the out directory, returning cached result if available.
34
+ */
35
+ function readCached(filePath: string): { content: Uint8Array; mimeType: string } | null {
36
+ const cached = fileCache.get(filePath);
37
+ if (cached) return cached;
38
+
39
+ if (!existsSync(filePath) || !statSync(filePath).isFile()) return null;
40
+
41
+ const ext = extname(filePath);
42
+ const mimeType = MIME_TYPES[ext] ?? "application/octet-stream";
43
+ const content = new Uint8Array(readFileSync(filePath));
44
+ const entry = { content, mimeType };
45
+ fileCache.set(filePath, entry);
46
+ return entry;
47
+ }
48
+
49
+ /**
50
+ * Determine the Cache-Control header for a given URL path.
51
+ */
52
+ function cacheControl(urlPath: string, mimeType: string): string {
53
+ if (urlPath.startsWith("/_next/static/")) {
54
+ return "public, max-age=31536000, immutable";
55
+ }
56
+ if (mimeType.startsWith("text/html")) {
57
+ return "no-cache";
58
+ }
59
+ return "public, max-age=3600";
60
+ }
61
+
62
+ /**
63
+ * Hono middleware that serves the Next.js static export from dashboard/out/.
64
+ * Gracefully no-ops if the out/ directory does not exist.
65
+ */
66
+ export function serveDashboard(): MiddlewareHandler {
67
+ const outDir = resolveDashboardOut();
68
+
69
+ // If no out/ directory, return a no-op middleware
70
+ if (!outDir) {
71
+ return async (_c, next) => {
72
+ await next();
73
+ };
74
+ }
75
+
76
+ return async (c, next) => {
77
+ const path = new URL(c.req.url).pathname;
78
+
79
+ // Skip API, WebSocket, and health routes — let them fall through
80
+ if (path.startsWith("/api/") || path.startsWith("/ws/") || path === "/health") {
81
+ await next();
82
+ return;
83
+ }
84
+
85
+ // Normalize: strip trailing slash (except for root "/")
86
+ const normalized = path !== "/" && path.endsWith("/") ? path.slice(0, -1) : path;
87
+
88
+ const serve = (file: { content: Uint8Array; mimeType: string }): Response =>
89
+ new Response(new Uint8Array(file.content) as Uint8Array<ArrayBuffer>, {
90
+ status: 200,
91
+ headers: {
92
+ "Content-Type": file.mimeType,
93
+ "Cache-Control": cacheControl(path, file.mimeType),
94
+ },
95
+ });
96
+
97
+ // 1. Try exact file match (e.g. /_next/static/chunks/abc.js)
98
+ const exactPath = join(outDir, normalized);
99
+ const exactFile = readCached(exactPath);
100
+ if (exactFile) return serve(exactFile);
101
+
102
+ // 2. Try index.html inside directory (e.g. /foo/ -> out/foo/index.html)
103
+ const indexPath = join(outDir, normalized, "index.html");
104
+ const indexFile = readCached(indexPath);
105
+ if (indexFile) return serve(indexFile);
106
+
107
+ // 3. SPA fallback for /project/* dynamic routes
108
+ if (normalized.startsWith("/project/")) {
109
+ const fallbackPath = join(outDir, "project", "__fallback", "index.html");
110
+ const fallbackFile = readCached(fallbackPath);
111
+ if (fallbackFile) return serve(fallbackFile);
112
+ }
113
+
114
+ // 4. General SPA fallback — serve out/index.html for client-side routing
115
+ const rootIndex = join(outDir, "index.html");
116
+ const rootFile = readCached(rootIndex);
117
+ if (rootFile) return serve(rootFile);
118
+
119
+ // Nothing found; let other handlers take over
120
+ await next();
121
+ };
122
+ }
@@ -2,13 +2,7 @@ import { describe, it, beforeEach, afterEach, expect } from "bun:test";
2
2
  import { mkdtempSync, rmSync, readFileSync, writeFileSync } from "node:fs";
3
3
  import { tmpdir } from "node:os";
4
4
  import { join } from "node:path";
5
- import {
6
- buildPaneMap,
7
- waitForPaneCommand,
8
- ensureTaskDocs,
9
- resolveDashboardDir,
10
- startDashboard,
11
- } from "./launch.ts";
5
+ import { buildPaneMap, waitForPaneCommand, ensureTaskDocs } from "./launch.ts";
12
6
 
13
7
  describe("buildPaneMap", () => {
14
8
  it("uses returned pane ids instead of assuming sequential numbering", () => {
@@ -153,70 +147,3 @@ describe("ensureTaskDocs", () => {
153
147
  expect(first).toBe(second);
154
148
  });
155
149
  });
156
-
157
- describe("dashboard helpers", () => {
158
- it("detects a dashboard directory from the package root", () => {
159
- const root = join(import.meta.dir, "..");
160
- expect(resolveDashboardDir(root)).toBe(join(root, "dashboard"));
161
- });
162
-
163
- it("returns null when the dashboard directory is missing", () => {
164
- expect(resolveDashboardDir("/definitely/missing-root")).toBe(null);
165
- });
166
-
167
- it("starts the dashboard and stores pid and url", () => {
168
- const sessionVars: Array<{ name: string; value: string }> = [];
169
- let spawned: {
170
- command: string;
171
- args: readonly string[];
172
- envValue: string | undefined;
173
- cwd?: string;
174
- } | null = null;
175
-
176
- const url = startDashboard("proj", 6060, {
177
- dashboardPort: 6061,
178
- dashboardDir: "/workspace/dashboard",
179
- spawnFn: (command, args, options) => {
180
- spawned = {
181
- command,
182
- args,
183
- envValue: options.env?.NEXT_PUBLIC_API_URL,
184
- cwd: options.cwd,
185
- };
186
- return { pid: 4321, unref: () => {} };
187
- },
188
- setVar: (_session, name, value) => {
189
- sessionVars.push({ name, value });
190
- },
191
- });
192
-
193
- expect(url).toBe("http://localhost:6061");
194
- expect(spawned).toEqual({
195
- command: "pnpm",
196
- args: ["dev", "--port", "6061"],
197
- envValue: "http://localhost:6060",
198
- cwd: "/workspace/dashboard",
199
- });
200
- expect(sessionVars).toEqual([
201
- { name: "@dashboard_pid", value: "4321" },
202
- { name: "@dashboard_url", value: "http://localhost:6061" },
203
- ]);
204
- });
205
-
206
- it("supports overriding the dashboard port", () => {
207
- let args: readonly string[] | null = null;
208
-
209
- const url = startDashboard("proj", 6060, {
210
- dashboardPort: 7777,
211
- dashboardDir: "/workspace/dashboard",
212
- spawnFn: (_command, spawnArgs) => {
213
- args = spawnArgs;
214
- return { pid: 99, unref: () => {} };
215
- },
216
- setVar: () => {},
217
- });
218
-
219
- expect(url).toBe("http://localhost:7777");
220
- expect(args).toEqual(["dev", "--port", "7777"]);
221
- });
222
- });