@dylanpiercey/work 0.0.6 → 0.0.7
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 +25 -2
- package/dist/index.mjs +992 -688
- package/dist/public/assets/{_lO429-VP.js → _B-_0cKbG.js} +2 -2
- package/dist/public/assets/{_lO429-VP.js.map → _B-_0cKbG.js.map} +1 -1
- package/dist/public/assets/{_kf1lUDoU2.js → _B1F2GQHq2.js} +2 -2
- package/dist/public/assets/{_kf1lUDoU2.js.map → _B1F2GQHq2.js.map} +1 -1
- package/dist/public/assets/{_D1AvypB0.js → _B49hrT7F.js} +2 -2
- package/dist/public/assets/{_D1AvypB0.js.map → _B49hrT7F.js.map} +1 -1
- package/dist/public/assets/{_lENTdKos.js → _B4R8SNvy.js} +2 -2
- package/dist/public/assets/{_lENTdKos.js.map → _B4R8SNvy.js.map} +1 -1
- package/dist/public/assets/{_T-HpFRXH.js → _B7K5PePe.js} +2 -2
- package/dist/public/assets/{_T-HpFRXH.js.map → _B7K5PePe.js.map} +1 -1
- package/dist/public/assets/{_BqB9YKHu.js → _B8mEgNvE.js} +2 -2
- package/dist/public/assets/{_BqB9YKHu.js.map → _B8mEgNvE.js.map} +1 -1
- package/dist/public/assets/{_BSe5zjTJ2.js → _BBbcogWL2.js} +2 -2
- package/dist/public/assets/{_BSe5zjTJ2.js.map → _BBbcogWL2.js.map} +1 -1
- package/dist/public/assets/{_CUCwB86v.js → _BDxD__Ca.js} +2 -2
- package/dist/public/assets/{_CUCwB86v.js.map → _BDxD__Ca.js.map} +1 -1
- package/dist/public/assets/{_D8RDRYsV.js → _BE5Ltp0D.js} +2 -2
- package/dist/public/assets/{_D8RDRYsV.js.map → _BE5Ltp0D.js.map} +1 -1
- package/dist/public/assets/{_BvkUWaoR.js → _BE8gA6TO.js} +2 -2
- package/dist/public/assets/{_BvkUWaoR.js.map → _BE8gA6TO.js.map} +1 -1
- package/dist/public/assets/{_Bt1hNExm.js → _BEY9qyEj.js} +2 -2
- package/dist/public/assets/{_Bt1hNExm.js.map → _BEY9qyEj.js.map} +1 -1
- package/dist/public/assets/{_kN8jmSEy2.js → _BFPTVBh82.js} +2 -2
- package/dist/public/assets/{_kN8jmSEy2.js.map → _BFPTVBh82.js.map} +1 -1
- package/dist/public/assets/{_DcCF4p4b2.js → _BKNwgsJI2.js} +2 -2
- package/dist/public/assets/{_DcCF4p4b2.js.map → _BKNwgsJI2.js.map} +1 -1
- package/dist/public/assets/{_B7WJMKdz.js → _BLuo0bJF.js} +2 -2
- package/dist/public/assets/{_B7WJMKdz.js.map → _BLuo0bJF.js.map} +1 -1
- package/dist/public/assets/{_D4Z_UM_B2.js → _BMbg6Q_32.js} +2 -2
- package/dist/public/assets/{_D4Z_UM_B2.js.map → _BMbg6Q_32.js.map} +1 -1
- package/dist/public/assets/{_ChbGErmQ.js → _BQqn5S5j.js} +2 -2
- package/dist/public/assets/{_ChbGErmQ.js.map → _BQqn5S5j.js.map} +1 -1
- package/dist/public/assets/{_BGjK3KLI.js → _BTJ_-CIz.js} +2 -2
- package/dist/public/assets/{_BGjK3KLI.js.map → _BTJ_-CIz.js.map} +1 -1
- package/dist/public/assets/{_D7AQAhlo.js → _BTnhYWUT.js} +2 -2
- package/dist/public/assets/{_D7AQAhlo.js.map → _BTnhYWUT.js.map} +1 -1
- package/dist/public/assets/{_DOeCLKRd.js → _B_U5SPso.js} +2 -2
- package/dist/public/assets/{_DOeCLKRd.js.map → _B_U5SPso.js.map} +1 -1
- package/dist/public/assets/{_38qjx0VE.js → _BfxQEfor.js} +2 -2
- package/dist/public/assets/{_38qjx0VE.js.map → _BfxQEfor.js.map} +1 -1
- package/dist/public/assets/{_CeDXSlq_2.js → _Bhn-MKXG2.js} +2 -2
- package/dist/public/assets/{_CeDXSlq_2.js.map → _Bhn-MKXG2.js.map} +1 -1
- package/dist/public/assets/{_17ixsFjl2.js → _BkEOzqHA2.js} +2 -2
- package/dist/public/assets/{_17ixsFjl2.js.map → _BkEOzqHA2.js.map} +1 -1
- package/dist/public/assets/{_D9oMqxHc.js → _BqeWVi6c.js} +2 -2
- package/dist/public/assets/{_D9oMqxHc.js.map → _BqeWVi6c.js.map} +1 -1
- package/dist/public/assets/{_Dfi8Atag.js → _Bx6coq7v.js} +2 -2
- package/dist/public/assets/{_Dfi8Atag.js.map → _Bx6coq7v.js.map} +1 -1
- package/dist/public/assets/{_CjoA9dbQ.js → _BxWguH11.js} +2 -2
- package/dist/public/assets/{_CjoA9dbQ.js.map → _BxWguH11.js.map} +1 -1
- package/dist/public/assets/{_C52df4172.js → _C2TX6Jrr2.js} +2 -2
- package/dist/public/assets/{_C52df4172.js.map → _C2TX6Jrr2.js.map} +1 -1
- package/dist/public/assets/{_B01vNcBH.js → _C8Lw1Tmb.js} +2 -2
- package/dist/public/assets/{_B01vNcBH.js.map → _C8Lw1Tmb.js.map} +1 -1
- package/dist/public/assets/{_Czy_Rmr8.js → _CDtlFxZX.js} +2 -2
- package/dist/public/assets/{_Czy_Rmr8.js.map → _CDtlFxZX.js.map} +1 -1
- package/dist/public/assets/{_xikqPUw52.js → _CF3V7ZyO2.js} +2 -2
- package/dist/public/assets/{_xikqPUw52.js.map → _CF3V7ZyO2.js.map} +1 -1
- package/dist/public/assets/{_CgK4NAc5.js → _CIUf_Jmq.js} +2 -2
- package/dist/public/assets/{_CgK4NAc5.js.map → _CIUf_Jmq.js.map} +1 -1
- package/dist/public/assets/{_Dg2FAYj_2.js → _CJlF2h3E2.js} +2 -2
- package/dist/public/assets/{_Dg2FAYj_2.js.map → _CJlF2h3E2.js.map} +1 -1
- package/dist/public/assets/{_CPMq9qKD.js → _CNDjHC1Q.js} +2 -2
- package/dist/public/assets/{_CPMq9qKD.js.map → _CNDjHC1Q.js.map} +1 -1
- package/dist/public/assets/{_D-u1ssE0.js → _CTkR0S8t.js} +2 -2
- package/dist/public/assets/{_D-u1ssE0.js.map → _CTkR0S8t.js.map} +1 -1
- package/dist/public/assets/{_DpRvij_q.js → _C_K-IZx7.js} +2 -2
- package/dist/public/assets/{_DpRvij_q.js.map → _C_K-IZx7.js.map} +1 -1
- package/dist/public/assets/{_rDdCnzAf.js → _CawcEo7A.js} +2 -2
- package/dist/public/assets/{_rDdCnzAf.js.map → _CawcEo7A.js.map} +1 -1
- package/dist/public/assets/{_DtkPfG0P2.js → _Ch0uVmAz2.js} +2 -2
- package/dist/public/assets/{_DtkPfG0P2.js.map → _Ch0uVmAz2.js.map} +1 -1
- package/dist/public/assets/{_DWSSCCOX.js → _Ck30GMoL.js} +2 -2
- package/dist/public/assets/{_DWSSCCOX.js.map → _Ck30GMoL.js.map} +1 -1
- package/dist/public/assets/{_BjlFBd9j.js → _Cpqbvj5d.js} +2 -2
- package/dist/public/assets/{_BjlFBd9j.js.map → _Cpqbvj5d.js.map} +1 -1
- package/dist/public/assets/{_BCmJwCZ4.js → _CqNVh0h5.js} +2 -2
- package/dist/public/assets/{_BCmJwCZ4.js.map → _CqNVh0h5.js.map} +1 -1
- package/dist/public/assets/{_CUdHfuKf2.js → _Cx_br0wh2.js} +2 -2
- package/dist/public/assets/{_CUdHfuKf2.js.map → _Cx_br0wh2.js.map} +1 -1
- package/dist/public/assets/{_nv0goT4Z.js → _CzBadWXq.js} +2 -2
- package/dist/public/assets/{_nv0goT4Z.js.map → _CzBadWXq.js.map} +1 -1
- package/dist/public/assets/{_DDDACu2e.js → _D0Dk2eMz.js} +2 -2
- package/dist/public/assets/{_DDDACu2e.js.map → _D0Dk2eMz.js.map} +1 -1
- package/dist/public/assets/{_nfuFU9Un2.js → _D0PyqJyr2.js} +2 -2
- package/dist/public/assets/{_nfuFU9Un2.js.map → _D0PyqJyr2.js.map} +1 -1
- package/dist/public/assets/{_CscsJi7i.js → _D409hg3n.js} +2 -2
- package/dist/public/assets/{_CscsJi7i.js.map → _D409hg3n.js.map} +1 -1
- package/dist/public/assets/{_DtpDQy9c.js → _D4uduNrb.js} +2 -2
- package/dist/public/assets/{_DtpDQy9c.js.map → _D4uduNrb.js.map} +1 -1
- package/dist/public/assets/{_Dlbc7SgI.js → _DBj-L0Ww.js} +2 -2
- package/dist/public/assets/{_Dlbc7SgI.js.map → _DBj-L0Ww.js.map} +1 -1
- package/dist/public/assets/{_DsK9qp5z2.js → _DC9uMckf2.js} +2 -2
- package/dist/public/assets/{_DsK9qp5z2.js.map → _DC9uMckf2.js.map} +1 -1
- package/dist/public/assets/{_DpdFHjlT.js → _DHsfzMP_.js} +2 -2
- package/dist/public/assets/{_DpdFHjlT.js.map → _DHsfzMP_.js.map} +1 -1
- package/dist/public/assets/{_C0fM-yEd.js → _DPDjFNn3.js} +2 -2
- package/dist/public/assets/{_C0fM-yEd.js.map → _DPDjFNn3.js.map} +1 -1
- package/dist/public/assets/{_vd_LQrD6.js → _DS1r4Da7.js} +2 -2
- package/dist/public/assets/{_vd_LQrD6.js.map → _DS1r4Da7.js.map} +1 -1
- package/dist/public/assets/{_BGfZ-AIc.js → _DZp-Xvf0.js} +2 -2
- package/dist/public/assets/{_BGfZ-AIc.js.map → _DZp-Xvf0.js.map} +1 -1
- package/dist/public/assets/{_Cm0oW23H.js → _DbP8pES9.js} +2 -2
- package/dist/public/assets/{_Cm0oW23H.js.map → _DbP8pES9.js.map} +1 -1
- package/dist/public/assets/{_Bj_P-is9.js → _DhqQ2yva.js} +2 -2
- package/dist/public/assets/{_Bj_P-is9.js.map → _DhqQ2yva.js.map} +1 -1
- package/dist/public/assets/{_tf4220G9.js → _Din9HEMs.js} +2 -2
- package/dist/public/assets/{_tf4220G9.js.map → _Din9HEMs.js.map} +1 -1
- package/dist/public/assets/{_kzd-9LxV.js → _Dk-i8IAv.js} +2 -2
- package/dist/public/assets/{_kzd-9LxV.js.map → _Dk-i8IAv.js.map} +1 -1
- package/dist/public/assets/{_CIE37fGr.js → _DvdWf5o-.js} +2 -2
- package/dist/public/assets/{_CIE37fGr.js.map → _DvdWf5o-.js.map} +1 -1
- package/dist/public/assets/{_U-btoBCb2.js → _DwmbSeOR2.js} +2 -2
- package/dist/public/assets/{_U-btoBCb2.js.map → _DwmbSeOR2.js.map} +1 -1
- package/dist/public/assets/{_DoTuVtdo.js → _Dz57V0my.js} +2 -2
- package/dist/public/assets/{_DoTuVtdo.js.map → _Dz57V0my.js.map} +1 -1
- package/dist/public/assets/{_CATT-8QU2.js → _JDPB-L9T2.js} +2 -2
- package/dist/public/assets/{_CATT-8QU2.js.map → _JDPB-L9T2.js.map} +1 -1
- package/dist/public/assets/{_PBOdFezG2.js → _T3Aahgg12.js} +2 -2
- package/dist/public/assets/{_PBOdFezG2.js.map → _T3Aahgg12.js.map} +1 -1
- package/dist/public/assets/{_Q7i-xAMZ.js → _Tbp9N0Pq.js} +2 -2
- package/dist/public/assets/{_Q7i-xAMZ.js.map → _Tbp9N0Pq.js.map} +1 -1
- package/dist/public/assets/{_Bs-d5a142.js → _Tqwd1-8Z2.js} +2 -2
- package/dist/public/assets/{_Bs-d5a142.js.map → _Tqwd1-8Z2.js.map} +1 -1
- package/dist/public/assets/{_uhGymT-L.js → _UPkRAhR-.js} +2 -2
- package/dist/public/assets/{_uhGymT-L.js.map → _UPkRAhR-.js.map} +1 -1
- package/dist/public/assets/{_CVvMxylB2.js → _WO2um4ce2.js} +2 -2
- package/dist/public/assets/{_CVvMxylB2.js.map → _WO2um4ce2.js.map} +1 -1
- package/dist/public/assets/{_BV7Qzzwy2.js → _WXstblxD2.js} +2 -2
- package/dist/public/assets/{_BV7Qzzwy2.js.map → _WXstblxD2.js.map} +1 -1
- package/dist/public/assets/{_DFLlSEDh2.js → _Wq5Lwig62.js} +2 -2
- package/dist/public/assets/{_DFLlSEDh2.js.map → _Wq5Lwig62.js.map} +1 -1
- package/dist/public/assets/{_VVnpWsa-2.js → _YMDMk2XX2.js} +2 -2
- package/dist/public/assets/{_VVnpWsa-2.js.map → _YMDMk2XX2.js.map} +1 -1
- package/dist/public/assets/{_CLjg6iH5.js → _b9uzSPzx.js} +2 -2
- package/dist/public/assets/{_CLjg6iH5.js.map → _b9uzSPzx.js.map} +1 -1
- package/dist/public/assets/{_BO1auSkL2.js → _dfWRmwy82.js} +2 -2
- package/dist/public/assets/{_BO1auSkL2.js.map → _dfWRmwy82.js.map} +1 -1
- package/dist/public/assets/{_DvigaXuY.js → _ehtlhcCR.js} +2 -2
- package/dist/public/assets/{_DvigaXuY.js.map → _ehtlhcCR.js.map} +1 -1
- package/dist/public/assets/{_CDUUTPIa.js → _fZl_Qerv.js} +2 -2
- package/dist/public/assets/{_CDUUTPIa.js.map → _fZl_Qerv.js.map} +1 -1
- package/dist/public/assets/{_BZgEX-SR.js → _js4WyaBT.js} +2 -2
- package/dist/public/assets/{_BZgEX-SR.js.map → _js4WyaBT.js.map} +1 -1
- package/dist/public/assets/{_B5_K4U35.js → _okHqOb61.js} +2 -2
- package/dist/public/assets/{_B5_K4U35.js.map → _okHqOb61.js.map} +1 -1
- package/dist/public/assets/{_o_JLlSoU2.js → _rMU5-5Oc2.js} +2 -2
- package/dist/public/assets/{_o_JLlSoU2.js.map → _rMU5-5Oc2.js.map} +1 -1
- package/dist/public/assets/{index-BwlA-lgI.js → index-Bx9UtyrE.js} +63 -61
- package/dist/public/assets/index-Bx9UtyrE.js.map +1 -0
- package/dist/public/assets/{index-KIy0rCx1.css → index-C_YqjXeW.css} +1 -1
- package/package.json +1 -1
- package/scripts/migrate.mjs +141 -0
- package/dist/public/assets/index-BwlA-lgI.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;--bg:var(--lightningcss-light,#fafafa)var(--lightningcss-dark,#131316);--panel:var(--lightningcss-light,#fff)var(--lightningcss-dark,#1b1b1f);--border:var(--lightningcss-light,#e4e4e8)var(--lightningcss-dark,#2a2a30);--text:var(--lightningcss-light,#1a1a1e)var(--lightningcss-dark,#e8e8ec);--dim:var(--lightningcss-light,#6e6e76)var(--lightningcss-dark,#9a9aa4);--accent:var(--lightningcss-light,#3556d8)var(--lightningcss-dark,#7c96ff);--danger:var(--lightningcss-light,#b00020)var(--lightningcss-dark,#ff8080);--radius:8px;font-family:system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:var(--app-height,100dvh);overflow:hidden}body{background:var(--bg);color:var(--text);margin:0;font-size:14px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,select{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:.45rem .6rem}@media (pointer:coarse){input,textarea,select{font-size:16px}}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}code{font-size:.92em}.btn{background:color-mix(in srgb, currentColor 8%, transparent);border-radius:var(--radius);padding:.4rem .75rem}.btn:hover{background:color-mix(in srgb, currentColor 14%, transparent)}.btn.primary{background:var(--accent);color:var(--lightningcss-light,#fff)var(--lightningcss-dark,#10131f)}.btn.danger{color:var(--danger)}.btn.danger.armed{background:var(--danger);border-color:var(--danger);color:#fff}:where(button:has(>.icon)){align-items:center;gap:.35rem;display:inline-flex}.icon-btn{width:var(--icon-btn-size,2.15rem);height:var(--icon-btn-size,2.15rem);border-radius:var(--radius);background:color-mix(in srgb, currentColor 8%, transparent);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{background:color-mix(in srgb, currentColor 14%, transparent)}.chip{background:color-mix(in srgb, currentColor 10%, transparent);color:var(--dim);white-space:nowrap;border-radius:5px;align-items:center;gap:.25em;padding:.05em .5em;font-size:.8rem;line-height:1.5;display:inline-flex}.chip.lane{color:var(--accent)}.chip.pr{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364);text-decoration:none}.chip.pr.draft,.dim{color:var(--dim)}.mono{font-family:monospace}.spacer{flex:1}.dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.dot.working{background:var(--lightningcss-light,#bf8700)var(--lightningcss-dark,#d4a72c)}.dot.waiting{background:var(--danger)}.dot.idle{background:color-mix(in srgb, var(--dim) 55%, transparent)}.dot.off{border:1px solid var(--dim)}.split-btn{border-radius:var(--radius);background:color-mix(in srgb, currentColor 8%, transparent);align-items:stretch;display:inline-flex;position:relative;overflow:hidden}.split-btn:after{content:"";border-right:1.5px solid var(--dim);border-bottom:1.5px solid var(--dim);pointer-events:none;width:.32em;height:.32em;position:absolute;top:50%;right:.7rem;translate:0 -70%;rotate:45deg}.split-btn.primary:after{border-color:var(--accent)}.split-btn>button{border-radius:0;justify-content:center;align-items:center;gap:.3rem;padding:.35rem .6rem;display:inline-flex}.split-btn>button:hover{background:color-mix(in srgb, currentColor 10%, transparent)}.split-btn>select{appearance:none;border:0;border-left:1px solid var(--border);background:0 0;border-radius:0;min-width:0;padding:.3rem 1.5rem .3rem .6rem;font-size:.85rem}.split-btn.primary{background:var(--panel);border:1px solid var(--accent)}.split-btn.primary>button{background:var(--accent);color:var(--lightningcss-light,#fff)var(--lightningcss-dark,#10131f)}.split-btn.primary>button:hover{background:color-mix(in srgb, var(--accent) 88%, var(--lightningcss-light,#000)var(--lightningcss-dark,#fff))}.split-btn.primary>select{color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);border-left:0;font-weight:500}.split-btn>button:disabled,.split-btn>select:disabled{opacity:.6}.split-btn.grow,.split-btn.grow>select{flex:1;min-width:0}.toast-error{top:calc(env(safe-area-inset-top) + .6rem);z-index:40;background:var(--panel);max-width:min(30rem,100vw - 2rem);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 45%, transparent);border-radius:var(--radius);overflow-wrap:anywhere;margin:0;padding:.5rem .75rem;position:fixed;left:50%;translate:-50%;box-shadow:0 4px 16px #00000040}.spin{border:2px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:.7rem;height:.7rem;animation:.8s linear infinite work-spin;display:inline-block}.icon-btn.spinning svg{animation:.8s linear infinite work-spin}@keyframes work-spin{to{rotate:360deg}}.icon{flex-shrink:0;display:block}.palette-backdrop{z-index:29;background:#00000059;position:fixed;inset:0}.palette{z-index:30;background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:min(34rem,100vw - 1.5rem);display:flex;position:fixed;top:min(12dvh,6rem);left:50%;overflow:hidden;translate:-50%}.palette>input{border:0;border-bottom:1px solid var(--border);border-radius:0;padding:.75rem .9rem;font-size:1rem}.palette>input:focus-visible{outline:none}.palette.inline{margin:min(12dvh,6rem) auto 0;position:static;translate:none}@media (width<=899px){.palette:not(.inline){top:calc(env(safe-area-inset-top) + .5rem);width:auto;height:calc(var(--app-height,100dvh) - env(safe-area-inset-top) - 4.4rem - env(safe-area-inset-bottom));left:.5rem;right:.5rem;translate:none}.palette:not(.inline) .rows{flex:1;min-height:0;max-height:none}}.rows{max-height:min(50dvh,22rem);margin:0;padding:.3rem;list-style:none;overflow-y:auto}.row-wrap{align-items:stretch;gap:.15rem;display:flex}.row{text-align:left;border-radius:var(--radius);flex-direction:column;flex:1;gap:.15rem;min-width:0;padding:.45rem .6rem;display:flex}.row-more{color:var(--dim);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;padding:0 .5rem;display:inline-flex}.row-more:hover{color:var(--text);background:color-mix(in srgb, currentColor 8%, transparent)}.row.hi{background:color-mix(in srgb, var(--accent) 12%, transparent)}.row.archived{opacity:.6}.cmd-row{color:var(--accent);font-weight:500}.chip.stat.changes{color:var(--accent)}.onboard{padding:.9rem 1rem 0;font-size:.85rem}.onboard p{margin:0 0 .6rem;line-height:1.5}.row-name{align-items:center;gap:.4rem;min-width:0;font-weight:600;display:flex}.row-name-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.row-stats{flex-shrink:0}.chip.open{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}.row-stats{align-items:center;gap:.3rem;margin-left:auto;font-weight:500;display:inline-flex}.chip.stat{align-items:center;gap:.25rem;display:inline-flex}.row-repos{color:var(--dim);flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.82rem;display:flex}.palette-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:.5rem;min-height:2rem;padding:.4rem .6rem .4rem .9rem;font-size:.78rem;display:flex}.palette-foot .hint{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}@media (pointer:coarse){.palette-foot .hint{display:none}.palette-foot{justify-content:space-between}}.palette-foot select{padding:.15rem .35rem;font-size:.8rem}.archived-link{border-radius:var(--radius);align-self:start;margin:0 .3rem .3rem;padding:.15rem .6rem;font-size:.78rem}.archived-link:hover{color:var(--text);background:color-mix(in srgb, currentColor 8%, transparent)}.add-repo>input{width:100%}.repo-results{border:1px solid var(--border);border-radius:var(--radius);margin:.3rem 0 0;padding:.25rem;list-style:none}.result-wrap{border-radius:var(--radius);align-items:stretch;gap:.15rem;display:flex}.result-wrap.hi{background:color-mix(in srgb, var(--accent) 12%, transparent)}.result-row{text-align:left;border-radius:var(--radius);flex:1;align-items:center;gap:.5rem;min-width:0;padding:.35rem .5rem;display:flex}.result-branch{border-radius:var(--radius);width:2rem;color:var(--dim);flex:none;font-size:.85rem}.result-branch:hover,.result-branch.on{color:inherit;background:color-mix(in srgb, currentColor 10%, transparent)}.branch-pick{border-left:2px solid var(--border);margin:.15rem 0 .3rem 1.4rem;padding-left:.5rem}.branch-pick>input{width:100%;margin:.2rem 0}.branch-list{margin:0;padding:0;list-style:none}.result-plus{color:var(--dim)}.repo-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.empty-note{margin:0;padding:.3rem .1rem;font-size:.85rem}.repos-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.repos-head .icon-btn{--icon-btn-size:1.7rem}.manage .repos-head h3{margin:0}.cur-repos{flex-direction:column;gap:.15rem;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.cur-repo{border-radius:var(--radius);background:color-mix(in srgb, currentColor 5%, transparent);align-items:center;gap:.5rem;min-width:0;padding:.3rem .5rem;display:flex}.cur-repo.pending{color:var(--dim)}.cur-worktree{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:45%;font-weight:600;overflow:hidden}.cur-full{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.82rem;overflow:hidden}.cur-base{color:var(--dim);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:10rem;font-size:.75rem;overflow:hidden}.cur-remove{width:1.5rem;height:1.5rem;color:var(--dim);border-radius:var(--radius);justify-content:center;align-items:center;padding:0;display:inline-flex}.cur-remove:hover{color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, transparent)}.cur-remove.armed,.cur-remove.armed:hover{color:#fff;background:var(--danger);width:auto;padding:0 .5rem;font-size:.75rem}.manage-backdrop{z-index:34;background:#00000059;position:fixed;inset:0}.manage-view{z-index:35;width:min(42rem,100vw - 1.5rem);max-height:calc(var(--app-height,100dvh) - min(8dvh, 4rem) - 1rem);background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;min-height:0;display:flex;position:fixed;top:min(8dvh,4rem);left:50%;overflow:hidden;translate:-50%;box-shadow:0 12px 40px #00000059}.manage{flex-direction:column;flex:1;gap:1rem;min-height:0;padding:1rem 1.25rem;display:flex;overflow-y:auto}.manage-bar{border-top:1px solid var(--border);background:var(--panel);flex-wrap:wrap;align-items:center;gap:.35rem .4rem;padding:.5rem .75rem;display:flex}@media (width<=899px){.manage-view{width:auto;max-height:none;height:var(--app-height,100dvh);box-shadow:none;border:none;border-radius:0;inset:0;translate:none}.manage{padding-top:max(1rem, calc(env(safe-area-inset-top) + .5rem))}.manage-bar{padding-bottom:max(.5rem, env(safe-area-inset-bottom));padding-left:max(.75rem, calc(env(safe-area-inset-left) + .5rem));padding-right:max(.75rem, calc(env(safe-area-inset-right) + .5rem))}}.manage-head h2{overflow-wrap:anywhere;margin:0 0 .15rem}.manage-head p{word-break:break-all;margin:0;font-size:.8rem}.manage section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin:0 0 .4rem;font-size:.85rem}.manage section>input{width:100%;margin-bottom:.4rem}.act-step{text-overflow:ellipsis;white-space:nowrap;flex:8rem;align-items:center;gap:.4rem;min-width:0;font-size:.8rem;display:inline-flex;overflow:hidden}.pr-repo+.pr-repo{margin-top:.5rem}.pr-repo-name{margin-bottom:.2rem;font-size:.75rem}.pr-list{margin:0;padding:0;list-style:none}.pr-list li{align-items:center;gap:.5rem;min-width:0;padding:.25rem 0;font-size:.85rem;display:flex}.pr-spacer{flex:1}.pr-dismiss{width:1.5rem;height:1.5rem;color:var(--dim);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.pr-dismiss:hover{color:var(--ok,#2da44e);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-state{text-transform:uppercase;letter-spacing:.04em;border-radius:5px;flex-shrink:0;padding:.05em .45em;font-size:.7rem;font-weight:600}.pr-state.open{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-state.merged{color:var(--lightningcss-light,#8250df)var(--lightningcss-dark,#b794f6);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-state.closed{color:var(--danger);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-link{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:inherit;white-space:nowrap;align-items:baseline;gap:.35rem;min-width:0;text-decoration:none;display:inline-flex;overflow:hidden}.pr-link:hover{text-decoration:underline}.procs{margin:0;padding:0;list-style:none}.procs li{justify-content:space-between;align-items:center;gap:.4rem;padding:.25rem 0;font-size:.85rem;display:flex}.proc-cmd{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:.3rem;min-width:0;display:inline-flex;overflow:hidden}.proc-kill{color:var(--dim);padding:0 .4rem}.port-link{cursor:pointer}.port-link:hover{color:var(--accent);text-decoration:underline}.proc-kill:hover{color:var(--danger)}.new-ws .field{flex-direction:column;gap:.25rem;max-width:20rem;display:flex}.steps{flex-direction:column;gap:.3rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.steps li{color:var(--dim);overflow-wrap:anywhere;align-items:center;gap:.45rem;min-width:0;display:flex}.steps li.active{color:var(--text)}.step-done{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364);text-align:center;width:.9rem}.side-nav{border-right:1px solid var(--border);background:var(--panel);flex-direction:column;flex-shrink:0;width:16rem;display:flex;overflow-y:auto}@media (width<=899px){.side-nav{z-index:25;width:min(17rem,85vw);padding-top:env(safe-area-inset-top);transition:translate .2s;position:fixed;top:0;bottom:0;left:0;translate:-100%;box-shadow:0 0 32px #0000004d}.side-nav.open{translate:0}.side-nav .side-list{display:flex!important}.side-rail{display:none!important}.side-nav .side-foot{border-top:1px solid var(--border);padding:.6rem max(1.5rem, calc(env(safe-area-inset-right) + .75rem)) max(.75rem, env(safe-area-inset-bottom)) max(1.5rem, calc(env(safe-area-inset-left) + .75rem));justify-content:flex-end;gap:.5rem}.side-foot .nav-toggle,.side-foot .spacer{display:none}.side-nav{width:min(19rem,88vw);font-size:1rem}.side-nav .side-list{gap:.5rem;padding:.6rem .6rem .4rem}.side-nav .side-ws-btn{gap:.5rem;padding:.6rem;font-size:1.05rem}.side-nav .side-ws-row .row-icon,.side-nav .side-ws-row .close,.side-nav .side-sess .row-icon,.side-nav .side-sess .close{visibility:visible;width:2.5rem;height:2.5rem;font-size:1.1rem}.side-nav .side-sessions{gap:.25rem;padding-left:1rem}.side-nav .side-sess-btn{padding:.6rem;font-size:1rem}.side-nav .side-sess .row-icon{display:inline-flex}.side-nav .side-foot .icon-btn{--icon-btn-size:2.75rem}.side-nav .dot{width:9px;height:9px}}.notify-btn.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.drawer-backdrop{z-index:24;background:#00000059;position:fixed;inset:0}@media (width>=900px){.notify-btn.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.drawer-backdrop{display:none}}.side-list{flex-direction:column;flex:1;gap:.35rem;padding:.45rem .45rem .25rem;display:flex}.side-foot{align-items:center;gap:.3rem;padding:.3rem .45rem .45rem;display:flex}@media (width>=900px){.side-nav.closed{width:auto}.side-nav.closed .side-list{display:none}.side-nav.closed .side-foot{flex-direction:column;justify-content:flex-end}.side-nav.closed .side-foot>.icon-btn:first-of-type{order:10}}.side-rail{flex-direction:column;flex:1;gap:.3rem;padding:.45rem;display:flex}.rail-btn{background:color-mix(in srgb, currentColor 7%, transparent);font-weight:600;position:relative}.rail-btn.current,.rail-btn.current:hover{background:var(--accent);color:var(--lightningcss-light,#fff)var(--lightningcss-dark,#101321)}.rail-btn:not(.current):hover{background:color-mix(in srgb, currentColor 12%, transparent)}.rail-btn .dot{width:6px;height:6px;position:absolute;top:3px;right:3px}.side-ws{border-radius:var(--radius);padding:.15rem}.side-ws.current{background:color-mix(in srgb, var(--accent) 8%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.side-ws-row{align-items:center;display:flex}.side-ws-btn{text-align:left;border-radius:var(--radius);flex:1;align-items:center;gap:.4rem;min-width:0;padding:.35rem .45rem;font-weight:600;display:flex}.side-ws:not(.current) .side-ws-btn:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.side-ws-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.side-ws-row .row-icon,.side-ws-row .close,.side-sess .row-icon,.side-sess .close{width:1.6rem;height:1.6rem;color:var(--dim);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.side-sess .row-icon,.side-sess .close{visibility:hidden}.side-sess:hover .row-icon,.side-sess:hover .close{visibility:visible}.side-ws-row .row-icon:hover,.side-sess .row-icon:hover{color:var(--text);background:color-mix(in srgb, currentColor 8%, transparent)}.side-ws-row .close:hover,.side-sess .close:hover{color:var(--danger)}.side-sessions{flex-direction:column;gap:.1rem;padding:.1rem .1rem .3rem .9rem;display:flex}.side-sessions:not(:has(*)){display:none}.side-sess{border-radius:var(--radius);align-items:center;display:flex}.side-sess.current{background:color-mix(in srgb, var(--accent) 14%, transparent)}.side-sess-btn{text-align:left;border-radius:var(--radius);text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:.4rem;min-width:0;padding:.3rem .45rem;display:flex;overflow:hidden}.side-sess:not(.current) .side-sess-btn:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.rail-pop .side-ws.current{box-shadow:none;background:0 0}.rail-pop{z-index:40;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:14rem;max-width:20rem;padding:.25rem;position:fixed;box-shadow:0 8px 24px #00000040}.new-session-pop{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:8rem;color:inherit;flex-direction:column;margin:0;padding:.25rem;display:none;position:fixed;inset:auto}.new-session-pop:popover-open{display:flex}.new-session-pop button{text-align:left;border-radius:var(--radius);align-items:center;gap:.5rem;padding:.45rem .7rem;font-family:monospace;display:flex}.side-sess-btn .sess-icon{vertical-align:-2px;opacity:.75;margin-right:.15rem;display:inline-block}.new-session-pop button:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.side-chips{flex-wrap:wrap;gap:.3rem;padding:.25rem .1rem .1rem;display:flex}.side-sess .close.armed,.side-sess .close.armed:hover{visibility:visible;color:#fff;background:var(--danger)}.chip.changes{color:var(--accent);cursor:pointer}.chip.changes:hover{background:color-mix(in srgb, currentColor 18%, transparent)}.chip.pr.rejected{color:var(--danger)}.chip.port-chip{padding:0;overflow:hidden}.port-chip .port-open{color:inherit;padding:.05em .15em .05em .5em}.port-chip .port-open:hover{color:var(--accent);text-decoration:underline}.port-chip .port-kill{color:var(--dim);padding:.05em .4em .05em .2em;line-height:1.5}.port-chip .port-kill:hover{color:var(--danger)}.port-chip .port-kill.armed,.port-chip .port-kill.armed:hover{color:#fff;background:var(--danger)}.diff-file{border:1px solid var(--border);border-radius:var(--radius);--diffs-font-size:12.5px;max-width:100%;overflow:hidden}@media (width<=899px){.diff-file{--diffs-font-size:11.5px}}.prompt-dlg{width:min(26rem,100vw - 1.5rem)}.prompt-dlg .prompt-title{margin:0;font-size:1rem}@media (width<=899px){.prompt-dlg{border:1px solid var(--border);border-radius:12px;height:auto;inset:min(8dvh,4rem) auto auto 50%;translate:-50%;box-shadow:0 12px 40px #00000059}}.diff-view{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.refresh-chip{z-index:5;background:var(--panel);border:1px solid var(--border);border-radius:999px;align-items:center;gap:.35rem;padding:.15rem .6rem;font-size:.78rem;display:inline-flex;position:absolute;top:.5rem;right:.75rem}.tree{border-right:1px solid var(--border);flex-shrink:0;width:15rem;padding:.6rem .4rem;font-size:.8rem;display:none;overflow-y:auto}@media (width>=900px){.tree{display:block}.tree.closed{display:none}}.diff-tools .tree-toggle{display:none}.tree-toggle.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}@media (width>=900px){.diff-tools .tree-toggle{display:inline-flex}}.tree-repo+.tree-repo{margin-top:.75rem}.tree-repo-name{text-align:left;align-items:baseline;gap:.25rem;width:100%;padding:.15rem .35rem;font-weight:700;display:flex}.tree-dir{overflow-wrap:anywhere;padding:.25rem .35rem .05rem;font-size:.72rem}.tree-file{text-align:left;border-radius:var(--radius);align-items:flex-start;gap:.35rem;width:100%;padding:.18rem .35rem;display:flex}.tree-file:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.tree-file.seen{opacity:.55}.tree-file-name{overflow-wrap:anywhere;flex:1;min-width:0}.tree-note{font-size:.7rem}.diff-col{flex-direction:column;flex:1;min-width:0;padding-top:.75rem;display:flex}.diff-col>.diff-head,.diff-col>.diff-tools{padding-inline:.75rem}.diff-main{flex:1;min-width:0;min-height:0;padding:0 .75rem .75rem;overflow:hidden auto}.diff-head{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.head-actions{flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0;max-width:100%;margin-left:auto;display:flex}.head-actions .split-btn{min-width:0;max-width:100%}.head-actions .split-btn>select{max-width:8rem}.diff-stats{flex-wrap:wrap;align-items:center;gap:.3rem;display:inline-flex}.base-pick{padding:.3rem .4rem;font-size:.85rem}@media (pointer:coarse){.base-pick{max-width:8rem}}.diff-tools{flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.6rem;display:flex}.base-pick{min-width:0;max-width:9.5rem}.file-filter{flex:1;min-width:0;padding:.35rem .55rem;font-size:.85rem}.repo-section+.repo-section{margin-top:1rem}.repo-sep{text-align:left;border-bottom:2px solid var(--border);align-items:baseline;gap:.5rem;width:100%;min-width:0;margin-bottom:.4rem;padding:.3rem .1rem;font-weight:700;display:flex}.repo-sep .mono,.repo-sep .dim{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}.repo-sep .dim{font-size:.78rem;font-weight:400}.files{flex-direction:column;gap:.75rem;display:flex}.file{min-width:0}.diff-wait{border:1px solid var(--border);border-radius:var(--radius);min-height:16rem}.tree-dir{text-align:left;align-items:baseline;gap:.25rem;width:100%;display:flex}.tree-dir:hover{color:var(--text)}.tree-chev{flex-shrink:0;font-size:.6rem}.file>:not(summary){content-visibility:auto;contain-intrinsic-size:auto 24rem}.file>summary{cursor:pointer;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);z-index:1;align-items:center;gap:.5rem;padding:.35rem .5rem;font-family:monospace;font-size:.85rem;list-style:none;display:flex;position:sticky;top:0}.file[open]>summary{border-bottom-right-radius:0;border-bottom-left-radius:0}.status{font-weight:700}.status.A{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364)}.status.D{color:var(--danger)}.status.M{color:var(--accent)}.path{text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;flex:1;min-width:0;overflow:hidden}.file:not([open])>summary .path{white-space:normal;overflow-wrap:anywhere;direction:ltr}.viewed{align-items:center;gap:.3rem;font-size:.75rem;display:inline-flex}.center-pad{text-align:center;padding:2rem}.diff-skel p{align-items:center;gap:.5rem;margin:0 0 .75rem;display:flex}.skel-row{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb, currentColor 4%, transparent);height:2.2rem;margin-bottom:.75rem}.files-btn{white-space:nowrap;font-size:.85rem;display:none}@media (width<=899px){.files-btn{display:inline-block}}.sheet-backdrop{z-index:34;background:#00000059;position:fixed;inset:0}.file-sheet{z-index:35;background:var(--panel);border-top:1px solid var(--border);max-height:min(70dvh,30rem);padding-bottom:env(safe-area-inset-bottom);border-radius:12px 12px 0 0;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.sheet-head{align-items:center;gap:.6rem;padding:.6rem .4rem .4rem .9rem;display:flex}.sheet-head .dim{flex:1;font-size:.8rem}.sheet-list{min-height:0;padding:0 .4rem .4rem;overflow-y:auto}.sheet-file{text-align:left;border-radius:var(--radius);align-items:center;gap:.5rem;width:100%;padding:.55rem .5rem;font-size:.85rem;display:flex}.sheet-file.seen{opacity:.55}.sheet-path{text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;flex:1;min-width:0;overflow:hidden}.diff-pad{padding:.5rem}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.term-wrap{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.term{background:#000;flex:1;min-height:0}.term .xterm{height:100%;padding:.25rem 0 0 .25rem}.term-dead{z-index:10;background:#0000008c;place-items:center;display:grid;position:absolute;inset:0}.term-copied{z-index:10;color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--panel));border:1px solid color-mix(in srgb, var(--accent) 35%, var(--border));pointer-events:none;border-radius:999px;padding:.3rem .9rem;font-size:.8rem;animation:1.2s forwards term-copied-fade;position:absolute;bottom:1rem;left:50%;translate:-50%}@keyframes term-copied-fade{0%{opacity:0;translate:-50% .25rem}12%{opacity:1;translate:-50%}75%{opacity:1}to{opacity:0}}.term-uploading{background:var(--panel);border:1px solid var(--border);border-radius:999px;padding:.1rem .6rem;font-size:.78rem;position:absolute;top:.4rem;right:.6rem}.trap-backdrop{z-index:30;background:#00000073;place-items:start center;padding-top:15dvh;display:grid;position:fixed;inset:0}.paste-trap{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:.6rem;width:min(20rem,85vw);padding:1rem;display:flex}.paste-trap p{text-align:center;margin:0}.kb-slot{flex-shrink:0}.key-bar{padding:.4rem max(1.5rem, calc(env(safe-area-inset-right) + .75rem)) max(.75rem, env(safe-area-inset-bottom)) max(1.5rem, calc(env(safe-area-inset-left) + .75rem));border-top:1px solid var(--border);background:var(--panel);align-items:center;gap:.3rem;display:flex}.kspacer{flex:1;justify-content:center;align-items:center;min-width:0;display:flex}.sess-btn{position:relative}.sess-dot{width:6px;height:6px;position:absolute;top:4px;right:4px}.sess-pop{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:9rem;color:inherit;flex-direction:column;margin:0;padding:.25rem;display:none;position:fixed;inset:auto;box-shadow:0 4px 16px #00000040}.sess-pop:popover-open{display:flex}.sess-row{border-radius:var(--radius);align-items:center;display:flex}.sess-row.current{background:color-mix(in srgb, var(--accent) 10%, transparent)}.sess-open{text-align:left;border-radius:var(--radius);flex:1;align-items:center;gap:.5rem;min-width:0;padding:.55rem .7rem;font-family:monospace;display:flex}.sess-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sess-open:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.sess-x{border-radius:var(--radius);width:2.2rem;color:var(--dim);flex-shrink:0;align-self:stretch}.sess-x:hover{color:var(--danger)}.sess-x.armed{background:var(--danger);color:#fff}.sess-edit:hover{color:var(--text)}.sess-new{border-top:1px solid var(--border);justify-content:center;gap:.3rem;margin-top:.25rem;padding-top:.35rem;display:flex}.sess-new.lone{border-top:0;margin-top:0;padding-top:0}.key-bar{position:relative}.kbar-ws{bottom:max(.3rem, calc(env(safe-area-inset-bottom) - 1rem));left:max(1.5rem, calc(env(safe-area-inset-left) + .75rem));right:max(1.5rem, calc(env(safe-area-inset-right) + .75rem));pointer-events:none;justify-content:center;align-items:center;gap:.3rem;font-size:.78rem;line-height:1;display:flex;position:absolute}.kbar-ws-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.kbtn{--icon-btn-size:2.6rem;background:color-mix(in srgb, currentColor 7%, transparent)}.kbtn-esc{letter-spacing:.02em;font-size:.78rem;font-weight:600}@media (width<=399px){.key-bar{gap:.2rem}.kbtn{--icon-btn-size:2.35rem}}.kbtn:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.kbtn:active{background:color-mix(in srgb, var(--accent) 15%, transparent)}.dpad-grid .repeat{touch-action:none;-webkit-user-select:none;user-select:none}.kb-toggle.on,.kb-toggle.on:hover{color:var(--accent);background:color-mix(in srgb, var(--accent) 15%, transparent)}.dpad-grid{background:var(--panel);border:1px solid var(--border);color:inherit;border-radius:12px;grid-template-columns:repeat(3,3rem);grid-auto-rows:3rem;gap:.25rem;margin:0;padding:.4rem;position:fixed;inset:auto .5rem 6.5rem auto}.dpad-grid:popover-open{display:grid}.dpad-grid button{background:color-mix(in srgb, currentColor 7%, transparent);border-radius:var(--radius);justify-content:center;align-items:center;font-family:monospace;font-size:1rem;display:inline-flex}.dpad-grid button:active{background:color-mix(in srgb, var(--accent) 15%, transparent)}.dpad-grid .big-glyph{font-size:1.45rem}.dpad-grid .enter{background:color-mix(in srgb, var(--accent) 15%, transparent);color:var(--accent)}.usage-modal .manage-head{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.usage-row{grid-template-columns:7.5rem 1fr;align-items:start;gap:.2rem .75rem;display:grid}.usage-name{flex-direction:column;min-width:0;display:flex}.usage-name .dim{text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;overflow:hidden}.usage-stale{color:var(--lightningcss-light,#bf8700)var(--lightningcss-dark,#d4a72c);white-space:nowrap;font-size:.7rem}.usage-row.stale .usage-meters{opacity:.55}.usage-meters{flex-direction:column;gap:.25rem;min-width:0;display:flex}.meter{grid-template-columns:2.4rem 1fr 2.6rem 2.9rem;align-items:center;gap:.5rem;display:grid}@media (width<=359px){.meter{grid-template-columns:2.4rem 1fr 2.6rem}.meter-reset{display:none}}.meter-label{font-size:.72rem}.meter-track{background:color-mix(in srgb, currentColor 12%, transparent);border-radius:3px;height:6px;overflow:hidden}.meter-fill{background:var(--accent);border-radius:3px;height:100%;display:block}.meter-fill.warm{background:var(--lightningcss-light,#bf8700)var(--lightningcss-dark,#d4a72c)}.meter-fill.hot{background:var(--danger)}.meter-pct{font-variant-numeric:tabular-nums;text-align:right;font-size:.75rem}.meter-reset{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.72rem}.usage-list{flex-direction:column;gap:.75rem;display:flex}@media (width<=480px){.usage-row{grid-template-columns:1fr}}.usage-modal p{align-items:center;gap:.4rem;margin:0;display:flex}.work-view{flex-direction:row;flex:1;min-width:0;min-height:0;display:flex}.main-col{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.term-area{flex-direction:column;flex:1;min-height:0;display:flex}.term-area.as-bar{flex:none}.pad-inline{padding:1rem}.empty-sess{flex-direction:column;align-items:center;gap:.6rem;padding:min(14dvh,6rem) 1rem 1rem;display:flex}.empty-sess p{margin:0}main{height:100%;min-height:0;padding-top:env(safe-area-inset-top);flex-direction:column;display:flex;position:relative}.boot{justify-content:center;align-items:center;gap:.5rem;padding-top:min(20dvh,10rem);display:flex}
|
|
1
|
+
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;--bg:var(--lightningcss-light,#fafafa)var(--lightningcss-dark,#131316);--panel:var(--lightningcss-light,#fff)var(--lightningcss-dark,#1b1b1f);--border:var(--lightningcss-light,#e4e4e8)var(--lightningcss-dark,#2a2a30);--text:var(--lightningcss-light,#1a1a1e)var(--lightningcss-dark,#e8e8ec);--dim:var(--lightningcss-light,#6e6e76)var(--lightningcss-dark,#9a9aa4);--accent:var(--lightningcss-light,#3556d8)var(--lightningcss-dark,#7c96ff);--danger:var(--lightningcss-light,#b00020)var(--lightningcss-dark,#ff8080);--radius:8px;font-family:system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:var(--app-height,100dvh);overflow:hidden}body{background:var(--bg);color:var(--text);margin:0;font-size:14px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,select{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:.45rem .6rem}@media (pointer:coarse){input,textarea,select{font-size:16px}}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}code{font-size:.92em}.btn{background:color-mix(in srgb, currentColor 8%, transparent);border-radius:var(--radius);padding:.4rem .75rem}.btn:hover{background:color-mix(in srgb, currentColor 14%, transparent)}.btn.primary{background:var(--accent);color:var(--lightningcss-light,#fff)var(--lightningcss-dark,#10131f)}.btn.danger{color:var(--danger)}.btn.danger.armed{background:var(--danger);border-color:var(--danger);color:#fff}:where(button:has(>.icon)){align-items:center;gap:.35rem;display:inline-flex}.icon-btn{width:var(--icon-btn-size,2.15rem);height:var(--icon-btn-size,2.15rem);border-radius:var(--radius);background:color-mix(in srgb, currentColor 8%, transparent);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{background:color-mix(in srgb, currentColor 14%, transparent)}.chip{background:color-mix(in srgb, currentColor 10%, transparent);color:var(--dim);white-space:nowrap;border-radius:5px;align-items:center;gap:.25em;padding:.05em .5em;font-size:.8rem;line-height:1.5;display:inline-flex}.chip.lane{color:var(--accent)}.chip.pr{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364);text-decoration:none}.chip.pr.draft,.dim{color:var(--dim)}.mono{font-family:monospace}.spacer{flex:1}.dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.dot.working{background:var(--lightningcss-light,#bf8700)var(--lightningcss-dark,#d4a72c)}.dot.waiting{background:var(--danger)}.dot.idle{background:color-mix(in srgb, var(--dim) 55%, transparent)}.dot.off{border:1px solid var(--dim)}.split-btn{border-radius:var(--radius);background:color-mix(in srgb, currentColor 8%, transparent);align-items:stretch;display:inline-flex;position:relative;overflow:hidden}.split-btn:after{content:"";border-right:1.5px solid var(--dim);border-bottom:1.5px solid var(--dim);pointer-events:none;width:.32em;height:.32em;position:absolute;top:50%;right:.7rem;translate:0 -70%;rotate:45deg}.split-btn.primary:after{border-color:var(--accent)}.split-btn>button{border-radius:0;justify-content:center;align-items:center;gap:.3rem;padding:.35rem .6rem;display:inline-flex}.split-btn>button:hover{background:color-mix(in srgb, currentColor 10%, transparent)}.split-btn>select{appearance:none;border:0;border-left:1px solid var(--border);background:0 0;border-radius:0;min-width:0;padding:.3rem 1.5rem .3rem .6rem;font-size:.85rem}.split-btn.primary{background:var(--panel);border:1px solid var(--accent)}.split-btn.primary>button{background:var(--accent);color:var(--lightningcss-light,#fff)var(--lightningcss-dark,#10131f)}.split-btn.primary>button:hover{background:color-mix(in srgb, var(--accent) 88%, var(--lightningcss-light,#000)var(--lightningcss-dark,#fff))}.split-btn.primary>select{color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);border-left:0;font-weight:500}.split-btn>button:disabled,.split-btn>select:disabled{opacity:.6}.split-btn.grow,.split-btn.grow>select{flex:1;min-width:0}.toast-error{top:calc(env(safe-area-inset-top) + .6rem);z-index:40;background:var(--panel);max-width:min(30rem,100vw - 2rem);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 45%, transparent);border-radius:var(--radius);overflow-wrap:anywhere;margin:0;padding:.5rem .75rem;position:fixed;left:50%;translate:-50%;box-shadow:0 4px 16px #00000040}.spin{border:2px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:.7rem;height:.7rem;animation:.8s linear infinite work-spin;display:inline-block}.icon-btn.spinning svg{animation:.8s linear infinite work-spin}@keyframes work-spin{to{rotate:360deg}}.icon{flex-shrink:0;display:block}.palette-backdrop{z-index:29;background:#00000059;position:fixed;inset:0}.palette{z-index:30;background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:min(34rem,100vw - 1.5rem);display:flex;position:fixed;top:min(12dvh,6rem);left:50%;overflow:hidden;translate:-50%}.palette>input{border:0;border-bottom:1px solid var(--border);border-radius:0;padding:.75rem .9rem;font-size:1rem}.palette>input:focus-visible{outline:none}.palette.inline{margin:min(12dvh,6rem) auto 0;position:static;translate:none}@media (width<=899px){.palette:not(.inline){top:calc(env(safe-area-inset-top) + .5rem);width:auto;height:calc(var(--app-height,100dvh) - env(safe-area-inset-top) - 4.4rem - env(safe-area-inset-bottom));left:.5rem;right:.5rem;translate:none}.palette:not(.inline) .rows{flex:1;min-height:0;max-height:none}}.rows{max-height:min(50dvh,22rem);margin:0;padding:.3rem;list-style:none;overflow-y:auto}.row-wrap{align-items:stretch;gap:.15rem;display:flex}.row{text-align:left;border-radius:var(--radius);flex-direction:column;flex:1;gap:.15rem;min-width:0;padding:.45rem .6rem;display:flex}.row-more{color:var(--dim);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;padding:0 .5rem;display:inline-flex}.row-more:hover{color:var(--text);background:color-mix(in srgb, currentColor 8%, transparent)}.row.hi{background:color-mix(in srgb, var(--accent) 12%, transparent)}.row.archived{opacity:.6}.cmd-row{color:var(--accent);font-weight:500}.onboard{padding:.9rem 1rem 0;font-size:.85rem}.onboard p{margin:0 0 .6rem;line-height:1.5}.row-name{align-items:center;gap:.4rem;min-width:0;font-weight:600;display:flex}.row-name-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.row-stats{flex-shrink:0}.chip.open{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}.row-stats{align-items:center;gap:.3rem;margin-left:auto;font-weight:500;display:inline-flex}.chip.stat{align-items:center;gap:.25rem;display:inline-flex}.row-repos{color:var(--dim);flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.82rem;display:flex}.palette-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:.5rem;min-height:2rem;padding:.4rem .6rem .4rem .9rem;font-size:.78rem;display:flex}.palette-foot .hint{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}@media (pointer:coarse){.palette-foot .hint{display:none}.palette-foot{justify-content:space-between}}.palette-foot select{padding:.15rem .35rem;font-size:.8rem}.archived-link{border-radius:var(--radius);align-self:start;margin:0 .3rem .3rem;padding:.15rem .6rem;font-size:.78rem}.archived-link:hover{color:var(--text);background:color-mix(in srgb, currentColor 8%, transparent)}.add-repo>input{width:100%}.repo-results{border:1px solid var(--border);border-radius:var(--radius);margin:.3rem 0 0;padding:.25rem;list-style:none}.result-wrap{border-radius:var(--radius);align-items:stretch;gap:.15rem;display:flex}.result-wrap.hi{background:color-mix(in srgb, var(--accent) 12%, transparent)}.result-row{text-align:left;border-radius:var(--radius);flex:1;align-items:center;gap:.5rem;min-width:0;padding:.35rem .5rem;display:flex}.result-branch{border-radius:var(--radius);width:2rem;color:var(--dim);flex:none;font-size:.85rem}.result-branch:hover,.result-branch.on{color:inherit;background:color-mix(in srgb, currentColor 10%, transparent)}.branch-pick{border-left:2px solid var(--border);margin:.15rem 0 .3rem 1.4rem;padding-left:.5rem}.branch-pick>input{width:100%;margin:.2rem 0}.branch-list{margin:0;padding:0;list-style:none}.result-plus{color:var(--dim)}.repo-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.empty-note{margin:0;padding:.3rem .1rem;font-size:.85rem}.repos-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.repos-head .icon-btn{--icon-btn-size:1.7rem}.manage .repos-head h3{margin:0}.cur-repos{flex-direction:column;gap:.15rem;margin:0 0 .5rem;padding:0;list-style:none;display:flex}.cur-repo{border-radius:var(--radius);background:color-mix(in srgb, currentColor 5%, transparent);align-items:center;gap:.5rem;min-width:0;padding:.3rem .5rem;display:flex}.cur-repo.pending{color:var(--dim)}.cur-worktree{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:45%;font-weight:600;overflow:hidden}.cur-full{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.82rem;overflow:hidden}.cur-base{color:var(--dim);text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:10rem;font-size:.75rem;overflow:hidden}.cur-remove{width:1.5rem;height:1.5rem;color:var(--dim);border-radius:var(--radius);justify-content:center;align-items:center;padding:0;display:inline-flex}.cur-remove:hover{color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, transparent)}.cur-remove.armed,.cur-remove.armed:hover{color:#fff;background:var(--danger);width:auto;padding:0 .5rem;font-size:.75rem}.manage-backdrop{z-index:34;background:#00000059;position:fixed;inset:0}.manage-view{z-index:35;width:min(42rem,100vw - 1.5rem);max-height:calc(var(--app-height,100dvh) - min(8dvh, 4rem) - 1rem);background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;min-height:0;display:flex;position:fixed;top:min(8dvh,4rem);left:50%;overflow:hidden;translate:-50%;box-shadow:0 12px 40px #00000059}.manage{flex-direction:column;flex:1;gap:1rem;min-height:0;padding:1rem 1.25rem;display:flex;overflow-y:auto}.manage-bar{border-top:1px solid var(--border);background:var(--panel);flex-wrap:wrap;align-items:center;gap:.35rem .4rem;padding:.5rem .75rem;display:flex}@media (width<=899px){.manage-view{width:auto;max-height:none;height:var(--app-height,100dvh);box-shadow:none;border:none;border-radius:0;inset:0;translate:none}.manage{padding-top:max(1rem, calc(env(safe-area-inset-top) + .5rem))}.manage-bar{padding-bottom:max(.5rem, env(safe-area-inset-bottom));padding-left:max(.75rem, calc(env(safe-area-inset-left) + .5rem));padding-right:max(.75rem, calc(env(safe-area-inset-right) + .5rem))}}.manage-head h2{overflow-wrap:anywhere;margin:0 0 .15rem}.manage-head p{word-break:break-all;margin:0;font-size:.8rem}.manage section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin:0 0 .4rem;font-size:.85rem}.manage section>input{width:100%;margin-bottom:.4rem}.act-step{text-overflow:ellipsis;white-space:nowrap;flex:8rem;align-items:center;gap:.4rem;min-width:0;font-size:.8rem;display:inline-flex;overflow:hidden}.pr-repo+.pr-repo{margin-top:.5rem}.pr-repo-name{margin-bottom:.2rem;font-size:.75rem}.pr-list{margin:0;padding:0;list-style:none}.pr-list li{align-items:center;gap:.5rem;min-width:0;padding:.25rem 0;font-size:.85rem;display:flex}.pr-spacer{flex:1}.pr-dismiss{width:1.5rem;height:1.5rem;color:var(--dim);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.pr-dismiss:hover{color:var(--ok,#2da44e);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-state{text-transform:uppercase;letter-spacing:.04em;border-radius:5px;flex-shrink:0;padding:.05em .45em;font-size:.7rem;font-weight:600}.pr-state.open{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-state.merged{color:var(--lightningcss-light,#8250df)var(--lightningcss-dark,#b794f6);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-state.closed{color:var(--danger);background:color-mix(in srgb, currentColor 12%, transparent)}.pr-link{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:inherit;white-space:nowrap;align-items:baseline;gap:.35rem;min-width:0;text-decoration:none;display:inline-flex;overflow:hidden}.pr-link:hover{text-decoration:underline}.procs{margin:0;padding:0;list-style:none}.procs li{justify-content:space-between;align-items:center;gap:.4rem;padding:.25rem 0;font-size:.85rem;display:flex}.proc-cmd{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:.3rem;min-width:0;display:inline-flex;overflow:hidden}.proc-kill{color:var(--dim);padding:0 .4rem}.port-link{cursor:pointer}.port-link:hover{color:var(--accent);text-decoration:underline}.proc-kill:hover{color:var(--danger)}.new-ws .field{flex-direction:column;gap:.25rem;max-width:20rem;display:flex}.steps{flex-direction:column;gap:.3rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.steps li{color:var(--dim);overflow-wrap:anywhere;align-items:center;gap:.45rem;min-width:0;display:flex}.steps li.active{color:var(--text)}.step-done{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364);text-align:center;width:.9rem}.side-nav{border-right:1px solid var(--border);background:var(--panel);flex-direction:column;flex-shrink:0;width:16rem;display:flex;overflow-y:auto}@media (width<=899px){.side-nav{z-index:25;width:min(17rem,85vw);padding-top:env(safe-area-inset-top);transition:translate .2s;position:fixed;top:0;bottom:0;left:0;translate:-100%;box-shadow:0 0 32px #0000004d}.side-nav.open{translate:0}.side-nav .side-list{display:flex!important}.side-rail{display:none!important}.side-nav .side-foot{border-top:1px solid var(--border);padding:.6rem max(1.5rem, calc(env(safe-area-inset-right) + .75rem)) max(.75rem, env(safe-area-inset-bottom)) max(1.5rem, calc(env(safe-area-inset-left) + .75rem));justify-content:flex-end;gap:.5rem}.side-foot .nav-toggle,.side-foot .spacer{display:none}.side-nav{width:min(19rem,88vw);font-size:1rem}.side-nav .side-list{gap:.5rem;padding:.6rem .6rem .4rem}.side-nav .side-ws-btn{gap:.5rem;padding:.6rem;font-size:1.05rem}.side-nav .side-ws-row .row-icon,.side-nav .side-ws-row .close,.side-nav .side-sess .row-icon,.side-nav .side-sess .close{visibility:visible;width:2.5rem;height:2.5rem;font-size:1.1rem}.side-nav .side-sessions{gap:.25rem;padding-left:1rem}.side-nav .side-sess-btn{padding:.6rem;font-size:1rem}.side-nav .side-sess .row-icon{display:inline-flex}.side-nav .side-foot .icon-btn{--icon-btn-size:2.75rem}.side-nav .dot{width:9px;height:9px}}.notify-btn.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.drawer-backdrop{z-index:24;background:#00000059;position:fixed;inset:0}@media (width>=900px){.notify-btn.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.drawer-backdrop{display:none}}.side-list{flex-direction:column;flex:1;gap:.35rem;padding:.45rem .45rem .25rem;display:flex}.side-foot{align-items:center;gap:.3rem;padding:.3rem .45rem .45rem;display:flex}@media (width>=900px){.side-nav.closed{width:auto}.side-nav.closed .side-list{display:none}.side-nav.closed .side-foot{flex-direction:column;justify-content:flex-end}.side-nav.closed .side-foot>.icon-btn:first-of-type{order:10}}.side-rail{flex-direction:column;flex:1;gap:.3rem;padding:.45rem;display:flex}.rail-btn{background:color-mix(in srgb, currentColor 7%, transparent);font-weight:600;position:relative}.rail-btn.current,.rail-btn.current:hover{background:var(--accent);color:var(--lightningcss-light,#fff)var(--lightningcss-dark,#101321)}.rail-btn:not(.current):hover{background:color-mix(in srgb, currentColor 12%, transparent)}.rail-btn .dot{width:6px;height:6px;position:absolute;top:3px;right:3px}.side-ws{border-radius:var(--radius);padding:.15rem}.side-ws.current{background:color-mix(in srgb, var(--accent) 8%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.side-ws-row{align-items:center;display:flex}.side-ws-btn{text-align:left;border-radius:var(--radius);flex:1;align-items:center;gap:.4rem;min-width:0;padding:.35rem .45rem;font-weight:600;display:flex}.side-ws:not(.current) .side-ws-btn:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.side-ws-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.side-ws-row .row-icon,.side-ws-row .close,.side-sess .row-icon,.side-sess .close{width:1.6rem;height:1.6rem;color:var(--dim);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.side-sess .row-icon,.side-sess .close{visibility:hidden}.side-sess:hover .row-icon,.side-sess:hover .close{visibility:visible}.side-ws-row .row-icon:hover,.side-sess .row-icon:hover{color:var(--text);background:color-mix(in srgb, currentColor 8%, transparent)}.side-ws-row .close:hover,.side-sess .close:hover{color:var(--danger)}.side-sessions{flex-direction:column;gap:.1rem;padding:.1rem .1rem .3rem .9rem;display:flex}.side-sessions:not(:has(*)){display:none}.side-sess{border-radius:var(--radius);align-items:center;display:flex}.side-sess.current{background:color-mix(in srgb, var(--accent) 14%, transparent)}.side-sess-btn{text-align:left;border-radius:var(--radius);text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:.4rem;min-width:0;padding:.3rem .45rem;display:flex;overflow:hidden}.side-sess:not(.current) .side-sess-btn:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.rail-pop .side-ws.current{box-shadow:none;background:0 0}.rail-pop{z-index:40;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:14rem;max-width:20rem;padding:.25rem;position:fixed;box-shadow:0 8px 24px #00000040}.new-session-pop{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:8rem;color:inherit;flex-direction:column;margin:0;padding:.25rem;display:none;position:fixed;inset:auto}.new-session-pop:popover-open{display:flex}.new-session-pop button{text-align:left;border-radius:var(--radius);align-items:center;gap:.5rem;padding:.45rem .7rem;font-family:monospace;display:flex}.side-sess-btn .sess-icon{vertical-align:-2px;opacity:.75;margin-right:.15rem;display:inline-block}.new-session-pop button:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.side-chips{flex-wrap:wrap;gap:.3rem;padding:.25rem .1rem .1rem;display:flex}.side-sess .close.armed,.side-sess .close.armed:hover{visibility:visible;color:#fff;background:var(--danger)}button.chip.pr{cursor:pointer;font:inherit;border:0}.chip.pr.rejected{color:var(--danger)}.chip.port-chip{padding:0;overflow:hidden}.port-chip .port-open{color:inherit;padding:.05em .15em .05em .5em}.port-chip .port-open:hover{color:var(--accent);text-decoration:underline}.port-chip .port-kill{color:var(--dim);padding:.05em .4em .05em .2em;line-height:1.5}.port-chip .port-kill:hover{color:var(--danger)}.port-chip .port-kill.armed,.port-chip .port-kill.armed:hover{color:#fff;background:var(--danger)}.diff-file{border:1px solid var(--border);border-radius:var(--radius);--diffs-font-size:12.5px;max-width:100%;overflow:hidden}@media (width<=899px){.diff-file{--diffs-font-size:11.5px}}.diff-view{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.refresh-chip{z-index:5;background:var(--panel);border:1px solid var(--border);border-radius:999px;align-items:center;gap:.35rem;padding:.15rem .6rem;font-size:.78rem;display:inline-flex;position:absolute;top:.5rem;right:.75rem}.tree{border-right:1px solid var(--border);flex-shrink:0;width:15rem;padding:.6rem .4rem;font-size:.8rem;display:none;overflow-y:auto}@media (width>=900px){.tree{display:block}.tree.closed{display:none}}.diff-tools .tree-toggle{display:none}.tree-toggle.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent)}@media (width>=900px){.diff-tools .tree-toggle{display:inline-flex}}.tree-repo+.tree-repo{margin-top:.75rem}.tree-repo-name{text-align:left;align-items:baseline;gap:.25rem;width:100%;padding:.15rem .35rem;font-weight:700;display:flex}.tree-dir{overflow-wrap:anywhere;padding:.25rem .35rem .05rem;font-size:.72rem}.tree-file{text-align:left;border-radius:var(--radius);align-items:flex-start;gap:.35rem;width:100%;padding:.18rem .35rem;display:flex}.tree-file:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.tree-file.seen{opacity:.55}.tree-file-name{overflow-wrap:anywhere;flex:1;min-width:0}.tree-note{font-size:.7rem}.diff-col{flex-direction:column;flex:1;min-width:0;padding-top:.75rem;display:flex}.diff-col>.diff-head,.diff-col>.diff-tools{padding-inline:.75rem}.diff-main{flex:1;min-width:0;min-height:0;padding:0 .75rem .75rem;overflow:hidden auto}.diff-head{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.head-actions{flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0;max-width:100%;margin-left:auto;display:flex}.head-actions .split-btn{min-width:0;max-width:100%}.head-actions .split-btn>select{max-width:8rem}.diff-stats{flex-wrap:wrap;align-items:center;gap:.3rem;display:inline-flex}.diff-tools{flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.6rem;display:flex}.two-dot{color:var(--dim);white-space:nowrap;cursor:pointer;align-items:center;gap:.35em;font-size:.8rem;display:inline-flex}.file-filter{flex:1;min-width:0;padding:.35rem .55rem;font-size:.85rem}.repo-section+.repo-section{margin-top:1rem}.repo-sep{text-align:left;border-bottom:2px solid var(--border);align-items:baseline;gap:.5rem;width:100%;min-width:0;margin-bottom:.4rem;padding:.3rem .1rem;font-weight:700;display:flex}.repo-sep .mono,.repo-sep .dim{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}.repo-sep .dim{font-size:.78rem;font-weight:400}.repo-meta{flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 .5rem;display:flex}.files{flex-direction:column;gap:.75rem;display:flex}.file{min-width:0}.diff-wait{border:1px solid var(--border);border-radius:var(--radius);min-height:16rem}.tree-dir{text-align:left;align-items:baseline;gap:.25rem;width:100%;display:flex}.tree-dir:hover{color:var(--text)}.tree-chev{flex-shrink:0;font-size:.6rem}.file>:not(summary){content-visibility:auto;contain-intrinsic-size:auto 24rem}.file>summary{cursor:pointer;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);z-index:1;align-items:center;gap:.5rem;padding:.35rem .5rem;font-family:monospace;font-size:.85rem;list-style:none;display:flex;position:sticky;top:0}.file[open]>summary{border-bottom-right-radius:0;border-bottom-left-radius:0}.status{font-weight:700}.status.A{color:var(--lightningcss-light,#1a7f37)var(--lightningcss-dark,#57d364)}.status.D{color:var(--danger)}.status.M{color:var(--accent)}.path{text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;flex:1;min-width:0;overflow:hidden}.file:not([open])>summary .path{white-space:normal;overflow-wrap:anywhere;direction:ltr}.viewed{align-items:center;gap:.3rem;font-size:.75rem;display:inline-flex}.center-pad{text-align:center;padding:2rem}.diff-skel p{align-items:center;gap:.5rem;margin:0 0 .75rem;display:flex}.skel-row{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb, currentColor 4%, transparent);height:2.2rem;margin-bottom:.75rem}.files-btn{white-space:nowrap;font-size:.85rem;display:none}@media (width<=899px){.files-btn{display:inline-block}}.sheet-backdrop{z-index:34;background:#00000059;position:fixed;inset:0}.file-sheet{z-index:35;background:var(--panel);border-top:1px solid var(--border);max-height:min(70dvh,30rem);padding-bottom:env(safe-area-inset-bottom);border-radius:12px 12px 0 0;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.sheet-head{align-items:center;gap:.6rem;padding:.6rem .4rem .4rem .9rem;display:flex}.sheet-head .dim{flex:1;font-size:.8rem}.sheet-list{min-height:0;padding:0 .4rem .4rem;overflow-y:auto}.sheet-file{text-align:left;border-radius:var(--radius);align-items:center;gap:.5rem;width:100%;padding:.55rem .5rem;font-size:.85rem;display:flex}.sheet-file.seen{opacity:.55}.sheet-path{text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;flex:1;min-width:0;overflow:hidden}.diff-pad{padding:.5rem}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}.term-wrap{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.term{background:#000;flex:1;min-height:0}.term .xterm{height:100%;padding:.25rem 0 0 .25rem}.term-dead{z-index:10;background:#0000008c;place-items:center;display:grid;position:absolute;inset:0}.term-copied{z-index:10;color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--panel));border:1px solid color-mix(in srgb, var(--accent) 35%, var(--border));pointer-events:none;border-radius:999px;padding:.3rem .9rem;font-size:.8rem;animation:1.2s forwards term-copied-fade;position:absolute;bottom:1rem;left:50%;translate:-50%}@keyframes term-copied-fade{0%{opacity:0;translate:-50% .25rem}12%{opacity:1;translate:-50%}75%{opacity:1}to{opacity:0}}.term-uploading{background:var(--panel);border:1px solid var(--border);border-radius:999px;padding:.1rem .6rem;font-size:.78rem;position:absolute;top:.4rem;right:.6rem}.trap-backdrop{z-index:30;background:#00000073;place-items:start center;padding-top:15dvh;display:grid;position:fixed;inset:0}.paste-trap{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:.6rem;width:min(20rem,85vw);padding:1rem;display:flex}.paste-trap p{text-align:center;margin:0}.kb-slot{flex-shrink:0}.key-bar{padding:.4rem max(1.5rem, calc(env(safe-area-inset-right) + .75rem)) max(.75rem, env(safe-area-inset-bottom)) max(1.5rem, calc(env(safe-area-inset-left) + .75rem));border-top:1px solid var(--border);background:var(--panel);align-items:center;gap:.3rem;display:flex}.kspacer{flex:1;justify-content:center;align-items:center;min-width:0;display:flex}.sess-btn{position:relative}.sess-dot{width:6px;height:6px;position:absolute;top:4px;right:4px}.sess-pop{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:9rem;color:inherit;flex-direction:column;margin:0;padding:.25rem;display:none;position:fixed;inset:auto;box-shadow:0 4px 16px #00000040}.sess-pop:popover-open{display:flex}.sess-row{border-radius:var(--radius);align-items:center;display:flex}.sess-row.current{background:color-mix(in srgb, var(--accent) 10%, transparent)}.sess-open{text-align:left;border-radius:var(--radius);flex:1;align-items:center;gap:.5rem;min-width:0;padding:.55rem .7rem;font-family:monospace;display:flex}.sess-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sess-open:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.sess-x{border-radius:var(--radius);width:2.2rem;color:var(--dim);flex-shrink:0;align-self:stretch}.sess-x:hover{color:var(--danger)}.sess-x.armed{background:var(--danger);color:#fff}.sess-edit:hover{color:var(--text)}.sess-new{border-top:1px solid var(--border);justify-content:center;gap:.3rem;margin-top:.25rem;padding-top:.35rem;display:flex}.sess-new.lone{border-top:0;margin-top:0;padding-top:0}.key-bar{position:relative}.kbar-ws{bottom:max(.3rem, calc(env(safe-area-inset-bottom) - 1rem));left:max(1.5rem, calc(env(safe-area-inset-left) + .75rem));right:max(1.5rem, calc(env(safe-area-inset-right) + .75rem));pointer-events:none;justify-content:center;align-items:center;gap:.3rem;font-size:.78rem;line-height:1;display:flex;position:absolute}.kbar-ws-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.kbtn{--icon-btn-size:2.6rem;background:color-mix(in srgb, currentColor 7%, transparent)}.kbtn-esc{letter-spacing:.02em;font-size:.78rem;font-weight:600}@media (width<=399px){.key-bar{gap:.2rem}.kbtn{--icon-btn-size:2.35rem}}.kbtn:hover{background:color-mix(in srgb, currentColor 7%, transparent)}.kbtn:active{background:color-mix(in srgb, var(--accent) 15%, transparent)}.dpad-grid .repeat{touch-action:none;-webkit-user-select:none;user-select:none}.kb-toggle.on,.kb-toggle.on:hover{color:var(--accent);background:color-mix(in srgb, var(--accent) 15%, transparent)}.dpad-grid{background:var(--panel);border:1px solid var(--border);color:inherit;border-radius:12px;grid-template-columns:repeat(3,3rem);grid-auto-rows:3rem;gap:.25rem;margin:0;padding:.4rem;position:fixed;inset:auto .5rem 6.5rem auto}.dpad-grid:popover-open{display:grid}.dpad-grid button{background:color-mix(in srgb, currentColor 7%, transparent);border-radius:var(--radius);justify-content:center;align-items:center;font-family:monospace;font-size:1rem;display:inline-flex}.dpad-grid button:active{background:color-mix(in srgb, var(--accent) 15%, transparent)}.dpad-grid .big-glyph{font-size:1.45rem}.dpad-grid .enter{background:color-mix(in srgb, var(--accent) 15%, transparent);color:var(--accent)}.usage-modal .manage-head{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.usage-row{grid-template-columns:7.5rem 1fr;align-items:start;gap:.2rem .75rem;display:grid}.usage-name{flex-direction:column;min-width:0;display:flex}.usage-name .dim{text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;overflow:hidden}.usage-stale{color:var(--lightningcss-light,#bf8700)var(--lightningcss-dark,#d4a72c);white-space:nowrap;font-size:.7rem}.usage-row.stale .usage-meters{opacity:.55}.usage-meters{flex-direction:column;gap:.25rem;min-width:0;display:flex}.meter{grid-template-columns:2.4rem 1fr 2.6rem 2.9rem;align-items:center;gap:.5rem;display:grid}@media (width<=359px){.meter{grid-template-columns:2.4rem 1fr 2.6rem}.meter-reset{display:none}}.meter-label{font-size:.72rem}.meter-track{background:color-mix(in srgb, currentColor 12%, transparent);border-radius:3px;height:6px;overflow:hidden}.meter-fill{background:var(--accent);border-radius:3px;height:100%;display:block}.meter-fill.warm{background:var(--lightningcss-light,#bf8700)var(--lightningcss-dark,#d4a72c)}.meter-fill.hot{background:var(--danger)}.meter-pct{font-variant-numeric:tabular-nums;text-align:right;font-size:.75rem}.meter-reset{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.72rem}.usage-list{flex-direction:column;gap:.75rem;display:flex}@media (width<=480px){.usage-row{grid-template-columns:1fr}}.usage-modal p{align-items:center;gap:.4rem;margin:0;display:flex}.prompt-dlg{width:min(26rem,100vw - 1.5rem)}.prompt-dlg .prompt-title{margin:0;font-size:1rem}@media (width<=899px){.prompt-dlg{border:1px solid var(--border);border-radius:12px;height:auto;inset:min(8dvh,4rem) auto auto 50%;translate:-50%;box-shadow:0 12px 40px #00000059}}.work-view{flex-direction:row;flex:1;min-width:0;min-height:0;display:flex}.main-col{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.term-area{flex-direction:column;flex:1;min-height:0;display:flex}.term-area.as-bar{flex:none}.pad-inline{padding:1rem}.empty-sess{flex-direction:column;align-items:center;gap:.6rem;padding:min(14dvh,6rem) 1rem 1rem;display:flex}.empty-sess p{margin:0}main{height:100%;min-height:0;padding-top:env(safe-area-inset-top);flex-direction:column;display:flex;position:relative}.boot{justify-content:center;align-items:center;gap:.5rem;padding-top:min(20dvh,10rem);display:flex}
|
package/package.json
CHANGED
package/scripts/migrate.mjs
CHANGED
|
@@ -58,6 +58,147 @@ for (const { path: wsPath } of db
|
|
|
58
58
|
}
|
|
59
59
|
if (removed) console.log(`==> migrate: removed ${removed} legacy hook file(s)`);
|
|
60
60
|
|
|
61
|
+
// A workspace's AGENTS.md is only rewritten when its repos change, so
|
|
62
|
+
// existing ones never learn that the stash is shared between worktrees of
|
|
63
|
+
// the same bare cache. Splice the bullet in ahead of the push one (keep in
|
|
64
|
+
// sync with writeAgentsMd in src/server/workspaces.ts).
|
|
65
|
+
const STASH_BULLET =
|
|
66
|
+
"- **No `git stash`:** every workspace using a repo shares one stash stack, so\n" +
|
|
67
|
+
" a pop can take another workspace's work. Commit WIP to your branch instead.\n";
|
|
68
|
+
let noted = 0;
|
|
69
|
+
for (const { path: wsPath } of db
|
|
70
|
+
.prepare("SELECT path FROM workspaces")
|
|
71
|
+
.all()) {
|
|
72
|
+
const file = path.join(wsPath, "AGENTS.md");
|
|
73
|
+
try {
|
|
74
|
+
const text = fs.readFileSync(file, "utf8");
|
|
75
|
+
const at = text.indexOf("- **Push:**");
|
|
76
|
+
if (at < 0 || text.includes("git stash")) continue;
|
|
77
|
+
fs.writeFileSync(file, text.slice(0, at) + STASH_BULLET + text.slice(at));
|
|
78
|
+
noted++;
|
|
79
|
+
} catch {}
|
|
80
|
+
}
|
|
81
|
+
if (noted) console.log(`==> migrate: noted the shared stash in ${noted} AGENTS.md`);
|
|
82
|
+
|
|
83
|
+
// The review is commit-to-commit by default; fold that into the stash
|
|
84
|
+
// bullet rather than appending another one. Keep in sync with writeAgentsMd.
|
|
85
|
+
const OLD_STASH_END = "Commit WIP to your branch instead.";
|
|
86
|
+
const NEW_STASH_END =
|
|
87
|
+
"Commit as you go — uncommitted work isn't part of the review.";
|
|
88
|
+
let restated = 0;
|
|
89
|
+
for (const { path: wsPath } of db
|
|
90
|
+
.prepare("SELECT path FROM workspaces")
|
|
91
|
+
.all()) {
|
|
92
|
+
const file = path.join(wsPath, "AGENTS.md");
|
|
93
|
+
try {
|
|
94
|
+
const text = fs.readFileSync(file, "utf8");
|
|
95
|
+
if (!text.includes(OLD_STASH_END)) continue;
|
|
96
|
+
fs.writeFileSync(file, text.replace(OLD_STASH_END, NEW_STASH_END));
|
|
97
|
+
restated++;
|
|
98
|
+
} catch {}
|
|
99
|
+
}
|
|
100
|
+
if (restated) console.log(`==> migrate: restated the stash bullet in ${restated} AGENTS.md`);
|
|
101
|
+
|
|
102
|
+
// Same rewrite-on-create-only problem: existing AGENTS.md never learn to
|
|
103
|
+
// rebase after a squash-merge. Keep in sync with writeAgentsMd.
|
|
104
|
+
const REBASE_BULLET =
|
|
105
|
+
"- **Rebase after merge:** when `origin/<base>` (or a stacked parent) moves,\n" +
|
|
106
|
+
" rebase onto it. A squash-merge does not move the fork point, so the review\n" +
|
|
107
|
+
" keeps showing landed work until you do.\n";
|
|
108
|
+
let rebased = 0;
|
|
109
|
+
for (const { path: wsPath } of db
|
|
110
|
+
.prepare("SELECT path FROM workspaces")
|
|
111
|
+
.all()) {
|
|
112
|
+
const file = path.join(wsPath, "AGENTS.md");
|
|
113
|
+
try {
|
|
114
|
+
const text = fs.readFileSync(file, "utf8");
|
|
115
|
+
const at = text.indexOf("- **PRs:**");
|
|
116
|
+
if (at < 0 || text.includes("Rebase after merge")) continue;
|
|
117
|
+
fs.writeFileSync(file, text.slice(0, at) + REBASE_BULLET + text.slice(at));
|
|
118
|
+
rebased++;
|
|
119
|
+
} catch {}
|
|
120
|
+
}
|
|
121
|
+
if (rebased) console.log(`==> migrate: noted rebase-after-merge in ${rebased} AGENTS.md`);
|
|
122
|
+
|
|
123
|
+
// Branch rules: stay on the workspace branch; reset it after it lands;
|
|
124
|
+
// topic lanes only when that branch must stay open. Replaces both the
|
|
125
|
+
// original "cut a lane per PR" parallel text and the later "need more
|
|
126
|
+
// than one? stack" wording. Keep in sync with writeAgentsMd.
|
|
127
|
+
let restatedBranches = 0;
|
|
128
|
+
for (const { path: wsPath } of db
|
|
129
|
+
.prepare("SELECT path FROM workspaces")
|
|
130
|
+
.all()) {
|
|
131
|
+
const file = path.join(wsPath, "AGENTS.md");
|
|
132
|
+
try {
|
|
133
|
+
let text = fs.readFileSync(file, "utf8");
|
|
134
|
+
const found = text.match(/Workspace branch: \*\*`([^`]+)`\*\*/);
|
|
135
|
+
if (!found || text.includes("must stay unmerged")) continue;
|
|
136
|
+
const branch = found[1];
|
|
137
|
+
const branches =
|
|
138
|
+
`- **Branches:** stay on \`${branch}\` and keep pushing it — one open PR, more\n` +
|
|
139
|
+
` commits. After it lands, \`git fetch\` and reset \`${branch}\` to\n` +
|
|
140
|
+
` \`origin/<base>\` so the next change reuses this branch. Do not cut a\n` +
|
|
141
|
+
` \`${branch}-<topic>\` just to start the next piece of work.\n` +
|
|
142
|
+
` A topic lane is only for when \`${branch}\` must stay unmerged (a larger\n` +
|
|
143
|
+
` change) and you need a second PR on top of it. Then push every repo's\n` +
|
|
144
|
+
` workspace branch first, cut from the parent —\n` +
|
|
145
|
+
` \`git switch -c ${branch}-<topic> origin/${branch}\` — and keep the prefix.\n` +
|
|
146
|
+
` Only two levels: never \`${branch}-a-b\`. Tooling finds PRs by that prefix,\n` +
|
|
147
|
+
` so a branch named anything else is invisible: never invent one.\n`;
|
|
148
|
+
const rebase =
|
|
149
|
+
`- **Rebase after merge:** when \`${branch}\` is still open and \`origin/<base>\`\n` +
|
|
150
|
+
" moves, rebase onto it — a squash-merge does not move the fork point, so the\n" +
|
|
151
|
+
" review keeps showing landed work until you do. On a topic lane, rebase onto\n" +
|
|
152
|
+
` \`${branch}\` when the parent moves; after the parent merges: \`git fetch\n` +
|
|
153
|
+
" --prune`, rebase onto `origin/<base>`, and retarget (`gh pr edit --base\n" +
|
|
154
|
+
" <base>`).\n";
|
|
155
|
+
const prs =
|
|
156
|
+
"- **PRs:** the description covers only what is in the diff — a few sentences on\n" +
|
|
157
|
+
" what changed and why. No verification logs or file-by-file detail. A topic\n" +
|
|
158
|
+
` lane's PR is \`gh pr create --base ${branch}\` — GitHub will otherwise target\n` +
|
|
159
|
+
" the repo default, and the local review will disagree with the files tab.\n";
|
|
160
|
+
const next = text
|
|
161
|
+
.replace(/- \*\*Branches:\*\*[\s\S]*?never invent one.\n/, branches)
|
|
162
|
+
.replace(/- \*\*PRs:\*\*[\s\S]*?file-by-file detail\.\n/, prs);
|
|
163
|
+
const withRebase = next.includes("- **Rebase after merge:**")
|
|
164
|
+
? next.replace(
|
|
165
|
+
/- \*\*Rebase after merge:\*\*[\s\S]*?(?:until you do|<base>`\)\.)\n/,
|
|
166
|
+
rebase,
|
|
167
|
+
)
|
|
168
|
+
: next;
|
|
169
|
+
if (withRebase === text) continue;
|
|
170
|
+
fs.writeFileSync(file, withRebase);
|
|
171
|
+
restatedBranches++;
|
|
172
|
+
} catch {}
|
|
173
|
+
}
|
|
174
|
+
if (restatedBranches) {
|
|
175
|
+
console.log(`==> migrate: restated branch rules in ${restatedBranches} AGENTS.md`);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Default review base/algorithm changed (workspace branch vs origin/<base>,
|
|
179
|
+
// containment empty-check, then commit-to-commit). Existing comments and
|
|
180
|
+
// viewed flags are keyed only by path+line, so they would silently
|
|
181
|
+
// re-anchor. Wipe once — this script runs on every update.
|
|
182
|
+
{
|
|
183
|
+
const wr = new DatabaseSync(dbPath);
|
|
184
|
+
try {
|
|
185
|
+
const FLAG = "review-cleared-diff-v2";
|
|
186
|
+
const seen = wr.prepare("SELECT 1 FROM settings WHERE key = ?").get(FLAG);
|
|
187
|
+
if (!seen) {
|
|
188
|
+
const comments = wr.prepare("DELETE FROM review_comments").run();
|
|
189
|
+
const viewed = wr.prepare("DELETE FROM review_viewed").run();
|
|
190
|
+
wr.prepare("INSERT INTO settings (key, value) VALUES (?, '1')").run(FLAG);
|
|
191
|
+
if (comments.changes || viewed.changes) {
|
|
192
|
+
console.log(
|
|
193
|
+
`==> migrate: cleared ${comments.changes} review comment(s) and ${viewed.changes} viewed flag(s)`,
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
} finally {
|
|
198
|
+
wr.close();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
61
202
|
// Backfill the push-signal hook into bare caches that predate it (new
|
|
62
203
|
// caches get it from ensureBare — keep this script in sync with
|
|
63
204
|
// src/server/repo-events.ts).
|