@overdeck/desktop 0.45.16 → 0.45.18
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-aQFKQf-J.js +62 -0
- package/server/{advancing-selfheal-DJYAvGv-.js → advancing-selfheal-DgwQgm4D.js} +6 -6
- package/server/{agent-gc-D0wDIeV1.js → agent-gc-kpzxqT7P.js} +3 -3
- package/server/agent-state-C_6TG-Ad.js +3 -0
- package/server/{agent-state-service-CZrayD_G.js → agent-state-service-BUfovFfB.js} +1 -1
- package/server/{agent-state-service-DFslS5go.js → agent-state-service-nUD3qfob.js} +5 -5
- package/server/agents-BA15AQqo.js +3 -0
- package/server/{briefing-freshness-DESTCWo-.js → agents-BHBxr8c9.js} +5 -131
- package/server/{archive-planning-CbghE9-o.js → archive-planning-CzCW9Ifl.js} +5 -10
- package/server/{archive-planning-CoyIbgGK.js → archive-planning-D-QsBufn.js} +1 -1
- package/server/{artifact-index-jobs-CcSrUoSE.js → artifact-index-jobs-qqa51B2Z.js} +2 -2
- package/server/{backlog-auto-trigger-BfgDsII0.js → backlog-auto-trigger-B7Bi0bvY.js} +2 -2
- package/server/{behavior-BTpYbAv4.js → behavior-CWqNMqE5.js} +2 -2
- package/server/briefing-freshness-DuxIE1yr.js +131 -0
- package/server/{checkpoint-manager-BwFdegJF.js → checkpoint-manager-DF6hb9Jw.js} +3 -3
- package/server/{checkpoint-manager-DWSXooZV.js → checkpoint-manager-DixkLus7.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-fjadfOKF.js → checkpoints-B1Z42tJE.js} +1 -1
- package/server/{checkpoints-BtUonbs3.js → checkpoints-BiviJqei.js} +2 -2
- package/server/{claude-hooks-provision-DiK62u0k.js → claude-hooks-provision-BeMGi4ty.js} +1 -1
- package/server/{claude-hooks-provision-DAtxutOs.js → claude-hooks-provision-Du_PkMsp.js} +2 -2
- package/server/{claude-permissions-CThLgf8d.js → claude-permissions-BB6agcOZ.js} +2 -2
- package/server/{claude-settings-overlay-BF9MPIwx.js → claude-settings-overlay-CAq2oFSK.js} +2 -2
- package/server/{claude-settings-overlay-Dx_Uqcmv.js → claude-settings-overlay-DUWWLd6M.js} +1 -1
- package/server/cli-BFgrSWKV.js +3 -0
- package/server/{cli-ByKIIMfT.js → cli-C33xPZNm.js} +9 -9
- package/server/{cliproxy-C_GuT5DU.js → cliproxy-BQX1TL6N.js} +1 -1
- package/server/{cliproxy-B4c1BUvs.js → cliproxy-CGBA1GzA.js} +2 -2
- package/server/{close-issue-BOuLKr6e.js → close-issue-DNv8npc1.js} +5 -5
- package/server/{closed-issue-reaper-CksfuiFD.js → closed-issue-reaper-DrqgBJlr.js} +1 -1
- package/server/{closed-issue-reaper-DCAYzNXW.js → closed-issue-reaper-LoMnnjtJ.js} +9 -9
- package/server/codex-DxLivxri.js +3 -0
- package/server/{codex-parser-mFYZh8vR.js → codex-parser-DboQnEXN.js} +2 -2
- package/server/{codex-BbqIRZjd.js → codex-sgWVCGUd.js} +43 -18
- package/server/{config-Dj6N8EP9.js → config-6MCHOZ2N.js} +1 -1
- package/server/{config-DVLdmnMJ.js → config-DfaUXr6r.js} +2 -2
- package/server/{config-yaml-cNOZcEww.js → config-yaml-CqaAyn8y.js} +74 -74
- package/server/{conflict-gate-BMKm_5DV.js → conflict-gate-BF_zhcmb.js} +3 -3
- package/server/{conflict-gate-CuXUv-bP.js → conflict-gate-BubJprtD.js} +1 -1
- package/server/{context-layers-c0JqYHcS.js → context-layers-BFrxfl0l.js} +17 -3
- package/server/{context-layers-CeAwSYNt.js → context-layers-DWL_8HhY.js} +2 -2
- package/server/{control-settings-D4EFsRBd.js → control-settings-BguNQ1F_.js} +4 -4
- package/server/{conversation-compaction-kHVfVRg3.js → conversation-compaction-CRKAf2qP.js} +1 -1
- package/server/{conversation-compaction-BCggyih4.js → conversation-compaction-DxSXl0pT.js} +8 -8
- package/server/{conversation-service-BTzObqGi.js → conversation-service-DzuY9qoH.js} +1 -1
- package/server/{conversation-service-B8LFQQm1.js → conversation-service-mFVFdDQK.js} +6 -6
- package/server/{conversations-B-lcHv-5.js → conversations-BX5aD-6F.js} +4 -4
- package/server/{conversations-BM7zlXjr.js → conversations-BajHQ60c.js} +1 -1
- package/server/{cost-D9kPIY_5.js → cost-BoqD1Pxz.js} +2 -2
- package/server/{cost-BcpRQ-7o.js → cost-DuZ5vlv-.js} +3 -3
- package/server/{cost-sync-DF6odxK9.js → cost-sync-BYnmnMkY.js} +3 -3
- package/server/{dag-DKI3sOmX.js → dag-C6kYyF17.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-CwCiNuEZ.js} +3 -3
- package/server/{deacon-DdARMjZq.js → deacon-Dru5onpk.js} +233 -162
- package/server/{deacon-nudge-log-B-naf89q.js → deacon-nudge-log-ilDfxrhK.js} +1 -1
- package/server/{deacon-swarm-BNGkmYR_.js → deacon-swarm-BPmBmSoU.js} +298 -72
- package/server/deacon-swarm-CKyGJng1.js +2 -0
- package/server/deacon.js +14 -7
- package/server/{devcontainer-renderer-C-34Sxyz.js → devcontainer-renderer-BqGNCzvN.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-CNjXS72x.js} +2 -2
- package/server/{ensure-devcontainer-Bqi1EF1P.js → ensure-devcontainer-5e9xOve4.js} +4 -4
- package/server/{ensure-devcontainer-Dq3KoOIl.js → ensure-devcontainer-C6gyUQdE.js} +1 -1
- package/server/{esm-shims-BEjvINX3.js → esm-shims-Cso7IGBC.js} +1 -1
- package/server/{event-store-CqDgfbAs.js → event-store-D9UhQyMS.js} +1 -1
- package/server/{event-store-D89fMfXS.js → event-store-KZnWUKWh.js} +3 -3
- package/server/{events-S_C0pvl6.js → events-2eFUPdqz.js} +3 -3
- package/server/{events-rIGncmP1.js → events-BYbvqZky.js} +1 -1
- package/server/{factory-DV18m0rc.js → factory-BtaRsHFC.js} +20 -17
- package/server/{feature-registry-population-CqZSnqQi.js → feature-registry-population-Ca2UaV0U.js} +4 -4
- package/server/{feature-registry-storage-BeXmNBwK.js → feature-registry-storage-DaP-bQxO.js} +2 -2
- package/server/{features-u5XeMaOK.js → features-DqvaoQoa.js} +2 -2
- package/server/{feedback-target-CwyWf0Dg.js → feedback-target-BXWdOiYI.js} +9 -7
- package/server/{feedback-target-DDG1PWl3.js → feedback-target-BblmMe9P.js} +1 -1
- package/server/{feedback-writer-BsJiw5aT.js → feedback-writer-CULeOOY4.js} +1 -1
- package/server/{feedback-writer-D20HSXre.js → feedback-writer-Dn8o9ZyE.js} +4 -4
- package/server/{flywheel-RCnHAgc4.js → flywheel-BUWdcfhq.js} +1 -1
- package/server/{flywheel-Dczmgchd.js → flywheel-CqkO3cDj.js} +15 -28
- package/server/{flywheel-9Y1X7IM-.js → flywheel-D9r1mw2U.js} +13 -13
- package/server/{flywheel-merge-order-DEtEd3aK.js → flywheel-merge-order-LDzQDwSg.js} +1 -1
- package/server/{flywheel-merge-order-CtCYsFJP.js → flywheel-merge-order-VtjUweEb.js} +6 -6
- package/server/forge-DJy3Zx4s.js +2 -0
- package/server/{forge-DFDThFil.js → forge-wEollMCi.js} +22 -12
- package/server/{from-NSJypkI8.js → from-B2tOYhYV.js} +1 -1
- package/server/{fts-db-C5A_TTOM.js → fts-db-Bgzn2RO7.js} +2 -2
- package/server/{fts-operations-DvCSimfU.js → fts-operations-Bj8yutnR.js} +2 -2
- package/server/{git-utils-Dr0L7mFk.js → git-utils-GxlL0tmt.js} +2 -2
- package/server/{git-utils-C0neHvQx.js → git-utils-q8jNoBts.js} +1 -1
- package/server/{github-app-Bwt9lK4A.js → github-app-BrYwK_Gb.js} +1 -1
- package/server/{github-app-u9-SX7Gc.js → github-app-tUbb8Ldr.js} +8 -3
- package/server/{github-client-Btyy3uan.js → github-client-BwBU41jK.js} +3 -3
- package/server/{github-client-Do3k-N1W.js → github-client-D6CNsftm.js} +1 -1
- package/server/{github-pr-lookup-DOF1U2WW.js → github-pr-lookup-BS5PqkJb.js} +2 -2
- package/server/{harness-resolve-C6g2R0Cd.js → harness-resolve-Dx8hUsvC.js} +3 -3
- package/server/{health-events-B4u-2a9m.js → health-events-2DLp-5Xp.js} +2 -2
- package/server/{health-events-Bos3sk5g.js → health-events-B0mj6Iae.js} +1 -1
- package/server/{hooks-uEr8WTx_.js → hooks-BDcQJDUe.js} +1 -1
- package/server/{hooks-BCoOjL_R.js → hooks-BS_JrvYP.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-DbZ8ukMd.js → idle-stack-reaper-BCITXNW5.js} +2 -2
- package/server/{idle-stack-reaper-H0W6XtHh.js → idle-stack-reaper-C1ymihno.js} +1 -1
- package/server/{infra-Ba9mS6e6.js → infra-_Kx1m9pm.js} +9 -4
- package/server/{injection-C1DKXeIZ.js → injection-Bvhyg_MV.js} +1 -1
- package/server/{injection-yrMBxzVq.js → injection-CCaYkofq.js} +7 -7
- package/server/{inspect-agent-B-mnb4uh.js → inspect-agent-BqyZ4pCo.js} +35 -67
- package/server/inspect-agent-DCJQm9Wu.js +2 -0
- package/server/{internal-token-BtqSbKTx.js → internal-token-Cl-1IxaE.js} +2 -2
- package/server/{internal-token-BPYEaXFh.js → internal-token-D-t28de5.js} +1 -1
- package/server/{io-VEGSAqsd.js → io-DkC4sFSy.js} +36 -43
- package/server/{issue-closed-BxcePXL-.js → issue-closed-Cpl4VDUM.js} +41 -6
- package/server/{issue-lifecycle--8MRxrG1.js → issue-lifecycle-CFR8TJ22.js} +22 -37
- package/server/{issue-lifecycle-CdMUauyb.js → issue-lifecycle-YNTy3OT3.js} +1 -1
- package/server/{issue-service-singleton-MZsDhAob.js → issue-service-singleton-D81mCts_.js} +1 -1
- package/server/{issue-service-singleton-CkTUI-eu.js → issue-service-singleton-ldvUUXi3.js} +29 -29
- package/server/{issues-CBAsuoAO.js → issues-DIEHt9sq.js} +2 -2
- package/server/{jsonl-parser-BUW5_sSK.js → jsonl-parser-Cd5jIqh7.js} +3 -3
- package/server/{label-cleanup-htK6fBRU.js → label-cleanup-Btny6Gyo.js} +3 -3
- package/server/{state-home-CEvD_v5F.js → launcher-generator-BXLM9f4b.js} +7 -127
- package/server/{layers-jjL16At6.js → layers-gCJlK62m.js} +2 -2
- package/server/lifecycle-D7aQUnTO.js +12 -0
- package/server/{lifecycle-io-DXv8Utct.js → lifecycle-io-DQBF-GHO.js} +1 -1
- package/server/{lifecycle-io-IehcRt2v.js → lifecycle-io-FfPUtz-y.js} +4 -4
- package/server/{linear-client-D9cSQfvD.js → linear-client-CDH2D6Qy.js} +3 -3
- package/server/{linear-client-By7hjwuN.js → linear-client-WrYrUIAH.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-BN8FGJ2q.js → merge-BsDgUxFz.js} +3 -3
- package/server/{merge-BLcEZNXz.js → merge-Dervs4BF.js} +1 -1
- package/server/{merge-agent-B3u2szOL.js → merge-agent-D6DNhe9j.js} +64 -51
- package/server/{merge-agent-ejC7Wos8.js → merge-agent-DMQTJMP0.js} +1 -1
- package/server/{merge-batch-DyqlgYGp.js → merge-batch-Bv6Z5K2H.js} +1 -1
- package/server/{merge-blockers-cq-aS2KG.js → merge-blockers-WWWi6Ur2.js} +2 -2
- package/server/merge-ops-h9OCnIVz.js +2 -0
- package/server/{merge-rebase-Dl7yIxtV.js → merge-rebase-Czth9ggm.js} +2 -2
- package/server/{merge-set-CZ9Nbay0.js → merge-set-DNc4zBqd.js} +3 -3
- package/server/{merge-set-Dy0D0r3i.js → merge-set-vuE3MEVt.js} +1 -1
- package/server/{merge-sync-D7jWLgCC.js → merge-sync-B2KSk54U.js} +2 -2
- package/server/{merge-sync-CG9kDCdT.js → merge-sync-B9nHdUGx.js} +1 -1
- package/server/{merge-train-CH33XJOH.js → merge-train-DJgr81tF.js} +3 -3
- package/server/{merge-train-deps-JoVdGnOg.js → merge-train-deps-B2OWS0k9.js} +4 -4
- package/server/{merge-verification-D4wTChdX.js → merge-verification-BBIXUEqa.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-DI_IS1p_.js → orphan-proposed-reconciler-B8H41C4a.js} +14 -24
- package/server/{orphan-proposed-reconciler-BIcNu4tl.js → orphan-proposed-reconciler-DbTmT7qy.js} +1 -1
- package/server/package-lock.json +12 -12
- package/server/package.json +1 -1
- package/server/{pan-dir-CQIfKG8c.js → pan-dir-BTw4MdSe.js} +4 -4
- package/server/{paths-Blj6A9AJ.js → paths-Btkc8mzp.js} +2 -2
- package/server/{pipeline-notifier-BH4PAi-w.js → pipeline-notifier-3frIvSi3.js} +1 -1
- package/server/{pipeline-notifier-D_WYtEwl.js → pipeline-notifier-DTd19f18.js} +2 -2
- package/server/{project-pipelines-jMTitpeO.js → project-pipelines-B95fcAek.js} +2 -2
- package/server/projects-Dc9aoVoG.js +3 -0
- package/server/{prompts-B3njaImU.js → prompts-CIVmjHxn.js} +2 -2
- package/server/{providers-DnPxkHoG.js → providers-BLLk5IIb.js} +1 -1
- package/server/{providers-BbEyFhPX.js → providers-C-yWibCk.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-D7AL5woD.js} +1 -1
- package/server/{pull-requests-DyUkQl4W.js → pull-requests-NDDNtqNq.js} +3 -3
- package/server/{agents-B9GwfCyp.js → queries-C0LCGG21.js} +710 -325
- package/server/{rally-BtWjybOa.js → rally-4oKvnxLG.js} +3 -3
- package/server/rally-DF5a3ioP.js +3 -0
- package/server/{rally-api-B-osULNL.js → rally-api-41tT6ikZ.js} +2 -2
- package/server/{rally-api-B-YA_oXx.js → rally-api-BsaQ8Vnz.js} +1 -1
- package/server/{rally-client-sErNQBO0.js → rally-client-Bo4hNcCZ.js} +5 -5
- package/server/{rally-client-CzFymP7P.js → rally-client-b5PT1x5L.js} +1 -1
- 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-nGD_nPZo.js → rebuild-stack-C7JPUom6.js} +1 -1
- package/server/{rebuild-stack-CoU-HqZj.js → rebuild-stack-Ddv6W017.js} +5 -5
- package/server/{reconstruct-cache-Wj8GrYB0.js → reconstruct-cache-Gqhm---K.js} +6 -6
- package/server/record-DLOqfbkI.js +3 -0
- package/server/record-update-BltEmPge.js +168 -0
- package/server/record-update-CDp7aTaT.js +3 -0
- package/server/recovery-trip-Cn7KJVkS.js +44 -0
- package/server/{release-engine-CBLQXDlH.js → release-engine-BYzmIBf9.js} +5 -5
- package/server/{release-set-BNiqi7hy.js → release-set-7pnxFOWR.js} +3 -3
- package/server/{remote-DW_TWQnr.js → remote-Cvu4CSDk.js} +3 -3
- package/server/{remote-agents-C4cyxHQS.js → remote-agents-C2C6z9tj.js} +6 -33
- package/server/{remote-agents-Cv-U-_V8.js → remote-agents-DYY5fFpd.js} +1 -1
- package/server/{remote-completion-PhXGGFQy.js → remote-completion-2Kb4IDg_.js} +13 -13
- package/server/{remote-DcO9An_f.js → remote-rN0ecjHE.js} +3 -3
- package/server/resume-BFLl-yLn.js +3 -0
- package/server/{review-agent-Dn-yn7Zj.js → review-agent-BZvk0N5G.js} +31 -23
- package/server/{review-agent-u5q3ip7H.js → review-agent-CpSHLzed.js} +1 -1
- package/server/{review-artifacts-D4T04aYI.js → review-artifacts-PCo53YMn.js} +5 -19
- package/server/{review-context-Rc0VDLG_.js → review-context-M7QtJlJq.js} +8 -8
- package/server/{review-monitor-BC--miCO.js → review-monitor-BLC5mTTg.js} +2 -2
- package/server/{review-status-CG0iDuWa.js → review-status-77N3PoZr.js} +1 -1
- package/server/{review-status-Dc1l4dVz.js → review-status-DANr0t-v.js} +32 -58
- package/server/{review-status-enrichment-C1a1OG_1.js → review-status-enrichment-DwOg4UfL.js} +3 -3
- package/server/{review-status-sync-CfSixhhX.js → review-status-sync-Bd08OOFA.js} +1 -1
- package/server/{review-status-sync-CAr-hfnJ.js → review-status-sync-BjTUJ5fx.js} +2 -2
- package/server/{review-verdict-feedback-D2Q960wX.js → review-verdict-feedback-BsFLjN_6.js} +1 -1
- package/server/{review-verdict-feedback-CVDbIDBe.js → review-verdict-feedback-CBf-J_wS.js} +8 -8
- package/server/{rollup-DctoIu-A.js → rollup-Bu0f2EyN.js} +8 -8
- package/server/{rollup-CakjztPl.js → rollup-DTCCdEy4.js} +1 -1
- package/server/{scanner-BTM1jc_u.js → scanner-BlZ2vB7j.js} +7 -7
- package/server/{sequence-io-pnoIDGv4.js → sequence-io-ylyDtz2J.js} +4 -4
- package/server/{sequencer-agent-9Soi-WL-.js → sequencer-agent-DsWQ-87H.js} +6 -17
- package/server/server.js +4695 -4093
- package/server/{service-DfTVoqJg.js → service-CLVBC_1Y.js} +116 -90
- package/server/{session-fork-C4jAFHj8.js → session-fork-DlEIAhRy.js} +2 -2
- package/server/{session-history-DanhhiCw.js → session-history-bnOFKMwf.js} +4 -4
- package/server/settings-CP3GGon2.js +2 -0
- package/server/{settings-Cuc12oP_.js → settings-Cqa-8nyj.js} +2 -2
- package/server/{settings-DfT3f86D.js → settings-gJrdLZy2.js} +3 -3
- package/server/{shadow-engineering-bKuKTCn-.js → shadow-engineering-fq1YEKV3.js} +3 -3
- package/server/{shadow-state-CVHpRWlb.js → shadow-state-BqeFAygK.js} +1 -1
- package/server/{shadow-state-DJz6_pb_.js → shadow-state-RptE9Cau.js} +2 -2
- package/server/shadow-utils-BMWr5tRT.js +39 -0
- package/server/{ship-log-CwqPFfqx.js → ship-log-BRQQi2lU.js} +1 -1
- package/server/{smart-compaction-CiWfGfRZ.js → smart-compaction-CmoXpjeU.js} +7 -7
- package/server/{smart-compaction-B4KlpZGN.js → smart-compaction-DldUel4B.js} +1 -1
- package/server/{spawn-planning-session-CU-DwyDl.js → spawn-planning-session-CoS6LTc6.js} +16 -16
- package/server/{spawn-planning-session-D5N3RuLG.js → spawn-planning-session-DT2tSMxo.js} +1 -1
- package/server/{specialist-completion-CJcv-NXH.js → specialist-completion-pJtESo7m.js} +1 -1
- package/server/{specialist-context-B2HlbNxS.js → specialist-context-CspI4Eog.js} +5 -5
- package/server/{specialist-handoff-logger-CQyF1ygu.js → specialist-handoff-logger-Duz9RGvk.js} +2 -2
- package/server/{specialist-logs-CdcUpfjj.js → specialist-logs-DtSkPJZK.js} +3 -3
- package/server/{specialists-D7AcFi1u.js → specialists-CywEMwxk.js} +1 -1
- package/server/{specialists-k22_Btaq.js → specialists-D9-dMUtI.js} +1 -1
- package/server/{specialists-CFgw_0Q6.js → specialists-Dax7tqXC.js} +161 -448
- package/server/{specialists-CwzFdapR.js → specialists-GF42OOqd.js} +18 -18
- package/server/specs-VwcFtEDi.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-BsEVrJZ6.js} +1 -1
- package/server/{stack-health-CSgcYcr8.js → stack-health-C-SnpRHh.js} +2 -2
- package/server/stale-task-claims-vTxmRzLi.js +69 -0
- package/server/state-home-Bur1y4oH.js +213 -0
- package/server/{state-mapping-C13UaCL7.js → state-mapping-Ci0pkac4.js} +1 -1
- package/server/state-migrate-D3VveYfO.js +362 -0
- package/server/{stuck-remediation-CxsyxwFO.js → stuck-remediation-B699-p8v.js} +36 -41
- package/server/{stuck-remediation-nTIvhGOR.js → stuck-remediation-CaFYYTQW.js} +1 -1
- package/server/{summary-fork-CnRMPCYd.js → summary-fork-BxnF8Xh0.js} +2 -2
- package/server/{summary-fork-gKSoFAnK.js → summary-fork-COqYpVa3.js} +8 -8
- package/server/supervisor/{paths-3R6b989k.js → paths-Bk6hJRH9.js} +4 -3
- package/server/supervisor/pty-supervisor.js +2 -2
- package/server/supervisor/{pty-token-CScQ32Rj.js → pty-token-BZS5GYdG.js} +2 -2
- package/server/supervisor-eWAAmXKu.js +2 -0
- package/server/{supervisor-CZMs8s0M.js → supervisor-liMgIPDF.js} +2 -2
- package/server/{swarm-readiness-h6-pwY8w.js → swarm-readiness-sXB1vhzo.js} +3 -3
- package/server/{system-prerequisites-DZZTi2G6.js → system-prerequisites-Bz6KdkFJ.js} +1 -13
- package/server/{teardown-workspace-B4D-oCVg.js → teardown-workspace-DvzqnmUF.js} +14 -71
- package/server/{test-agent-queue-CnuYku4B.js → test-agent-queue-hAU1Ah08.js} +5 -5
- package/server/{tldr-daemon-CuA8hz21.js → tldr-daemon-Bam7Xhoo.js} +2 -2
- package/server/{tldr-daemon-CgZQ3jmZ.js → tldr-daemon-DhGwd88s.js} +1 -1
- package/server/tmux-C-rgxRDA.js +3 -0
- package/server/{tmux-C3g9VFcg.js → tmux-U55cNGFG.js} +92 -4
- 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-OkdbaUCm.js} +2 -2
- package/server/{tracker-utils--z8FLSWn.js → tracker-utils-CghXMF3q.js} +2 -2
- package/server/{tracker-utils-DkKyRT0H.js → tracker-utils-DdzUiPNU.js} +1 -1
- package/server/{tunnel-BpWZs0Jy.js → tunnel-D1YxesBL.js} +3 -3
- package/server/{tunnel-CN2px87h.js → tunnel-DjlzgTl3.js} +1 -1
- 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-utGVmqdm.js → uat-train-CaaWs9Rp.js} +1 -1
- package/server/{uat-train-BRo6DM7p.js → uat-train-CqN34zFx.js} +24 -25
- package/server/{validation-CsPVsoA0.js → validation-4-z2Cw4z.js} +70 -23
- package/server/validation-DpTNakM6.js +3 -0
- 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-BjHN80pJ.js} +338 -58
- package/server/verification-runner-ShYu5Ph3.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-BiJ43Der.js} +12 -88
- package/server/workflows-B4C3lY9E.js +2 -0
- package/server/{workflows-CXRwhw_o.js → workflows-DkTotz_m.js} +17 -24
- package/server/{workspace-CNfuj1-5.js → workspace-CuN0ev4Z.js} +3 -3
- package/server/{workspace-9UEsKuiP.js → workspace-DQ4vVivd.js} +1 -1
- package/server/{workspace-config-ChWOECy0.js → workspace-config-C77NKnsV.js} +1 -1
- package/server/{workspace-manager-BO-6k3sP.js → workspace-manager-B1mYn0lN.js} +1 -1
- package/server/{workspace-manager-D8AByFIT.js → workspace-manager-Beeo2aKF.js} +23 -48
- package/server/{workspace-metadata-CvC268MN.js → workspace-metadata-BZC5BmoP.js} +2 -2
- package/server/{workspace-metadata-DZiJtnuF.js → workspace-metadata-Cy7_ZACL.js} +1 -1
- package/server/{workspaces-D-uIoqbg.js → workspaces-CGuzW1Ia.js} +182 -152
- package/sync-sources/hooks/codex-notify-hook +64 -8
- package/sync-sources/hooks/record-cost-event.js +1109 -36
- 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
|
}
|