@dylanpiercey/work 0.0.137 → 0.0.139

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 (273) hide show
  1. package/README.md +24 -0
  2. package/bin/work.mjs +4 -0
  3. package/dist/{_q2QGXODx.js → _B9jB3eUh.js} +18 -18
  4. package/dist/_BNGMa45b.js +2 -0
  5. package/dist/{_BJg54Xa1.js → _BlEiBDGk.js} +8 -2
  6. package/dist/{_DyqUd25V.js → _Dkhw1NHC.js} +79 -79
  7. package/dist/index.mjs +797 -687
  8. package/dist/public/assets/{_C37o6tKr.js → _-ZAbZMp6.js} +46 -46
  9. package/dist/public/assets/_-ZAbZMp6.js.br +0 -0
  10. package/dist/public/assets/{_D74yUpFR.js → _92PbBTGk.js} +1 -1
  11. package/dist/public/assets/_92PbBTGk.js.br +0 -0
  12. package/dist/public/assets/{_Bxt0CEQr2.js → _B5v9Fbq22.js} +1 -1
  13. package/dist/public/assets/_B5v9Fbq22.js.br +0 -0
  14. package/dist/public/assets/{_Dbs1ola1.js → _B6VbLzOa.js} +1 -1
  15. package/dist/public/assets/_B6VbLzOa.js.br +0 -0
  16. package/dist/public/assets/{_f_jhUV9E2.js → _B8H0uW8P2.js} +1 -1
  17. package/dist/public/assets/_B8H0uW8P2.js.br +0 -0
  18. package/dist/public/assets/{_ClwjGc8M2.js → _BB_Fnyr12.js} +1 -1
  19. package/dist/public/assets/_BB_Fnyr12.js.br +0 -0
  20. package/dist/public/assets/{_CZik1U89.js → _BGNNvIXK.js} +1 -1
  21. package/dist/public/assets/_BGNNvIXK.js.br +0 -0
  22. package/dist/public/assets/{_Ddy1aeKP.js → _BGQP06_w.js} +1 -1
  23. package/dist/public/assets/_BGQP06_w.js.br +0 -0
  24. package/dist/public/assets/{_CDnysN3S.js → _BZb7VTF_.js} +1 -1
  25. package/dist/public/assets/_BZb7VTF_.js.br +0 -0
  26. package/dist/public/assets/{_5Rj2gra4.js → _BaPmPjXa.js} +1 -1
  27. package/dist/public/assets/_BaPmPjXa.js.br +0 -0
  28. package/dist/public/assets/{_B7GZ8Nzq.js → _BeLud53W.js} +1 -1
  29. package/dist/public/assets/_BeLud53W.js.br +0 -0
  30. package/dist/public/assets/_BhN1afwu.js +1 -0
  31. package/dist/public/assets/_BhN1afwu.js.br +0 -0
  32. package/dist/public/assets/_Bhn5BezI.js +1 -0
  33. package/dist/public/assets/_Bhn5BezI.js.br +0 -0
  34. package/dist/public/assets/{_mlus7Zvc.js → _BsJV1REp.js} +1 -1
  35. package/dist/public/assets/_BsJV1REp.js.br +0 -0
  36. package/dist/public/assets/{_BBsyBPY_2.js → _C0q1PWW32.js} +1 -1
  37. package/dist/public/assets/_C0q1PWW32.js.br +0 -0
  38. package/dist/public/assets/{_B2_tmvdP2.js → _C3S9wfaW2.js} +1 -1
  39. package/dist/public/assets/_C3S9wfaW2.js.br +0 -0
  40. package/dist/public/assets/{_BRBoguWB.js → _CEjnOCam.js} +1 -1
  41. package/dist/public/assets/_CEjnOCam.js.br +0 -0
  42. package/dist/public/assets/_CFuHFLFa.js +1 -0
  43. package/dist/public/assets/_CFuHFLFa.js.br +0 -0
  44. package/dist/public/assets/{_CnT3pmYB2.js → _CJFNHs4a2.js} +1 -1
  45. package/dist/public/assets/_CJFNHs4a2.js.br +0 -0
  46. package/dist/public/assets/{_B4svQeA62.js → _CL5pEkPF2.js} +1 -1
  47. package/dist/public/assets/_CVH-iW95.js +1 -0
  48. package/dist/public/assets/_CVH-iW95.js.br +0 -0
  49. package/dist/public/assets/{_BcrQbEVL.js → _Cch7T0VL.js} +1 -1
  50. package/dist/public/assets/_Cch7T0VL.js.br +0 -0
  51. package/dist/public/assets/{_D4SxCtr7.js → _CehEzybz.js} +1 -1
  52. package/dist/public/assets/_CehEzybz.js.br +0 -0
  53. package/dist/public/assets/_ChYdBfr12.js +1 -0
  54. package/dist/public/assets/_ChYdBfr12.js.br +0 -0
  55. package/dist/public/assets/{_D7FM8A3g.js → _CiUgu93c.js} +1 -1
  56. package/dist/public/assets/_CiUgu93c.js.br +0 -0
  57. package/dist/public/assets/{_CXSLJgQu.js → _CmuVbspY.js} +1 -1
  58. package/dist/public/assets/_CmuVbspY.js.br +0 -0
  59. package/dist/public/assets/_CpJVAK8n.js +89 -0
  60. package/dist/public/assets/_CpJVAK8n.js.br +0 -0
  61. package/dist/public/assets/{_CIh-AkC9.js → _CsDtf7Ry.js} +1 -1
  62. package/dist/public/assets/_CsDtf7Ry.js.br +0 -0
  63. package/dist/public/assets/{_wo4arGtx.js → _Ctew4jWT.js} +1 -1
  64. package/dist/public/assets/{_BxoHll4S2.js → _Cu02oWXx2.js} +1 -1
  65. package/dist/public/assets/_CuS5H1zc.js +1 -0
  66. package/dist/public/assets/_CuS5H1zc.js.br +0 -0
  67. package/dist/public/assets/_Cy053Jd0.js +1 -0
  68. package/dist/public/assets/_Cy053Jd0.js.br +0 -0
  69. package/dist/public/assets/_CyoDpMQK.js +1 -0
  70. package/dist/public/assets/_CyoDpMQK.js.br +0 -0
  71. package/dist/public/assets/{_CNX3tzOp.js → _D-bpXh2X.js} +1 -1
  72. package/dist/public/assets/_D-bpXh2X.js.br +0 -0
  73. package/dist/public/assets/_D1VBE8Ni.js +1 -0
  74. package/dist/public/assets/_D1VBE8Ni.js.br +0 -0
  75. package/dist/public/assets/{_zvkt6Dg_.js → _D5pc6mWE.js} +1 -1
  76. package/dist/public/assets/_D5pc6mWE.js.br +0 -0
  77. package/dist/public/assets/_D6jIULmr.js +1 -0
  78. package/dist/public/assets/_D6jIULmr.js.br +0 -0
  79. package/dist/public/assets/{_Dp4WK_Ux2.js → _DCyA_kCN2.js} +1 -1
  80. package/dist/public/assets/_DCyA_kCN2.js.br +0 -0
  81. package/dist/public/assets/_DEwoT19i.js +1 -0
  82. package/dist/public/assets/_DEwoT19i.js.br +0 -0
  83. package/dist/public/assets/_DIh7WZ2F.js +1 -0
  84. package/dist/public/assets/_DIh7WZ2F.js.br +0 -0
  85. package/dist/public/assets/{_CGhMIkoU.js → _DIho-aMJ.js} +1 -1
  86. package/dist/public/assets/_DIho-aMJ.js.br +0 -0
  87. package/dist/public/assets/_DLatqs0j2.js +1 -0
  88. package/dist/public/assets/_DLatqs0j2.js.br +0 -0
  89. package/dist/public/assets/{_BktPzARb2.js → _DMRjmpFD2.js} +1 -1
  90. package/dist/public/assets/_DMRjmpFD2.js.br +0 -0
  91. package/dist/public/assets/{_D-JURl4r.js → _DMtHQg6p.js} +1 -1
  92. package/dist/public/assets/_DMtHQg6p.js.br +0 -0
  93. package/dist/public/assets/_DNr5neqU.js +1 -0
  94. package/dist/public/assets/_DNr5neqU.js.br +0 -0
  95. package/dist/public/assets/{_BZFvk6oF.js → _DPdZCztx.js} +1 -1
  96. package/dist/public/assets/_DPdZCztx.js.br +0 -0
  97. package/dist/public/assets/{_BhJpS1j5.js → _DQ_V1iRl.js} +1 -1
  98. package/dist/public/assets/_DQ_V1iRl.js.br +0 -0
  99. package/dist/public/assets/_DSdwFJ0A2.js +1 -0
  100. package/dist/public/assets/_DSdwFJ0A2.js.br +0 -0
  101. package/dist/public/assets/{_BT12g7le2.js → _DYl8DmZ32.js} +1 -1
  102. package/dist/public/assets/_DYl8DmZ32.js.br +0 -0
  103. package/dist/public/assets/{_DAc4ydLU2.js → _D_FvYbxf2.js} +1 -1
  104. package/dist/public/assets/_D_FvYbxf2.js.br +0 -0
  105. package/dist/public/assets/{_DXAKHniZ2.js → _Dh6dMgTO2.js} +1 -1
  106. package/dist/public/assets/_Dh6dMgTO2.js.br +0 -0
  107. package/dist/public/assets/_DhAV7qp1.js +1 -0
  108. package/dist/public/assets/_DhAV7qp1.js.br +0 -0
  109. package/dist/public/assets/_DkWy_Ueq2.js +1 -0
  110. package/dist/public/assets/_DkWy_Ueq2.js.br +0 -0
  111. package/dist/public/assets/{_jITNZyKr2.js → _Ds18FW1c2.js} +1 -1
  112. package/dist/public/assets/_Ds18FW1c2.js.br +0 -0
  113. package/dist/public/assets/_DsUtXotp.js +1 -0
  114. package/dist/public/assets/_DsUtXotp.js.br +0 -0
  115. package/dist/public/assets/{_CPNeNXSQ2.js → _Dva2q_M42.js} +1 -1
  116. package/dist/public/assets/_Dva2q_M42.js.br +0 -0
  117. package/dist/public/assets/{_NUYSH0pf.js → _DxbJYPG-.js} +1 -1
  118. package/dist/public/assets/_DxbJYPG-.js.br +0 -0
  119. package/dist/public/assets/{_OFWvFH2G2.js → _DxbZoYq92.js} +1 -1
  120. package/dist/public/assets/_DxbZoYq92.js.br +0 -0
  121. package/dist/public/assets/{_BUhJRZkY2.js → _DzkQ59tO2.js} +1 -1
  122. package/dist/public/assets/_DzkQ59tO2.js.br +0 -0
  123. package/dist/public/assets/_F7htPBBT.js +1 -0
  124. package/dist/public/assets/_F7htPBBT.js.br +0 -0
  125. package/dist/public/assets/_HGe5zAKn.js +1 -0
  126. package/dist/public/assets/_HGe5zAKn.js.br +0 -0
  127. package/dist/public/assets/{_DjNLicto.js → _LhXY5_qe.js} +1 -1
  128. package/dist/public/assets/_LhXY5_qe.js.br +0 -0
  129. package/dist/public/assets/{_SqANV0GA.js → _PaKRa2cB.js} +1 -1
  130. package/dist/public/assets/_PaKRa2cB.js.br +0 -0
  131. package/dist/public/assets/{_CFty7QOX2.js → _TdrV18MH2.js} +1 -1
  132. package/dist/public/assets/_TdrV18MH2.js.br +0 -0
  133. package/dist/public/assets/{_aOU3qQZB.js → _WSGgcdni.js} +1 -1
  134. package/dist/public/assets/_WSGgcdni.js.br +0 -0
  135. package/dist/public/assets/{_BRs7wrJ2.js → _XQS1q-bq.js} +1 -1
  136. package/dist/public/assets/_XQS1q-bq.js.br +0 -0
  137. package/dist/public/assets/_Y2b8aPrG.js +1 -0
  138. package/dist/public/assets/_Y2b8aPrG.js.br +0 -0
  139. package/dist/public/assets/{_BB5wTQEd.js → _ZCuYNM1I.js} +1 -1
  140. package/dist/public/assets/_ZCuYNM1I.js.br +0 -0
  141. package/dist/public/assets/{_xXKz88pr.js → _ZDvJObO5.js} +1 -1
  142. package/dist/public/assets/_ZDvJObO5.js.br +0 -0
  143. package/dist/public/assets/{_bG9QrB36.js → _aT-vIKyZ.js} +1 -1
  144. package/dist/public/assets/_aT-vIKyZ.js.br +0 -0
  145. package/dist/public/assets/_aldud3NO.js +1 -0
  146. package/dist/public/assets/_aldud3NO.js.br +0 -0
  147. package/dist/public/assets/{_kVkzX9EO.js → _dIGPKWvv.js} +1 -1
  148. package/dist/public/assets/_dIGPKWvv.js.br +0 -0
  149. package/dist/public/assets/_diJBCZr0.js +1 -0
  150. package/dist/public/assets/_diJBCZr0.js.br +0 -0
  151. package/dist/public/assets/{_XQI2rM-72.js → _wPGOV0BF2.js} +1 -1
  152. package/dist/public/assets/_wPGOV0BF2.js.br +0 -0
  153. package/dist/public/assets/{_BLuzQrZB2.js → _wWYYdpzZ2.js} +1 -1
  154. package/dist/public/assets/_wWYYdpzZ2.js.br +0 -0
  155. package/dist/public/assets/{_C0oMCmKy.js → _xB1z2QtX.js} +1 -1
  156. package/dist/public/assets/_xB1z2QtX.js.br +0 -0
  157. package/dist/public/assets/app-page-DhekpIyo.css +1 -0
  158. package/dist/public/assets/app-page-DhekpIyo.css.br +0 -0
  159. package/dist/public/assets/diff-view-B6mpGFZy.css +1 -0
  160. package/dist/public/assets/diff-view-B6mpGFZy.css.br +0 -0
  161. package/dist/public/assets/new-DAfon2Hw.js +1 -0
  162. package/dist/public/assets/settings-DAfon2Hw.js +1 -0
  163. package/dist/public/assets/w-DAfon2Hw.js +1 -0
  164. package/dist/public/assets/w._-C05PxvAg.js +1 -0
  165. package/dist/public/assets/w._-DAfon2Hw.js +1 -0
  166. package/package.json +1 -1
  167. package/dist/_B3qThpAM.js +0 -2
  168. package/dist/public/assets/_48TVbcsA.js +0 -1
  169. package/dist/public/assets/_48TVbcsA.js.br +0 -0
  170. package/dist/public/assets/_5Rj2gra4.js.br +0 -0
  171. package/dist/public/assets/_A0q7Ooua2.js +0 -1
  172. package/dist/public/assets/_A0q7Ooua2.js.br +0 -0
  173. package/dist/public/assets/_B2_tmvdP2.js.br +0 -0
  174. package/dist/public/assets/_B7GZ8Nzq.js.br +0 -0
  175. package/dist/public/assets/_BB5wTQEd.js.br +0 -0
  176. package/dist/public/assets/_BBZERnMF.js +0 -1
  177. package/dist/public/assets/_BBZERnMF.js.br +0 -0
  178. package/dist/public/assets/_BBsyBPY_2.js.br +0 -0
  179. package/dist/public/assets/_BE8aZ_UF.js +0 -1
  180. package/dist/public/assets/_BE8aZ_UF.js.br +0 -0
  181. package/dist/public/assets/_BLuzQrZB2.js.br +0 -0
  182. package/dist/public/assets/_BRBoguWB.js.br +0 -0
  183. package/dist/public/assets/_BRZcUxwW.js +0 -1
  184. package/dist/public/assets/_BRZcUxwW.js.br +0 -0
  185. package/dist/public/assets/_BRs7wrJ2.js.br +0 -0
  186. package/dist/public/assets/_BT12g7le2.js.br +0 -0
  187. package/dist/public/assets/_BUhJRZkY2.js.br +0 -0
  188. package/dist/public/assets/_BVBmzGqS.js +0 -1
  189. package/dist/public/assets/_BVBmzGqS.js.br +0 -0
  190. package/dist/public/assets/_BXLeSgTE.js +0 -1
  191. package/dist/public/assets/_BXLeSgTE.js.br +0 -0
  192. package/dist/public/assets/_BZFvk6oF.js.br +0 -0
  193. package/dist/public/assets/_BcrQbEVL.js.br +0 -0
  194. package/dist/public/assets/_BgiBAuH-.js +0 -1
  195. package/dist/public/assets/_BgiBAuH-.js.br +0 -0
  196. package/dist/public/assets/_BhJpS1j5.js.br +0 -0
  197. package/dist/public/assets/_BktPzARb2.js.br +0 -0
  198. package/dist/public/assets/_BptlJm4g.js +0 -1
  199. package/dist/public/assets/_BptlJm4g.js.br +0 -0
  200. package/dist/public/assets/_BsPfAMjd.js +0 -1
  201. package/dist/public/assets/_BsPfAMjd.js.br +0 -0
  202. package/dist/public/assets/_Bxt0CEQr2.js.br +0 -0
  203. package/dist/public/assets/_Bzah2rSU.js +0 -1
  204. package/dist/public/assets/_Bzah2rSU.js.br +0 -0
  205. package/dist/public/assets/_C0oMCmKy.js.br +0 -0
  206. package/dist/public/assets/_C37o6tKr.js.br +0 -0
  207. package/dist/public/assets/_C8aavgS-2.js +0 -1
  208. package/dist/public/assets/_C8aavgS-2.js.br +0 -0
  209. package/dist/public/assets/_CDnysN3S.js.br +0 -0
  210. package/dist/public/assets/_CFty7QOX2.js.br +0 -0
  211. package/dist/public/assets/_CGhMIkoU.js.br +0 -0
  212. package/dist/public/assets/_CIh-AkC9.js.br +0 -0
  213. package/dist/public/assets/_CIigx59b.js +0 -1
  214. package/dist/public/assets/_CIigx59b.js.br +0 -0
  215. package/dist/public/assets/_CLWE-Z1K.js +0 -89
  216. package/dist/public/assets/_CLWE-Z1K.js.br +0 -0
  217. package/dist/public/assets/_CNX3tzOp.js.br +0 -0
  218. package/dist/public/assets/_CPNeNXSQ2.js.br +0 -0
  219. package/dist/public/assets/_CXSLJgQu.js.br +0 -0
  220. package/dist/public/assets/_CZik1U89.js.br +0 -0
  221. package/dist/public/assets/_CZjXErwu2.js +0 -1
  222. package/dist/public/assets/_CZjXErwu2.js.br +0 -0
  223. package/dist/public/assets/_ClwjGc8M2.js.br +0 -0
  224. package/dist/public/assets/_CnT3pmYB2.js.br +0 -0
  225. package/dist/public/assets/_D-JURl4r.js.br +0 -0
  226. package/dist/public/assets/_D4SxCtr7.js.br +0 -0
  227. package/dist/public/assets/_D4dVNJDB.js +0 -1
  228. package/dist/public/assets/_D4dVNJDB.js.br +0 -0
  229. package/dist/public/assets/_D74yUpFR.js.br +0 -0
  230. package/dist/public/assets/_D7FM8A3g.js.br +0 -0
  231. package/dist/public/assets/_D9gN-c2a.js +0 -1
  232. package/dist/public/assets/_D9gN-c2a.js.br +0 -0
  233. package/dist/public/assets/_DAc4ydLU2.js.br +0 -0
  234. package/dist/public/assets/_DR1dHtu1.js +0 -1
  235. package/dist/public/assets/_DR1dHtu1.js.br +0 -0
  236. package/dist/public/assets/_DXAKHniZ2.js.br +0 -0
  237. package/dist/public/assets/_Dbs1ola1.js.br +0 -0
  238. package/dist/public/assets/_Ddy1aeKP.js.br +0 -0
  239. package/dist/public/assets/_DjNLicto.js.br +0 -0
  240. package/dist/public/assets/_Dp4WK_Ux2.js.br +0 -0
  241. package/dist/public/assets/_DrbgVNDi.js +0 -1
  242. package/dist/public/assets/_DrbgVNDi.js.br +0 -0
  243. package/dist/public/assets/_InihcsUB.js +0 -1
  244. package/dist/public/assets/_InihcsUB.js.br +0 -0
  245. package/dist/public/assets/_NUYSH0pf.js.br +0 -0
  246. package/dist/public/assets/_OFWvFH2G2.js.br +0 -0
  247. package/dist/public/assets/_RPQFtSoa.js +0 -1
  248. package/dist/public/assets/_RPQFtSoa.js.br +0 -0
  249. package/dist/public/assets/_SqANV0GA.js.br +0 -0
  250. package/dist/public/assets/_XQI2rM-72.js.br +0 -0
  251. package/dist/public/assets/_aOU3qQZB.js.br +0 -0
  252. package/dist/public/assets/_bG9QrB36.js.br +0 -0
  253. package/dist/public/assets/_cq7Zuamy.js +0 -1
  254. package/dist/public/assets/_cq7Zuamy.js.br +0 -0
  255. package/dist/public/assets/_f_jhUV9E2.js.br +0 -0
  256. package/dist/public/assets/_jITNZyKr2.js.br +0 -0
  257. package/dist/public/assets/_kVkzX9EO.js.br +0 -0
  258. package/dist/public/assets/_mlus7Zvc.js.br +0 -0
  259. package/dist/public/assets/_mrxNqpY62.js +0 -1
  260. package/dist/public/assets/_mrxNqpY62.js.br +0 -0
  261. package/dist/public/assets/_rtNfq8SS.js +0 -1
  262. package/dist/public/assets/_rtNfq8SS.js.br +0 -0
  263. package/dist/public/assets/_xXKz88pr.js.br +0 -0
  264. package/dist/public/assets/_zvkt6Dg_.js.br +0 -0
  265. package/dist/public/assets/app-page-D93IyHzW.css +0 -1
  266. package/dist/public/assets/app-page-D93IyHzW.css.br +0 -0
  267. package/dist/public/assets/diff-view-BU-rwlH-.css +0 -1
  268. package/dist/public/assets/diff-view-BU-rwlH-.css.br +0 -0
  269. package/dist/public/assets/new-D-2OVF74.js +0 -1
  270. package/dist/public/assets/settings-D-2OVF74.js +0 -1
  271. package/dist/public/assets/w-D-2OVF74.js +0 -1
  272. package/dist/public/assets/w._-BprceT9I.js +0 -1
  273. package/dist/public/assets/w._-D-2OVF74.js +0 -1
package/README.md CHANGED
@@ -68,6 +68,29 @@ Everything (pages, API, and the `/term` websockets) serves from the single
68
68
  app port, so route the whole hostname to it. Set
69
69
  `WORK_ALLOWED_HOSTS=your.domain` so the dev server accepts the hostname.
70
70
 
71
+ **Opening workspace ports remotely.** The port chips in the sidebar link to
72
+ `http://<host>:<port>`, which only works where the machine is reachable
73
+ directly. Through a tunnel, route a wildcard hostname to the app port as
74
+ well and work proxies it — HTTP and websockets, so HMR works — to
75
+ `localhost:<port>`. Two hostname shapes are accepted; `WORK_PORT_HOSTS`
76
+ picks which one the chips link to:
77
+
78
+ - `sub` (default): `https://3000.work.example.com`. Needs a wildcard
79
+ `*.work.example.com` route and a certificate that covers it (your own
80
+ reverse proxy with a DNS-01 wildcard; Cloudflare only with Advanced
81
+ Certificate Manager, since Universal SSL covers one label).
82
+ - `dash`: `https://3000-work.example.com`. One label under the zone, so a
83
+ Cloudflare Tunnel works on the free plan. DNS wildcards match a whole
84
+ label, so the tunnel's public hostname is `*.example.com` pointing at
85
+ the app port, with an Access application on the same wildcard so the
86
+ ports sit behind the same login as the app. Work ignores hostnames that
87
+ do not start with a port, so other names under the zone are unaffected.
88
+
89
+ Only loopback ports on the work machine are reachable, behind the same
90
+ auth as the app. API writes and the terminal websockets refuse a foreign
91
+ `Origin`, so a page a workspace serves cannot drive work with the shared
92
+ login cookie.
93
+
71
94
  > **Upgrading from the two-port layout:** older setups routed `/term/*` to a
72
95
  > separate terminal port (7172). That port no longer exists — remove the
73
96
  > `/term` rule from your tunnel/proxy config and send all traffic to the app
@@ -109,6 +132,7 @@ targeting that branch.
109
132
  | `WORK_DATA_DIR` | `~/.local/share/work` | sqlite db and server state |
110
133
  | `WORK_APP_PORT` | `7171` | HTTP server (app, assets, and `/term` websockets) |
111
134
  | `WORK_ALLOWED_HOSTS` | — | Extra dev-server hostnames (comma-separated) |
135
+ | `WORK_PORT_HOSTS` | `sub` | Port-chip hostname shape: `sub` / `dash` (see above) |
112
136
  | `WORK_USER` / `WORK_HOST` | current user/host | Branch-name prefix parts |
113
137
  | `WORK_BRANCH_PREFIX` | `<user>-<host>` | Whole branch-name prefix, overriding the parts |
114
138
 
package/bin/work.mjs CHANGED
@@ -612,9 +612,13 @@ function allowScriptsArgs() {
612
612
 
613
613
  async function update() {
614
614
  log("updating @dylanpiercey/work");
615
+ // `--prefer-online`: npm serves `latest` from a cached packument for a
616
+ // few minutes after a publish, so an update right behind a release
617
+ // reinstalled the version already running.
615
618
  sh("npm", [
616
619
  "install",
617
620
  "-g",
621
+ "--prefer-online",
618
622
  ...allowScriptsArgs(),
619
623
  "@dylanpiercey/work@latest",
620
624
  ]);
@@ -1968,14 +1968,14 @@ function repoLabel(fullName) {
1968
1968
  return fullName;
1969
1969
  }
1970
1970
  var toastKind = {
1971
- error: "_bk",
1972
- warn: "_bl",
1973
- info: "_bm"
1971
+ error: "_bi",
1972
+ warn: "_bj",
1973
+ info: "_bk"
1974
1974
  };
1975
1975
  var toastTitle = {
1976
- error: "_bn",
1977
- warn: "_bo",
1978
- info: "_bp"
1976
+ error: "_bl",
1977
+ warn: "_bm",
1978
+ info: "_bn"
1979
1979
  };
1980
1980
  //#endregion
1981
1981
  //#region src/styles/tokens.css.ts
@@ -2021,18 +2021,18 @@ var toast_default = _template("F", (input) => {
2021
2021
  const kind = inputKind || "error";
2022
2022
  const placement = inputPlacement || "float";
2023
2023
  const placementClass = {
2024
- float: "_bi",
2025
- inline: "_bj"
2024
+ float: "_bg",
2025
+ inline: "_bh"
2026
2026
  }[placement];
2027
2027
  _html(`<div${_attr_class([
2028
- "_bh",
2028
+ "_bf",
2029
2029
  toastKind[kind],
2030
2030
  placementClass,
2031
2031
  inputClass
2032
2032
  ])} role=${kind === "error" ? "alert" : "status"}${_attrs_partial(htmlInput, {
2033
2033
  class: 1,
2034
2034
  role: 1
2035
- }, "a", $scope0_id, "div")}><div${_attr_class("_bq")}>`);
2035
+ }, "a", $scope0_id, "div")}><div${_attr_class("_bo")}>`);
2036
2036
  _if(() => {
2037
2037
  if (title) {
2038
2038
  const $scope1_id = _scope_id();
@@ -2044,7 +2044,7 @@ var toast_default = _template("F", (input) => {
2044
2044
  _if(() => {
2045
2045
  if (content) {
2046
2046
  const $scope2_id = _scope_id();
2047
- _html(`<div${_attr_class("_br")}>`);
2047
+ _html(`<div${_attr_class("_bp")}>`);
2048
2048
  _dynamic_tag($scope2_id, "b", content, {}, 0, 0, $sg__input_content);
2049
2049
  _html("</div>");
2050
2050
  $si__input_content && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
@@ -2055,7 +2055,7 @@ var toast_default = _template("F", (input) => {
2055
2055
  _if(() => {
2056
2056
  if (action || onDismiss) {
2057
2057
  const $scope3_id = _scope_id();
2058
- _html(`<div${_attr_class("_bs")}>`);
2058
+ _html(`<div${_attr_class(["_bq", action && "_br"])}>`);
2059
2059
  _if(() => {
2060
2060
  if (action) {
2061
2061
  const $scope4_id = _scope_id();
@@ -2067,7 +2067,7 @@ var toast_default = _template("F", (input) => {
2067
2067
  _if(() => {
2068
2068
  if (onDismiss) {
2069
2069
  const $scope5_id = _scope_id();
2070
- _html(`<button${_attr_class([iconBtnRow, "_bt"])} type=button title=Dismiss aria-label=Dismiss>`);
2070
+ _html(`<button${_attr_class([iconBtnRow, "_bs"])} type=button title=Dismiss aria-label=Dismiss>`);
2071
2071
  icon_xmark_default({ size: 14 });
2072
2072
  _html(`</button>${_el_resume($scope5_id, "a")}`);
2073
2073
  _script($scope5_id, "F0");
@@ -2075,7 +2075,7 @@ var toast_default = _template("F", (input) => {
2075
2075
  return 0;
2076
2076
  }
2077
2077
  }, $scope3_id, "c", $sg__input_onDismiss, $sg__input_onDismiss, $sg__input_action__OR__input_onDismiss, 0, 1);
2078
- _html("</div>");
2078
+ _html(`</div>${_el_resume($scope3_id, "a", $sg__input_action)}`);
2079
2079
  writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
2080
2080
  return 0;
2081
2081
  }
@@ -2182,8 +2182,8 @@ function theme() {
2182
2182
  function setTheme(mode) {
2183
2183
  set("theme", mode === "system" ? null : mode);
2184
2184
  }
2185
- var sectionCount = "_bG _L _M";
2186
- var row = "_bR _bJ";
2185
+ var sectionCount = "_bH _L _M";
2186
+ var row = "_bS _bK";
2187
2187
  var iconBtn = "_3 _j";
2188
2188
  //#endregion
2189
2189
  //#region src/tags/icons/icon-refresh.marko
@@ -2329,8 +2329,8 @@ var icon_sidebar_default = _template("mb", (input) => {
2329
2329
  });
2330
2330
  _serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
2331
2331
  });
2332
- var findInput = "_gG _l";
2333
- var findIconBtn = "_gJ _j";
2332
+ var findInput = "_gI _l";
2333
+ var findIconBtn = "_gL _j";
2334
2334
  //#endregion
2335
2335
  //#region src/tags/icons/icon-arrow-down.marko
2336
2336
  var icon_arrow_down_default = _template("K", (input) => {
@@ -0,0 +1,2 @@
1
+ import { f as notifySessionsChanged } from "./_BlEiBDGk.js";
2
+ export { notifySessionsChanged };
@@ -30,7 +30,13 @@ var config = {
30
30
  },
31
31
  /** HTTP server port — the app, static assets, and /term websockets all
32
32
  * serve from this single port (src/entry.ts). */
33
- appPort: Number(process.env.WORK_APP_PORT || 7171)
33
+ appPort: Number(process.env.WORK_APP_PORT || 7171),
34
+ /** How a workspace port is named in a hostname the app proxies
35
+ * (server/port-proxy.ts): `sub` is `3000.work.example.com`, `dash` is
36
+ * `3000-work.example.com`. The server accepts both; this only picks
37
+ * which one the port chips link to. `dash` stays one label under the
38
+ * zone, which is what a free Cloudflare certificate covers. */
39
+ portHosts: process.env.WORK_PORT_HOSTS === "dash" ? "dash" : "sub"
34
40
  };
35
41
  fs.mkdirSync(config.dataDir, { recursive: true });
36
42
  //#endregion
@@ -6573,7 +6579,7 @@ function publishChange(sessionId) {
6573
6579
  const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
6574
6580
  if (row?.workspace_id) {
6575
6581
  const workspaceId = row.workspace_id;
6576
- import("./_B3qThpAM.js").then((m) => m.notifySessionsChanged(workspaceId));
6582
+ import("./_BNGMa45b.js").then((m) => m.notifySessionsChanged(workspaceId));
6577
6583
  return;
6578
6584
  }
6579
6585
  publish("sessions.changed");