Repository navigation
feat(update): report available updates read-only for any install kind (HACK-2218 R14) - #860
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
`hack update --check --json --observe` returns current, channel, latest, available, install_kind, upgrade_command and reason in the schema envelope (hack.update-check.v1). It makes one bounded GitHub releases read and never downloads, installs, prompts, writes, or refuses a Homebrew or candidate install. Next-channel installs compare against the newest same-major -next.N release; unknown evidence is null with a closed reason. Plain `hack update` is unchanged. HACK-2218 R14. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review findings: the release list is ordered by creation, so one page proves "nothing newer" only when it is not full or holds the running release; otherwise the check now reports unknown. Read 100 releases. Only the hack-next launcher has `--manager upgrade`; other candidate launchers get no upgrade command. Placeholder paths avoid a home-path pattern. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9e14a19cc5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
The launcher exports the same marker for every root, so the command pointed at the default ~/.hack-next even for a custom --root install. The root now comes from the native executor the launcher pinned (<root>/versions/<current>/bundle/hack-native) and the launcher file must exist; otherwise, including Compose-backend launches, the command is null. Addresses the Codex review on this PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
Ready for lead: f96f219 HACK-2218 R14, based on
Decision flagged: one documented false negative. The release list is ordered by creation time and the check reads one page of 100. A newer Fixed during the loop:
Ran locally (Linux, Bun 1.4.4, temp HOME, Exact-head hosted CI (run 43692353071): every Linux job that ran passed (test shards 4–8 and fan-in, test focus, docker-e2e fan-in, Config compiler ubuntu, Desktop app Linux, docs site, secret scan). Candidate core, Docker e2e shards, linux-process-lifetime and runtime models/images were skipped by change scope. Desktop app (macOS): queued, not waited for. Optional Proof skipped. GitHub reports mergeable. Review: persistent Codex reviewer CLEAN at this head (round 4). Codex bot: no major issues and no security issues at f96f219. Not verified: a real GitHub response from an installed build, Homebrew and candidate installs on a Mac, and the desktop app consuming the field (#823 still uses Unknown). No further pushes planned after this note. |
…econcile Brings in next at 34b5053 (#802 Rust lifecycle supervisor, #860 read-only update check, #818 desktop Env tab). Conflicts: - src/lib/machine-output.ts and src/cli/json-contracts.ts: both sides added schemas and variants; kept updateCheck / update --check --observe and the four daemon command schemas. - src/commands/update.ts: kept both the observeUpdate import and handleObserve from #860 and this branch's post-update reconcile. --observe returns before anything else, and plain --check returns before the install, so the read-only check never reaches reconcileDaemonAfterUpdate. Generated files (CLI reference, machine-output table, error-code reference) were regenerated and match; E_DAEMON_SERVICE kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # apps/desktop/README.md # apps/desktop/app/src/screenshots.rs # apps/desktop/app/src/view.rs # apps/desktop/core/src/source.rs
# Conflicts: # apps/desktop/README.md # apps/desktop/app/src/main.rs # apps/desktop/app/src/screenshots.rs # apps/desktop/app/src/view.rs # apps/desktop/core/src/fixtures.rs
taking R14
The desktop app needs to show "Hack vX available" for every install, but
hack update --checkrefuses Homebrew installs and candidate launchers before it checks anything.hack update --check --json --observenow reports, for any install kind:{"ok":true,"data":{"current":"5.0.0-next.17","channel":"next","latest":"5.0.0-next.18","available":true,"install_kind":"candidate","upgrade_command":["/example/user/.hack-next/bin/hack-next","--manager","upgrade","--version","5.0.0-next.18"],"reason":null,"schema":"hack.update-check.v1"}}flowchart LR A[update --check --json --observe] --> B{version form?} B -- other prerelease --> U1[reason: version-unrecognized] B -- stable --> L1[GET releases/latest] B -- "-next.N" --> L2[GET releases list, newest same-major -next.N] L1 & L2 -- fetch error --> U2[reason: network-unavailable] L1 & L2 -- bad or no release --> U3[reason: release-unavailable] L1 & L2 -- version --> C{newer?} C -- no --> N[available: false, no command] C -- yes --> K[available: true + upgrade_command for this install]latest-next.Nwith the same major on the first page of up to 100 releases.nullwhen unknown.availabletrue/false, ornullwhen unknown (never "up to date" by default).install_kindcandidateunder a candidate launcher; otherwise theversion --jsonkind.upgrade_commandavailable: thehack-nextlauncher's managerupgrade --version, stable Homebrewbrew upgrade hack-dance/tap/hack, stable standalone<binary> update; elsenull(including other candidate launchers such ashack-v5, and next-channel Homebrew/standalone installs, whose update paths install stable).reasonnull,network-unavailable,release-unavailableorversion-unrecognized.-next.Non the one page read is positive evidence; "not available" is reported only when the page is not full or contains the running release, otherwiserelease-unavailable.--observerequires--check --jsonand refuses--yes/--tagwithE_USAGEbefore any network read.compareSemverignores prerelease tags (5.0.0-next.17equals5.0.0-next.18there), so the check uses its own comparison forX.Y.ZandX.Y.Z-next.Nonly. Plainhack updatekeeps its existing behaviour and output.update --check --observe(hack.update-check.v1); reference table and CLI reference regenerated.Docs: new update check reference, reference index, next.18 release notes, a line in the v5 install page (unlinked there: that page is pinned to the published release), desktop
DESIGN.mdR14 row marked as existing.Validation and gaps are in the ready note.
🤖 Generated with Claude Code