@dylanpiercey/work 0.0.63 → 0.0.64
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 +11 -11
- package/dist/{_DJw6QDd6.js → _ByG3GBnQ.js} +25 -25
- package/dist/_CTJQVrRJ.js +2 -0
- package/dist/{_CkMJ5gOG.js → _D4h268HL.js} +2 -2
- package/dist/{_BejZlkF2.js → _Dp9_KYvx.js} +2 -2
- package/dist/index.mjs +111 -111
- package/dist/public/assets/{_CHMOdIBF.js → _65H_kIjK.js} +1 -1
- package/dist/public/assets/_65H_kIjK.js.br +0 -0
- package/dist/public/assets/{_zsjVrG7P2.js → _6Myj1hK42.js} +1 -1
- package/dist/public/assets/_6Myj1hK42.js.br +0 -0
- package/dist/public/assets/{_DEV1HUyH2.js → _6VYAvwvG2.js} +1 -1
- package/dist/public/assets/_6VYAvwvG2.js.br +0 -0
- package/dist/public/assets/{_BNV4QnFb.js → _72K44f_h.js} +1 -1
- package/dist/public/assets/_72K44f_h.js.br +0 -0
- package/dist/public/assets/{_C2_4nxz12.js → _83k-11-P2.js} +1 -1
- package/dist/public/assets/_83k-11-P2.js.br +0 -0
- package/dist/public/assets/{_ScSFhsTr.js → _B-8Z8oIY.js} +1 -1
- package/dist/public/assets/_B-8Z8oIY.js.br +0 -0
- package/dist/public/assets/{_CB8oTGqD.js → _B0FsfqEm.js} +1 -1
- package/dist/public/assets/_B0FsfqEm.js.br +0 -0
- package/dist/public/assets/{_RGFDEa9_.js → _B2jIVPhB.js} +1 -1
- package/dist/public/assets/_B2jIVPhB.js.br +0 -0
- package/dist/public/assets/{_BZD7uwi9.js → _B36I-e1O.js} +1 -1
- package/dist/public/assets/_B36I-e1O.js.br +0 -0
- package/dist/public/assets/{_Bif8ny7j.js → _B4P5vBPb.js} +1 -1
- package/dist/public/assets/_B4P5vBPb.js.br +0 -0
- package/dist/public/assets/{_BahoEUEl.js → _B675zlkV.js} +1 -1
- package/dist/public/assets/_B675zlkV.js.br +0 -0
- package/dist/public/assets/{_Dr_nTK62.js → _B9zB94hy.js} +1 -1
- package/dist/public/assets/_B9zB94hy.js.br +0 -0
- package/dist/public/assets/{_DMp6AZKA.js → _BAr_CSvD.js} +1 -1
- package/dist/public/assets/_BAr_CSvD.js.br +0 -0
- package/dist/public/assets/{_Bla8nnOV.js → _BB8x4GTA.js} +1 -1
- package/dist/public/assets/_BB8x4GTA.js.br +0 -0
- package/dist/public/assets/{_Doqy2mrF.js → _BGLpZn66.js} +1 -1
- package/dist/public/assets/_BGLpZn66.js.br +0 -0
- package/dist/public/assets/{_BoCIFzP2.js → _BGv8AOWB.js} +1 -1
- package/dist/public/assets/_BGv8AOWB.js.br +0 -0
- package/dist/public/assets/{_nC_b5l_M.js → _BLABN4kn.js} +1 -1
- package/dist/public/assets/_BLABN4kn.js.br +0 -0
- package/dist/public/assets/{_B1u5Uh3T.js → _BQwUqJm0.js} +1 -1
- package/dist/public/assets/_BQwUqJm0.js.br +0 -0
- package/dist/public/assets/{_Q2qQseiI.js → _BUEsgS4s.js} +1 -1
- package/dist/public/assets/_BUEsgS4s.js.br +0 -0
- package/dist/public/assets/{_truEpqET.js → _BXY6tRzK.js} +1 -1
- package/dist/public/assets/_BXY6tRzK.js.br +0 -0
- package/dist/public/assets/{_BAXP44gA.js → _BYylAsTA.js} +1 -1
- package/dist/public/assets/{_qx7lbylN2.js → _Bc8VjeFk2.js} +1 -1
- package/dist/public/assets/_Bc8VjeFk2.js.br +0 -0
- package/dist/public/assets/{_DY1QitV0.js → _BiiQtd9c.js} +1 -1
- package/dist/public/assets/_BiiQtd9c.js.br +0 -0
- package/dist/public/assets/{_DsAa3Xy42.js → _BjGw33mr2.js} +1 -1
- package/dist/public/assets/_BjGw33mr2.js.br +0 -0
- package/dist/public/assets/{_Cs32oXy_.js → _BlBM-IPW.js} +1 -1
- package/dist/public/assets/_BlBM-IPW.js.br +0 -0
- package/dist/public/assets/{_DMG2J4L6.js → _Bnwodjuf.js} +1 -1
- package/dist/public/assets/_Bnwodjuf.js.br +0 -0
- package/dist/public/assets/{_DnGXgL0i.js → _ByQr15Ol.js} +1 -1
- package/dist/public/assets/_ByQr15Ol.js.br +0 -0
- package/dist/public/assets/{_DWEFguKu2.js → _C-KRN5dY2.js} +1 -1
- package/dist/public/assets/_C-KRN5dY2.js.br +0 -0
- package/dist/public/assets/{_BKY_bMM62.js → _C0b7auhW2.js} +1 -1
- package/dist/public/assets/_C0b7auhW2.js.br +0 -0
- package/dist/public/assets/{_CgpdtGAg.js → _C3qyrcO9.js} +7 -7
- package/dist/public/assets/_C3qyrcO9.js.br +0 -0
- package/dist/public/assets/{_C6wSov-5.js → _C4L-8mN9.js} +1 -1
- package/dist/public/assets/_C4L-8mN9.js.br +0 -0
- package/dist/public/assets/{_BbXjig9P.js → _C6OJXRQI.js} +1 -1
- package/dist/public/assets/_C6OJXRQI.js.br +0 -0
- package/dist/public/assets/{_DC4Dw05t2.js → _C6i1ekF42.js} +1 -1
- package/dist/public/assets/_C6i1ekF42.js.br +0 -0
- package/dist/public/assets/{_DpeDF238.js → _CBMt4SVC.js} +1 -1
- package/dist/public/assets/_CBMt4SVC.js.br +0 -0
- package/dist/public/assets/{_BjiBvh1F.js → _CDBu-zyP.js} +1 -1
- package/dist/public/assets/_CDBu-zyP.js.br +0 -0
- package/dist/public/assets/{_Bj-Zy9Ch.js → _CELqAUa7.js} +1 -1
- package/dist/public/assets/_CELqAUa7.js.br +0 -0
- package/dist/public/assets/{_BCdzZsn_.js → _CQ5YFSoz.js} +1 -1
- package/dist/public/assets/_CQ5YFSoz.js.br +0 -0
- package/dist/public/assets/{_CtQ_-SCD.js → _CQQncEWM.js} +1 -1
- package/dist/public/assets/_CQQncEWM.js.br +0 -0
- package/dist/public/assets/{_H1UQxF28.js → _CXIiF1dy.js} +1 -1
- package/dist/public/assets/_CXIiF1dy.js.br +0 -0
- package/dist/public/assets/{_CWkU9r_m2.js → _CaLmf9v_2.js} +1 -1
- package/dist/public/assets/_CaLmf9v_2.js.br +0 -0
- package/dist/public/assets/{_BrBaHkF_.js → _CeOxF4LT.js} +1 -1
- package/dist/public/assets/_CeOxF4LT.js.br +0 -0
- package/dist/public/assets/{_D9dzMNoO.js → _ChYx4fuj.js} +1 -1
- package/dist/public/assets/_ChYx4fuj.js.br +0 -0
- package/dist/public/assets/{_DCzqg64T.js → _ClsvLvq9.js} +1 -1
- package/dist/public/assets/_ClsvLvq9.js.br +0 -0
- package/dist/public/assets/{_Bkllp0As2.js → _CqhZzk-Q2.js} +1 -1
- package/dist/public/assets/_CqhZzk-Q2.js.br +0 -0
- package/dist/public/assets/{_0hNVJ4JO.js → _Cr7e9j-6.js} +1 -1
- package/dist/public/assets/_Cr7e9j-6.js.br +0 -0
- package/dist/public/assets/{_C7-54NbO2.js → _CtQra8T02.js} +1 -1
- package/dist/public/assets/_CtQra8T02.js.br +0 -0
- package/dist/public/assets/{_BUaVKf3v.js → _CyFVU5mI.js} +1 -1
- package/dist/public/assets/_CyFVU5mI.js.br +0 -0
- package/dist/public/assets/{_14DmBChI.js → _D8H9ELrD.js} +1 -1
- package/dist/public/assets/_D8H9ELrD.js.br +0 -0
- package/dist/public/assets/{_CzaqMz01.js → _D9FzQerH.js} +1 -1
- package/dist/public/assets/_D9FzQerH.js.br +0 -0
- package/dist/public/assets/{_CgVVBthC2.js → _DKF6tfmm2.js} +1 -1
- package/dist/public/assets/_DKF6tfmm2.js.br +0 -0
- package/dist/public/assets/{_CgURBhsh2.js → _DOJFehKz2.js} +1 -1
- package/dist/public/assets/_DOJFehKz2.js.br +0 -0
- package/dist/public/assets/{_DJx4mibl2.js → _DX_MU9Ip2.js} +1 -1
- package/dist/public/assets/_DX_MU9Ip2.js.br +0 -0
- package/dist/public/assets/{_ag3kTHuY2.js → _D_R54hG22.js} +1 -1
- package/dist/public/assets/{_Obe-5WKG.js → _Dpc4pIai.js} +1 -1
- package/dist/public/assets/_Dpc4pIai.js.br +0 -0
- package/dist/public/assets/{_njLSeYG62.js → _DqAeQk4f2.js} +1 -1
- package/dist/public/assets/_DqAeQk4f2.js.br +0 -0
- package/dist/public/assets/{_BMO-ZlzJ2.js → _DtD9G9S42.js} +1 -1
- package/dist/public/assets/_DtD9G9S42.js.br +0 -0
- package/dist/public/assets/{_CzNPwcYd2.js → _DvzUNhWh2.js} +1 -1
- package/dist/public/assets/_DvzUNhWh2.js.br +0 -0
- package/dist/public/assets/{_C-PAnbq3.js → _Dw8kHrnm.js} +1 -1
- package/dist/public/assets/_Dw8kHrnm.js.br +0 -0
- package/dist/public/assets/{_DGvaJxhN2.js → _DwCYtjJB2.js} +1 -1
- package/dist/public/assets/_DwCYtjJB2.js.br +0 -0
- package/dist/public/assets/{_FR2-KCqo.js → _EoDv3B2A.js} +1 -1
- package/dist/public/assets/_EoDv3B2A.js.br +0 -0
- package/dist/public/assets/{_CNqZ6LTq.js → _Gx1ovPtL.js} +1 -1
- package/dist/public/assets/_Gx1ovPtL.js.br +0 -0
- package/dist/public/assets/{_HcLcz5i82.js → _Nmnye_1v2.js} +1 -1
- package/dist/public/assets/_Nmnye_1v2.js.br +0 -0
- package/dist/public/assets/{_D_J7qiyb.js → _QGeXhMMm.js} +1 -1
- package/dist/public/assets/_QGeXhMMm.js.br +0 -0
- package/dist/public/assets/{_CqHt_5jw.js → _VnlUe4Rf.js} +1 -1
- package/dist/public/assets/_VnlUe4Rf.js.br +0 -0
- package/dist/public/assets/{_CoqFfSgg.js → _WEEnryDw.js} +1 -1
- package/dist/public/assets/_WEEnryDw.js.br +0 -0
- package/dist/public/assets/{_BfBRi0102.js → _fTU9kouy2.js} +1 -1
- package/dist/public/assets/_fTU9kouy2.js.br +0 -0
- package/dist/public/assets/{_BDTS1vjt2.js → _fyZQIdGC2.js} +1 -1
- package/dist/public/assets/{_1aIRcB6T.js → _hEhKGFAi.js} +1 -1
- package/dist/public/assets/_hEhKGFAi.js.br +0 -0
- package/dist/public/assets/{_Cs0oBAc0.js → _p-UGLikC.js} +1 -1
- package/dist/public/assets/_p-UGLikC.js.br +0 -0
- package/dist/public/assets/{_BnfbE-el2.js → _pX9ul4kg2.js} +1 -1
- package/dist/public/assets/_pX9ul4kg2.js.br +0 -0
- package/dist/public/assets/{_AnXZ6DjN2.js → _pjASEu__2.js} +1 -1
- package/dist/public/assets/_pjASEu__2.js.br +0 -0
- package/dist/public/assets/{_CuOsKTaT.js → _qD4lxfI_.js} +1 -1
- package/dist/public/assets/_qD4lxfI_.js.br +0 -0
- package/dist/public/assets/{_urqw27Lw.js → _shu_NdEE.js} +1 -1
- package/dist/public/assets/_shu_NdEE.js.br +0 -0
- package/dist/public/assets/{_BAgMDk4k.js → _xVbSYHC1.js} +1 -1
- package/dist/public/assets/_xVbSYHC1.js.br +0 -0
- package/dist/public/assets/{_CGdTzrY1.js → _z4329J00.js} +1 -1
- package/dist/public/assets/_z4329J00.js.br +0 -0
- package/dist/public/assets/{diff-view-09aeMxRD.css → diff-view-DvND0FJi.css} +1 -1
- package/dist/public/assets/diff-view-DvND0FJi.css.br +0 -0
- package/dist/public/assets/{index-Kv8GSDQR.css → index-BAolJTj4.css} +1 -1
- package/dist/public/assets/index-BAolJTj4.css.br +0 -0
- package/dist/public/assets/{index-BJoarFLU.js → index-CPfPckDD.js} +3 -3
- package/dist/public/assets/index-CPfPckDD.js.br +0 -0
- package/install.sh +4 -4
- package/lib/setup/doctor.mjs +1 -1
- package/lib/setup/install.mjs +1 -1
- package/package.json +1 -1
- package/scripts/migrate.mjs +1 -1
- package/dist/_C_Ufy3TH.js +0 -2
- package/dist/public/assets/_0hNVJ4JO.js.br +0 -0
- package/dist/public/assets/_14DmBChI.js.br +0 -0
- package/dist/public/assets/_1aIRcB6T.js.br +0 -0
- package/dist/public/assets/_AnXZ6DjN2.js.br +0 -0
- package/dist/public/assets/_B1u5Uh3T.js.br +0 -0
- package/dist/public/assets/_BAgMDk4k.js.br +0 -0
- package/dist/public/assets/_BCdzZsn_.js.br +0 -0
- package/dist/public/assets/_BKY_bMM62.js.br +0 -0
- package/dist/public/assets/_BMO-ZlzJ2.js.br +0 -0
- package/dist/public/assets/_BNV4QnFb.js.br +0 -0
- package/dist/public/assets/_BUaVKf3v.js.br +0 -0
- package/dist/public/assets/_BZD7uwi9.js.br +0 -0
- package/dist/public/assets/_BahoEUEl.js.br +0 -0
- package/dist/public/assets/_BbXjig9P.js.br +0 -0
- package/dist/public/assets/_BfBRi0102.js.br +0 -0
- package/dist/public/assets/_Bif8ny7j.js.br +0 -0
- package/dist/public/assets/_Bj-Zy9Ch.js.br +0 -0
- package/dist/public/assets/_BjiBvh1F.js.br +0 -0
- package/dist/public/assets/_Bkllp0As2.js.br +0 -0
- package/dist/public/assets/_Bla8nnOV.js.br +0 -0
- package/dist/public/assets/_BnfbE-el2.js.br +0 -0
- package/dist/public/assets/_BoCIFzP2.js.br +0 -0
- package/dist/public/assets/_BrBaHkF_.js.br +0 -0
- package/dist/public/assets/_C-PAnbq3.js.br +0 -0
- package/dist/public/assets/_C2_4nxz12.js.br +0 -0
- package/dist/public/assets/_C6wSov-5.js.br +0 -0
- package/dist/public/assets/_C7-54NbO2.js.br +0 -0
- package/dist/public/assets/_CB8oTGqD.js.br +0 -0
- package/dist/public/assets/_CGdTzrY1.js.br +0 -0
- package/dist/public/assets/_CHMOdIBF.js.br +0 -0
- package/dist/public/assets/_CNqZ6LTq.js.br +0 -0
- package/dist/public/assets/_CWkU9r_m2.js.br +0 -0
- package/dist/public/assets/_CgURBhsh2.js.br +0 -0
- package/dist/public/assets/_CgVVBthC2.js.br +0 -0
- package/dist/public/assets/_CgpdtGAg.js.br +0 -0
- package/dist/public/assets/_CoqFfSgg.js.br +0 -0
- package/dist/public/assets/_CqHt_5jw.js.br +0 -0
- package/dist/public/assets/_Cs0oBAc0.js.br +0 -0
- package/dist/public/assets/_Cs32oXy_.js.br +0 -0
- package/dist/public/assets/_CtQ_-SCD.js.br +0 -0
- package/dist/public/assets/_CuOsKTaT.js.br +0 -0
- package/dist/public/assets/_CzNPwcYd2.js.br +0 -0
- package/dist/public/assets/_CzaqMz01.js.br +0 -0
- package/dist/public/assets/_D9dzMNoO.js.br +0 -0
- package/dist/public/assets/_DC4Dw05t2.js.br +0 -0
- package/dist/public/assets/_DCzqg64T.js.br +0 -0
- package/dist/public/assets/_DEV1HUyH2.js.br +0 -0
- package/dist/public/assets/_DGvaJxhN2.js.br +0 -0
- package/dist/public/assets/_DJx4mibl2.js.br +0 -0
- package/dist/public/assets/_DMG2J4L6.js.br +0 -0
- package/dist/public/assets/_DMp6AZKA.js.br +0 -0
- package/dist/public/assets/_DWEFguKu2.js.br +0 -0
- package/dist/public/assets/_DY1QitV0.js.br +0 -0
- package/dist/public/assets/_D_J7qiyb.js.br +0 -0
- package/dist/public/assets/_DnGXgL0i.js.br +0 -0
- package/dist/public/assets/_Doqy2mrF.js.br +0 -0
- package/dist/public/assets/_DpeDF238.js.br +0 -0
- package/dist/public/assets/_Dr_nTK62.js.br +0 -0
- package/dist/public/assets/_DsAa3Xy42.js.br +0 -0
- package/dist/public/assets/_FR2-KCqo.js.br +0 -0
- package/dist/public/assets/_H1UQxF28.js.br +0 -0
- package/dist/public/assets/_HcLcz5i82.js.br +0 -0
- package/dist/public/assets/_Obe-5WKG.js.br +0 -0
- package/dist/public/assets/_Q2qQseiI.js.br +0 -0
- package/dist/public/assets/_RGFDEa9_.js.br +0 -0
- package/dist/public/assets/_ScSFhsTr.js.br +0 -0
- package/dist/public/assets/_nC_b5l_M.js.br +0 -0
- package/dist/public/assets/_njLSeYG62.js.br +0 -0
- package/dist/public/assets/_qx7lbylN2.js.br +0 -0
- package/dist/public/assets/_truEpqET.js.br +0 -0
- package/dist/public/assets/_urqw27Lw.js.br +0 -0
- package/dist/public/assets/_zsjVrG7P2.js.br +0 -0
- package/dist/public/assets/diff-view-09aeMxRD.css.br +0 -0
- package/dist/public/assets/index-BJoarFLU.js.br +0 -0
- package/dist/public/assets/index-Kv8GSDQR.css.br +0 -0
package/bin/work.mjs
CHANGED
|
@@ -107,7 +107,7 @@ async function usage() {
|
|
|
107
107
|
if (!res.ok) die(`server answered ${res.status} for /api/usage`);
|
|
108
108
|
data = await res.json();
|
|
109
109
|
} catch {
|
|
110
|
-
die(`no work server on port ${port}
|
|
110
|
+
die(`no work server on port ${port}. Start one with: work start`);
|
|
111
111
|
}
|
|
112
112
|
if (args.includes("--json")) {
|
|
113
113
|
console.log(JSON.stringify(data, null, 2));
|
|
@@ -149,7 +149,7 @@ async function apiGet(path) {
|
|
|
149
149
|
return await res.json();
|
|
150
150
|
} catch (err) {
|
|
151
151
|
if (err?.message?.startsWith("server answered")) throw err;
|
|
152
|
-
die(`no work server on port ${port}
|
|
152
|
+
die(`no work server on port ${port}. Start one with: work start`);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
|
|
@@ -184,7 +184,7 @@ async function resolveWorkspace(arg) {
|
|
|
184
184
|
return cwd === root || cwd.startsWith(root + path.sep);
|
|
185
185
|
});
|
|
186
186
|
}
|
|
187
|
-
if (!ws) die("not inside a workspace
|
|
187
|
+
if (!ws) die("not inside a workspace. Pass its name or id (see: work workspaces)");
|
|
188
188
|
return { ws, status: status[ws.id] || { ports: [], repos: [], sessions: [] } };
|
|
189
189
|
}
|
|
190
190
|
|
|
@@ -196,7 +196,7 @@ async function workspacesCmd() {
|
|
|
196
196
|
const [list, status] = await Promise.all([apiGet("/api/workspaces"), apiGet("/api/status")]);
|
|
197
197
|
const rows = list.map((w) => ({ ...w, ...(status[w.id] || {}) }));
|
|
198
198
|
if (jsonOut) return console.log(JSON.stringify(rows, null, 2));
|
|
199
|
-
if (!rows.length) return console.log("no workspaces
|
|
199
|
+
if (!rows.length) return console.log("no workspaces. Create one in the app");
|
|
200
200
|
const wName = Math.max(4, ...rows.map((w) => w.name.length));
|
|
201
201
|
console.log(`${pad("name", wName)} ${pad("status", 8)} ${pad("branch", 28)} repos agents ports`);
|
|
202
202
|
for (const w of rows) {
|
|
@@ -342,7 +342,7 @@ async function doctorCmd() {
|
|
|
342
342
|
async function fix(d) {
|
|
343
343
|
for (const tool of d.tools.filter((t) => !t.installed)) {
|
|
344
344
|
if (!tool.installable) {
|
|
345
|
-
if (tool.required) die(`${tool.label} not found
|
|
345
|
+
if (tool.required) die(`${tool.label} not found. Install it and re-run (the curl installer does this automatically)`);
|
|
346
346
|
continue;
|
|
347
347
|
}
|
|
348
348
|
log(`installing ${tool.label} via mise`);
|
|
@@ -357,12 +357,12 @@ async function fix(d) {
|
|
|
357
357
|
// wires git credentials); here we only say so. GH_TOKEN still works headless.
|
|
358
358
|
if (!d.github.some((h) => h.authed)) {
|
|
359
359
|
if (process.env.GH_TOKEN || process.env.GITHUB_TOKEN) log("gh will use GH_TOKEN from the environment");
|
|
360
|
-
else warn("GitHub is not signed in
|
|
360
|
+
else warn("GitHub is not signed in. Open the app and use Settings → GitHub → Sign in");
|
|
361
361
|
}
|
|
362
362
|
// Agent CLIs are installed from the app (Settings → Agents), where each
|
|
363
363
|
// one is a click and the picker updates immediately — no prompt here.
|
|
364
364
|
if (!d.agents.some((a) => a.installed)) {
|
|
365
|
-
warn("no coding agent CLI found
|
|
365
|
+
warn("no coding agent CLI found. Install one from Settings → Agents in the app");
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
368
|
|
|
@@ -596,7 +596,7 @@ ${envXml}
|
|
|
596
596
|
spawnSync("launchctl", ["bootout", `gui/${uid}/dev.work.app`], { stdio: "ignore" });
|
|
597
597
|
const boot = spawnSync("launchctl", ["bootstrap", `gui/${uid}`, plist], { stdio: "ignore" });
|
|
598
598
|
if (boot.status !== 0 && spawnSync("launchctl", ["load", "-w", plist], { stdio: "ignore" }).status !== 0) {
|
|
599
|
-
warn(`could not load the agent (no GUI launchd session?)
|
|
599
|
+
warn(`could not load the agent (no GUI launchd session?). Run from a local terminal: launchctl bootstrap gui/$UID ${plist}`);
|
|
600
600
|
warn("or start manually: work start");
|
|
601
601
|
return false;
|
|
602
602
|
}
|
|
@@ -619,7 +619,7 @@ ${envXml}
|
|
|
619
619
|
fs.writeFileSync(
|
|
620
620
|
unitFile,
|
|
621
621
|
`[Unit]
|
|
622
|
-
Description=work
|
|
622
|
+
Description=work, agentic dev workspace GUI
|
|
623
623
|
# Keep retrying forever: hitting the default start limit parks the unit in
|
|
624
624
|
# failed state, which is the manual-restart hole we are closing.
|
|
625
625
|
StartLimitIntervalSec=0
|
|
@@ -647,7 +647,7 @@ WantedBy=default.target
|
|
|
647
647
|
return true;
|
|
648
648
|
}
|
|
649
649
|
|
|
650
|
-
warn("no service manager found
|
|
650
|
+
warn("no service manager found. Start manually with: work start");
|
|
651
651
|
return false;
|
|
652
652
|
}
|
|
653
653
|
|
|
@@ -655,7 +655,7 @@ function maybeTunnel(port = appPort) {
|
|
|
655
655
|
if (yes || have("cloudflared")) return;
|
|
656
656
|
console.log(`
|
|
657
657
|
To reach work from your phone or other devices, put it behind something
|
|
658
|
-
that terminates TLS and authenticates
|
|
658
|
+
that terminates TLS and authenticates, e.g. a Cloudflare Tunnel with
|
|
659
659
|
Access (https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/)
|
|
660
660
|
pointing at http://localhost:${port}, or Tailscale. The server itself has
|
|
661
661
|
no auth of its own.`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as tone, Ct as attrTag, F as _attr_input_value, I as _attr_option_value, J as _el_resume, K as _el, M as _attr, N as _attr_class, P as _attr_details_or_dialog_open, Q as _for_of, R as _attr_select_value, T as iconBtnRow, Tt as writeScope, W as _content_resume, X as _existing_scope, Y as _escape, _t as _subscribe, a as diffUncommitted, at as _resume, ct as _scope_reason, d as icon_search_default, dt as _sep, f as icon_back_default, ft as _serialize_guard, gt as _show_start, ht as _show_end, i as diffTreeOpen, it as _peek_scope_id, l as fuzzy, lt as _scope_with_id, mt as _set_serialize_reason, n as findInput, ot as _resume_branch, p as icon_refresh_default, pt as _serialize_if, q as _el_read_error, r as icon_sidebar_default, rt as _if, st as _scope_id, t as findIconBtn, tt as _html, ut as _script, v as toast_default, vt as _template, w as iconBtnLg, y as repoLabel, z as _attr_style } from "./
|
|
1
|
+
import { A as tone, Ct as attrTag, F as _attr_input_value, I as _attr_option_value, J as _el_resume, K as _el, M as _attr, N as _attr_class, P as _attr_details_or_dialog_open, Q as _for_of, R as _attr_select_value, T as iconBtnRow, Tt as writeScope, W as _content_resume, X as _existing_scope, Y as _escape, _t as _subscribe, a as diffUncommitted, at as _resume, ct as _scope_reason, d as icon_search_default, dt as _sep, f as icon_back_default, ft as _serialize_guard, gt as _show_start, ht as _show_end, i as diffTreeOpen, it as _peek_scope_id, l as fuzzy, lt as _scope_with_id, mt as _set_serialize_reason, n as findInput, ot as _resume_branch, p as icon_refresh_default, pt as _serialize_if, q as _el_read_error, r as icon_sidebar_default, rt as _if, st as _scope_id, t as findIconBtn, tt as _html, ut as _script, v as toast_default, vt as _template, w as iconBtnLg, y as repoLabel, z as _attr_style } from "./_D4h268HL.js";
|
|
2
2
|
//#region src/client/clipboard.ts
|
|
3
3
|
/** Copy text to the clipboard. `navigator.clipboard` needs a secure
|
|
4
4
|
* context — absent over plain-http LAN origins — so fall back to a hidden
|
|
@@ -173,7 +173,7 @@ function repoHeader(worktree, repo) {
|
|
|
173
173
|
const head = shortSha(repo.head);
|
|
174
174
|
const base = shortSha(repo.baseSha);
|
|
175
175
|
const branch = repo.pr?.headRefName || repo.branch || "HEAD";
|
|
176
|
-
return `${worktree}/${repo.pr ? ` #${repo.pr.number}` : ""}
|
|
176
|
+
return `${worktree}/${repo.pr ? ` #${repo.pr.number}` : ""}: \`${branch}\` ${head} vs \`${repo.base}\` ${base}`;
|
|
177
177
|
}
|
|
178
178
|
function shortSha(sha, n = 12) {
|
|
179
179
|
return sha.slice(0, n);
|
|
@@ -263,7 +263,7 @@ function treeRows(files) {
|
|
|
263
263
|
var treeToggle = "_d_ _U _d";
|
|
264
264
|
var repoWorktree = "_eC _r";
|
|
265
265
|
var repoTitle = "_eE _q";
|
|
266
|
-
var fileFilter = "
|
|
266
|
+
var fileFilter = "_ff _f";
|
|
267
267
|
//#endregion
|
|
268
268
|
//#region src/tags/file-filter.marko
|
|
269
269
|
var file_filter_default = _template("j", (input) => {
|
|
@@ -293,7 +293,7 @@ var file_filter_default = _template("j", (input) => {
|
|
|
293
293
|
pending = v;
|
|
294
294
|
box.timer = setTimeout(flush, 150);
|
|
295
295
|
}, "j2", $scope0_id);
|
|
296
|
-
_html(`<div${_attr_class("
|
|
296
|
+
_html(`<div${_attr_class("_fe")}><input${_attr_input_value($scope0_id, "b", draft, _resume(function(v) {
|
|
297
297
|
type(v);
|
|
298
298
|
}, "j0", $scope0_id))}${_attr_class(fileFilter)} type=search placeholder="Filter files…" aria-label="Filter files">${_el_resume($scope0_id, "b")}</div>`);
|
|
299
299
|
_script($scope0_id, "j3");
|
|
@@ -319,7 +319,7 @@ var diff_send_default = _template("g", (input) => {
|
|
|
319
319
|
let sendTarget = null;
|
|
320
320
|
const sessions = input.sessions || [];
|
|
321
321
|
const sendPick = sessions.some((s) => s.id === sendTarget) ? sendTarget : sessions[0]?.id ?? null;
|
|
322
|
-
_html(`<span${_attr_class("
|
|
322
|
+
_html(`<span${_attr_class("_fa")}><button type=button${_attr_class("_i")} title="Copy comments as markdown">Copy${_el_resume($scope0_id, "c")}</button>${_el_resume($scope0_id, "b")}`);
|
|
323
323
|
_if(() => {
|
|
324
324
|
if (sessions.length === 1) {
|
|
325
325
|
const $scope1_id = _scope_id();
|
|
@@ -329,11 +329,11 @@ var diff_send_default = _template("g", (input) => {
|
|
|
329
329
|
return 0;
|
|
330
330
|
} else if (sessions.length) {
|
|
331
331
|
const $scope2_id = _scope_id();
|
|
332
|
-
_html(`<span${_attr_class("
|
|
332
|
+
_html(`<span${_attr_class("_fb")}><button type=button${_attr_class(["_j", "_fc"])}${_attr("disabled", sending)}>Send to${_el_resume($scope2_id, "c")}</button>${_el_resume($scope2_id, "b")}`);
|
|
333
333
|
_attr_select_value($scope2_id, "d", sendTarget, _resume((_new_sendTarget) => {
|
|
334
334
|
sendTarget = _new_sendTarget;
|
|
335
335
|
}, "g0", $scope2_id), () => {
|
|
336
|
-
_html(`<select${_attr_class("
|
|
336
|
+
_html(`<select${_attr_class("_fd")} aria-label="Send comments to session"${_attr("disabled", sending)}>`);
|
|
337
337
|
_for_of(sessions, (s) => {
|
|
338
338
|
const $scope3_id = _scope_id();
|
|
339
339
|
_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)}`);
|
|
@@ -1869,9 +1869,9 @@ var diff_find_default = _template("f", (input) => {
|
|
|
1869
1869
|
el.select();
|
|
1870
1870
|
}, 0);
|
|
1871
1871
|
}, "f5", $scope0_id);
|
|
1872
|
-
_html(`<div${_attr_class(["
|
|
1872
|
+
_html(`<div${_attr_class(["_fh", !open && "_fg"])} aria-hidden=${open ? "false" : "true"}><input${_attr_input_value($scope0_id, "b", query || "", _resume(function(v) {
|
|
1873
1873
|
type(v);
|
|
1874
|
-
}, "f0", $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("
|
|
1874
|
+
}, "f0", $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("_fk")}>${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"}>↑</button>${_el_resume($scope0_id, "e")}<button type=button${_attr_class(findIconBtn)} title="Next match"${_attr("disabled", !hits.length || !open)} tabindex=${open ? "0" : "-1"}>↓</button>${_el_resume($scope0_id, "f")}<button type=button${_attr_class(findIconBtn)} title="Close find" tabindex=${open ? "0" : "-1"}>×</button>${_el_resume($scope0_id, "g")}</div>${_el_resume($scope0_id, "a")}`);
|
|
1875
1875
|
_script($scope0_id, "f6");
|
|
1876
1876
|
_script($scope0_id, "f7");
|
|
1877
1877
|
_script($scope0_id, "f8");
|
|
@@ -1908,7 +1908,7 @@ var diff_file_default = _template("e", (input) => {
|
|
|
1908
1908
|
_scope_reason();
|
|
1909
1909
|
const $scope0_id = _scope_id();
|
|
1910
1910
|
_el($scope0_id, "e0");
|
|
1911
|
-
_html(`<div${_attr_class(["
|
|
1911
|
+
_html(`<div${_attr_class(["_e_", input.class])}></div>${_el_resume($scope0_id, "a")}`);
|
|
1912
1912
|
_script($scope0_id, "e1");
|
|
1913
1913
|
writeScope($scope0_id, {
|
|
1914
1914
|
e: input.file,
|
|
@@ -1937,10 +1937,10 @@ var diff_tree_default = _template("h", (input) => {
|
|
|
1937
1937
|
let openedRepos = input.openedRepos;
|
|
1938
1938
|
let collapsedDirs = /* @__PURE__ */ new Set();
|
|
1939
1939
|
const commentKeys = input.commentKeys || /* @__PURE__ */ new Set();
|
|
1940
|
-
_html(`<aside${_attr_class(["
|
|
1940
|
+
_html(`<aside${_attr_class(["_fw", { ["_fv"]: input.open === false }])}>`);
|
|
1941
1941
|
_for_of(input.sections, (section) => {
|
|
1942
1942
|
const $scope1_id = _scope_id();
|
|
1943
|
-
_html(`<div${_attr_class("
|
|
1943
|
+
_html(`<div${_attr_class("_fx")}><button type=button${_attr_class(["_fy", { ["_fv"]: collapsedRepos.has(section.id) }])}><span${_attr_class("_fD")}>${collapsedRepos.has(section.id) ? "▸" : "▾"}${_el_resume($scope1_id, "d")}</span>${_sep($sg__input_sections)}${_escape(section.label)}${_el_resume($scope1_id, "e", $sg__input_sections)}</button>${_el_resume($scope1_id, "b")}`);
|
|
1944
1944
|
_if(() => {
|
|
1945
1945
|
if (!collapsedRepos.has(section.id) || openedRepos.has(section.id)) {
|
|
1946
1946
|
const $scope2_id = _scope_id();
|
|
@@ -1967,17 +1967,17 @@ var diff_tree_default = _template("h", (input) => {
|
|
|
1967
1967
|
_if(() => {
|
|
1968
1968
|
if (!hiddenByCollapse(row) && row.kind === "dir") {
|
|
1969
1969
|
const $scope5_id = _scope_id();
|
|
1970
|
-
_html(`<button type=button${_attr_class(["
|
|
1970
|
+
_html(`<button type=button${_attr_class(["_fz", { ["_fv"]: collapsedDirs.has(dirKey(row.path)) }])}${_attr("title", row.path)}${_attr_style(`padding-left:${.35 + row.depth * .75}rem`)}><span${_attr_class("_fD")}>${collapsedDirs.has(dirKey(row.path)) ? "▸" : "▾"}${_el_resume($scope5_id, "c")}</span>${_escape(row.label)}${_el_resume($scope5_id, "d", $sg__input_sections)}/</button>${_el_resume($scope5_id, "a")}`);
|
|
1971
1971
|
_script($scope5_id, "h3");
|
|
1972
1972
|
_subscribe($si__input_sections && $if_content__dirKey__closures, _subscribe($collapsedDirs__closures, writeScope($scope5_id, { Cv: 1 })));
|
|
1973
1973
|
return 0;
|
|
1974
1974
|
} else if (!hiddenByCollapse(row) && row.kind !== "dir") {
|
|
1975
1975
|
const $scope4_id = _scope_id();
|
|
1976
|
-
_html(`<button type=button${_attr_class("
|
|
1976
|
+
_html(`<button type=button${_attr_class("_fA")}${_attr("title", row.file.path)}${_attr_style(`padding-left:${.5 + row.depth * .75}rem`)}><span${_attr_class("_fE")}${_attr("data-status", row.file.status)}>${_escape(row.file.status)}${_el_resume($scope4_id, "c", $sg__input_sections)}</span>${_el_resume($scope4_id, "b", $sg__input_sections)}<span${_attr_class("_fB")}>${_escape(row.name)}${_el_resume($scope4_id, "e", $sg__input_sections)}</span>`);
|
|
1977
1977
|
_if(() => {
|
|
1978
1978
|
if (commentKeys.has(row.file.key)) {
|
|
1979
1979
|
const $scope6_id = _scope_id();
|
|
1980
|
-
_html(`<span${_attr_class("
|
|
1980
|
+
_html(`<span${_attr_class("_fC")}>💬</span>`);
|
|
1981
1981
|
_serialize_if($scope0_reason, 0) && writeScope($scope6_id, {});
|
|
1982
1982
|
return 0;
|
|
1983
1983
|
}
|
|
@@ -2048,10 +2048,10 @@ var diff_file_sheet_default = _template("d", (input) => {
|
|
|
2048
2048
|
_if(() => {
|
|
2049
2049
|
if (open) {
|
|
2050
2050
|
const $scope1_id = _scope_id();
|
|
2051
|
-
_html(`<div${_attr_class("
|
|
2051
|
+
_html(`<div${_attr_class("_e2")}></div>${_el_resume($scope1_id, "a")}<div${_attr_class("_e3")} role=dialog aria-label="Jump to file"><div${_attr_class("_e4")}><strong${_attr_class("_e1")}>Files</strong><span${_attr_class("_e5")}>${_escape(input.files.length)}${_el_resume($scope1_id, "f", _serialize_guard($scope0_reason, 6))}${_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, "_e0"])} title=Close aria-label=Close>×</button>${_el_resume($scope1_id, "h")}</div><div${_attr_class("_e6")}>`);
|
|
2052
2052
|
_for_of(input.files, (file) => {
|
|
2053
2053
|
const $scope2_id = _scope_id();
|
|
2054
|
-
_html(`<button type=button${_attr_class(["
|
|
2054
|
+
_html(`<button type=button${_attr_class(["_e7", "_r"])}><span${_attr_class("_e9")}${_attr("data-status", file.status)}>${_escape(file.status)}${_el_resume($scope2_id, "c", $sg__input_files)}</span>${_el_resume($scope2_id, "b", $sg__input_files)}<span${_attr_class("_e8")}${_attr("title", file.key)}><bdi>${_escape(file.key)}${_el_resume($scope2_id, "e", $sg__input_files)}</bdi></span>${_el_resume($scope2_id, "d", $sg__input_files)}`);
|
|
2055
2055
|
_if(() => {
|
|
2056
2056
|
if (commentKeys.has(file.key)) {
|
|
2057
2057
|
const $scope3_id = _scope_id();
|
|
@@ -2346,7 +2346,7 @@ var diff_view_default = _template("i", (input) => {
|
|
|
2346
2346
|
}, "i12", $scope0_id);
|
|
2347
2347
|
const copyMarkdown = _resume(async () => {
|
|
2348
2348
|
if (!await copyText(commentMarkdown(comments, repos))) {
|
|
2349
|
-
error = "Copy failed
|
|
2349
|
+
error = "Copy failed: the clipboard needs HTTPS in this browser.";
|
|
2350
2350
|
return false;
|
|
2351
2351
|
}
|
|
2352
2352
|
await clearComments();
|
|
@@ -2516,10 +2516,10 @@ var diff_view_default = _template("i", (input) => {
|
|
|
2516
2516
|
size: 14,
|
|
2517
2517
|
class: loading && "_y"
|
|
2518
2518
|
});
|
|
2519
|
-
_html(`</button>${_el_resume($scope0_id, "q")}<button${_attr_class(["_i", "_eV"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope0_id, "t")})</button>${_el_resume($scope0_id, "s")}<div${_attr_class("_ev")} role=group aria-label="Review scope"><button type=button${_attr_class(["_ex", { ["_ew"]: !uncommitted }])} aria-pressed=${!uncommitted ? "true" : "false"} title="Committed changes only
|
|
2519
|
+
_html(`</button>${_el_resume($scope0_id, "q")}<button${_attr_class(["_i", "_eV"])} title="Jump to file">Files (<!>${_escape(shownFiles.length)}${_el_resume($scope0_id, "t")})</button>${_el_resume($scope0_id, "s")}<div${_attr_class("_ev")} role=group aria-label="Review scope"><button type=button${_attr_class(["_ex", { ["_ew"]: !uncommitted }])} aria-pressed=${!uncommitted ? "true" : "false"} title="Committed changes only (base…tip, no working-tree edits)"${_attr("disabled", loading)}>Committed</button>${_el_resume($scope0_id, "v")}<button type=button${_attr_class(["_ex", { ["_ew"]: uncommitted }])} aria-pressed=${uncommitted ? "true" : "false"} title="Include uncommitted and untracked files in the working tree"${_attr("disabled", loading)}>Working tree</button>${_el_resume($scope0_id, "w")}</div><button type=button${_attr_class(["_ey", {
|
|
2520
2520
|
["_ew"]: uncommitted,
|
|
2521
2521
|
["_Y"]: uncommitted
|
|
2522
|
-
}])} aria-pressed=${uncommitted ? "true" : "false"} title=${uncommitted ? "\"Working tree
|
|
2522
|
+
}])} aria-pressed=${uncommitted ? "true" : "false"} title=${uncommitted ? "\"Working tree, including uncommitted. Switch to committed only\"" : "\"Committed only. Switch to the working tree\""}${_attr("disabled", loading)}>${uncommitted ? "Working tree" : "Committed"}${_el_resume($scope0_id, "y")}</button>${_el_resume($scope0_id, "x")}<div${_attr_class(["_ej", { ["_ei"]: !findOpen }])}>`);
|
|
2523
2523
|
_set_serialize_reason(2);
|
|
2524
2524
|
const $childScope4 = _peek_scope_id();
|
|
2525
2525
|
diff_find_default({
|
|
@@ -2580,7 +2580,7 @@ var diff_view_default = _template("i", (input) => {
|
|
|
2580
2580
|
content: _content_resume("i38", () => {
|
|
2581
2581
|
_scope_reason();
|
|
2582
2582
|
const $scope20_id = _scope_id();
|
|
2583
|
-
_html(`${_escape(repo.base)}${_el_resume($scope20_id, "a")}<!>${uncommitted ? "
|
|
2583
|
+
_html(`${_escape(repo.base)}${_el_resume($scope20_id, "a")}<!>${uncommitted ? ", showing uncommitted changes only" : ""}${_el_resume($scope20_id, "b")}.`);
|
|
2584
2584
|
_subscribe($for_content3__repo_base__closures, _subscribe($uncommitted__closures, writeScope($scope20_id, { _: _scope_with_id($scope19_id) })));
|
|
2585
2585
|
_resume_branch($scope20_id);
|
|
2586
2586
|
}, $scope19_id)
|
|
@@ -2603,7 +2603,7 @@ var diff_view_default = _template("i", (input) => {
|
|
|
2603
2603
|
content: _content_resume("i39", () => {
|
|
2604
2604
|
_scope_reason();
|
|
2605
2605
|
const $scope22_id = _scope_id();
|
|
2606
|
-
_html(`already in <!>${_escape(repo.base)}${_el_resume($scope22_id, "a")}<!>${uncommitted ? "
|
|
2606
|
+
_html(`already in <!>${_escape(repo.base)}${_el_resume($scope22_id, "a")}<!>${uncommitted ? ", showing uncommitted changes only" : ""}${_el_resume($scope22_id, "b")}.`);
|
|
2607
2607
|
_subscribe($for_content4__repo_base__closures, _subscribe($uncommitted__closures, writeScope($scope22_id, {
|
|
2608
2608
|
_: _scope_with_id($scope21_id),
|
|
2609
2609
|
Cdv: 1
|
|
@@ -2646,7 +2646,7 @@ var diff_view_default = _template("i", (input) => {
|
|
|
2646
2646
|
_html(`${i > 0 ? " · " : ""}${_el_resume($scope31_id, "a")}<!>${_escape(repo.worktree)}${_el_resume($scope31_id, "b")} #<!>${_escape(repo.pr.number)}${_el_resume($scope31_id, "c")}`);
|
|
2647
2647
|
writeScope($scope31_id, {});
|
|
2648
2648
|
}, "id", $scope28_id, "b");
|
|
2649
|
-
_html(`
|
|
2649
|
+
_html(` : this view has a newer tip than the PR page.</span><span${_attr_class(["_r", "_en"])}>`);
|
|
2650
2650
|
_for_of(driftRepos, (repo, i) => {
|
|
2651
2651
|
const $scope32_id = _scope_id();
|
|
2652
2652
|
_html(`<span${_attr("title", `origin/${repo.pr.headRefName} ${repo.head} · GitHub ${repo.pr.headRefOid}`)}>${i > 0 ? " · " : ""}${_el_resume($scope32_id, "b")}<!>${_escape(shortSha(repo.head))}${_el_resume($scope32_id, "c")} → <!>${_escape(shortSha(repo.pr.headRefOid))}${_el_resume($scope32_id, "d")}</span>${_el_resume($scope32_id, "a")}`);
|
|
@@ -2746,7 +2746,7 @@ var diff_view_default = _template("i", (input) => {
|
|
|
2746
2746
|
_if(() => {
|
|
2747
2747
|
if (repo.pr) {
|
|
2748
2748
|
const $scope33_id = _scope_id();
|
|
2749
|
-
_html(`<a${_attr_class(["_m", "_o"])}${_attr("href", `${repo.pr.url}/files`)} target=_blank rel=noopener${_attr("title", `${repo.pr.title}
|
|
2749
|
+
_html(`<a${_attr_class(["_m", "_o"])}${_attr("href", `${repo.pr.url}/files`)} target=_blank rel=noopener${_attr("title", `${repo.pr.title}: ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}`)}>#<!>${_escape(repo.pr.number)}${_el_resume($scope33_id, "b")}</a>${_el_resume($scope33_id, "a")}<span${_attr_class(repoTitle)}>${_escape(repo.pr.title)}${_el_resume($scope33_id, "d")}</span>`);
|
|
2750
2750
|
_script($scope33_id, "i44");
|
|
2751
2751
|
_subscribe($for_content__repo_baseSha__closures, _subscribe($for_content__repo_base__closures, _subscribe($for_content__repo_head__closures, _subscribe($for_content__repo_pr_headRefName__closures, _subscribe($for_content__repo_pr_title__closures, _subscribe($for_content__repo_pr_url__closures, _subscribe($for_content__repo_pr_number__closures, writeScope($scope33_id, {
|
|
2752
2752
|
Ca4: 2,
|
|
@@ -2804,7 +2804,7 @@ var diff_view_default = _template("i", (input) => {
|
|
|
2804
2804
|
_if(() => {
|
|
2805
2805
|
if (repo.pr) {
|
|
2806
2806
|
const $scope35_id = _scope_id();
|
|
2807
|
-
_html(`<a${_attr_class(["_m", "_o"])}${_attr("href", `${repo.pr.url}/files`)} target=_blank rel=noopener${_attr("title", `${repo.pr.title}
|
|
2807
|
+
_html(`<a${_attr_class(["_m", "_o"])}${_attr("href", `${repo.pr.url}/files`)} target=_blank rel=noopener${_attr("title", `${repo.pr.title}: ${repo.pr.headRefName} ${repo.head} vs ${repo.base} ${repo.baseSha}`)}>#<!>${_escape(repo.pr.number)}${_el_resume($scope35_id, "b")}</a>${_el_resume($scope35_id, "a")}<span${_attr_class("_q")}>${_escape(repo.pr.title)}${_el_resume($scope35_id, "d")}</span>`);
|
|
2808
2808
|
_subscribe($for_content__repo_baseSha__closures, _subscribe($for_content__repo_base__closures, _subscribe($for_content__repo_head__closures, _subscribe($for_content__repo_pr_headRefName__closures, _subscribe($for_content__repo_pr_title__closures, _subscribe($for_content__repo_pr_url__closures, _subscribe($for_content__repo_pr_number__closures, writeScope($scope35_id, {
|
|
2809
2809
|
Ca1: 1,
|
|
2810
2810
|
Ca2: 1,
|
|
@@ -2286,7 +2286,7 @@ var icon_sidebar_default = _template("S", (input) => {
|
|
|
2286
2286
|
});
|
|
2287
2287
|
_serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
|
|
2288
2288
|
});
|
|
2289
|
-
var findInput = "
|
|
2290
|
-
var findIconBtn = "
|
|
2289
|
+
var findInput = "_fi _f";
|
|
2290
|
+
var findIconBtn = "_fl _d";
|
|
2291
2291
|
//#endregion
|
|
2292
2292
|
export { _hoist as $, tone as A, _attrs as B, btnSm as C, attrTag as Ct, inputLg as D, iconBtnXs as E, _attr_input_value as F, _dynamic_tag as G, _await as H, _attr_option_value as I, _el_resume as J, _el as K, _attr_or as L, _attr as M, _attr_class as N, metaTrunc as O, _attr_details_or_dialog_open as P, _for_of as Q, _attr_select_value as R, btnLg as S, _var as St, iconBtnRow as T, writeScope as Tt, _content as U, _attrs_partial as V, _content_resume as W, _existing_scope as X, _escape as Y, _flush_head as Z, sectionCount as _, _subscribe as _t, diffUncommitted as a, _resume as at, repoWebUrl as b, _trailers as bt, workspaceTab as c, _scope_reason as ct, icon_search_default as d, _sep as dt, _hoist_read_error as et, icon_back_default as f, _serialize_guard as ft, row as g, _show_start as gt, iconBtn as h, _show_end as ht, diffTreeOpen as i, _peek_scope_id as it, $global as j, phase as k, fuzzy as l, _scope_with_id as lt, icon_base_default as m, _set_serialize_reason as mt, findInput as n, _id as nt, setWorkspaceTab as o, _resume_branch as ot, icon_refresh_default as p, _serialize_if as pt, _el_read_error as q, icon_sidebar_default as r, _if as rt, sideNavOpen as s, _scope_id as st, findIconBtn as t, _html as tt, rankRepos as u, _script as ut, toast_default as v, _template as vt, iconBtnLg as w, withPageAssets as wt, setPrimaryHost as x, _try as xt, repoLabel as y, _to_text as yt, _attr_style as z };
|
|
@@ -6395,7 +6395,7 @@ async function notify(sessionId, reason) {
|
|
|
6395
6395
|
const label = reason === "done" ? "✔ Finished" : "⚠ Needs attention";
|
|
6396
6396
|
sendPush({
|
|
6397
6397
|
title: `${row.name} · ${row.title || row.agent}`,
|
|
6398
|
-
body: summary ? `${label}
|
|
6398
|
+
body: summary ? `${label}: ${summary}` : `${label}`,
|
|
6399
6399
|
tag: `session-${sessionId}`,
|
|
6400
6400
|
badge: waiting,
|
|
6401
6401
|
data: {
|
|
@@ -6434,7 +6434,7 @@ function publishChange(sessionId) {
|
|
|
6434
6434
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
6435
6435
|
if (row?.workspace_id) {
|
|
6436
6436
|
const workspaceId = row.workspace_id;
|
|
6437
|
-
import("./
|
|
6437
|
+
import("./_CTJQVrRJ.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
6438
6438
|
return;
|
|
6439
6439
|
}
|
|
6440
6440
|
publish("sessions.changed");
|