@dylanpiercey/work 0.0.121 → 0.0.123
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/bin/work.mjs +61 -17
- package/dist/_8GaDFTzQ.js +2 -0
- package/dist/{_DJyHc1w-.js → _930ti7l4.js} +4 -4
- package/dist/{_DnaZVHJ7.js → _AItLA3Th.js} +29 -29
- package/dist/{_CfwTkTbL.js → _BJcBOXUi.js} +2 -2
- package/dist/_CrVv317N.js +2 -0
- package/dist/{_Cr71Xd0d.js → _DOBRRnfU.js} +13 -3
- package/dist/{_CivNK9fo.js → _Dxspyv-X.js} +4 -4
- package/dist/_iX5oUHA_.js +2 -0
- package/dist/index.mjs +195 -190
- package/dist/public/assets/{_QMVFINxi.js → _1C01L6H8.js} +1 -1
- package/dist/public/assets/_1C01L6H8.js.br +0 -0
- package/dist/public/assets/{_B_dMglA92.js → _1KTQ10Sa2.js} +1 -1
- package/dist/public/assets/_1KTQ10Sa2.js.br +0 -0
- package/dist/public/assets/{_DgDEdxEu.js → _9ugZ8sFU.js} +1 -1
- package/dist/public/assets/_9ugZ8sFU.js.br +0 -0
- package/dist/public/assets/{_J6xlcydH2.js → _B2oquPMV2.js} +1 -1
- package/dist/public/assets/_B2oquPMV2.js.br +0 -0
- package/dist/public/assets/{_XCJLLGxV.js → _B3u522i6.js} +1 -1
- package/dist/public/assets/_B3u522i6.js.br +0 -0
- package/dist/public/assets/{_CJHqzl--2.js → _B79q4Iep2.js} +1 -1
- package/dist/public/assets/_B79q4Iep2.js.br +0 -0
- package/dist/public/assets/{_BlLuOKRT.js → _B7yMQpNb.js} +1 -1
- package/dist/public/assets/_B7yMQpNb.js.br +0 -0
- package/dist/public/assets/{_B9e51G1K.js → _B8-2v5ah.js} +1 -1
- package/dist/public/assets/_B8-2v5ah.js.br +0 -0
- package/dist/public/assets/{_YmJopjX92.js → _B9J4D40T2.js} +1 -1
- package/dist/public/assets/_B9J4D40T2.js.br +0 -0
- package/dist/public/assets/{_B0dZ7_qK.js → _BBdXq0au.js} +1 -1
- package/dist/public/assets/_BBdXq0au.js.br +0 -0
- package/dist/public/assets/{_BjIMoOV-2.js → _BFXVaaZZ2.js} +1 -1
- package/dist/public/assets/_BFXVaaZZ2.js.br +0 -0
- package/dist/public/assets/{_sSWgnHeU.js → _BIniTggd.js} +1 -1
- package/dist/public/assets/_BIniTggd.js.br +5 -0
- package/dist/public/assets/{_D7cQLLGK2.js → _BLKYt0dH2.js} +1 -1
- package/dist/public/assets/_BLKYt0dH2.js.br +0 -0
- package/dist/public/assets/{_BZWlvMSJ.js → _BNQK17cx.js} +1 -1
- package/dist/public/assets/_BNQK17cx.js.br +0 -0
- package/dist/public/assets/{_DBoABI85.js → _BPacLsJZ.js} +1 -1
- package/dist/public/assets/_BPacLsJZ.js.br +0 -0
- package/dist/public/assets/{_BsNKabYu2.js → _BQvL7p-H2.js} +1 -1
- package/dist/public/assets/_BQvL7p-H2.js.br +0 -0
- package/dist/public/assets/{_BH015W2i2.js → _BTyLW7g22.js} +1 -1
- package/dist/public/assets/_BTyLW7g22.js.br +0 -0
- package/dist/public/assets/{_CUOao_Hj.js → _BV3wnaUQ.js} +1 -1
- package/dist/public/assets/_BV3wnaUQ.js.br +0 -0
- package/dist/public/assets/{_DXHf4WHs2.js → _BW0vrnJ02.js} +1 -1
- package/dist/public/assets/_BW0vrnJ02.js.br +0 -0
- package/dist/public/assets/{_CPX0D-my.js → _B_zXuzSk.js} +1 -1
- package/dist/public/assets/_B_zXuzSk.js.br +0 -0
- package/dist/public/assets/{_Ds0Qa0YX.js → _BeTQOqQK.js} +1 -1
- package/dist/public/assets/_BeTQOqQK.js.br +0 -0
- package/dist/public/assets/{_DyUvL09k2.js → _Bf-zNqvW2.js} +1 -1
- package/dist/public/assets/_Bf-zNqvW2.js.br +0 -0
- package/dist/public/assets/{_BUOWar32.js → _Bh10nSHk.js} +1 -1
- package/dist/public/assets/_Bh10nSHk.js.br +0 -0
- package/dist/public/assets/{_9dJ8BnyZ2.js → _Bhx2xsqn2.js} +1 -1
- package/dist/public/assets/_Bhx2xsqn2.js.br +0 -0
- package/dist/public/assets/{_CFBaZNUT.js → _BozRJAkt.js} +1 -1
- package/dist/public/assets/_BozRJAkt.js.br +0 -0
- package/dist/public/assets/{_CCNhM32c2.js → _Bp422VRU2.js} +1 -1
- package/dist/public/assets/_Bp422VRU2.js.br +0 -0
- package/dist/public/assets/{_CxrcWZPE.js → _Buph4MaC.js} +1 -1
- package/dist/public/assets/_Buph4MaC.js.br +0 -0
- package/dist/public/assets/{_B8ZQ8inF.js → _BvsESXeS.js} +1 -1
- package/dist/public/assets/_BvsESXeS.js.br +0 -0
- package/dist/public/assets/{_YetFhXkM.js → _BwWPg2fR.js} +1 -1
- package/dist/public/assets/_BwWPg2fR.js.br +0 -0
- package/dist/public/assets/{_BR3D4nzj2.js → _C0ILV08N2.js} +1 -1
- package/dist/public/assets/_C0ILV08N2.js.br +0 -0
- package/dist/public/assets/{_0L2K8sFq2.js → _C3-LfntB2.js} +1 -1
- package/dist/public/assets/_C3-LfntB2.js.br +0 -0
- package/dist/public/assets/{_CdtuhZSc.js → _C3WvBCQb.js} +1 -1
- package/dist/public/assets/_C3WvBCQb.js.br +0 -0
- package/dist/public/assets/{_DNcd1xtp.js → _C6G2Teqe.js} +1 -1
- package/dist/public/assets/_C6G2Teqe.js.br +0 -0
- package/dist/public/assets/{_Y-bTh0dW.js → _C9ik2q2w.js} +1 -1
- package/dist/public/assets/_C9ik2q2w.js.br +0 -0
- package/dist/public/assets/{_CBUJNdeq2.js → _C9pGaByT2.js} +1 -1
- package/dist/public/assets/_C9pGaByT2.js.br +0 -0
- package/dist/public/assets/{_DqLib98x.js → _CAVwrN0f.js} +1 -1
- package/dist/public/assets/_CAVwrN0f.js.br +0 -0
- package/dist/public/assets/{_-zdUyUYM2.js → _CBd4k6AZ2.js} +1 -1
- package/dist/public/assets/_CBd4k6AZ2.js.br +0 -0
- package/dist/public/assets/{_CMGgQ-4H2.js → _CJMg3VoD2.js} +1 -1
- package/dist/public/assets/_CJMg3VoD2.js.br +0 -0
- package/dist/public/assets/{_CvA5IOAW2.js → _CKapyBeI2.js} +1 -1
- package/dist/public/assets/_CKapyBeI2.js.br +0 -0
- package/dist/public/assets/{_Beb6Lb1w.js → _COt541Xf.js} +1 -1
- package/dist/public/assets/_COt541Xf.js.br +0 -0
- package/dist/public/assets/{_BNIilCsC.js → _CRLl3VEd.js} +1 -1
- package/dist/public/assets/_CRLl3VEd.js.br +0 -0
- package/dist/public/assets/{_CZfap_Dj.js → _CTbIxoLY.js} +1 -1
- package/dist/public/assets/_CTbIxoLY.js.br +0 -0
- package/dist/public/assets/{_B5nrQZIq2.js → _CYK6bapW2.js} +1 -1
- package/dist/public/assets/_CYK6bapW2.js.br +0 -0
- package/dist/public/assets/{_BHjcfVXB.js → _CZ1guNTV.js} +6 -6
- package/dist/public/assets/_CZ1guNTV.js.br +0 -0
- package/dist/public/assets/{_CwZYmUdt2.js → _C_6NOEKJ2.js} +1 -1
- package/dist/public/assets/{_mbzaOqik.js → _CdjreNlJ.js} +1 -1
- package/dist/public/assets/_CdjreNlJ.js.br +0 -0
- package/dist/public/assets/{_S9QQtt68.js → _Cf5Zrdti.js} +1 -1
- package/dist/public/assets/_Cf5Zrdti.js.br +0 -0
- package/dist/public/assets/{_CUVw5V4z.js → _CfJLLMWV.js} +1 -1
- package/dist/public/assets/_CfJLLMWV.js.br +0 -0
- package/dist/public/assets/{_DSIH6_Li.js → _CzvfWhEh.js} +1 -1
- package/dist/public/assets/_CzvfWhEh.js.br +0 -0
- package/dist/public/assets/{_D4u4SpiK.js → _D1A7jI1p.js} +1 -1
- package/dist/public/assets/_D1A7jI1p.js.br +0 -0
- package/dist/public/assets/{_CbNmSe5k.js → _D9nKEBYM.js} +1 -1
- package/dist/public/assets/_D9nKEBYM.js.br +0 -0
- package/dist/public/assets/{_BSWpz0dK.js → _DAv1qyFD.js} +1 -1
- package/dist/public/assets/_DAv1qyFD.js.br +0 -0
- package/dist/public/assets/{_C0OXw3Vy.js → _DG27SXxk.js} +1 -1
- package/dist/public/assets/_DG27SXxk.js.br +0 -0
- package/dist/public/assets/{_42jdam49.js → _DI5lrPqF.js} +1 -1
- package/dist/public/assets/_DI5lrPqF.js.br +0 -0
- package/dist/public/assets/{_rRtbbfKJ2.js → _DNc251EH2.js} +1 -1
- package/dist/public/assets/_DNc251EH2.js.br +0 -0
- package/dist/public/assets/{_D6CjH3JN.js → _D_abiz6o.js} +1 -1
- package/dist/public/assets/_D_abiz6o.js.br +0 -0
- package/dist/public/assets/{_DcMfCkmd.js → _DbqqEUGU.js} +1 -1
- package/dist/public/assets/_DbqqEUGU.js.br +0 -0
- package/dist/public/assets/{_CYMGOhCb.js → _DfVlmKjB.js} +1 -1
- package/dist/public/assets/_DfVlmKjB.js.br +0 -0
- package/dist/public/assets/{_CRuHDn_O2.js → _DiXam-cI2.js} +1 -1
- package/dist/public/assets/_DiXam-cI2.js.br +0 -0
- package/dist/public/assets/{_B1VuWiKK.js → _DjPFzYrA.js} +1 -1
- package/dist/public/assets/_DjPFzYrA.js.br +0 -0
- package/dist/public/assets/{_DQGTProt.js → _DlLV3Ljr.js} +1 -1
- package/dist/public/assets/_DlLV3Ljr.js.br +0 -0
- package/dist/public/assets/{_BlXwius8.js → _DlUUGQZG.js} +1 -1
- package/dist/public/assets/_DlUUGQZG.js.br +0 -0
- package/dist/public/assets/{_D-KjGTSW.js → _DnFHO_Dn.js} +5 -5
- package/dist/public/assets/_DnFHO_Dn.js.br +0 -0
- package/dist/public/assets/{_MInulccf2.js → _Dyi2Gxao2.js} +1 -1
- package/dist/public/assets/{_xOeYy_3v.js → _E9rgzIvo.js} +1 -1
- package/dist/public/assets/_E9rgzIvo.js.br +0 -0
- package/dist/public/assets/{_Bmt76eWT.js → _ReVTweDC.js} +1 -1
- package/dist/public/assets/_ReVTweDC.js.br +0 -0
- package/dist/public/assets/{_BPgL37mi2.js → _TnqcMVKx2.js} +1 -1
- package/dist/public/assets/_TnqcMVKx2.js.br +0 -0
- package/dist/public/assets/{_D_qDhyn2.js → _Upul3Ofo.js} +1 -1
- package/dist/public/assets/_Upul3Ofo.js.br +0 -0
- package/dist/public/assets/{_B03G1Nvs.js → _ZrGaJYJ6.js} +1 -1
- package/dist/public/assets/_ZrGaJYJ6.js.br +0 -0
- package/dist/public/assets/{_rMcfapaa.js → _jH6dnn_a.js} +1 -1
- package/dist/public/assets/_jH6dnn_a.js.br +0 -0
- package/dist/public/assets/{_Y8TOk1pR.js → _k9hFY1PH.js} +1 -1
- package/dist/public/assets/_k9hFY1PH.js.br +0 -0
- package/dist/public/assets/{_ClhApln3.js → _ssYg2Lbg.js} +1 -1
- package/dist/public/assets/_ssYg2Lbg.js.br +0 -0
- package/dist/public/assets/{_BRSJwfZ3.js → _stxqF0YI.js} +1 -1
- package/dist/public/assets/{_BoS5LU5l.js → _uwlWIup9.js} +1 -1
- package/dist/public/assets/_uwlWIup9.js.br +0 -0
- package/dist/public/assets/{_BSFENb4l.js → _wD1I5kuG.js} +1 -1
- package/dist/public/assets/_wD1I5kuG.js.br +0 -0
- package/dist/public/assets/{_DlhDim1D.js → _x-8ESFAf.js} +1 -1
- package/dist/public/assets/_x-8ESFAf.js.br +0 -0
- package/dist/public/assets/{app-page-BWf0w6W9.css → app-page-DXg75Hl7.css} +1 -1
- package/dist/public/assets/app-page-DXg75Hl7.css.br +0 -0
- package/dist/public/assets/{diff-view-BZaYYEDK.css → diff-view-Bi6n2ybW.css} +1 -1
- package/dist/public/assets/diff-view-Bi6n2ybW.css.br +0 -0
- package/dist/public/assets/new-CHONaddH.js +1 -0
- package/dist/public/assets/settings-CHONaddH.js +1 -0
- package/dist/public/assets/w-CHONaddH.js +1 -0
- package/dist/public/assets/w._-BqbvDTGg.js +1 -0
- package/dist/public/assets/w._-CHONaddH.js +1 -0
- package/package.json +1 -1
- package/dist/_B1lVb01g.js +0 -2
- package/dist/_Bjh5JEm7.js +0 -2
- package/dist/_Dpa8WFuv.js +0 -2
- package/dist/public/assets/_-zdUyUYM2.js.br +0 -0
- package/dist/public/assets/_0L2K8sFq2.js.br +0 -0
- package/dist/public/assets/_42jdam49.js.br +0 -0
- package/dist/public/assets/_9dJ8BnyZ2.js.br +0 -0
- package/dist/public/assets/_B03G1Nvs.js.br +0 -0
- package/dist/public/assets/_B0dZ7_qK.js.br +0 -0
- package/dist/public/assets/_B1VuWiKK.js.br +0 -0
- package/dist/public/assets/_B5nrQZIq2.js.br +0 -0
- package/dist/public/assets/_B8ZQ8inF.js.br +0 -0
- package/dist/public/assets/_B9e51G1K.js.br +0 -0
- package/dist/public/assets/_BH015W2i2.js.br +0 -0
- package/dist/public/assets/_BHjcfVXB.js.br +0 -0
- package/dist/public/assets/_BNIilCsC.js.br +0 -0
- package/dist/public/assets/_BPgL37mi2.js.br +0 -0
- package/dist/public/assets/_BR3D4nzj2.js.br +0 -0
- package/dist/public/assets/_BSFENb4l.js.br +0 -0
- package/dist/public/assets/_BSWpz0dK.js.br +0 -0
- package/dist/public/assets/_BUOWar32.js.br +0 -0
- package/dist/public/assets/_BZWlvMSJ.js.br +0 -0
- package/dist/public/assets/_B_dMglA92.js.br +0 -0
- package/dist/public/assets/_Beb6Lb1w.js.br +0 -0
- package/dist/public/assets/_BjIMoOV-2.js.br +0 -0
- package/dist/public/assets/_BlLuOKRT.js.br +0 -0
- package/dist/public/assets/_BlXwius8.js.br +0 -0
- package/dist/public/assets/_Bmt76eWT.js.br +0 -0
- package/dist/public/assets/_BoS5LU5l.js.br +0 -0
- package/dist/public/assets/_BsNKabYu2.js.br +0 -0
- package/dist/public/assets/_C0OXw3Vy.js.br +0 -0
- package/dist/public/assets/_CBUJNdeq2.js.br +0 -0
- package/dist/public/assets/_CCNhM32c2.js.br +0 -0
- package/dist/public/assets/_CFBaZNUT.js.br +0 -0
- package/dist/public/assets/_CJHqzl--2.js.br +0 -0
- package/dist/public/assets/_CMGgQ-4H2.js.br +0 -0
- package/dist/public/assets/_CPX0D-my.js.br +0 -0
- package/dist/public/assets/_CRuHDn_O2.js.br +0 -0
- package/dist/public/assets/_CUOao_Hj.js.br +0 -0
- package/dist/public/assets/_CUVw5V4z.js.br +0 -0
- package/dist/public/assets/_CYMGOhCb.js.br +0 -0
- package/dist/public/assets/_CZfap_Dj.js.br +0 -0
- package/dist/public/assets/_CbNmSe5k.js.br +0 -0
- package/dist/public/assets/_CdtuhZSc.js.br +0 -0
- package/dist/public/assets/_ClhApln3.js.br +0 -0
- package/dist/public/assets/_CvA5IOAW2.js.br +0 -0
- package/dist/public/assets/_CxrcWZPE.js.br +0 -0
- package/dist/public/assets/_D-KjGTSW.js.br +0 -0
- package/dist/public/assets/_D4u4SpiK.js.br +0 -0
- package/dist/public/assets/_D6CjH3JN.js.br +0 -0
- package/dist/public/assets/_D7cQLLGK2.js.br +0 -0
- package/dist/public/assets/_DBoABI85.js.br +0 -0
- package/dist/public/assets/_DNcd1xtp.js.br +0 -0
- package/dist/public/assets/_DQGTProt.js.br +0 -0
- package/dist/public/assets/_DSIH6_Li.js.br +0 -0
- package/dist/public/assets/_DXHf4WHs2.js.br +0 -0
- package/dist/public/assets/_D_qDhyn2.js.br +0 -0
- package/dist/public/assets/_DcMfCkmd.js.br +0 -0
- package/dist/public/assets/_DgDEdxEu.js.br +0 -0
- package/dist/public/assets/_DlhDim1D.js.br +0 -0
- package/dist/public/assets/_DqLib98x.js.br +0 -0
- package/dist/public/assets/_Ds0Qa0YX.js.br +0 -0
- package/dist/public/assets/_DyUvL09k2.js.br +0 -0
- package/dist/public/assets/_J6xlcydH2.js.br +0 -0
- package/dist/public/assets/_QMVFINxi.js.br +0 -0
- package/dist/public/assets/_S9QQtt68.js.br +0 -0
- package/dist/public/assets/_XCJLLGxV.js.br +0 -0
- package/dist/public/assets/_Y-bTh0dW.js.br +0 -0
- package/dist/public/assets/_Y8TOk1pR.js.br +0 -0
- package/dist/public/assets/_YetFhXkM.js.br +0 -0
- package/dist/public/assets/_YmJopjX92.js.br +0 -0
- package/dist/public/assets/_mbzaOqik.js.br +0 -0
- package/dist/public/assets/_rMcfapaa.js.br +0 -0
- package/dist/public/assets/_rRtbbfKJ2.js.br +0 -0
- package/dist/public/assets/_sSWgnHeU.js.br +0 -0
- package/dist/public/assets/_xOeYy_3v.js.br +0 -0
- package/dist/public/assets/app-page-BWf0w6W9.css.br +0 -0
- package/dist/public/assets/diff-view-BZaYYEDK.css.br +0 -0
- package/dist/public/assets/new-K-7z0qE8.js +0 -1
- package/dist/public/assets/settings-K-7z0qE8.js +0 -1
- package/dist/public/assets/w-K-7z0qE8.js +0 -1
- package/dist/public/assets/w._-D5d4klUv.js +0 -1
- package/dist/public/assets/w._-K-7z0qE8.js +0 -1
package/bin/work.mjs
CHANGED
|
@@ -657,25 +657,70 @@ function servicePath() {
|
|
|
657
657
|
return setupPath(path.dirname(process.execPath));
|
|
658
658
|
}
|
|
659
659
|
|
|
660
|
-
/** Argv
|
|
661
|
-
* host is a dead host: agents keep running in tmux, but the
|
|
662
|
-
* answering, so remote sessions look hung until someone wakes
|
|
663
|
-
*
|
|
664
|
-
*
|
|
665
|
-
|
|
660
|
+
/** Argv prefixes that keep the host awake while the server runs, best first.
|
|
661
|
+
* A suspended host is a dead host: agents keep running in tmux, but the
|
|
662
|
+
* machine stops answering, so remote sessions look hung until someone wakes
|
|
663
|
+
* it by hand. The inhibitor lifts when the service stops.
|
|
664
|
+
*
|
|
665
|
+
* Linux offers two, because polkit gates them differently:
|
|
666
|
+
*
|
|
667
|
+
* sleep:idle also vetoes an explicit suspend, but
|
|
668
|
+
* org.freedesktop.login1.inhibit-block-sleep is
|
|
669
|
+
* allow_any=auth_admin_keep — permitted from a session, refused
|
|
670
|
+
* for a caller that has none. That is the lingering user
|
|
671
|
+
* manager at boot, so the service cannot rely on it.
|
|
672
|
+
* idle org.freedesktop.login1.inhibit-block-idle is allow_any=yes,
|
|
673
|
+
* so this always works. It holds the system non-idle, which is
|
|
674
|
+
* what stops logind's IdleAction (and a desktop's idle-suspend)
|
|
675
|
+
* from ever firing.
|
|
676
|
+
*
|
|
677
|
+
* Idle alone is the honest target anyway — it matches `caffeinate -s`, and
|
|
678
|
+
* declining to veto a suspend the user deliberately asked for is correct.
|
|
679
|
+
* Taking the stronger one when it is allowed costs nothing, so try both. */
|
|
680
|
+
function awakePrefixes() {
|
|
666
681
|
if (process.platform === "darwin")
|
|
667
|
-
return have("caffeinate") ? ["/usr/bin/caffeinate", "-s"] : [];
|
|
682
|
+
return have("caffeinate") ? [["/usr/bin/caffeinate", "-s"]] : [];
|
|
668
683
|
if (process.platform === "linux" && have("systemd-inhibit"))
|
|
669
|
-
return [
|
|
684
|
+
return ["sleep:idle", "idle"].map((what) => [
|
|
670
685
|
"systemd-inhibit",
|
|
671
|
-
|
|
686
|
+
`--what=${what}`,
|
|
672
687
|
"--who=work",
|
|
673
688
|
"--why=work server is running",
|
|
674
689
|
"--mode=block",
|
|
675
|
-
];
|
|
690
|
+
]);
|
|
676
691
|
return [];
|
|
677
692
|
}
|
|
678
693
|
|
|
694
|
+
/** systemd's ExecStart for the linux unit, as one line.
|
|
695
|
+
*
|
|
696
|
+
* With no inhibitor this is just the argv. Otherwise it is a shell that tries
|
|
697
|
+
* each candidate in turn and execs under the first one allowed, because
|
|
698
|
+
* `systemd-inhibit` exits non-zero when polkit refuses — and since it is the
|
|
699
|
+
* unit's ExecStart, that failure takes the whole service down with it. A
|
|
700
|
+
* lingering manager at boot has no session, so the sleep block is refused
|
|
701
|
+
* every time and `Restart=always` retries forever; the server would only come
|
|
702
|
+
* up once someone logged in, defeating the unattended start
|
|
703
|
+
* `loginctl enable-linger` exists to guarantee. Falling through to the
|
|
704
|
+
* ungated idle block keeps the machine awake anyway, and running bare is
|
|
705
|
+
* still better than not running. */
|
|
706
|
+
function serviceExecStart(candidates, argv) {
|
|
707
|
+
// systemd splits on whitespace, so quote any argument containing it.
|
|
708
|
+
const unit = (parts) =>
|
|
709
|
+
parts.map((a) => (a.includes(" ") ? `"${a}"` : a)).join(" ");
|
|
710
|
+
if (!candidates.length) return unit(argv);
|
|
711
|
+
const shq = (a) => `'${a.replace(/'/g, `'\\''`)}'`;
|
|
712
|
+
const cmd = argv.map(shq).join(" ");
|
|
713
|
+
// Each probe takes and drops an inhibitor around `true`; if that is allowed
|
|
714
|
+
// the real one will be too.
|
|
715
|
+
const script = candidates
|
|
716
|
+
.map((c) => {
|
|
717
|
+
const inh = c.map(shq).join(" ");
|
|
718
|
+
return `if ${inh} true 2>/dev/null; then exec ${inh} ${cmd}; fi; `;
|
|
719
|
+
})
|
|
720
|
+
.join("");
|
|
721
|
+
return `/bin/sh -c "${script}exec ${cmd}"`;
|
|
722
|
+
}
|
|
723
|
+
|
|
679
724
|
/** Where installService() writes the service definition — also the store we
|
|
680
725
|
* read settings back out of, so there is no second config file to keep. */
|
|
681
726
|
function serviceFile() {
|
|
@@ -887,9 +932,11 @@ function installService() {
|
|
|
887
932
|
// instead of the CLI — that script carries its own sleep inhibitor and
|
|
888
933
|
// PORT handling, so no awake prefix is layered on top.
|
|
889
934
|
const execOverride = process.env.WORK_SERVICE_EXEC;
|
|
890
|
-
const
|
|
891
|
-
|
|
892
|
-
|
|
935
|
+
const target = execOverride ? [execOverride] : [cliPath, "start"];
|
|
936
|
+
const awake = execOverride ? [] : awakePrefixes();
|
|
937
|
+
// launchd takes an argv, not a shell: caffeinate needs no authorisation, so
|
|
938
|
+
// the first candidate is simply used.
|
|
939
|
+
const startArgs = [...(awake[0] || []), ...target];
|
|
893
940
|
if (process.platform === "darwin") {
|
|
894
941
|
const plist = serviceFile();
|
|
895
942
|
fs.mkdirSync(path.dirname(plist), { recursive: true });
|
|
@@ -958,10 +1005,7 @@ ${envXml}
|
|
|
958
1005
|
const envLines = Object.entries(serviceEnv())
|
|
959
1006
|
.map(([k, v]) => `Environment=${k}=${v}`)
|
|
960
1007
|
.join("\n");
|
|
961
|
-
|
|
962
|
-
const execStart = startArgs
|
|
963
|
-
.map((a) => (a.includes(" ") ? `"${a}"` : a))
|
|
964
|
-
.join(" ");
|
|
1008
|
+
const execStart = serviceExecStart(awake, target);
|
|
965
1009
|
fs.writeFileSync(
|
|
966
1010
|
unitFile,
|
|
967
1011
|
`[Unit]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as setSetting, V as publish, Y as getSetting, _t as git, bt as config, c as killWorkspaceSessions, dt as all, ft as db, gt as gh, i as disposeSessions, l as listSessions, nt as ghKnownHosts, ot as DEFAULT_GITHUB_HOST, p as panePids, pt as get, vt as run } from "./
|
|
1
|
+
import { $ as setSetting, V as publish, Y as getSetting, _t as git, bt as config, c as killWorkspaceSessions, dt as all, ft as db, gt as gh, i as disposeSessions, l as listSessions, nt as ghKnownHosts, ot as DEFAULT_GITHUB_HOST, p as panePids, pt as get, vt as run } from "./_DOBRRnfU.js";
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
@@ -1005,7 +1005,7 @@ async function materializeWorkspace(id) {
|
|
|
1005
1005
|
repo.default_branch = defaultBranch;
|
|
1006
1006
|
db.prepare("UPDATE repos SET base_branch = ?, default_branch = ? WHERE workspace_id = ? AND full_name = ?").run(repo.base_branch, defaultBranch, id, repo.full_name);
|
|
1007
1007
|
}
|
|
1008
|
-
(await import("./
|
|
1008
|
+
(await import("./_CrVv317N.js")).muteAutoPush(repo.full_name, ws.branch);
|
|
1009
1009
|
await addWorkspaceWorktree(bare, path.join(ws.path, repo.worktree), ws.branch, repo.base_branch);
|
|
1010
1010
|
added.push(repo);
|
|
1011
1011
|
});
|
|
@@ -1639,7 +1639,7 @@ async function noteRemoteRef(fullName, branch, oid) {
|
|
|
1639
1639
|
if (await revParse(barePath(fullName), `refs/heads/${branch}`) !== oid) return;
|
|
1640
1640
|
rememberPushed(k, oid);
|
|
1641
1641
|
if (failures.delete(k)) {
|
|
1642
|
-
const { pokeStatusWatch } = await import("./
|
|
1642
|
+
const { pokeStatusWatch } = await import("./_8GaDFTzQ.js");
|
|
1643
1643
|
pokeStatusWatch();
|
|
1644
1644
|
}
|
|
1645
1645
|
}
|
|
@@ -1704,7 +1704,7 @@ async function pushOnce(fullName, branch, bases) {
|
|
|
1704
1704
|
}
|
|
1705
1705
|
async function fail(k, why) {
|
|
1706
1706
|
failures.set(k, why);
|
|
1707
|
-
const { pokeStatusWatch } = await import("./
|
|
1707
|
+
const { pokeStatusWatch } = await import("./_8GaDFTzQ.js");
|
|
1708
1708
|
pokeStatusWatch();
|
|
1709
1709
|
return why;
|
|
1710
1710
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as _attr_style, At as _subscribe, Ct as _scope_reason, D as toast_default, Dt as _serialize_guard, Et as _sep, G as _attr_class, H as tone, I as iconBtnLg, J as _attr_input_value, K as _attr_details_or_dialog_open, L as iconBtnRow, O as icon_xmark_default, Ot as _serialize_if, Q as _attr_select_value, R as iconBtnXs, Rt as writeScope, St as _scope_id, Tt as _script, W as _attr, X as _attr_option_value, _ as diffScope, a as fuzzy, b as setDiffPos, bt as _resume, c as icon_arrow_up_default, ct as _el_resume, d as icon_refresh_default, dt as _existing_scope, g as diffPos, gt as _html, h as diffFilter, i as icon_sidebar_default, it as _content_resume, j as repoLabel, jt as _template, k as icon_base_default, kt as _set_serialize_reason, l as icon_chevron_right_default, lt as _escape, n as findIconBtn, ot as _el, pt as _for_of, r as findInput, s as icon_search_default, st as _el_read_error, t as icon_arrow_down_default, u as icon_back_default, v as diffTreeOpen, vt as _if, wt as _scope_with_id, x as setDiffScope, xt as _resume_branch, yt as _peek_scope_id } from "./
|
|
1
|
+
import { $ as _attr_style, At as _subscribe, Ct as _scope_reason, D as toast_default, Dt as _serialize_guard, Et as _sep, G as _attr_class, H as tone, I as iconBtnLg, J as _attr_input_value, K as _attr_details_or_dialog_open, L as iconBtnRow, O as icon_xmark_default, Ot as _serialize_if, Q as _attr_select_value, R as iconBtnXs, Rt as writeScope, St as _scope_id, Tt as _script, W as _attr, X as _attr_option_value, _ as diffScope, a as fuzzy, b as setDiffPos, bt as _resume, c as icon_arrow_up_default, ct as _el_resume, d as icon_refresh_default, dt as _existing_scope, g as diffPos, gt as _html, h as diffFilter, i as icon_sidebar_default, it as _content_resume, j as repoLabel, jt as _template, k as icon_base_default, kt as _set_serialize_reason, l as icon_chevron_right_default, lt as _escape, n as findIconBtn, ot as _el, pt as _for_of, r as findInput, s as icon_search_default, st as _el_read_error, t as icon_arrow_down_default, u as icon_back_default, v as diffTreeOpen, vt as _if, wt as _scope_with_id, x as setDiffScope, xt as _resume_branch, yt as _peek_scope_id } from "./_Dxspyv-X.js";
|
|
2
2
|
//#region src/client/router.ts
|
|
3
3
|
function urlFor(r) {
|
|
4
4
|
if (r.view === "settings") return "/settings";
|
|
@@ -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("_f7")}><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("_f8")}><button type=button${_attr_class(["_p", "_f9"])}${_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("_f_")} 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(["_gt", !open && "_gs"])} 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("_gw")}>${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 });
|
|
@@ -2497,7 +2497,7 @@ var $content = (input) => {
|
|
|
2497
2497
|
_for_of(dir.dirs, (child) => {
|
|
2498
2498
|
const $scope1_id = _scope_id();
|
|
2499
2499
|
const shut = input.collapsed.has(input.collapsedKey(child.path));
|
|
2500
|
-
_html(`<div${_attr_class("
|
|
2500
|
+
_html(`<div${_attr_class("_gN")}><button type=button${_attr_class(["_gO", { ["_gF"]: shut }])}${_attr("title", child.path)}${_attr_style(`--depth:${child.depth}`)}><span${_attr_class("_gV")}>`);
|
|
2501
2501
|
_if(() => {
|
|
2502
2502
|
if (shut) {
|
|
2503
2503
|
const $scope4_id = _scope_id();
|
|
@@ -2511,7 +2511,7 @@ var $content = (input) => {
|
|
|
2511
2511
|
return 1;
|
|
2512
2512
|
}
|
|
2513
2513
|
}, $scope1_id, "c", $sg__input, $sg__input, $sg__input, "</span>", 1);
|
|
2514
|
-
_html(`<span${_attr_class("
|
|
2514
|
+
_html(`<span${_attr_class("_gP")}>${_escape(child.label)}${_el_resume($scope1_id, "e", $sg__input_dir)}/</span></button>${_el_resume($scope1_id, "b")}`);
|
|
2515
2515
|
_if(() => {
|
|
2516
2516
|
if (!shut) {
|
|
2517
2517
|
const $scope2_id = _scope_id();
|
|
@@ -2558,11 +2558,11 @@ var $content = (input) => {
|
|
|
2558
2558
|
}, "path", $scope0_id, "a", $sg__input, $sg__input_dir, $sg__input_dir, 0, 1);
|
|
2559
2559
|
_for_of(dir.files, ({ file, name }) => {
|
|
2560
2560
|
const $scope3_id = _scope_id();
|
|
2561
|
-
_html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["
|
|
2561
|
+
_html(`<a${_attr("href", input.hrefFor(file.key))}${_attr_class(["_gR", { ["_gQ"]: input.collapsedFiles?.has(file.key) }])}${input.collapsedFiles?.has(file.key) ? _attr("title", `${file.path} (folded — click to open)`) : _attr("title", file.path)}${_attr_style(`--depth:${dir.depth + 1}`)}><span${_attr_class("_gW")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope3_id, "c", $sg__input_dir)}</span>${_el_resume($scope3_id, "b", $sg__input_dir)}<span${_attr_class("_gS")}>${_escape(name)}${_el_resume($scope3_id, "e", $sg__input_dir)}</span>`);
|
|
2562
2562
|
_if(() => {
|
|
2563
2563
|
if (input.newKeys.has(file.key)) {
|
|
2564
2564
|
const $scope6_id = _scope_id();
|
|
2565
|
-
_html(`<span${_attr_class(["_y", "
|
|
2565
|
+
_html(`<span${_attr_class(["_y", "_gT"])} title="Changed since your last visit"></span>`);
|
|
2566
2566
|
_serialize_if($scope0_reason, 1) && writeScope($scope6_id, {});
|
|
2567
2567
|
return 0;
|
|
2568
2568
|
}
|
|
@@ -2570,7 +2570,7 @@ var $content = (input) => {
|
|
|
2570
2570
|
_if(() => {
|
|
2571
2571
|
if (input.commentKeys.has(file.key)) {
|
|
2572
2572
|
const $scope7_id = _scope_id();
|
|
2573
|
-
_html(`<span${_attr_class("
|
|
2573
|
+
_html(`<span${_attr_class("_gU")}>`);
|
|
2574
2574
|
icon_comment_default({ size: 12 });
|
|
2575
2575
|
_html("</span>");
|
|
2576
2576
|
_serialize_if($scope0_reason, 0) && writeScope($scope7_id, {});
|
|
@@ -2628,7 +2628,7 @@ var diff_tree_default = _template("l", (input) => {
|
|
|
2628
2628
|
scope: input.scope ?? null,
|
|
2629
2629
|
file: key
|
|
2630
2630
|
}), "l0", $scope0_id);
|
|
2631
|
-
_html(`<aside${_attr_class(["
|
|
2631
|
+
_html(`<aside${_attr_class(["_gG", { ["_gF"]: input.open === false }])}><div${_attr_class("_gH")}>`);
|
|
2632
2632
|
_set_serialize_reason(2);
|
|
2633
2633
|
const $childScope = _peek_scope_id();
|
|
2634
2634
|
file_filter_default({
|
|
@@ -2637,18 +2637,18 @@ var diff_tree_default = _template("l", (input) => {
|
|
|
2637
2637
|
filter = _new_filter;
|
|
2638
2638
|
}, "l1", $scope0_id)
|
|
2639
2639
|
});
|
|
2640
|
-
_html(`</div><div${_attr_class("
|
|
2640
|
+
_html(`</div><div${_attr_class("_gI")}>`);
|
|
2641
2641
|
_if(() => {
|
|
2642
2642
|
if (!input.sections.length && filter) {
|
|
2643
2643
|
const $scope3_id = _scope_id();
|
|
2644
|
-
_html(`<p${_attr_class("
|
|
2644
|
+
_html(`<p${_attr_class("_gJ")}>No files match.</p>`);
|
|
2645
2645
|
writeScope($scope3_id, {});
|
|
2646
2646
|
return 0;
|
|
2647
2647
|
}
|
|
2648
2648
|
}, $scope0_id, "e", 1, 1, 1, 0, 1);
|
|
2649
2649
|
_for_of(input.sections, (section) => {
|
|
2650
2650
|
const $scope1_id = _scope_id();
|
|
2651
|
-
_html(`<div${_attr_class("
|
|
2651
|
+
_html(`<div${_attr_class("_gK")}><button type=button${_attr_class(["_gL", { ["_gF"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_gV")}>`);
|
|
2652
2652
|
_if(() => {
|
|
2653
2653
|
if (collapsedRepos.has(section.id)) {
|
|
2654
2654
|
const $scope4_id = _scope_id();
|
|
@@ -2662,12 +2662,12 @@ var diff_tree_default = _template("l", (input) => {
|
|
|
2662
2662
|
return 1;
|
|
2663
2663
|
}
|
|
2664
2664
|
}, $scope1_id, "c", 1, 1, 1, "</span>", 1);
|
|
2665
|
-
_html(`<span${_attr_class("
|
|
2665
|
+
_html(`<span${_attr_class("_gP")}>${_escape(section.label)}${_el_resume($scope1_id, "e", $sg__input_sections)}</span></button>${_el_resume($scope1_id, "b")}`);
|
|
2666
2666
|
_if(() => {
|
|
2667
2667
|
if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
|
|
2668
2668
|
const $scope2_id = _scope_id();
|
|
2669
2669
|
const root = treeDirs(section.files);
|
|
2670
|
-
_html(`<div${_attr_class("
|
|
2670
|
+
_html(`<div${_attr_class("_gM")}${_attr("hidden", collapsedRepos.has(section.id))}>`);
|
|
2671
2671
|
_set_serialize_reason(1);
|
|
2672
2672
|
const $childScope2 = _peek_scope_id();
|
|
2673
2673
|
diff_tree_dir_default({
|
|
@@ -2792,9 +2792,9 @@ var diff_file_sheet_default = _template("g", (input) => {
|
|
|
2792
2792
|
_if(() => {
|
|
2793
2793
|
if (open) {
|
|
2794
2794
|
const $scope1_id = _scope_id();
|
|
2795
|
-
_html(`<div${_attr_class("
|
|
2795
|
+
_html(`<div${_attr_class("_gc")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_gd")} role=dialog aria-label="Jump to file"><div${_attr_class("_ge")}><strong${_attr_class("_gb")}>Files</strong><span${_attr_class("_gf")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", $sg__input_files_length)}${_sep($sg__input_total__OR__input_files_length)}${input.files.length !== total ? ` / ${_escape(`${total}`)}` : ""}${_el_resume($scope1_id, "g", $sg__input_total__OR__input_files_length)}</span><button type=button${_attr_class([iconBtnLg, "_ga"])} title=Close aria-label=Close>`);
|
|
2796
2796
|
icon_xmark_default({ size: 16 });
|
|
2797
|
-
_html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("
|
|
2797
|
+
_html(`</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_gn")}>`);
|
|
2798
2798
|
_set_serialize_reason(2);
|
|
2799
2799
|
const $childScope = _peek_scope_id();
|
|
2800
2800
|
file_filter_default({
|
|
@@ -2803,28 +2803,28 @@ var diff_file_sheet_default = _template("g", (input) => {
|
|
|
2803
2803
|
filter = _new_filter;
|
|
2804
2804
|
}, "g1", $scope1_id)
|
|
2805
2805
|
});
|
|
2806
|
-
_html(`</div><div${_attr_class("
|
|
2806
|
+
_html(`</div><div${_attr_class("_gg")}>`);
|
|
2807
2807
|
_for_of(groups, (group) => {
|
|
2808
2808
|
const $scope2_id = _scope_id();
|
|
2809
|
-
_html(`<div${_attr_class("
|
|
2809
|
+
_html(`<div${_attr_class("_gh")}><div${_attr_class("_gi")}>${_escape(group.repo)}${_el_resume($scope2_id, "c", $sg__input_files)}</div>`);
|
|
2810
2810
|
_for_of(group.dirs, ({ dir, files }) => {
|
|
2811
2811
|
const $scope3_id = _scope_id();
|
|
2812
|
-
_html(`<div${_attr_class("
|
|
2812
|
+
_html(`<div${_attr_class("_gj")}>`);
|
|
2813
2813
|
_if(() => {
|
|
2814
2814
|
if (dir) {
|
|
2815
2815
|
const $scope5_id = _scope_id();
|
|
2816
|
-
_html(`<div${_attr_class("
|
|
2816
|
+
_html(`<div${_attr_class("_gl")}${_attr("title", dir)}><bdi>${_escape(dir)}${_el_resume($scope5_id, "b", $sg__input_files)}/</bdi></div>${_el_resume($scope5_id, "a", $sg__input_files)}`);
|
|
2817
2817
|
$si__input_files && writeScope($scope5_id, { _: _scope_with_id($scope3_id) });
|
|
2818
2818
|
return 0;
|
|
2819
2819
|
}
|
|
2820
2820
|
}, $scope3_id, "b", $sg__input_files, $sg__input_files, $sg__input_files, 0, 1);
|
|
2821
2821
|
_for_of(files, ({ file, name }) => {
|
|
2822
2822
|
const $scope4_id = _scope_id();
|
|
2823
|
-
_html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["
|
|
2823
|
+
_html(`<a${_attr("href", hrefFor(file.key))}${_attr_class(["_gk", "_w"])}><span${_attr_class("_gr")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope4_id, "c", $sg__input_files)}</span>${_el_resume($scope4_id, "b", $sg__input_files)}<span${_attr_class("_gm")}><bdi>${_escape(name)}${_el_resume($scope4_id, "e", $sg__input_files)}</bdi></span>`);
|
|
2824
2824
|
_if(() => {
|
|
2825
2825
|
if (newKeys.has(file.key)) {
|
|
2826
2826
|
const $scope6_id = _scope_id();
|
|
2827
|
-
_html(`<span${_attr_class(["_y", "
|
|
2827
|
+
_html(`<span${_attr_class(["_y", "_gp"])} title="Changed since your last visit"></span>`);
|
|
2828
2828
|
_serialize_if($scope0_reason, 1) && writeScope($scope6_id, {});
|
|
2829
2829
|
return 0;
|
|
2830
2830
|
}
|
|
@@ -2834,7 +2834,7 @@ var diff_file_sheet_default = _template("g", (input) => {
|
|
|
2834
2834
|
const $scope7_id = _scope_id();
|
|
2835
2835
|
icon_comment_default({
|
|
2836
2836
|
size: 12,
|
|
2837
|
-
class: "
|
|
2837
|
+
class: "_gq"
|
|
2838
2838
|
});
|
|
2839
2839
|
_serialize_if($scope0_reason, 0) && writeScope($scope7_id, {});
|
|
2840
2840
|
return 0;
|
|
@@ -2859,7 +2859,7 @@ var diff_file_sheet_default = _template("g", (input) => {
|
|
|
2859
2859
|
_if(() => {
|
|
2860
2860
|
if (!input.files.length) {
|
|
2861
2861
|
const $scope8_id = _scope_id();
|
|
2862
|
-
_html(`<p${_attr_class("
|
|
2862
|
+
_html(`<p${_attr_class("_go")}>No files match.</p>`);
|
|
2863
2863
|
$si__input_files_length && writeScope($scope8_id, {});
|
|
2864
2864
|
return 0;
|
|
2865
2865
|
}
|
|
@@ -3559,12 +3559,12 @@ var diff_view_default = _template("m", (input) => {
|
|
|
3559
3559
|
_if(() => {
|
|
3560
3560
|
if (repos && !allFiles.length) {
|
|
3561
3561
|
const $scope11_id = _scope_id();
|
|
3562
|
-
_html(`<p${_attr_class("
|
|
3562
|
+
_html(`<p${_attr_class("_bJ")}>${repoList.some((r) => r.unborn) ? "No commits yet." : scope$1 === "dirty" ? "Nothing uncommitted." : repoList.some((r) => r.pr) ? "No file changes on these PRs." : "No changes vs base."}${_el_resume($scope11_id, "b")}</p>`);
|
|
3563
3563
|
writeScope($scope11_id, {});
|
|
3564
3564
|
return 0;
|
|
3565
3565
|
} else if (repos && !shownFiles.length && !findState.hit) {
|
|
3566
3566
|
const $scope8_id = _scope_id();
|
|
3567
|
-
_html(`<p${_attr_class("
|
|
3567
|
+
_html(`<p${_attr_class("_bJ")}>${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>`);
|
|
3568
3568
|
writeScope($scope8_id, {});
|
|
3569
3569
|
return 1;
|
|
3570
3570
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as subscriberCount, V as publish, W as subscriberJoins, dt as all, ft as db, g as sessionStates, l as listSessions } from "./
|
|
2
|
-
import { A as portsByWorkspace, J as hostToken, K as forgetToken, M as headOid, Q as ownsBranch, R as repoParent, V as DEFAULT_HOST, Y as joinRepo, Z as splitRepo, h as listWorkspaces, o as pushFailureFor, q as graphqlUrl, z as swr } from "./
|
|
1
|
+
import { U as subscriberCount, V as publish, W as subscriberJoins, dt as all, ft as db, g as sessionStates, l as listSessions } from "./_DOBRRnfU.js";
|
|
2
|
+
import { A as portsByWorkspace, J as hostToken, K as forgetToken, M as headOid, Q as ownsBranch, R as repoParent, V as DEFAULT_HOST, Y as joinRepo, Z as splitRepo, h as listWorkspaces, o as pushFailureFor, q as graphqlUrl, z as swr } from "./_930ti7l4.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
//#region src/server/github-api.ts
|
|
5
5
|
/** Run a GraphQL query against one host.
|
|
@@ -6556,7 +6556,7 @@ function publishChange(sessionId) {
|
|
|
6556
6556
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
6557
6557
|
if (row?.workspace_id) {
|
|
6558
6558
|
const workspaceId = row.workspace_id;
|
|
6559
|
-
import("./
|
|
6559
|
+
import("./_iX5oUHA_.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
6560
6560
|
return;
|
|
6561
6561
|
}
|
|
6562
6562
|
publish("sessions.changed");
|
|
@@ -8194,10 +8194,20 @@ var AGENT_BOOT_MS = 1500;
|
|
|
8194
8194
|
var PASTE_SETTLE_MS = 150;
|
|
8195
8195
|
/** Command for a session kind: the instance's binary (`claude2`,
|
|
8196
8196
|
* `cursor-agent`), nothing for `shell`; `command.<agent>` in settings still
|
|
8197
|
-
* overrides for one-off wrappers.
|
|
8197
|
+
* overrides for one-off wrappers.
|
|
8198
|
+
*
|
|
8199
|
+
* An override that names nothing on PATH is ignored rather than launched:
|
|
8200
|
+
* restores written before overrides stopped being exported carry the old
|
|
8201
|
+
* machine's wrapper, and honouring it fails every session of that family
|
|
8202
|
+
* with a bare "command not found" in the pane. An override holding args
|
|
8203
|
+
* (`claude --foo`) is checked on its first word only; a relative or absolute
|
|
8204
|
+
* path is left alone, since `which` only answers for PATH lookups. */
|
|
8198
8205
|
function sessionCommand(agent) {
|
|
8199
8206
|
const override = getSetting(`command.${agent}`);
|
|
8200
|
-
if (override)
|
|
8207
|
+
if (override) {
|
|
8208
|
+
const argv = override.split(/\s+/);
|
|
8209
|
+
if (argv[0].includes("/") || which(argv[0])) return argv;
|
|
8210
|
+
}
|
|
8201
8211
|
const command = agentCommand(agent);
|
|
8202
8212
|
return command ? [command] : [];
|
|
8203
8213
|
}
|
|
@@ -2173,8 +2173,8 @@ function theme() {
|
|
|
2173
2173
|
function setTheme(mode) {
|
|
2174
2174
|
set("theme", mode === "system" ? null : mode);
|
|
2175
2175
|
}
|
|
2176
|
-
var sectionCount = "
|
|
2177
|
-
var row = "
|
|
2176
|
+
var sectionCount = "_bz _H _I";
|
|
2177
|
+
var row = "_bK _bC";
|
|
2178
2178
|
var iconBtn = "_Z _j";
|
|
2179
2179
|
//#endregion
|
|
2180
2180
|
//#region src/tags/icons/icon-refresh.marko
|
|
@@ -2320,8 +2320,8 @@ var icon_sidebar_default = _template("jb", (input) => {
|
|
|
2320
2320
|
});
|
|
2321
2321
|
_serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
|
|
2322
2322
|
});
|
|
2323
|
-
var findInput = "
|
|
2324
|
-
var findIconBtn = "
|
|
2323
|
+
var findInput = "_gu _l";
|
|
2324
|
+
var findIconBtn = "_gx _j";
|
|
2325
2325
|
//#endregion
|
|
2326
2326
|
//#region src/tags/icons/icon-arrow-down.marko
|
|
2327
2327
|
var icon_arrow_down_default = _template("I", (input) => {
|