@overdeck/desktop 0.45.16 → 0.45.19
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/dist-electron/main.js +149 -158
- package/dist-electron/main.js.map +1 -1
- package/dist-electron/preload.js +17 -2
- package/dist-electron/preload.js.map +1 -1
- package/package.json +5 -4
- package/server/acceptance-criteria-DQqRIuQ-.js +62 -0
- package/server/{advancing-selfheal-DJYAvGv-.js → advancing-selfheal-BYidNkmp.js} +6 -6
- package/server/{agent-gc-D0wDIeV1.js → agent-gc-ClNQLl_V.js} +3 -3
- package/server/agent-state-BMrpX7kU.js +3 -0
- package/server/{agent-state-service-DFslS5go.js → agent-state-service-BpAKmodj.js} +5 -5
- package/server/{agent-state-service-CZrayD_G.js → agent-state-service-CC9NMIWn.js} +1 -1
- package/server/{briefing-freshness-DESTCWo-.js → agents--ljN-wVY.js} +5 -131
- package/server/agents-DAUyr_Z1.js +3 -0
- package/server/{archive-planning-CoyIbgGK.js → archive-planning-2w8WQaeJ.js} +1 -1
- package/server/{archive-planning-CbghE9-o.js → archive-planning-BW3te5Vw.js} +5 -10
- package/server/{artifact-index-jobs-CcSrUoSE.js → artifact-index-jobs-DFO3eceF.js} +2 -2
- package/server/{backlog-auto-trigger-BfgDsII0.js → backlog-auto-trigger-DECBMxLq.js} +2 -2
- package/server/{behavior-BTpYbAv4.js → behavior-CWqNMqE5.js} +2 -2
- package/server/briefing-freshness-B1delh4l.js +131 -0
- package/server/{checkpoint-manager-DWSXooZV.js → checkpoint-manager-CjLY6A4r.js} +1 -1
- package/server/{checkpoint-manager-BwFdegJF.js → checkpoint-manager-D6_71Rpb.js} +3 -3
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-BtUonbs3.js → checkpoints-BYrLxVle.js} +2 -2
- package/server/{checkpoints-fjadfOKF.js → checkpoints-xSuv4v4I.js} +1 -1
- package/server/{claude-hooks-provision-DiK62u0k.js → claude-hooks-provision-DL6yfJB_.js} +1 -1
- package/server/{claude-hooks-provision-DAtxutOs.js → claude-hooks-provision-DvfVZbbT.js} +2 -2
- package/server/{claude-permissions-CThLgf8d.js → claude-permissions-CcncrTNF.js} +2 -2
- package/server/{claude-settings-overlay-BF9MPIwx.js → claude-settings-overlay-1IfYetv2.js} +2 -2
- package/server/{claude-settings-overlay-Dx_Uqcmv.js → claude-settings-overlay-Ca3LXjAC.js} +1 -1
- package/server/cli-BxZHwgRK.js +3 -0
- package/server/{cli-ByKIIMfT.js → cli-DGZWYXio.js} +9 -9
- package/server/{cliproxy-B4c1BUvs.js → cliproxy-Dw42Xy3t.js} +2 -2
- package/server/{cliproxy-C_GuT5DU.js → cliproxy-DziJLbfo.js} +1 -1
- package/server/{close-issue-BOuLKr6e.js → close-issue-DEGjxifn.js} +5 -5
- package/server/{closed-issue-reaper-DCAYzNXW.js → closed-issue-reaper-BsJ3JqQy.js} +9 -9
- package/server/{closed-issue-reaper-CksfuiFD.js → closed-issue-reaper-CNr7X4MB.js} +1 -1
- package/server/codex-C8OlW-dN.js +3 -0
- package/server/{codex-BbqIRZjd.js → codex-D5RyWzNL.js} +43 -18
- package/server/{codex-parser-mFYZh8vR.js → codex-parser-BRxvUkk8.js} +2 -2
- package/server/{config-Dj6N8EP9.js → config-CQ2u44iP.js} +1 -1
- package/server/{config-DVLdmnMJ.js → config-Cntj_tFu.js} +2 -2
- package/server/{config-yaml-cNOZcEww.js → config-yaml-BQs6GbD_.js} +75 -74
- package/server/{conflict-gate-CuXUv-bP.js → conflict-gate-BE6JdfkO.js} +1 -1
- package/server/{conflict-gate-BMKm_5DV.js → conflict-gate-DdfwKgy0.js} +3 -3
- package/server/{context-layers-c0JqYHcS.js → context-layers-DFucrVVG.js} +17 -3
- package/server/{context-layers-CeAwSYNt.js → context-layers-DO0Eyq2E.js} +2 -2
- package/server/{control-settings-D4EFsRBd.js → control-settings-bxOCLsuE.js} +4 -4
- package/server/{conversation-compaction-BCggyih4.js → conversation-compaction-Dq6MfZdL.js} +8 -8
- package/server/{conversation-compaction-kHVfVRg3.js → conversation-compaction-lSlUb-cU.js} +1 -1
- package/server/{conversation-service-BTzObqGi.js → conversation-service-BVt4MQ1_.js} +1 -1
- package/server/{conversation-service-B8LFQQm1.js → conversation-service-TZsQjkjT.js} +6 -6
- package/server/{conversations-B-lcHv-5.js → conversations-CxOWHNzv.js} +4 -4
- package/server/{conversations-BM7zlXjr.js → conversations-DaF6elGK.js} +1 -1
- package/server/{cost-BcpRQ-7o.js → cost-Dlh0IEiv.js} +3 -3
- package/server/{cost-D9kPIY_5.js → cost-oinpUqvE.js} +2 -2
- package/server/{cost-sync-DF6odxK9.js → cost-sync-CVIAsrhB.js} +3 -3
- package/server/{dag-DKI3sOmX.js → dag-ClFr7Bah.js} +7 -243
- package/server/{dangerous-git-ops-Bn18PEcN.js → dangerous-git-ops-q5OPtXMd.js} +1 -1
- package/server/dashboard-db-worker.js +6 -6
- package/server/{deacon-DONuopff.js → deacon-B8ygB3e8.js} +3 -3
- package/server/{deacon-DdARMjZq.js → deacon-D2-xTesT.js} +233 -162
- package/server/{deacon-nudge-log-B-naf89q.js → deacon-nudge-log-ilDfxrhK.js} +1 -1
- package/server/deacon-swarm-1vPLuj_l.js +2 -0
- package/server/{deacon-swarm-BNGkmYR_.js → deacon-swarm-yWKQhxiX.js} +298 -72
- package/server/deacon.js +14 -7
- package/server/{devcontainer-renderer-C-34Sxyz.js → devcontainer-renderer-xPhZHCrx.js} +3 -3
- package/server/{dist-BMXvKiZP.js → dist-BwlEiLCU.js} +1 -1
- package/server/dist-Bx4KkgYL.js +3 -0
- package/server/{dist-src-BgGUblXg.js → dist-src-BE0Denfs.js} +1 -1
- package/server/{docker-apZ9pBYw.js → docker-DPEglAwA.js} +2 -2
- package/server/{ensure-devcontainer-Bqi1EF1P.js → ensure-devcontainer-SzSvEdKq.js} +4 -4
- package/server/{ensure-devcontainer-Dq3KoOIl.js → ensure-devcontainer-wU3ym1b5.js} +1 -1
- package/server/{esm-shims-BEjvINX3.js → esm-shims-Cso7IGBC.js} +1 -1
- package/server/{event-store-CqDgfbAs.js → event-store-BZoXexYS.js} +1 -1
- package/server/{event-store-D89fMfXS.js → event-store-D4s6eQ6o.js} +3 -3
- package/server/{events-rIGncmP1.js → events-Bn-wdUBF.js} +1 -1
- package/server/{events-S_C0pvl6.js → events-D1hMLl2a.js} +3 -3
- package/server/{factory-DV18m0rc.js → factory-ltWnu0V_.js} +20 -17
- package/server/{feature-registry-population-CqZSnqQi.js → feature-registry-population-xj-J1Wm7.js} +4 -4
- package/server/{feature-registry-storage-BeXmNBwK.js → feature-registry-storage-CQZukiLm.js} +2 -2
- package/server/{features-u5XeMaOK.js → features-Dyqi6N8f.js} +2 -2
- package/server/{feedback-target-DDG1PWl3.js → feedback-target-Ba0zhSYI.js} +1 -1
- package/server/{feedback-target-CwyWf0Dg.js → feedback-target-Chd5dm-Q.js} +9 -7
- package/server/{feedback-writer-BsJiw5aT.js → feedback-writer-BtaoJGl2.js} +1 -1
- package/server/{feedback-writer-D20HSXre.js → feedback-writer-BujzReaQ.js} +4 -4
- package/server/{flywheel-Dczmgchd.js → flywheel-FTInS73X.js} +15 -28
- package/server/{flywheel-RCnHAgc4.js → flywheel-bTImiVrk.js} +1 -1
- package/server/{flywheel-merge-order-CtCYsFJP.js → flywheel-merge-order-DuenRJLZ.js} +6 -6
- package/server/{flywheel-merge-order-DEtEd3aK.js → flywheel-merge-order-O5Zu8iPw.js} +1 -1
- package/server/{flywheel-9Y1X7IM-.js → flywheel-rmYbW-lh.js} +13 -13
- package/server/{forge-DFDThFil.js → forge-OWm99lie.js} +22 -12
- package/server/forge-x5lszTd0.js +2 -0
- package/server/{from-NSJypkI8.js → from-B2tOYhYV.js} +1 -1
- package/server/{fts-db-C5A_TTOM.js → fts-db-BRfS5ukG.js} +2 -2
- package/server/{fts-operations-DvCSimfU.js → fts-operations-L5sNLoHl.js} +2 -2
- package/server/{git-utils-C0neHvQx.js → git-utils-BIEzv2Zp.js} +1 -1
- package/server/{git-utils-Dr0L7mFk.js → git-utils-CP-bg-aM.js} +2 -2
- package/server/{github-app-u9-SX7Gc.js → github-app-CRUIvHuM.js} +8 -3
- package/server/{github-app-Bwt9lK4A.js → github-app-Dtn4ib6M.js} +1 -1
- package/server/{github-client-Btyy3uan.js → github-client-CWEFlCqL.js} +3 -3
- package/server/{github-client-Do3k-N1W.js → github-client-DSVv6wX8.js} +1 -1
- package/server/{github-pr-lookup-DOF1U2WW.js → github-pr-lookup-D6CS9vtG.js} +2 -2
- package/server/{harness-resolve-C6g2R0Cd.js → harness-resolve-ScD6rV47.js} +3 -3
- package/server/{health-events-Bos3sk5g.js → health-events-DbcJmYmd.js} +1 -1
- package/server/{health-events-B4u-2a9m.js → health-events-Dm1Vcvqe.js} +2 -2
- package/server/{hooks-uEr8WTx_.js → hooks-B6gaI6Kg.js} +1 -1
- package/server/{hooks-BCoOjL_R.js → hooks-VXuCnzCv.js} +3 -3
- package/server/hume-B4seN95Y.js +3 -0
- package/server/{hume-BqxYKbUf.js → hume-BRhNKyXQ.js} +2 -2
- package/server/{idle-stack-reaper-H0W6XtHh.js → idle-stack-reaper-Gv32ZCrQ.js} +1 -1
- package/server/{idle-stack-reaper-DbZ8ukMd.js → idle-stack-reaper-po700Lfg.js} +2 -2
- package/server/{infra-Ba9mS6e6.js → infra-DYwIXlK5.js} +9 -4
- package/server/{injection-C1DKXeIZ.js → injection-CTfFnpsG.js} +1 -1
- package/server/{injection-yrMBxzVq.js → injection-DPsUoCJp.js} +7 -7
- package/server/inspect-agent-B25IP-0O.js +2 -0
- package/server/{inspect-agent-B-mnb4uh.js → inspect-agent-CLkwfLRx.js} +35 -67
- package/server/{internal-token-BtqSbKTx.js → internal-token--50JhWP7.js} +2 -2
- package/server/{internal-token-BPYEaXFh.js → internal-token-BOgxXMGy.js} +1 -1
- package/server/{io-VEGSAqsd.js → io-Cv9xQTks.js} +36 -43
- package/server/{issue-closed-BxcePXL-.js → issue-closed-CyqtoFUj.js} +41 -6
- package/server/{issue-lifecycle-CdMUauyb.js → issue-lifecycle-Cm7ydBGK.js} +1 -1
- package/server/{issue-lifecycle--8MRxrG1.js → issue-lifecycle-DR6n40bh.js} +22 -37
- package/server/{issue-service-singleton-MZsDhAob.js → issue-service-singleton--LQ5c2zT.js} +1 -1
- package/server/{issue-service-singleton-CkTUI-eu.js → issue-service-singleton-DKKPneH4.js} +29 -29
- package/server/{issues-CBAsuoAO.js → issues-Cr-BLFLO.js} +2 -2
- package/server/{jsonl-parser-BUW5_sSK.js → jsonl-parser-Bp_xCkX4.js} +3 -3
- package/server/{label-cleanup-htK6fBRU.js → label-cleanup-BbLy2FZe.js} +3 -3
- package/server/{state-home-CEvD_v5F.js → launcher-generator-C-FU4PNT.js} +7 -127
- package/server/{layers-jjL16At6.js → layers-C-6lBDUE.js} +2 -2
- package/server/lifecycle-Bmw8yU_A.js +12 -0
- package/server/{lifecycle-io-DXv8Utct.js → lifecycle-io-B150XprC.js} +1 -1
- package/server/{lifecycle-io-IehcRt2v.js → lifecycle-io-Dcu-_ktz.js} +4 -4
- package/server/{linear-client-D9cSQfvD.js → linear-client-BHjs0luk.js} +3 -3
- package/server/{linear-client-By7hjwuN.js → linear-client-s65LNmlG.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-BLcEZNXz.js → merge-CM8swd2V.js} +1 -1
- package/server/{merge-BN8FGJ2q.js → merge-CS0b-E3u.js} +3 -3
- package/server/{merge-agent-B3u2szOL.js → merge-agent-Bu1hw9cz.js} +64 -51
- package/server/{merge-agent-ejC7Wos8.js → merge-agent-D6LRIW63.js} +1 -1
- package/server/{merge-batch-DyqlgYGp.js → merge-batch-Bv6Z5K2H.js} +1 -1
- package/server/{merge-blockers-cq-aS2KG.js → merge-blockers-Dt43hJiW.js} +2 -2
- package/server/merge-ops-DwYi3U_x.js +2 -0
- package/server/{merge-rebase-Dl7yIxtV.js → merge-rebase-B3vQcTq1.js} +2 -2
- package/server/{merge-set-Dy0D0r3i.js → merge-set-BMEGEKQg.js} +1 -1
- package/server/{merge-set-CZ9Nbay0.js → merge-set-Pe3spe8k.js} +3 -3
- package/server/{merge-sync-CG9kDCdT.js → merge-sync-CpxFRIQ7.js} +1 -1
- package/server/{merge-sync-D7jWLgCC.js → merge-sync-STpg1hk3.js} +2 -2
- package/server/{merge-train-CH33XJOH.js → merge-train-DLw2hDk0.js} +3 -3
- package/server/{merge-train-deps-JoVdGnOg.js → merge-train-deps-BlCGLqwy.js} +4 -4
- package/server/{merge-verification-D4wTChdX.js → merge-verification-C4WMP40D.js} +4 -4
- package/server/{multipart-parser-Csn8U-K9.js → multipart-parser-9DhuAkPd.js} +2 -2
- package/server/node_modules/.package-lock.json +11 -11
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
- package/server/node_modules/toml/README.md +54 -0
- package/server/node_modules/toml/index.d.ts +42 -1
- package/server/node_modules/toml/index.js +3 -3
- package/server/node_modules/toml/lib/compiler.js +35 -3
- package/server/node_modules/toml/lib/parser.js +224 -143
- package/server/node_modules/toml/package.json +3 -1
- package/server/node_modules/ws/lib/receiver.js +15 -32
- package/server/node_modules/ws/lib/websocket-server.js +4 -4
- package/server/node_modules/ws/lib/websocket.js +4 -4
- package/server/node_modules/ws/package.json +5 -1
- package/server/{orphan-proposed-reconciler-BIcNu4tl.js → orphan-proposed-reconciler-eetUXmmt.js} +1 -1
- package/server/{orphan-proposed-reconciler-DI_IS1p_.js → orphan-proposed-reconciler-k9eydM1E.js} +14 -24
- package/server/package-lock.json +12 -12
- package/server/package.json +1 -1
- package/server/{pan-dir-CQIfKG8c.js → pan-dir-D3vABXMs.js} +4 -4
- package/server/{paths-Blj6A9AJ.js → paths-DIoslfsu.js} +2 -2
- package/server/{pipeline-notifier-BH4PAi-w.js → pipeline-notifier-Bgidcelx.js} +1 -1
- package/server/{pipeline-notifier-D_WYtEwl.js → pipeline-notifier-CuBONomU.js} +2 -2
- package/server/{project-pipelines-jMTitpeO.js → project-pipelines-B9b_JVTS.js} +2 -2
- package/server/projects-DxMUi2eI.js +3 -0
- package/server/{prompts-B3njaImU.js → prompts-CY1xnHS-.js} +2 -2
- package/server/{providers-DnPxkHoG.js → providers-B7BNcK_j.js} +1 -1
- package/server/{providers-BbEyFhPX.js → providers-CAlK2If5.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-3qh9TUJi.js → chunk-BO2N2NFS-DzKZyoKY.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-D8UVTPj7.js → diagram-OG6HWLK6-Cx8mWUb8.js} +1 -1
- package/server/public/assets/{dist-BvLLn1YC.js → dist-BqccLhaw.js} +3 -3
- package/server/public/assets/{dist-CyubL7Wj.js → dist-rC3nAs_O.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-BI4E1LbQ.js → ganttDiagram-6RSMTGT7-DLYPLf5T.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-D_bapWkF.js → highlighted-body-OFNGDK62-D4DqixbV.js} +1 -1
- package/server/public/assets/index-CPcysUHk.js +796 -0
- package/server/public/assets/index-H5M0yhM4.css +1 -0
- package/server/public/assets/{linear-CEdobObr.js → linear-yqcXkDfj.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-CWdZ_heB.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-DT79L01f.js → pieDiagram-4H26LBE5-DhraIOaV.js} +1 -1
- package/server/public/assets/{prod-CR_K2DFV.js → prod-DKUunUdN.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-BEkKXXrL.js → quadrantDiagram-W4KKPZXB-DPiRcToa.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-BxSCqn-j.js → sankeyDiagram-5OEKKPKP-3An5HNkZ.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-DicwJGG_.js → xychartDiagram-2RQKCTM6-lbEOjfqQ.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-43LPDfM8.js → pull-requests-Cs4VLxiY.js} +1 -1
- package/server/{pull-requests-DyUkQl4W.js → pull-requests-CxfrQiWX.js} +3 -3
- package/server/{agents-B9GwfCyp.js → queries-srgusoi8.js} +710 -325
- package/server/{rally-BtWjybOa.js → rally-AKkjuGdi.js} +3 -3
- package/server/rally-BOza5j3_.js +3 -0
- package/server/{rally-api-B-osULNL.js → rally-api-BGxATnyr.js} +2 -2
- package/server/{rally-api-B-YA_oXx.js → rally-api-Dbqw1YW9.js} +1 -1
- package/server/{rally-client-CzFymP7P.js → rally-client-B1U5ewpO.js} +1 -1
- package/server/{rally-client-sErNQBO0.js → rally-client-D8h73ei_.js} +5 -5
- package/server/{reap-terminal-sessions-DnDQ7pf9.js → reap-terminal-sessions-BR39qflC.js} +1 -1
- package/server/{reap-terminal-sessions-2s-fvilz.js → reap-terminal-sessions-CFkuquQj.js} +1 -1
- package/server/{rebuild-stack-CoU-HqZj.js → rebuild-stack-BYdtwS6f.js} +5 -5
- package/server/{rebuild-stack-nGD_nPZo.js → rebuild-stack-Dsm9WjKv.js} +1 -1
- package/server/{reconstruct-cache-Wj8GrYB0.js → reconstruct-cache-D7oM1lNv.js} +6 -6
- package/server/record-BeXdn9Ue.js +3 -0
- package/server/record-update-Cb_pPM-F.js +168 -0
- package/server/record-update-KFiISAmu.js +3 -0
- package/server/recovery-trip-DwbsONZf.js +44 -0
- package/server/{release-engine-CBLQXDlH.js → release-engine-CAai5W0V.js} +5 -5
- package/server/{release-set-BNiqi7hy.js → release-set-vNEAfyDH.js} +3 -3
- package/server/{remote-DW_TWQnr.js → remote-8HlOfuF1.js} +3 -3
- package/server/{remote-DcO9An_f.js → remote-RQMKOL_R.js} +3 -3
- package/server/{remote-agents-C4cyxHQS.js → remote-agents-C4a4DdTj.js} +6 -33
- package/server/{remote-agents-Cv-U-_V8.js → remote-agents-_Z1SAaSK.js} +1 -1
- package/server/{remote-completion-PhXGGFQy.js → remote-completion-CH3igKY8.js} +13 -13
- package/server/resume-Cr34JAXO.js +3 -0
- package/server/{review-agent-Dn-yn7Zj.js → review-agent-CQ7oRh_G.js} +31 -23
- package/server/{review-agent-u5q3ip7H.js → review-agent-CUVj54v0.js} +1 -1
- package/server/{review-artifacts-D4T04aYI.js → review-artifacts-CC3yGv7o.js} +5 -19
- package/server/{review-context-Rc0VDLG_.js → review-context-BuxaAgAd.js} +8 -8
- package/server/{review-monitor-BC--miCO.js → review-monitor-uogOppaW.js} +2 -2
- package/server/{review-status-CG0iDuWa.js → review-status-BoJdyvUQ.js} +1 -1
- package/server/{review-status-Dc1l4dVz.js → review-status-By86XA6Z.js} +38 -62
- package/server/{review-status-enrichment-C1a1OG_1.js → review-status-enrichment-CRQAO27G.js} +3 -3
- package/server/{review-status-sync-CfSixhhX.js → review-status-sync-BI4WhUkF.js} +1 -1
- package/server/{review-status-sync-CAr-hfnJ.js → review-status-sync-DUQmrLkK.js} +2 -2
- package/server/{review-verdict-feedback-CVDbIDBe.js → review-verdict-feedback-BNcGkBRD.js} +8 -8
- package/server/{review-verdict-feedback-D2Q960wX.js → review-verdict-feedback-CWz9_9Kp.js} +1 -1
- package/server/{rollup-CakjztPl.js → rollup-B-K6PCbm.js} +1 -1
- package/server/{rollup-DctoIu-A.js → rollup-CqiFgtBp.js} +8 -8
- package/server/{scanner-BTM1jc_u.js → scanner-BZmDUjyD.js} +7 -7
- package/server/{sequence-io-pnoIDGv4.js → sequence-io-BuUx1ZAY.js} +4 -4
- package/server/{sequencer-agent-9Soi-WL-.js → sequencer-agent-2uWOA_BC.js} +6 -17
- package/server/server.js +4700 -4096
- package/server/{service-DfTVoqJg.js → service-COB19Uhm.js} +116 -90
- package/server/{session-fork-C4jAFHj8.js → session-fork-D18TscUZ.js} +2 -2
- package/server/{session-history-DanhhiCw.js → session-history-DbWnzfo-.js} +4 -4
- package/server/settings-C3w2std9.js +2 -0
- package/server/{settings-Cuc12oP_.js → settings-CFEdfovT.js} +2 -2
- package/server/{settings-DfT3f86D.js → settings-DNPAf2X_.js} +3 -3
- package/server/{shadow-engineering-bKuKTCn-.js → shadow-engineering-D8xTtraU.js} +3 -3
- package/server/{shadow-state-DJz6_pb_.js → shadow-state-CTgub0ME.js} +2 -2
- package/server/{shadow-state-CVHpRWlb.js → shadow-state-fRDYhcyx.js} +1 -1
- package/server/shadow-utils-DqMLnRgQ.js +39 -0
- package/server/{ship-log-CwqPFfqx.js → ship-log-BRQQi2lU.js} +1 -1
- package/server/{smart-compaction-B4KlpZGN.js → smart-compaction-CL6yaFpc.js} +1 -1
- package/server/{smart-compaction-CiWfGfRZ.js → smart-compaction-CsJDKM-N.js} +7 -7
- package/server/{spawn-planning-session-D5N3RuLG.js → spawn-planning-session-C_wIQ-Zg.js} +1 -1
- package/server/{spawn-planning-session-CU-DwyDl.js → spawn-planning-session-D0-NlNK1.js} +16 -16
- package/server/{specialist-completion-CJcv-NXH.js → specialist-completion-pJtESo7m.js} +1 -1
- package/server/{specialist-context-B2HlbNxS.js → specialist-context-DXj5Itg8.js} +5 -5
- package/server/{specialist-handoff-logger-CQyF1ygu.js → specialist-handoff-logger-BFH-IB0n.js} +2 -2
- package/server/{specialist-logs-CdcUpfjj.js → specialist-logs-B-rldhNg.js} +3 -3
- package/server/{specialists-CFgw_0Q6.js → specialists-C6-b3YZb.js} +161 -448
- package/server/{specialists-D7AcFi1u.js → specialists-CI_eqHAz.js} +1 -1
- package/server/{specialists-CwzFdapR.js → specialists-Dp8ABxVh.js} +18 -18
- package/server/{specialists-k22_Btaq.js → specialists-Hq3EojmD.js} +1 -1
- package/server/specs-DPGNVh51.js +3 -0
- package/server/{src-B4TTzNSr.js → src-By3D85Ry.js} +6 -1
- package/server/{src-BvpMg4EB.js → src-CqyFg52C.js} +5 -5
- package/server/{src-D4YUZrwR.js → src-DhxM-eCb.js} +6 -6
- package/server/{stack-health-DVN7zRnL.js → stack-health-Bxt-oGE6.js} +1 -1
- package/server/{stack-health-CSgcYcr8.js → stack-health-FtNYSTCS.js} +2 -2
- package/server/stale-task-claims-DnCHCATD.js +69 -0
- package/server/state-home-BzzKVh_C.js +213 -0
- package/server/{state-mapping-C13UaCL7.js → state-mapping-Ci0pkac4.js} +1 -1
- package/server/state-migrate-BS4IybIS.js +362 -0
- package/server/{stuck-remediation-nTIvhGOR.js → stuck-remediation-CTNT4LUC.js} +1 -1
- package/server/{stuck-remediation-CxsyxwFO.js → stuck-remediation-DbwhGg3g.js} +36 -41
- package/server/{summary-fork-CnRMPCYd.js → summary-fork-CloCB8dV.js} +2 -2
- package/server/{summary-fork-gKSoFAnK.js → summary-fork-DaCs0tCq.js} +8 -8
- package/server/supervisor/{paths-3R6b989k.js → paths-C1yU0jq4.js} +5 -3
- package/server/supervisor/pty-supervisor.js +2 -2
- package/server/supervisor/{pty-token-CScQ32Rj.js → pty-token-CSryb8Mb.js} +2 -2
- package/server/{supervisor-CZMs8s0M.js → supervisor-CRED6PD6.js} +2 -2
- package/server/supervisor-DHwuClN_.js +2 -0
- package/server/{swarm-readiness-h6-pwY8w.js → swarm-readiness-CEOrP9rE.js} +3 -3
- package/server/{system-prerequisites-DZZTi2G6.js → system-prerequisites-Bz6KdkFJ.js} +1 -13
- package/server/{teardown-workspace-B4D-oCVg.js → teardown-workspace-Ckn7HGhp.js} +14 -71
- package/server/{test-agent-queue-CnuYku4B.js → test-agent-queue-C8lE8r2j.js} +5 -5
- package/server/{tldr-daemon-CgZQ3jmZ.js → tldr-daemon-BE5rqR90.js} +1 -1
- package/server/{tldr-daemon-CuA8hz21.js → tldr-daemon-CGwDr28O.js} +2 -2
- package/server/{tmux-C3g9VFcg.js → tmux-C3X2XmV0.js} +92 -4
- package/server/tmux-DNaD06Gc.js +3 -0
- package/server/{token-g_sJ19g3.js → token-Dsa-i36o.js} +2 -2
- package/server/{token-util-DiwnnbJo.js → token-util-BWNpH96m.js} +1 -1
- package/server/token-util-DRt0j2nQ.js +3 -0
- package/server/{tracker-config-dQxC15vH.js → tracker-config-5Cabf1MU.js} +2 -2
- package/server/{tracker-utils--z8FLSWn.js → tracker-utils-Cl-Eaqrv.js} +2 -2
- package/server/{tracker-utils-DkKyRT0H.js → tracker-utils-FexeJhyf.js} +1 -1
- package/server/{tunnel-CN2px87h.js → tunnel-D4px7sKc.js} +1 -1
- package/server/{tunnel-BpWZs0Jy.js → tunnel-KId6Z59z.js} +3 -3
- package/server/typed-errors-CH4roFIj.js +3 -0
- package/server/{typed-errors-sLpGfegz.js → typed-errors-n_Tnb4Fh.js} +3 -4
- package/server/{types-BLS_Zbmd.js → types-DOjWNv3Z.js} +1 -1
- package/server/{types-tlXf80x3.js → types-DXBMm4mX.js} +1 -1
- package/server/{uat-train-BRo6DM7p.js → uat-train-B16skN7L.js} +24 -25
- package/server/{uat-train-utGVmqdm.js → uat-train-BBMrnecu.js} +1 -1
- package/server/validation-Zc4kAmqa.js +3 -0
- package/server/{validation-CsPVsoA0.js → validation-xAD7y5vW.js} +70 -23
- package/server/verification-artifact-DK1xb1zG.js +56 -0
- package/server/verification-artifact-JD_edpZ9.js +2 -0
- package/server/{verification-runner-CMT5WRMS.js → verification-runner-32y8NRfL.js} +338 -58
- package/server/verification-runner-DAat1p1u.js +2 -0
- package/server/{vtt-parser-C_XPlifj.js → vtt-parser-QnRfcjiU.js} +1 -1
- package/server/{work-agent-prompt-ZTAb2Hyf.js → work-agent-prompt-S3Fe1kpV.js} +12 -88
- package/server/{workflows-CXRwhw_o.js → workflows-BNvk5gbE.js} +17 -24
- package/server/workflows-Cw2-a_hn.js +2 -0
- package/server/{workspace-CNfuj1-5.js → workspace-BhUnCpcq.js} +3 -3
- package/server/{workspace-9UEsKuiP.js → workspace-C-gP6JAz.js} +1 -1
- package/server/{workspace-config-ChWOECy0.js → workspace-config-C77NKnsV.js} +1 -1
- package/server/{workspace-manager-D8AByFIT.js → workspace-manager-BKiMmb0c.js} +23 -48
- package/server/{workspace-manager-BO-6k3sP.js → workspace-manager-DD6PDqV8.js} +1 -1
- package/server/{workspace-metadata-CvC268MN.js → workspace-metadata-Cnq0snrf.js} +2 -2
- package/server/{workspace-metadata-DZiJtnuF.js → workspace-metadata-D5gNR61G.js} +1 -1
- package/server/{workspaces-D-uIoqbg.js → workspaces-DiAwBsb9.js} +182 -152
- package/sync-sources/hooks/codex-notify-hook +64 -8
- package/sync-sources/hooks/record-cost-event.js +1110 -37
- package/sync-sources/hooks/record-cost-event.js.map +1 -1
- package/sync-sources/hooks/statusline.sh +2 -2
- package/sync-sources/hooks/work-agent-stop-hook +1 -2
- package/server/acceptance-criteria-BZ_nQS1f.js +0 -33
- package/server/agent-state-lGvgPP4m.js +0 -3
- package/server/agents-CEcaxSkR.js +0 -3
- package/server/auto-commit-IW-eik_b.js +0 -3
- package/server/bd-process-lock-XAXAet9O.js +0 -390
- package/server/beads-B1u04n3o.js +0 -2
- package/server/beads-BeSMEjGT.js +0 -649
- package/server/beads-query-Dl4FhT8J.js +0 -95
- package/server/beads-restore-BUItPOjI.js +0 -23
- package/server/cli-D9cUTbBr.js +0 -3
- package/server/codex-BYPz6ZdF.js +0 -3
- package/server/compact-beads-CyJtoXJi.js +0 -94
- package/server/compact-beads-N00E4EVa.js +0 -3
- package/server/deacon-swarm-CvdFekIO.js +0 -2
- package/server/dist-BNwrgsUO.js +0 -3
- package/server/export-BJHSVwKP.js +0 -87
- package/server/forge-8y6aEPTB.js +0 -2
- package/server/hume-CerGi2RH.js +0 -3
- package/server/inspect-agent-CWkeAB7J.js +0 -2
- package/server/lifecycle-Ck2UR27D.js +0 -14
- package/server/merge-ops-CFkQtXEj.js +0 -2
- package/server/projects-CrBE6IhN.js +0 -3
- package/server/public/assets/index-BAZxZ-8I.js +0 -796
- package/server/public/assets/index-FBG3JBfq.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-BYP8MI37.js +0 -1
- package/server/rally-oggyp4cs.js +0 -3
- package/server/record-lEYK__LD.js +0 -3
- package/server/recovery-trip-BT7nb9OV.js +0 -98
- package/server/resolver-C7dLn8OK.js +0 -158
- package/server/resume-BYZBIab-.js +0 -3
- package/server/settings-Cy7SCFO9.js +0 -2
- package/server/specs-RzcDgozr.js +0 -3
- package/server/supervisor-CfX192ma.js +0 -2
- package/server/tmux-By8E_Yv_.js +0 -3
- package/server/token-util-C9u4An3K.js +0 -3
- package/server/tracker-config-BzfVj41Z.js +0 -3
- package/server/typed-errors-CrN1AByg.js +0 -3
- package/server/validation-Dq_wwcw3.js +0 -3
- package/server/verification-runner-D0Uh-9jc.js +0 -2
- package/server/workflows-BLwxUMP7.js +0 -2
- package/server/writer-BUweuRPx.js +0 -3
- package/server/writer-CrP2xuBn.js +0 -251
package/dist-electron/main.js
CHANGED
|
@@ -355,194 +355,184 @@ function stopServer() {
|
|
|
355
355
|
}
|
|
356
356
|
//#endregion
|
|
357
357
|
//#region src/updater.ts
|
|
358
|
-
/**
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
* Handles automatic background checks for updates, downloads, and installation.
|
|
362
|
-
* Uses GitHub Releases as the update server.
|
|
363
|
-
*/
|
|
358
|
+
/** Native desktop updater backed by electron-updater and exact GitHub releases. */
|
|
359
|
+
const OVERDECK_DASHBOARD_PROTOCOL_VERSION = 1;
|
|
360
|
+
const OVERDECK_AGENT_PROTOCOL_VERSION = 1;
|
|
364
361
|
const FOUR_HOURS_MS = 14400 * 1e3;
|
|
362
|
+
const DOWNLOAD_RETRY_MS = [
|
|
363
|
+
0,
|
|
364
|
+
1e3,
|
|
365
|
+
4e3
|
|
366
|
+
];
|
|
367
|
+
const RELEASES_URL = "https://api.github.com/repos/eltmon/overdeck/releases";
|
|
365
368
|
let checkIntervalId = null;
|
|
366
369
|
let initialized = false;
|
|
370
|
+
let channel = "stable";
|
|
367
371
|
let currentStatus = {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
372
|
+
phase: "idle",
|
|
373
|
+
installMode: "desktop",
|
|
374
|
+
channel: "stable",
|
|
375
|
+
currentVersion: electron.app.getVersion(),
|
|
376
|
+
targetVersion: null,
|
|
377
|
+
releaseName: null,
|
|
378
|
+
releaseNotes: null,
|
|
379
|
+
releaseUrl: null,
|
|
380
|
+
publishedAt: null,
|
|
381
|
+
progressPercent: null,
|
|
382
|
+
error: null,
|
|
383
|
+
lastCheckedAt: null,
|
|
384
|
+
compatibility: "unknown",
|
|
385
|
+
currentDashboardProtocol: OVERDECK_DASHBOARD_PROTOCOL_VERSION,
|
|
386
|
+
currentAgentProtocol: OVERDECK_AGENT_PROTOCOL_VERSION,
|
|
387
|
+
targetDashboardProtocol: null,
|
|
388
|
+
targetAgentProtocol: null
|
|
373
389
|
};
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* Register a callback to receive update status changes.
|
|
377
|
-
*/
|
|
390
|
+
const statusCallbacks = [];
|
|
378
391
|
function onUpdateStatusChange(callback) {
|
|
379
392
|
statusCallbacks.push(callback);
|
|
393
|
+
return () => {
|
|
394
|
+
const index = statusCallbacks.indexOf(callback);
|
|
395
|
+
if (index >= 0) statusCallbacks.splice(index, 1);
|
|
396
|
+
};
|
|
380
397
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
398
|
+
function publish(patch) {
|
|
399
|
+
currentStatus = {
|
|
400
|
+
...currentStatus,
|
|
401
|
+
...patch
|
|
402
|
+
};
|
|
403
|
+
for (const callback of statusCallbacks) callback(currentStatus);
|
|
404
|
+
for (const win of electron.BrowserWindow.getAllWindows()) if (!win.isDestroyed()) win.webContents.send("update-status", currentStatus);
|
|
386
405
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
406
|
+
function manifestName() {
|
|
407
|
+
const prefix = channel === "canary" ? "beta" : "latest";
|
|
408
|
+
if (process.platform === "darwin") return `${prefix}-mac.yml`;
|
|
409
|
+
if (process.platform === "linux") return `${prefix}-linux.yml`;
|
|
410
|
+
return `${prefix}.yml`;
|
|
392
411
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
function initializeAutoUpdater(channel = "latest") {
|
|
398
|
-
if (initialized) {
|
|
399
|
-
console.log("[updater] Already initialized, skipping...");
|
|
400
|
-
return;
|
|
401
|
-
}
|
|
402
|
-
initialized = true;
|
|
403
|
-
electron_updater.autoUpdater.setFeedURL({
|
|
404
|
-
provider: "github",
|
|
405
|
-
owner: "eltmon",
|
|
406
|
-
repo: "overdeck"
|
|
407
|
-
});
|
|
408
|
-
electron_updater.autoUpdater.channel = channel;
|
|
409
|
-
electron_updater.autoUpdater.autoDownload = false;
|
|
410
|
-
electron_updater.autoUpdater.autoInstallOnAppQuit = true;
|
|
411
|
-
electron_updater.autoUpdater.on("checking-for-update", () => {
|
|
412
|
-
currentStatus = {
|
|
413
|
-
...currentStatus,
|
|
414
|
-
checking: true,
|
|
415
|
-
error: null
|
|
416
|
-
};
|
|
417
|
-
notifyStatusChange();
|
|
418
|
-
broadcastToRenderers("update-status", currentStatus);
|
|
419
|
-
console.log("[updater] Checking for update...");
|
|
420
|
-
});
|
|
421
|
-
electron_updater.autoUpdater.on("update-available", (info) => {
|
|
422
|
-
currentStatus = {
|
|
423
|
-
checking: false,
|
|
424
|
-
available: true,
|
|
425
|
-
downloaded: false,
|
|
426
|
-
version: info.version,
|
|
427
|
-
error: null
|
|
428
|
-
};
|
|
429
|
-
notifyStatusChange();
|
|
430
|
-
broadcastToRenderers("update-status", currentStatus);
|
|
431
|
-
console.log(`[updater] Update available: ${info.version}`);
|
|
432
|
-
});
|
|
433
|
-
electron_updater.autoUpdater.on("update-not-available", (info) => {
|
|
434
|
-
currentStatus = {
|
|
435
|
-
checking: false,
|
|
436
|
-
available: false,
|
|
437
|
-
downloaded: false,
|
|
438
|
-
version: info.version,
|
|
439
|
-
error: null
|
|
440
|
-
};
|
|
441
|
-
notifyStatusChange();
|
|
442
|
-
broadcastToRenderers("update-status", currentStatus);
|
|
443
|
-
console.log(`[updater] Update not available. Current version: ${info.version}`);
|
|
412
|
+
async function configureExactReleaseFeed() {
|
|
413
|
+
const response = await fetch(RELEASES_URL, {
|
|
414
|
+
headers: { accept: "application/vnd.github+json" },
|
|
415
|
+
signal: AbortSignal.timeout(1e4)
|
|
444
416
|
});
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
downloaded: true,
|
|
464
|
-
version: info.version,
|
|
465
|
-
error: null
|
|
466
|
-
};
|
|
467
|
-
notifyStatusChange();
|
|
468
|
-
broadcastToRenderers("update-status", currentStatus);
|
|
469
|
-
broadcastToRenderers("update-downloaded", { version: info.version });
|
|
470
|
-
console.log(`[updater] Update downloaded: ${info.version}`);
|
|
417
|
+
if (!response.ok) throw new Error(`GitHub Releases returned ${response.status}`);
|
|
418
|
+
const release = (await response.json()).find((item) => channel === "canary" ? item.prerelease : !item.prerelease);
|
|
419
|
+
if (!release) throw new Error(`No ${channel} desktop release is published`);
|
|
420
|
+
const manifest = release.assets?.find((asset) => asset.name === manifestName());
|
|
421
|
+
if (!manifest) throw new Error(`${release.tag_name} is missing ${manifestName()}`);
|
|
422
|
+
const manifestResponse = await fetch(manifest.browser_download_url, { signal: AbortSignal.timeout(1e4) });
|
|
423
|
+
if (!manifestResponse.ok) throw new Error(`Update manifest returned ${manifestResponse.status}`);
|
|
424
|
+
const manifestText = await manifestResponse.text();
|
|
425
|
+
const dashboardProtocol = Number(manifestText.match(/^overdeckDashboardProtocol:\s*(\d+)/m)?.[1]) || null;
|
|
426
|
+
const agentProtocol = Number(manifestText.match(/^overdeckAgentProtocol:\s*(\d+)/m)?.[1]) || null;
|
|
427
|
+
publish({
|
|
428
|
+
releaseName: release.name ?? `Overdeck ${release.tag_name}`,
|
|
429
|
+
releaseNotes: release.body ?? "Release notes are not available for this release.",
|
|
430
|
+
releaseUrl: release.html_url ?? null,
|
|
431
|
+
publishedAt: release.published_at ?? null,
|
|
432
|
+
targetDashboardProtocol: dashboardProtocol,
|
|
433
|
+
targetAgentProtocol: agentProtocol,
|
|
434
|
+
compatibility: dashboardProtocol === OVERDECK_DASHBOARD_PROTOCOL_VERSION && agentProtocol === OVERDECK_AGENT_PROTOCOL_VERSION ? "compatible" : "unknown"
|
|
471
435
|
});
|
|
472
|
-
electron_updater.autoUpdater.
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
available: false,
|
|
476
|
-
downloaded: false,
|
|
477
|
-
version: null,
|
|
478
|
-
error: err.message
|
|
479
|
-
};
|
|
480
|
-
notifyStatusChange();
|
|
481
|
-
broadcastToRenderers("update-status", currentStatus);
|
|
482
|
-
console.error("[updater] Error:", err.message);
|
|
436
|
+
electron_updater.autoUpdater.setFeedURL({
|
|
437
|
+
provider: "generic",
|
|
438
|
+
url: `https://github.com/eltmon/overdeck/releases/download/${release.tag_name}`
|
|
483
439
|
});
|
|
440
|
+
electron_updater.autoUpdater.channel = channel === "canary" ? "beta" : "latest";
|
|
441
|
+
}
|
|
442
|
+
function initializeAutoUpdater(requestedChannel = "latest") {
|
|
443
|
+
if (initialized) return;
|
|
444
|
+
initialized = true;
|
|
445
|
+
channel = requestedChannel === "canary" || requestedChannel === "beta" ? "canary" : "stable";
|
|
446
|
+
publish({ channel });
|
|
447
|
+
electron_updater.autoUpdater.autoDownload = false;
|
|
448
|
+
electron_updater.autoUpdater.autoInstallOnAppQuit = false;
|
|
449
|
+
electron_updater.autoUpdater.on("checking-for-update", () => publish({
|
|
450
|
+
phase: "checking",
|
|
451
|
+
error: null
|
|
452
|
+
}));
|
|
453
|
+
electron_updater.autoUpdater.on("update-available", (info) => publish({
|
|
454
|
+
phase: "available",
|
|
455
|
+
targetVersion: info.version,
|
|
456
|
+
progressPercent: null,
|
|
457
|
+
error: null,
|
|
458
|
+
lastCheckedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
459
|
+
}));
|
|
460
|
+
electron_updater.autoUpdater.on("update-not-available", (info) => publish({
|
|
461
|
+
phase: "current",
|
|
462
|
+
targetVersion: info.version,
|
|
463
|
+
progressPercent: null,
|
|
464
|
+
error: null,
|
|
465
|
+
lastCheckedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
466
|
+
}));
|
|
467
|
+
electron_updater.autoUpdater.on("download-progress", (progress) => publish({
|
|
468
|
+
phase: "downloading",
|
|
469
|
+
progressPercent: Math.round(progress.percent * 10) / 10
|
|
470
|
+
}));
|
|
471
|
+
electron_updater.autoUpdater.on("update-downloaded", (info) => publish({
|
|
472
|
+
phase: "ready",
|
|
473
|
+
targetVersion: info.version,
|
|
474
|
+
progressPercent: 100,
|
|
475
|
+
error: null
|
|
476
|
+
}));
|
|
477
|
+
electron_updater.autoUpdater.on("error", (error) => publish({
|
|
478
|
+
phase: "error",
|
|
479
|
+
error: error.message
|
|
480
|
+
}));
|
|
484
481
|
setTimeout(() => {
|
|
485
482
|
checkForUpdates();
|
|
486
|
-
},
|
|
483
|
+
}, 5e3);
|
|
487
484
|
startPeriodicChecks();
|
|
488
485
|
}
|
|
489
|
-
/**
|
|
490
|
-
* Start periodic update checks every 4 hours.
|
|
491
|
-
*/
|
|
492
486
|
function startPeriodicChecks() {
|
|
493
|
-
|
|
494
|
-
checkIntervalId = setInterval(() => {
|
|
487
|
+
checkIntervalId ??= setInterval(() => {
|
|
495
488
|
checkForUpdates();
|
|
496
489
|
}, FOUR_HOURS_MS);
|
|
497
|
-
console.log("[updater] Started periodic update checks (every 4 hours)");
|
|
498
490
|
}
|
|
499
|
-
/**
|
|
500
|
-
* Check for updates manually.
|
|
501
|
-
* Returns a promise that resolves when the check completes.
|
|
502
|
-
*/
|
|
503
491
|
async function checkForUpdates() {
|
|
504
|
-
if (currentStatus.checking)
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
492
|
+
if (currentStatus.phase === "checking") return getUpdateStatus();
|
|
493
|
+
publish({
|
|
494
|
+
phase: "checking",
|
|
495
|
+
error: null
|
|
496
|
+
});
|
|
508
497
|
try {
|
|
509
|
-
|
|
498
|
+
await configureExactReleaseFeed();
|
|
510
499
|
await electron_updater.autoUpdater.checkForUpdates();
|
|
511
|
-
} catch (
|
|
512
|
-
|
|
500
|
+
} catch (error) {
|
|
501
|
+
publish({
|
|
502
|
+
phase: "error",
|
|
503
|
+
error: error instanceof Error ? error.message : String(error),
|
|
504
|
+
lastCheckedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
505
|
+
});
|
|
513
506
|
}
|
|
507
|
+
return getUpdateStatus();
|
|
514
508
|
}
|
|
515
|
-
/**
|
|
516
|
-
* Download the available update.
|
|
517
|
-
*/
|
|
518
509
|
async function downloadUpdate() {
|
|
519
|
-
if (
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
510
|
+
if (currentStatus.phase !== "available") return getUpdateStatus();
|
|
511
|
+
for (let attempt = 0; attempt < DOWNLOAD_RETRY_MS.length; attempt += 1) {
|
|
512
|
+
const delay = DOWNLOAD_RETRY_MS[attempt] ?? 0;
|
|
513
|
+
if (delay > 0) await new Promise((resolve) => setTimeout(resolve, delay));
|
|
514
|
+
try {
|
|
515
|
+
publish({
|
|
516
|
+
phase: "downloading",
|
|
517
|
+
error: null,
|
|
518
|
+
progressPercent: 0
|
|
519
|
+
});
|
|
520
|
+
await electron_updater.autoUpdater.downloadUpdate();
|
|
521
|
+
return getUpdateStatus();
|
|
522
|
+
} catch (error) {
|
|
523
|
+
if (attempt === DOWNLOAD_RETRY_MS.length - 1) publish({
|
|
524
|
+
phase: "error",
|
|
525
|
+
error: error instanceof Error ? error.message : String(error)
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
528
|
}
|
|
529
|
+
return getUpdateStatus();
|
|
529
530
|
}
|
|
530
|
-
/**
|
|
531
|
-
* Quit and install the downloaded update.
|
|
532
|
-
*/
|
|
533
531
|
function quitAndInstall() {
|
|
534
|
-
if (
|
|
535
|
-
console.log("[updater] No update downloaded to install");
|
|
536
|
-
return;
|
|
537
|
-
}
|
|
538
|
-
console.log("[updater] Quitting and installing update...");
|
|
539
|
-
electron_updater.autoUpdater.quitAndInstall();
|
|
532
|
+
if (currentStatus.phase === "ready") electron_updater.autoUpdater.quitAndInstall(false, true);
|
|
540
533
|
}
|
|
541
|
-
/**
|
|
542
|
-
* Get current update status.
|
|
543
|
-
*/
|
|
544
534
|
function getUpdateStatus() {
|
|
545
|
-
return currentStatus;
|
|
535
|
+
return { ...currentStatus };
|
|
546
536
|
}
|
|
547
537
|
//#endregion
|
|
548
538
|
//#region src/menu.ts
|
|
@@ -673,7 +663,8 @@ function buildMenuTemplate() {
|
|
|
673
663
|
{
|
|
674
664
|
label: "Check for Updates...",
|
|
675
665
|
click: () => {
|
|
676
|
-
|
|
666
|
+
showOrCreateWindow();
|
|
667
|
+
dispatchMenuAction("open-updater");
|
|
677
668
|
}
|
|
678
669
|
},
|
|
679
670
|
{ type: "separator" },
|
|
@@ -713,7 +704,7 @@ function configureApplicationMenu() {
|
|
|
713
704
|
});
|
|
714
705
|
});
|
|
715
706
|
onUpdateStatusChange((status) => {
|
|
716
|
-
if (status.
|
|
707
|
+
if (status.phase === "ready" && !updateDownloaded) {
|
|
717
708
|
updateDownloaded = true;
|
|
718
709
|
rebuildMenu();
|
|
719
710
|
}
|