@dylanpiercey/work 0.0.138 → 0.0.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/bin/work.mjs +4 -0
- package/dist/{_NJRrlQSH.js → _BVHQZ1Ks.js} +4 -4
- package/dist/{_BJg54Xa1.js → _BXzfMZ_J.js} +11 -4
- package/dist/{_BU4viilP.js → _CZd0I4nH.js} +56 -56
- package/dist/_D2thrkJX.js +2 -0
- package/dist/index.mjs +480 -356
- package/dist/public/assets/_8J7bPMB9.js +1 -0
- package/dist/public/assets/_8J7bPMB9.js.br +0 -0
- package/dist/public/assets/{_Dhua8ybj2.js → _AXvUJPqu2.js} +1 -1
- package/dist/public/assets/_AXvUJPqu2.js.br +0 -0
- package/dist/public/assets/{_DnuQIvTk.js → _B-G2jcQS.js} +1 -1
- package/dist/public/assets/_B-G2jcQS.js.br +0 -0
- package/dist/public/assets/_B3yGzEa9.js +1 -0
- package/dist/public/assets/_B3yGzEa9.js.br +0 -0
- package/dist/public/assets/{_3OKw54FH.js → _B9ZAbzhF.js} +1 -1
- package/dist/public/assets/_B9ZAbzhF.js.br +0 -0
- package/dist/public/assets/{_DmgOfIwN.js → _BAC2OLTW.js} +1 -1
- package/dist/public/assets/_BAC2OLTW.js.br +0 -0
- package/dist/public/assets/{_CPTI4WQL2.js → _BAQCbH2P2.js} +1 -1
- package/dist/public/assets/_BAQCbH2P2.js.br +0 -0
- package/dist/public/assets/{_Z4atEQ98.js → _BC1i3jO8.js} +1 -1
- package/dist/public/assets/_BC1i3jO8.js.br +0 -0
- package/dist/public/assets/{_C5TRZT17.js → _BCaOQTDy.js} +1 -1
- package/dist/public/assets/{_DwNwW4jm.js → _BEIP10I4.js} +46 -46
- package/dist/public/assets/_BEIP10I4.js.br +0 -0
- package/dist/public/assets/{_OIJzbHVo.js → _BKuREDTF.js} +1 -1
- package/dist/public/assets/_BKuREDTF.js.br +0 -0
- package/dist/public/assets/{_BcpUdCHG.js → _BMpT9JnR.js} +1 -1
- package/dist/public/assets/_BMpT9JnR.js.br +0 -0
- package/dist/public/assets/{_BEzGQSOa.js → _BbYPTPnv.js} +1 -1
- package/dist/public/assets/_BbYPTPnv.js.br +0 -0
- package/dist/public/assets/{_AiXBpuzB.js → _BcNyP4hq.js} +1 -1
- package/dist/public/assets/_BcNyP4hq.js.br +0 -0
- package/dist/public/assets/{_BysVGK9V2.js → _BfitEsfk2.js} +1 -1
- package/dist/public/assets/_BfitEsfk2.js.br +0 -0
- package/dist/public/assets/{_PcBwrdGV2.js → _Bg6nm0G42.js} +1 -1
- package/dist/public/assets/_Bg6nm0G42.js.br +0 -0
- package/dist/public/assets/{_BSISAs7U2.js → _BgRQhjCQ2.js} +1 -1
- package/dist/public/assets/_BgRQhjCQ2.js.br +0 -0
- package/dist/public/assets/_Bg_QV64o.js +1 -0
- package/dist/public/assets/_Bg_QV64o.js.br +0 -0
- package/dist/public/assets/{_CvFrnNxs.js → _BhFgAjkS.js} +1 -1
- package/dist/public/assets/_BhFgAjkS.js.br +0 -0
- package/dist/public/assets/{_CPQ8yLEU.js → _Bhm39j0U.js} +1 -1
- package/dist/public/assets/_Bhm39j0U.js.br +0 -0
- package/dist/public/assets/_Bmj60xc8.js +1 -0
- package/dist/public/assets/_Bmj60xc8.js.br +0 -0
- package/dist/public/assets/{_kDA0ZntT.js → _BoPD9t5q.js} +1 -1
- package/dist/public/assets/_BoPD9t5q.js.br +0 -0
- package/dist/public/assets/{_C4-Fa9cE2.js → _BufLBhD52.js} +1 -1
- package/dist/public/assets/_BufLBhD52.js.br +0 -0
- package/dist/public/assets/_BuwtIM5I.js +1 -0
- package/dist/public/assets/_BuwtIM5I.js.br +0 -0
- package/dist/public/assets/{_CU93C2BH2.js → _C3Zk3OTU2.js} +1 -1
- package/dist/public/assets/_C3Zk3OTU2.js.br +0 -0
- package/dist/public/assets/_C4Z5tewe.js +1 -0
- package/dist/public/assets/_C4Z5tewe.js.br +0 -0
- package/dist/public/assets/{_BIwmkApM.js → _C7fBne76.js} +1 -1
- package/dist/public/assets/_C7fBne76.js.br +0 -0
- package/dist/public/assets/{_BEQN3C3b2.js → _CHRR_tdf2.js} +1 -1
- package/dist/public/assets/_CHRR_tdf2.js.br +0 -0
- package/dist/public/assets/{_Dml9mocl.js → _CHkTCCZL.js} +1 -1
- package/dist/public/assets/_CHkTCCZL.js.br +0 -0
- package/dist/public/assets/{_CUiuEswY2.js → _CJ9NIpKB2.js} +1 -1
- package/dist/public/assets/_CQ3jYFa7.js +1 -0
- package/dist/public/assets/_CQ3jYFa7.js.br +0 -0
- package/dist/public/assets/_CQtiXk-1.js +1 -0
- package/dist/public/assets/_CQtiXk-1.js.br +0 -0
- package/dist/public/assets/{_B9-bF7w4.js → _CTE7ghx3.js} +1 -1
- package/dist/public/assets/_CTE7ghx3.js.br +0 -0
- package/dist/public/assets/_CTM65Tgs2.js +1 -0
- package/dist/public/assets/_CTM65Tgs2.js.br +0 -0
- package/dist/public/assets/{_cvUAeKFs2.js → _CWfLljks2.js} +1 -1
- package/dist/public/assets/_CWfLljks2.js.br +0 -0
- package/dist/public/assets/{_B9xv7qS42.js → _CXkMfc5M2.js} +1 -1
- package/dist/public/assets/_CXkMfc5M2.js.br +0 -0
- package/dist/public/assets/{_BrvuWmpM2.js → _CZQJ7BmY2.js} +1 -1
- package/dist/public/assets/_CZQJ7BmY2.js.br +0 -0
- package/dist/public/assets/_CcOLUAUB.js +1 -0
- package/dist/public/assets/_CcOLUAUB.js.br +0 -0
- package/dist/public/assets/{_Bpbf18vi.js → _CgAhtyGH.js} +1 -1
- package/dist/public/assets/_CgAhtyGH.js.br +0 -0
- package/dist/public/assets/{_jOkJ6aek2.js → _CmFZdEqe2.js} +1 -1
- package/dist/public/assets/_CmFZdEqe2.js.br +0 -0
- package/dist/public/assets/{_B6Kqixfk2.js → _CmHQ_mnt2.js} +1 -1
- package/dist/public/assets/_Cp2jGFuU.js +1 -0
- package/dist/public/assets/_Cp2jGFuU.js.br +0 -0
- package/dist/public/assets/{_Dd1-18Hp.js → _CpSY65dR.js} +1 -1
- package/dist/public/assets/_CpSY65dR.js.br +0 -0
- package/dist/public/assets/_D2D61dAJ2.js +1 -0
- package/dist/public/assets/_D2D61dAJ2.js.br +0 -0
- package/dist/public/assets/_D4OqQzgl.js +1 -0
- package/dist/public/assets/_D4OqQzgl.js.br +0 -0
- package/dist/public/assets/_D6-73p3r.js +1 -0
- package/dist/public/assets/_D6-73p3r.js.br +0 -0
- package/dist/public/assets/{_DaXvCDxA.js → _DB76xuHC.js} +1 -1
- package/dist/public/assets/_DB76xuHC.js.br +0 -0
- package/dist/public/assets/{_Cl4_PEdC2.js → _DFMDH4tV2.js} +1 -1
- package/dist/public/assets/_DFMDH4tV2.js.br +0 -0
- package/dist/public/assets/{_DXu4guU2.js → _DJ2tTUOp.js} +1 -1
- package/dist/public/assets/_DJ2tTUOp.js.br +0 -0
- package/dist/public/assets/_DKY8j24h.js +1 -0
- package/dist/public/assets/_DKY8j24h.js.br +0 -0
- package/dist/public/assets/{_Dt9ju-f-.js → _DMmYo41H.js} +1 -1
- package/dist/public/assets/_DMmYo41H.js.br +0 -0
- package/dist/public/assets/{_vbrsGoKV.js → _DPI9uiRH.js} +1 -1
- package/dist/public/assets/_DPI9uiRH.js.br +0 -0
- package/dist/public/assets/{_T8YOpcQj2.js → _DTBjw9eZ2.js} +1 -1
- package/dist/public/assets/_DTBjw9eZ2.js.br +0 -0
- package/dist/public/assets/_DUP19um8.js +1 -0
- package/dist/public/assets/_DUP19um8.js.br +0 -0
- package/dist/public/assets/_Dbx8VtKF.js +1 -0
- package/dist/public/assets/_Dbx8VtKF.js.br +0 -0
- package/dist/public/assets/_DmqG9yJU.js +1 -0
- package/dist/public/assets/_DmqG9yJU.js.br +0 -0
- package/dist/public/assets/{_BnB3kxXv2.js → _DnGbQ0u92.js} +1 -1
- package/dist/public/assets/_DnGbQ0u92.js.br +0 -0
- package/dist/public/assets/{_DSR5YMpz.js → _DsmPrDz6.js} +1 -1
- package/dist/public/assets/_DsmPrDz6.js.br +0 -0
- package/dist/public/assets/_DxmtmcQJ.js +1 -0
- package/dist/public/assets/_DxmtmcQJ.js.br +0 -0
- package/dist/public/assets/{_D0T5xgdm.js → _IHwiKLGt.js} +1 -1
- package/dist/public/assets/_IHwiKLGt.js.br +0 -0
- package/dist/public/assets/{_DReNRAce2.js → _NBVVn24L2.js} +1 -1
- package/dist/public/assets/_NBVVn24L2.js.br +0 -0
- package/dist/public/assets/{_n5HhfX_m2.js → _Vg-VYt882.js} +1 -1
- package/dist/public/assets/_Vg-VYt882.js.br +0 -0
- package/dist/public/assets/_VnhmzZ9q.js +89 -0
- package/dist/public/assets/_VnhmzZ9q.js.br +0 -0
- package/dist/public/assets/{_Bd-KABgY.js → _W3k8p4Ek.js} +1 -1
- package/dist/public/assets/_W3k8p4Ek.js.br +0 -0
- package/dist/public/assets/{_BTXpXWX_.js → _YCkwa36v.js} +1 -1
- package/dist/public/assets/_YCkwa36v.js.br +0 -0
- package/dist/public/assets/{_CaX7kwGj.js → _YjXp8Fa7.js} +1 -1
- package/dist/public/assets/_YjXp8Fa7.js.br +0 -0
- package/dist/public/assets/{_DaiUj3cu2.js → _a2HWPwTI2.js} +1 -1
- package/dist/public/assets/_a2HWPwTI2.js.br +0 -0
- package/dist/public/assets/{_B3XWXwYh.js → _aNDhwIJ9.js} +1 -1
- package/dist/public/assets/_aNDhwIJ9.js.br +0 -0
- package/dist/public/assets/{_xEbKAoEJ.js → _bjzjp9qV.js} +1 -1
- package/dist/public/assets/_bjzjp9qV.js.br +0 -0
- package/dist/public/assets/_cJ8FGCbf.js +1 -0
- package/dist/public/assets/_cJ8FGCbf.js.br +0 -0
- package/dist/public/assets/_gGP1uofp.js +1 -0
- package/dist/public/assets/_gGP1uofp.js.br +0 -0
- package/dist/public/assets/_jDIdu88k2.js +1 -0
- package/dist/public/assets/_jDIdu88k2.js.br +0 -0
- package/dist/public/assets/{_pq7cZIB5.js → _pTrFhub3.js} +1 -1
- package/dist/public/assets/_pTrFhub3.js.br +0 -0
- package/dist/public/assets/{_C8z0AqL9.js → _wtrNcQUN.js} +1 -1
- package/dist/public/assets/_wtrNcQUN.js.br +0 -0
- package/dist/public/assets/{_CtoSA4u9.js → _xrYLiFvZ.js} +1 -1
- package/dist/public/assets/_xrYLiFvZ.js.br +0 -0
- package/dist/public/assets/_yDHOPHcI2.js +1 -0
- package/dist/public/assets/_yDHOPHcI2.js.br +0 -0
- package/dist/public/assets/app-page-DD8AAZI2.css +1 -0
- package/dist/public/assets/app-page-DD8AAZI2.css.br +0 -0
- package/dist/public/assets/diff-view-CigyjzyU.css +1 -0
- package/dist/public/assets/diff-view-CigyjzyU.css.br +0 -0
- package/dist/public/assets/new-CeNxYCDk.js +1 -0
- package/dist/public/assets/settings-CeNxYCDk.js +1 -0
- package/dist/public/assets/w-CeNxYCDk.js +1 -0
- package/dist/public/assets/w._-CY06s2qp.js +1 -0
- package/dist/public/assets/w._-CeNxYCDk.js +1 -0
- package/lib/setup/catalog.mjs +3 -2
- package/lib/share/manifest.mjs +3 -3
- package/package.json +1 -1
- package/dist/_B3qThpAM.js +0 -2
- package/dist/public/assets/_3OKw54FH.js.br +0 -0
- package/dist/public/assets/_AiXBpuzB.js.br +0 -0
- package/dist/public/assets/_B3XWXwYh.js.br +0 -0
- package/dist/public/assets/_B7PLqair2.js +0 -1
- package/dist/public/assets/_B7PLqair2.js.br +0 -0
- package/dist/public/assets/_B9-bF7w4.js.br +0 -0
- package/dist/public/assets/_B9xv7qS42.js.br +0 -0
- package/dist/public/assets/_BEQN3C3b2.js.br +0 -0
- package/dist/public/assets/_BEzGQSOa.js.br +0 -0
- package/dist/public/assets/_BIwmkApM.js.br +0 -0
- package/dist/public/assets/_BSISAs7U2.js.br +0 -0
- package/dist/public/assets/_BTXpXWX_.js.br +0 -0
- package/dist/public/assets/_BWxRtsYe.js +0 -1
- package/dist/public/assets/_BWxRtsYe.js.br +0 -0
- package/dist/public/assets/_Ba_fRTxl.js +0 -1
- package/dist/public/assets/_Ba_fRTxl.js.br +0 -0
- package/dist/public/assets/_BcpUdCHG.js.br +0 -0
- package/dist/public/assets/_Bd-KABgY.js.br +0 -0
- package/dist/public/assets/_BmbR7-Sm.js +0 -1
- package/dist/public/assets/_BmbR7-Sm.js.br +0 -0
- package/dist/public/assets/_BnB3kxXv2.js.br +0 -0
- package/dist/public/assets/_Bo25KMr2.js +0 -1
- package/dist/public/assets/_Bo25KMr2.js.br +0 -0
- package/dist/public/assets/_Bpbf18vi.js.br +0 -0
- package/dist/public/assets/_BpidOAFS.js +0 -1
- package/dist/public/assets/_BpidOAFS.js.br +0 -0
- package/dist/public/assets/_BrvuWmpM2.js.br +0 -0
- package/dist/public/assets/_BvJf61W8.js +0 -1
- package/dist/public/assets/_BvJf61W8.js.br +0 -0
- package/dist/public/assets/_BysVGK9V2.js.br +0 -0
- package/dist/public/assets/_C4-Fa9cE2.js.br +0 -0
- package/dist/public/assets/_C8z0AqL9.js.br +0 -0
- package/dist/public/assets/_CDd7pldP.js +0 -1
- package/dist/public/assets/_CDd7pldP.js.br +0 -0
- package/dist/public/assets/_CIL_tvto.js +0 -1
- package/dist/public/assets/_CIL_tvto.js.br +0 -0
- package/dist/public/assets/_CMWNil0b.js +0 -1
- package/dist/public/assets/_CMWNil0b.js.br +0 -0
- package/dist/public/assets/_CPQ8yLEU.js.br +0 -0
- package/dist/public/assets/_CPTI4WQL2.js.br +0 -0
- package/dist/public/assets/_CU93C2BH2.js.br +0 -0
- package/dist/public/assets/_CUgh4Geb.js +0 -1
- package/dist/public/assets/_CUgh4Geb.js.br +0 -0
- package/dist/public/assets/_CYNQgKbT.js +0 -89
- package/dist/public/assets/_CYNQgKbT.js.br +0 -0
- package/dist/public/assets/_CaX7kwGj.js.br +0 -0
- package/dist/public/assets/_CanSxUih.js +0 -1
- package/dist/public/assets/_CanSxUih.js.br +0 -0
- package/dist/public/assets/_Cl4_PEdC2.js.br +0 -0
- package/dist/public/assets/_CtoSA4u9.js.br +0 -0
- package/dist/public/assets/_Cv1rmZqs.js +0 -1
- package/dist/public/assets/_Cv1rmZqs.js.br +0 -0
- package/dist/public/assets/_CvFrnNxs.js.br +0 -0
- package/dist/public/assets/_CxuGj9Kh.js +0 -1
- package/dist/public/assets/_CxuGj9Kh.js.br +0 -0
- package/dist/public/assets/_CyUsS-Ew.js +0 -1
- package/dist/public/assets/_CyUsS-Ew.js.br +0 -0
- package/dist/public/assets/_D0T5xgdm.js.br +0 -0
- package/dist/public/assets/_D8uW-24S.js +0 -1
- package/dist/public/assets/_D8uW-24S.js.br +0 -0
- package/dist/public/assets/_DClX-kzp2.js +0 -1
- package/dist/public/assets/_DClX-kzp2.js.br +0 -0
- package/dist/public/assets/_DE6OIuaj.js +0 -1
- package/dist/public/assets/_DE6OIuaj.js.br +0 -0
- package/dist/public/assets/_DReNRAce2.js.br +0 -0
- package/dist/public/assets/_DSR5YMpz.js.br +0 -0
- package/dist/public/assets/_DXu4guU2.js.br +0 -0
- package/dist/public/assets/_DaXvCDxA.js.br +0 -0
- package/dist/public/assets/_DaiUj3cu2.js.br +0 -0
- package/dist/public/assets/_Dd1-18Hp.js.br +0 -0
- package/dist/public/assets/_DffLVIPj2.js +0 -1
- package/dist/public/assets/_DffLVIPj2.js.br +0 -0
- package/dist/public/assets/_Dhua8ybj2.js.br +0 -0
- package/dist/public/assets/_DmgOfIwN.js.br +0 -0
- package/dist/public/assets/_Dml9mocl.js.br +0 -0
- package/dist/public/assets/_DnuQIvTk.js.br +0 -0
- package/dist/public/assets/_Dt9ju-f-.js.br +0 -0
- package/dist/public/assets/_Dtcj4Vdb2.js +0 -1
- package/dist/public/assets/_Dtcj4Vdb2.js.br +0 -0
- package/dist/public/assets/_DwNwW4jm.js.br +0 -0
- package/dist/public/assets/_DwsYmrLF.js +0 -1
- package/dist/public/assets/_DwsYmrLF.js.br +0 -0
- package/dist/public/assets/_OIJzbHVo.js.br +0 -0
- package/dist/public/assets/_PcBwrdGV2.js.br +0 -0
- package/dist/public/assets/_SSrroa0Z.js +0 -1
- package/dist/public/assets/_SSrroa0Z.js.br +0 -0
- package/dist/public/assets/_T8YOpcQj2.js.br +0 -0
- package/dist/public/assets/_Z4atEQ98.js.br +0 -0
- package/dist/public/assets/_cvUAeKFs2.js.br +0 -0
- package/dist/public/assets/_jOkJ6aek2.js.br +0 -0
- package/dist/public/assets/_kDA0ZntT.js.br +0 -0
- package/dist/public/assets/_n5HhfX_m2.js.br +0 -0
- package/dist/public/assets/_pq7cZIB5.js.br +0 -0
- package/dist/public/assets/_quIdZaH6.js +0 -1
- package/dist/public/assets/_quIdZaH6.js.br +0 -0
- package/dist/public/assets/_vbrsGoKV.js.br +0 -0
- package/dist/public/assets/_xEbKAoEJ.js.br +0 -0
- package/dist/public/assets/app-page-D0e78Fao.css +0 -1
- package/dist/public/assets/app-page-D0e78Fao.css.br +0 -0
- package/dist/public/assets/diff-view-Csph_Zzt.css +0 -1
- package/dist/public/assets/diff-view-Csph_Zzt.css.br +0 -0
- package/dist/public/assets/new-5LeFVg_7.js +0 -1
- package/dist/public/assets/settings-5LeFVg_7.js +0 -1
- package/dist/public/assets/w-5LeFVg_7.js +0 -1
- package/dist/public/assets/w._-5LeFVg_7.js +0 -1
- package/dist/public/assets/w._-CYXtcUyN.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
|
]);
|
|
@@ -2182,8 +2182,8 @@ function theme() {
|
|
|
2182
2182
|
function setTheme(mode) {
|
|
2183
2183
|
set("theme", mode === "system" ? null : mode);
|
|
2184
2184
|
}
|
|
2185
|
-
var sectionCount = "
|
|
2186
|
-
var row = "
|
|
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 = "
|
|
2333
|
-
var findIconBtn = "
|
|
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) => {
|
|
@@ -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
|
|
@@ -260,8 +266,9 @@ var agents_default = [
|
|
|
260
266
|
//#endregion
|
|
261
267
|
//#region lib/setup/catalog.mjs
|
|
262
268
|
/** Machine tools. `required` ones gate readiness; the rest are the utilities
|
|
263
|
-
* agents reach for constantly (
|
|
264
|
-
* mise, except the system packages the installer provides
|
|
269
|
+
* agents reach for constantly (search, JSON, HTTP, process tools). Static
|
|
270
|
+
* binaries via mise, except the system packages the installer provides
|
|
271
|
+
* (git, tmux). */
|
|
265
272
|
var TOOLS = [
|
|
266
273
|
{
|
|
267
274
|
id: "git",
|
|
@@ -6573,7 +6580,7 @@ function publishChange(sessionId) {
|
|
|
6573
6580
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
6574
6581
|
if (row?.workspace_id) {
|
|
6575
6582
|
const workspaceId = row.workspace_id;
|
|
6576
|
-
import("./
|
|
6583
|
+
import("./_D2thrkJX.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
6577
6584
|
return;
|
|
6578
6585
|
}
|
|
6579
6586
|
publish("sessions.changed");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { At as _serialize_if, B as iconBtnXs, Bt as writeScope, Ct as _resume_branch, D as toast_default, Dt as _script, Et as _scope_with_id, J as _attr_details_or_dialog_open, K as _attr, M as repoLabel, Mt as _subscribe, Nt as _template, O as icon_xmark_default, Ot as _sep, Q as _attr_option_value, R as iconBtnLg, St as _resume, Tt as _scope_reason, W as tone, X as _attr_input_value, _ as diffScope, a as fuzzy, b as setDiffPos, bt as _if, c as icon_search_default, ct as _el, d as icon_refresh_default, dt as _escape, et as _attr_select_value, g as diffPos, h as diffFilter, ht as _for_of, i as icon_sidebar_default, jt as _set_serialize_reason, k as icon_base_default, kt as _serialize_guard, l as icon_chevron_right_default, lt as _el_read_error, n as findIconBtn, ot as _content_resume, pt as _existing_scope, q as _attr_class, r as findInput, s as icon_arrow_up_default, t as icon_arrow_down_default, tt as _attr_style, u as icon_back_default, ut as _el_resume, v as diffTreeOpen, vt as _html, wt as _scope_id, x as setDiffScope, xt as _peek_scope_id, z as iconBtnRow } from "./
|
|
1
|
+
import { At as _serialize_if, B as iconBtnXs, Bt as writeScope, Ct as _resume_branch, D as toast_default, Dt as _script, Et as _scope_with_id, J as _attr_details_or_dialog_open, K as _attr, M as repoLabel, Mt as _subscribe, Nt as _template, O as icon_xmark_default, Ot as _sep, Q as _attr_option_value, R as iconBtnLg, St as _resume, Tt as _scope_reason, W as tone, X as _attr_input_value, _ as diffScope, a as fuzzy, b as setDiffPos, bt as _if, c as icon_search_default, ct as _el, d as icon_refresh_default, dt as _escape, et as _attr_select_value, g as diffPos, h as diffFilter, ht as _for_of, i as icon_sidebar_default, jt as _set_serialize_reason, k as icon_base_default, kt as _serialize_guard, l as icon_chevron_right_default, lt as _el_read_error, n as findIconBtn, ot as _content_resume, pt as _existing_scope, q as _attr_class, r as findInput, s as icon_arrow_up_default, t as icon_arrow_down_default, tt as _attr_style, u as icon_back_default, ut as _el_resume, v as diffTreeOpen, vt as _html, wt as _scope_id, x as setDiffScope, xt as _peek_scope_id, z as iconBtnRow } from "./_BVHQZ1Ks.js";
|
|
2
2
|
//#region src/client/router.ts
|
|
3
3
|
function urlFor(r) {
|
|
4
4
|
if (r.view === "settings") return "/settings";
|
|
@@ -242,8 +242,8 @@ function treeDirs(files) {
|
|
|
242
242
|
};
|
|
243
243
|
return build(root, "", "", -1);
|
|
244
244
|
}
|
|
245
|
-
var treeToggle = "
|
|
246
|
-
var pageTitle = "
|
|
245
|
+
var treeToggle = "_fA _3 _j";
|
|
246
|
+
var pageTitle = "_fH _bA";
|
|
247
247
|
//#endregion
|
|
248
248
|
//#region src/tags/diff-send.marko
|
|
249
249
|
var diff_send_default = _template("j", (input) => {
|
|
@@ -253,7 +253,7 @@ var diff_send_default = _template("j", (input) => {
|
|
|
253
253
|
let sendTarget = null;
|
|
254
254
|
const sessions = input.sessions || [];
|
|
255
255
|
const sendPick = sessions.some((s) => s.id === sendTarget) ? sendTarget : sessions[0]?.id ?? null;
|
|
256
|
-
_html(`<span${_attr_class("
|
|
256
|
+
_html(`<span${_attr_class("_gC")}><button type=button${_attr_class("_o")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
|
|
257
257
|
_if(() => {
|
|
258
258
|
if (sessions.length === 1) {
|
|
259
259
|
const $scope1_id = _scope_id();
|
|
@@ -263,11 +263,11 @@ var diff_send_default = _template("j", (input) => {
|
|
|
263
263
|
return 0;
|
|
264
264
|
} else if (sessions.length) {
|
|
265
265
|
const $scope2_id = _scope_id();
|
|
266
|
-
_html(`<span${_attr_class("
|
|
266
|
+
_html(`<span${_attr_class("_gD")}><button type=button${_attr_class(["_p", "_gE"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
|
|
267
267
|
_attr_select_value($scope2_id, "d", sendTarget, _resume((_new_sendTarget) => {
|
|
268
268
|
sendTarget = _new_sendTarget;
|
|
269
269
|
}, "j0", $scope2_id), () => {
|
|
270
|
-
_html(`<select${_attr_class("
|
|
270
|
+
_html(`<select${_attr_class("_gF")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
|
|
271
271
|
_for_of(sessions, (s) => {
|
|
272
272
|
const $scope3_id = _scope_id();
|
|
273
273
|
_html(`<option${_attr_option_value(s.id)}>${_escape(s.title || s.agent)}${_el_resume($scope3_id, "b", $sg__input_sessions)}</option>${_el_resume($scope3_id, "a", $sg__input_sessions)}`);
|
|
@@ -1849,9 +1849,9 @@ var diff_find_default = _template("i", (input) => {
|
|
|
1849
1849
|
el.select();
|
|
1850
1850
|
}, 0);
|
|
1851
1851
|
}, "i5", $scope0_id);
|
|
1852
|
-
_html(`<div${_attr_class(["
|
|
1852
|
+
_html(`<div${_attr_class(["_gH", !open && "_gG"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
|
|
1853
1853
|
type(v);
|
|
1854
|
-
}, "i0", $scope0_id))}${_attr_class(findInput)} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in review" aria-label="Find in review">${_el_resume($scope0_id, "b")}<span${_attr_class("
|
|
1854
|
+
}, "i0", $scope0_id))}${_attr_class(findInput)} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in review" aria-label="Find in review">${_el_resume($scope0_id, "b")}<span${_attr_class("_gK")}>${open && (query || "").trim() ? hits.length ? `${_escape(`${at + 1}`)}/${_escape(`${hits.length}`)}` : "0/0" : ""}${_el_resume($scope0_id, "d")}</span><button type=button${_attr_class(findIconBtn)} title="Previous match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>`);
|
|
1855
1855
|
icon_arrow_up_default({ size: 14 });
|
|
1856
1856
|
_html(`</button>${_el_resume($scope0_id, "e")}<button type=button${_attr_class(findIconBtn)} title="Next match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>`);
|
|
1857
1857
|
icon_arrow_down_default({ size: 14 });
|
|
@@ -1894,7 +1894,7 @@ var diff_find_default = _template("i", (input) => {
|
|
|
1894
1894
|
//#endregion
|
|
1895
1895
|
//#region src/client/branch-label.ts
|
|
1896
1896
|
/** Fallback label for a workspace branch when the workspace name is not to
|
|
1897
|
-
* hand: `
|
|
1897
|
+
* hand: `alice-laptop-checkout-4f1hei` → `alice-laptop-checkout`.
|
|
1898
1898
|
*
|
|
1899
1899
|
* Deliberately only drops the trailing id. The branch is
|
|
1900
1900
|
* `{user}-{host}-{slug}-{id}` (server/config.ts `branchPrefix`), and both
|
|
@@ -1952,9 +1952,9 @@ function shortBranch(name, wsBranch = "", wsName = "") {
|
|
|
1952
1952
|
}
|
|
1953
1953
|
return shortHeadFallback(head);
|
|
1954
1954
|
}
|
|
1955
|
-
var repoWorktree = "
|
|
1956
|
-
var repoTitle = "
|
|
1957
|
-
var path = "
|
|
1955
|
+
var repoWorktree = "_h3 _w";
|
|
1956
|
+
var repoTitle = "_h9 _v";
|
|
1957
|
+
var path = "_ip __";
|
|
1958
1958
|
//#endregion
|
|
1959
1959
|
//#region src/tags/icons/icon-chevron-down.marko
|
|
1960
1960
|
var icon_chevron_down_default = _template("T", (input) => {
|
|
@@ -2090,14 +2090,14 @@ var review_section_default = _template("w", (input) => {
|
|
|
2090
2090
|
const newCount = input.files.filter((f) => f.changedSince).length;
|
|
2091
2091
|
const compare$1 = reviewCompareLabel(repo.pr?.baseRefName || repo.base, repo.pr?.headRefName || repo.branch, input.workspaceBranch, input.workspaceName);
|
|
2092
2092
|
const prTitle = repo.pr ? `${repo.pr.title}: ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}` : "";
|
|
2093
|
-
_html(`<section${_attr_class("
|
|
2093
|
+
_html(`<section${_attr_class("_hZ")}${repo.pr ? _attr("data-pr", `${repo.worktree}/${repo.pr.number}`) : ""}${_attr("hidden", !shownCount && !repo.pr && input.findHit?.repo !== repo.id)}><div${_attr_class(["_h0", { ["_h1"]: input.collapsible && input.collapsed }])}>`);
|
|
2094
2094
|
_if(() => {
|
|
2095
2095
|
if (input.collapsible) {
|
|
2096
2096
|
const $scope1_id = _scope_id();
|
|
2097
|
-
_html(`<button type=button${_attr_class("
|
|
2098
|
-
"
|
|
2099
|
-
!input.collapsed && "
|
|
2100
|
-
input.expanding && "
|
|
2097
|
+
_html(`<button type=button${_attr_class("_h2")} aria-expanded=${!input.collapsed ? "true" : "false"} aria-busy=${input.expanding ? "true" : "false"}${input.collapsed ? _attr("title", `Show ${countLabel} files`) : " title=\"Hide files\""}><span${_attr_class([
|
|
2098
|
+
"_im",
|
|
2099
|
+
!input.collapsed && "_in",
|
|
2100
|
+
input.expanding && "_io"
|
|
2101
2101
|
])} aria-hidden=true>`);
|
|
2102
2102
|
_if(() => {
|
|
2103
2103
|
if (input.collapsed) {
|
|
@@ -2136,14 +2136,14 @@ var review_section_default = _template("w", (input) => {
|
|
|
2136
2136
|
return 1;
|
|
2137
2137
|
}
|
|
2138
2138
|
}, $scope0_id, "d", $sg__input_repo, $sg__input_repo, $sg__input_repo__OR__input_files__OR__input_shownKeys__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_collapsible__OR__input_collapsed__OR__input_localDiffers__OR__input_onlyNew__OR__input_opened);
|
|
2139
|
-
_html(`<span${_attr_class("
|
|
2139
|
+
_html(`<span${_attr_class("_h_")}${_attr("title", `${compare$1.title} · ${repo.head.slice(0, 7)}…${repo.baseSha.slice(0, 7)}`)}><span${_attr_class(["_L", "_ia"])}>${_escape(compare$1.base)}${_el_resume($scope0_id, "g", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span><span${_attr_class(["_N", "_ic"])} aria-hidden=true>vs</span><span${_attr_class(["_L", "_ib"])}>${_escape(compare$1.head)}${_el_resume($scope0_id, "j", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
|
|
2140
2140
|
_if(() => {
|
|
2141
2141
|
if (compare$1.topic) {
|
|
2142
2142
|
const $scope16_id = _scope_id();
|
|
2143
2143
|
_html(`<span${_attr_class([
|
|
2144
2144
|
"_L",
|
|
2145
2145
|
tone.accent,
|
|
2146
|
-
"
|
|
2146
|
+
"_id"
|
|
2147
2147
|
])}>${_escape(compare$1.topic)}${_el_resume($scope16_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}</span>`);
|
|
2148
2148
|
$si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && writeScope($scope16_id, { _: _scope_with_id($scope0_id) });
|
|
2149
2149
|
return 0;
|
|
@@ -2156,7 +2156,7 @@ var review_section_default = _template("w", (input) => {
|
|
|
2156
2156
|
_html(`<button type=button${_attr_class([
|
|
2157
2157
|
"_L",
|
|
2158
2158
|
tone.warn,
|
|
2159
|
-
"
|
|
2159
|
+
"_ie"
|
|
2160
2160
|
])}${_attr("title", `origin/${repo.pr.headRefName} ${repo.head} · GitHub ${repo.pr.headRefOid}. Reload to re-ask GitHub`)}${_attr("disabled", input.loading)}>behind GitHub ${_sep($sg__input_repo)}${_escape(shortSha(repo.head, 7))}${_el_resume($scope2_id, "b", $sg__input_repo)} → ${_sep($sg__input_repo)}${_escape(shortSha(repo.pr.headRefOid, 7))}${_el_resume($scope2_id, "c", $sg__input_repo)}</button>${_el_resume($scope2_id, "a")}`);
|
|
2161
2161
|
_script($scope2_id, "w10");
|
|
2162
2162
|
writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
|
|
@@ -2166,7 +2166,7 @@ var review_section_default = _template("w", (input) => {
|
|
|
2166
2166
|
_if(() => {
|
|
2167
2167
|
if (repo.contained && input.files.length) {
|
|
2168
2168
|
const $scope13_id = _scope_id();
|
|
2169
|
-
_html(`<span${_attr_class(["_L", "
|
|
2169
|
+
_html(`<span${_attr_class(["_L", "_ie"])}${_attr("title", `${repo.pr ? `#${repo.pr.number}` : repo.branch} is already in ${repo.base}; showing the working tree only`)}>already in ${_sep($sg__input_repo)}${_escape(repo.base)}${_el_resume($scope13_id, "b", $sg__input_repo)}</span>${_el_resume($scope13_id, "a", $sg__input_repo)}`);
|
|
2170
2170
|
_serialize_if($scope0_reason, 0) && writeScope($scope13_id, { _: $si__input_repo && _scope_with_id($scope0_id) });
|
|
2171
2171
|
return 0;
|
|
2172
2172
|
}
|
|
@@ -2174,16 +2174,16 @@ var review_section_default = _template("w", (input) => {
|
|
|
2174
2174
|
_if(() => {
|
|
2175
2175
|
if (input.localDiffers) {
|
|
2176
2176
|
const $scope3_id = _scope_id();
|
|
2177
|
-
_html(`<span${_attr_class(["_L", "
|
|
2177
|
+
_html(`<span${_attr_class(["_L", "_ie"])}${_attr("title", `This view is ${shortSha(repo.head)} (${repo.pr.headRefName}); checked out is ${shortSha(repo.localHead)} (${repo.branch})`)}>local ${_sep($sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}${_escape(shortBranch(repo.branch, input.workspaceBranch, input.workspaceName))}${_el_resume($scope3_id, "b", $sg__input_repo__OR__input_workspaceBranch__OR__input_workspaceName)}${_sep($sg__input_repo)}${_escape(shortSha(repo.localHead, 7))}${_el_resume($scope3_id, "c", $sg__input_repo)}</span>${_el_resume($scope3_id, "a", $sg__input_repo)}`);
|
|
2178
2178
|
$si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_localDiffers && writeScope($scope3_id, { _: $si__input_repo__OR__input_workspaceBranch__OR__input_workspaceName && _scope_with_id($scope0_id) });
|
|
2179
2179
|
return 0;
|
|
2180
2180
|
}
|
|
2181
2181
|
}, $scope0_id, "n", _serialize_guard($scope0_reason, 23), _serialize_guard($scope0_reason, 38), $sg__input_repo__OR__input_files__OR__input_shownKeys__OR__input_workspaceBranch__OR__input_workspaceName__OR__input_collapsible__OR__input_collapsed__OR__input_localDiffers__OR__input_onlyNew__OR__input_opened, 0, 1);
|
|
2182
|
-
_html(`<span${_attr_class("
|
|
2182
|
+
_html(`<span${_attr_class("_h4")}><span>${_escape(countLabel)}${_el_resume($scope0_id, "p", $sg__input_files__OR__input_shownKeys)} file${_sep($sg__input_files__OR__input_shownKeys)}${countLabel === 1 ? "" : "s"}${_el_resume($scope0_id, "q", $sg__input_files__OR__input_shownKeys)}</span>`);
|
|
2183
2183
|
_if(() => {
|
|
2184
2184
|
if (stats.additions || stats.deletions) {
|
|
2185
2185
|
const $scope15_id = _scope_id();
|
|
2186
|
-
_html(`<span${_attr_class("
|
|
2186
|
+
_html(`<span${_attr_class("_h5")}>+${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.additions)}${_el_resume($scope15_id, "b", $sg__input_files__OR__input_shownKeys)}</span><span${_attr_class("_h6")}>−${_sep($sg__input_files__OR__input_shownKeys)}${_escape(stats.deletions)}${_el_resume($scope15_id, "d", $sg__input_files__OR__input_shownKeys)}</span>`);
|
|
2187
2187
|
$si__input_files__OR__input_shownKeys && writeScope($scope15_id, { _: _scope_with_id($scope0_id) });
|
|
2188
2188
|
return 0;
|
|
2189
2189
|
}
|
|
@@ -2191,7 +2191,7 @@ var review_section_default = _template("w", (input) => {
|
|
|
2191
2191
|
_if(() => {
|
|
2192
2192
|
if (newCount || input.onlyNew) {
|
|
2193
2193
|
const $scope4_id = _scope_id();
|
|
2194
|
-
_html(`<button type=button${_attr_class(["
|
|
2194
|
+
_html(`<button type=button${_attr_class(["_h8", { ["_h7"]: input.onlyNew }])} aria-pressed=${input.onlyNew ? "true" : "false"} title=${input.onlyNew ? "\"Show every file\"" : "\"Show only files changed since your last visit\""}>${_escape(newCount)}${_el_resume($scope4_id, "b", $sg__input_files)} new</button>${_el_resume($scope4_id, "a")}`);
|
|
2195
2195
|
_script($scope4_id, "w11");
|
|
2196
2196
|
writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
|
|
2197
2197
|
return 0;
|
|
@@ -2201,7 +2201,7 @@ var review_section_default = _template("w", (input) => {
|
|
|
2201
2201
|
_if(() => {
|
|
2202
2202
|
if (!input.collapsible || !input.collapsed || input.opened) {
|
|
2203
2203
|
const $scope5_id = _scope_id();
|
|
2204
|
-
_html(`<div${_attr_class("
|
|
2204
|
+
_html(`<div${_attr_class("_ig")}${_attr("hidden", input.collapsible && input.collapsed)}>`);
|
|
2205
2205
|
_for_of(input.files, (file$1) => {
|
|
2206
2206
|
const $scope6_id = _scope_id();
|
|
2207
2207
|
const $for_content__file__closures = /* @__PURE__ */ new Set();
|
|
@@ -2214,14 +2214,14 @@ var review_section_default = _template("w", (input) => {
|
|
|
2214
2214
|
_html(`<details${_attr_details_or_dialog_open($scope6_id, "a", expanded, _resume(function(open) {
|
|
2215
2215
|
input.onFileToggle(file$1.key, open);
|
|
2216
2216
|
}, "w0", $scope6_id))}${_attr_class([
|
|
2217
|
-
"
|
|
2218
|
-
forceNear && "
|
|
2219
|
-
input.findHit?.key === file$1.key && "
|
|
2220
|
-
])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("
|
|
2217
|
+
"_ih",
|
|
2218
|
+
forceNear && "_ii",
|
|
2219
|
+
input.findHit?.key === file$1.key && "_hX"
|
|
2220
|
+
])}${_attr("data-key", file$1.key)}${_attr("hidden", !input.shownKeys.has(file$1.key))}><summary${_attr_class("_ik")}><span${_attr_class("_9")}${_attr("data-status", file$1.status)}>${_escape(file$1.status)}${_el_resume($scope6_id, "d", $sg__input_files)}</span>${_el_resume($scope6_id, "c", $sg__input_files)}<span${_attr_class([path, input.findHit?.key === file$1.key && input.findHit.line < 1 && "_hY"])}${_attr("title", file$1.path)}><bdi>${_escape(file$1.path)}${_el_resume($scope6_id, "f", $sg__input_files)}</bdi></span>${_el_resume($scope6_id, "e", _serialize_guard($scope0_reason, 19))}`);
|
|
2221
2221
|
_if(() => {
|
|
2222
2222
|
if (file$1.changedSince) {
|
|
2223
2223
|
const $scope20_id = _scope_id();
|
|
2224
|
-
_html(`<span${_attr_class(["_y", "
|
|
2224
|
+
_html(`<span${_attr_class(["_y", "_if"])} title="Changed since your last visit"></span>`);
|
|
2225
2225
|
$si__input_files && writeScope($scope20_id, {});
|
|
2226
2226
|
return 0;
|
|
2227
2227
|
}
|
|
@@ -2241,8 +2241,8 @@ var review_section_default = _template("w", (input) => {
|
|
|
2241
2241
|
const $scope14_id = _scope_id();
|
|
2242
2242
|
_html(`<button type=button${_attr_class([
|
|
2243
2243
|
iconBtnXs,
|
|
2244
|
-
"
|
|
2245
|
-
{ ["
|
|
2244
|
+
"_ir",
|
|
2245
|
+
{ ["_is"]: wholeFiles.has(file$1.key) }
|
|
2246
2246
|
])} title=${wholeFiles.has(file$1.key) ? "\"Show changes only\"" : "\"Show whole file\""} aria-label=${wholeFiles.has(file$1.key) ? "\"Show changes only\"" : "\"Show whole file\""} aria-pressed=${wholeFiles.has(file$1.key) ? "true" : "false"}>`);
|
|
2247
2247
|
_if(() => {
|
|
2248
2248
|
if (wholeFiles.has(file$1.key)) {
|
|
@@ -2269,17 +2269,17 @@ var review_section_default = _template("w", (input) => {
|
|
|
2269
2269
|
_if(() => {
|
|
2270
2270
|
if (file$1.binary) {
|
|
2271
2271
|
const $scope23_id = _scope_id();
|
|
2272
|
-
_html(`<p${_attr_class(["
|
|
2272
|
+
_html(`<p${_attr_class(["_iq", "_ij"])}>binary file</p>`);
|
|
2273
2273
|
$si__input_files__OR__input_collapsedFiles && writeScope($scope23_id, {});
|
|
2274
2274
|
return 0;
|
|
2275
2275
|
} else if (file$1.tooLarge) {
|
|
2276
2276
|
const $scope24_id = _scope_id();
|
|
2277
|
-
_html(`<p${_attr_class(["
|
|
2277
|
+
_html(`<p${_attr_class(["_iq", "_ij"])}>file too large to display</p>`);
|
|
2278
2278
|
$si__input_files__OR__input_collapsedFiles && writeScope($scope24_id, {});
|
|
2279
2279
|
return 1;
|
|
2280
2280
|
} else if (file$1.old == null && file$1.new == null) {
|
|
2281
2281
|
const $scope25_id = _scope_id();
|
|
2282
|
-
_html(`<p${_attr_class(["
|
|
2282
|
+
_html(`<p${_attr_class(["_iq", "_ij"])}>file could not be read</p>`);
|
|
2283
2283
|
$si__input_files__OR__input_collapsedFiles && writeScope($scope25_id, {});
|
|
2284
2284
|
return 2;
|
|
2285
2285
|
} else if (expanded) {
|
|
@@ -2287,7 +2287,7 @@ var review_section_default = _template("w", (input) => {
|
|
|
2287
2287
|
_if(() => {
|
|
2288
2288
|
if (!forceNear) {
|
|
2289
2289
|
const $scope8_id = _scope_id();
|
|
2290
|
-
_html(`<div${_attr_class("
|
|
2290
|
+
_html(`<div${_attr_class("_il")}></div>${_el_resume($scope8_id, "a")}`);
|
|
2291
2291
|
_script($scope8_id, "w13");
|
|
2292
2292
|
_subscribe($si__input && $input__closures, writeScope($scope8_id, {}));
|
|
2293
2293
|
return 0;
|
|
@@ -2295,7 +2295,7 @@ var review_section_default = _template("w", (input) => {
|
|
|
2295
2295
|
const $scope9_id = _scope_id();
|
|
2296
2296
|
const $childScope = _peek_scope_id();
|
|
2297
2297
|
diff_file_default({
|
|
2298
|
-
class: "
|
|
2298
|
+
class: "_ij",
|
|
2299
2299
|
file: file$1,
|
|
2300
2300
|
comments: fileComments,
|
|
2301
2301
|
draft: input.draft && input.draft.key === file$1.key ? input.draft : null,
|
|
@@ -3402,11 +3402,11 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3402
3402
|
collapsedRepos = /* @__PURE__ */ new Set([...collapsedRepos, id]);
|
|
3403
3403
|
}
|
|
3404
3404
|
}, "m35", $scope0_id);
|
|
3405
|
-
_html(`<div${_attr_class("
|
|
3405
|
+
_html(`<div${_attr_class("_fx")}><div${_attr_class("_fC")}><div${_attr_class("_fD")}><div${_attr_class(["_fN", { ["_fM"]: !comments.length }])}>`);
|
|
3406
3406
|
_if(() => {
|
|
3407
3407
|
if (input.onExit) {
|
|
3408
3408
|
const $scope1_id = _scope_id();
|
|
3409
|
-
_html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "
|
|
3409
|
+
_html(`<a${_attr("href", `/w/${input.workspaceId}`)}${_attr_class([iconBtnRow, "_fE"])} title="Back to terminal (Esc)">`);
|
|
3410
3410
|
icon_back_default({ size: 14 });
|
|
3411
3411
|
_html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 1))}`);
|
|
3412
3412
|
_serialize_if($scope0_reason, 0) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 1) && _scope_with_id($scope0_id) });
|
|
@@ -3417,7 +3417,7 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3417
3417
|
_if(() => {
|
|
3418
3418
|
if (comments.length) {
|
|
3419
3419
|
const $scope5_id = _scope_id();
|
|
3420
|
-
_html(`<span${_attr_class("
|
|
3420
|
+
_html(`<span${_attr_class("_fG")}>${_escape(comments.length)}${_el_resume($scope5_id, "b")} comment<!>${comments.length === 1 ? "" : "s"}${_el_resume($scope5_id, "c")}</span>`);
|
|
3421
3421
|
writeScope($scope5_id, {});
|
|
3422
3422
|
return 0;
|
|
3423
3423
|
}
|
|
@@ -3425,7 +3425,7 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3425
3425
|
_if(() => {
|
|
3426
3426
|
if (comments.length) {
|
|
3427
3427
|
const $scope2_id = _scope_id();
|
|
3428
|
-
_html(`<span${_attr_class("
|
|
3428
|
+
_html(`<span${_attr_class("_fF")}>`);
|
|
3429
3429
|
_set_serialize_reason(_serialize_guard($scope0_reason, 5));
|
|
3430
3430
|
const $childScope = _peek_scope_id();
|
|
3431
3431
|
diff_send_default({
|
|
@@ -3438,14 +3438,14 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3438
3438
|
return 0;
|
|
3439
3439
|
}
|
|
3440
3440
|
}, $scope0_id, "h", 1, 1, 1, 0, 1);
|
|
3441
|
-
_html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("
|
|
3441
|
+
_html(`</div>${_el_resume($scope0_id, "d")}<div${_attr_class("_fB")}>`);
|
|
3442
3442
|
_if(() => {
|
|
3443
3443
|
if (hasFiles) {
|
|
3444
3444
|
const $scope12_id = _scope_id();
|
|
3445
3445
|
_html(`<button${_attr_class([
|
|
3446
3446
|
treeToggle,
|
|
3447
|
-
"
|
|
3448
|
-
{ ["
|
|
3447
|
+
"_fz",
|
|
3448
|
+
{ ["_fy"]: treeOpen }
|
|
3449
3449
|
])} title=${treeOpen ? "\"Hide file tree\"" : "\"Show file tree\""}>`);
|
|
3450
3450
|
icon_sidebar_default({ size: 14 });
|
|
3451
3451
|
_html(`</button>${_el_resume($scope12_id, "a")}`);
|
|
@@ -3454,7 +3454,7 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3454
3454
|
return 0;
|
|
3455
3455
|
}
|
|
3456
3456
|
}, $scope0_id, "j", 1, 1, 1, 0, 1);
|
|
3457
|
-
_html(`<button${_attr_class([iconBtnRow, "
|
|
3457
|
+
_html(`<button${_attr_class([iconBtnRow, "_fz"])} title="Refresh diff"${_attr("disabled", loading)}>`);
|
|
3458
3458
|
_set_serialize_reason(1);
|
|
3459
3459
|
const $childScope2 = _peek_scope_id();
|
|
3460
3460
|
icon_refresh_default({
|
|
@@ -3465,19 +3465,19 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3465
3465
|
_if(() => {
|
|
3466
3466
|
if (hasFiles) {
|
|
3467
3467
|
const $scope13_id = _scope_id();
|
|
3468
|
-
_html(`<button${_attr_class(["_o", "
|
|
3468
|
+
_html(`<button${_attr_class(["_o", "_fW"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope13_id, "b")})</button>${_el_resume($scope13_id, "a")}`);
|
|
3469
3469
|
_script($scope13_id, "m55");
|
|
3470
3470
|
writeScope($scope13_id, {});
|
|
3471
3471
|
return 0;
|
|
3472
3472
|
}
|
|
3473
3473
|
}, $scope0_id, "m", 1, 1, 1, 0, 1);
|
|
3474
|
-
_html(`<span${_attr_class(["_m", "
|
|
3474
|
+
_html(`<span${_attr_class(["_m", "_fO"])}>`);
|
|
3475
3475
|
_attr_select_value($scope0_id, "o", scope, _resume(function(v) {
|
|
3476
3476
|
setScope(v);
|
|
3477
3477
|
}, "m0", $scope0_id), () => {
|
|
3478
|
-
_html(`<select${_attr_class(["_n", "
|
|
3478
|
+
_html(`<select${_attr_class(["_n", "_fP"])} aria-label="Review scope"${_attr("disabled", loading)}><option${_attr_option_value("committed")}>Committed</option><option${_attr_option_value("working")}>Working tree</option><option${_attr_option_value("dirty")}>Uncommitted</option></select>`);
|
|
3479
3479
|
});
|
|
3480
|
-
_html(`${_el_resume($scope0_id, "o")}</span><div${_attr_class(["
|
|
3480
|
+
_html(`${_el_resume($scope0_id, "o")}</span><div${_attr_class(["_fK", { ["_fJ"]: !findOpen }])}>`);
|
|
3481
3481
|
_set_serialize_reason(2);
|
|
3482
3482
|
const $childScope3 = _peek_scope_id();
|
|
3483
3483
|
diff_find_default({
|
|
@@ -3498,8 +3498,8 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3498
3498
|
const $scope14_id = _scope_id();
|
|
3499
3499
|
_html(`<button${_attr_class([
|
|
3500
3500
|
iconBtnRow,
|
|
3501
|
-
"
|
|
3502
|
-
"
|
|
3501
|
+
"_fI",
|
|
3502
|
+
"_fz"
|
|
3503
3503
|
])} title="Find in review (⌘/Ctrl+F)" aria-label="Find in review"${_attr("hidden", findOpen)}>`);
|
|
3504
3504
|
icon_search_default({ size: 14 });
|
|
3505
3505
|
_html(`</button>${_el_resume($scope14_id, "a")}`);
|
|
@@ -3508,7 +3508,7 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3508
3508
|
return 0;
|
|
3509
3509
|
}
|
|
3510
3510
|
}, $scope0_id, "r", 1, 1, 1, 0, 1);
|
|
3511
|
-
_html(`</div></div><div${_attr_class("
|
|
3511
|
+
_html(`</div></div><div${_attr_class("_fL")} data-diff-main>`);
|
|
3512
3512
|
_if(() => {
|
|
3513
3513
|
if (error) {
|
|
3514
3514
|
const $scope6_id = _scope_id();
|
|
@@ -3531,7 +3531,7 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3531
3531
|
_if(() => {
|
|
3532
3532
|
if (!repos && loading) {
|
|
3533
3533
|
const $scope15_id = _scope_id();
|
|
3534
|
-
_html(`<div${_attr_class("
|
|
3534
|
+
_html(`<div${_attr_class("_fR")} aria-hidden=true><div${_attr_class(["_fS", "_fT"])}></div><div${_attr_class(["_fS", "_fU"])}></div><div${_attr_class(["_fS", "_fV"])}></div><div${_attr_class(["_fS", "_fU"])}></div><div${_attr_class(["_fS", "_fV"])}></div></div>`);
|
|
3535
3535
|
writeScope($scope15_id, {});
|
|
3536
3536
|
return 0;
|
|
3537
3537
|
}
|
|
@@ -3562,12 +3562,12 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3562
3562
|
_if(() => {
|
|
3563
3563
|
if (repos && !allFiles.length) {
|
|
3564
3564
|
const $scope11_id = _scope_id();
|
|
3565
|
-
_html(`<p${_attr_class("
|
|
3565
|
+
_html(`<p${_attr_class("_bR")}>${repoList.some((r) => r.unborn) ? "No commits yet." : scope === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope11_id, "b")}</p>`);
|
|
3566
3566
|
writeScope($scope11_id, {});
|
|
3567
3567
|
return 0;
|
|
3568
3568
|
} else if (repos && !shownFiles.length && !findState.hit) {
|
|
3569
3569
|
const $scope8_id = _scope_id();
|
|
3570
|
-
_html(`<p${_attr_class("
|
|
3570
|
+
_html(`<p${_attr_class("_bR")}>${findState.query.trim() ? "No matches in review." : onlyNew && !fileFilter ? "Nothing changed since your last visit." : `No files match "${_escape(`${fileFilter}`)}".`}${_el_resume($scope8_id, "b")}</p>`);
|
|
3571
3571
|
writeScope($scope8_id, {});
|
|
3572
3572
|
return 1;
|
|
3573
3573
|
}
|