fix(release): stage the desktop package.json bump so it lands in the release commit (#68783) - #68796
Conversation
9ee7bcf to
ec67afc
Compare
|
Rebased onto current
|
…release commit update_version_files() writes apps/desktop/package.json in lockstep with pyproject, but main() only staged VERSION_FILE and PYPROJECT_FILE — so the desktop bump was written to the tree and then silently dropped from the release commit. Built desktop apps therefore reported a stale CFBundleShortVersionString (stuck at 0.17.0 through v0.18.x/v0.19.0). Make update_version_files() return the exact set of files it wrote and have main() stage that set, so a newly-bumped file can't drift out of the commit again. Also correct the currently-stale apps/desktop/package.json to 0.19.0 to match hermes_cli.__version__. Fixes NousResearch#68783
ec67afc to
f7289b3
Compare
|
Thanks for tracing this to the release commit staging boundary. The defect remains on current main: The proposed write-set/ stage-set contract directly covers that path, and Automated hermes-sweeper review. |
SummaryOne PR directly addresses issue #68783. #68796 corrects the desktop version from 0.17.0 to 0.19.0 and fixes the release-process cause by staging the exact set of version files written by update_version_files(). Related pull requests
Suggested consolidationKeep #68796 open with a salvage path, consistent with the automated keep_open verdict: preserve its write-set/stage-set contract, desktop version correction, and focused regression tests. There are no competing PRs in this complex to close as duplicates. Complex graphflowchart LR
classDef open fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
classDef merged fill:#dcfce7,stroke:#15803d,color:#14532d
classDef closed fill:#e5e7eb,stroke:#6b7280,color:#1f2937
classDef unverified fill:#f3f4f6,stroke:#9ca3af,color:#374151
classDef best stroke-width:3px,stroke:#b45309
classDef target stroke-width:3px,stroke:#4338ca
I68783(["issue #68783 (open)"])
P68796["PR #68796 (open)"]
P68796 -->|best fix| I68783
class I68783 open
class P68796 open
class P68796 best
class P68796 target
click I68783 "https://github.com/NousResearch/hermes-agent/issues/68783"
click P68796 "https://github.com/NousResearch/hermes-agent/pull/68796"
Graph: solid arrow = fixes / best fix, dashed arrow = partial or unverified (see edge label); boxed group = PRs duplicating each other; amber border = best fix; indigo border = target; gray node = closed (state tag in the node label). Cross-PR triage: Reviewed 1 pull request and 1 issue in this complex. Each diff was read against this issue; Assessment working set: 6 kB of PR diffs, 4 kB of issue/PR text, 2 kB of discussion (3 comments), 2 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch. |
What
The desktop app's
apps/desktop/package.jsonversion was stuck at0.17.0through the v0.18.x and v0.19.0 releases, so builtHermes.appbundles reported a staleCFBundleShortVersionStringeven when the source was current.Fixes #68783.
Root cause
update_version_files()already rewritesapps/desktop/package.jsonin lockstep withpyproject.toml. But the release commit staged a hardcoded subset:apps/desktop/package.jsonwas written to the working tree but never added to that list, and the commit isn't-a, so the bump was silently dropped from every release commit.__init__.py,pyproject.toml, and the ACP manifest stayed in lockstep; the desktop version drifted.Fix
Rather than append one more path (which drifts again the next time a file is added to the bump), make the write set and the stage set derive from a single source:
update_version_files()now returns the exact list of files it wrote (VERSION_FILE,PYPROJECT_FILE,apps/desktop/package.jsonwhen present, and the ACP manifest when present).main()stages exactly that returned list, so a newly-bumped file can't be left out of the release commit again.DESKTOP_PACKAGE_JSONalongside the other version-file constants.apps/desktop/package.jsonto0.19.0to matchhermes_cli.__version__, so the symptom is resolved now (not only on the next release).Tests
tests/scripts/test_release_acp_registry.py:update_version_files()bumps and returns the desktoppackage.jsonpath (the write-without-return is exactly how it got dropped).DESKTOP_PACKAGE_JSONto the temp tree; without this the module-level constant (resolved against the realREPO_ROOTat import) would have let the existing end-to-end test scribble on the real repo file.Full suite:
5 passed. Preflight (windows-footguns, ruff, affected tests) green vsupstream/main.