Skip to content

chore: TASK-075 automate Winget updates on release#513

Merged
pascalandr merged 1 commit into
NeuralNomadsAI:devfrom
Pagecran:chore/issue-462-winget-release
Jun 3, 2026
Merged

chore: TASK-075 automate Winget updates on release#513
pascalandr merged 1 commit into
NeuralNomadsAI:devfrom
Pagecran:chore/issue-462-winget-release

Conversation

@pascalandr

@pascalandr pascalandr commented May 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a release-published workflow that prepares and submits Winget manifest updates automatically
  • poll the GitHub Release API for the stable Windows Tauri asset and compute its SHA-256 before submission
  • document the maintainer secret and repository variables needed for the Winget automation flow

Validation

  • node --check "scripts/winget/resolve-release-asset.cjs"
  • node "scripts/winget/resolve-release-asset.cjs" --help
  • dry-run resolver against the published v0.16.0 release asset

Notes

Add a release-published GitHub Actions workflow that waits for the Windows Tauri asset, validates the configured winget-pkgs fork context, and submits the package update through the Komac-backed winget-releaser action. This keeps Winget manifest maintenance aligned with published CodeNomad releases without requiring a persistent local winget-pkgs clone.

Include a small helper script to poll the GitHub Release API, resolve the exact Windows ZIP asset, and compute the SHA-256 used for validation and troubleshooting. Document the required PAT and repository variables so maintainers can configure and operate the automation safely.
@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26710992633

Artifacts expire in 7 days.
Artifacts:

  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-macos
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-linux
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-windows
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-electron-macos
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-macos-arm64
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-electron-windows
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-electron-linux

@github-actions

Copy link
Copy Markdown

PR builds are available as GitHub Actions artifacts:

https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/26713520559

Artifacts expire in 7 days.
Artifacts:

  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-macos
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-linux
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-electron-macos
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-windows
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-tauri-macos-arm64
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-electron-windows
  • pr-513-fc67a18b39d08476bbc951df68a70692489a29e1-electron-linux

@shantur

shantur commented May 31, 2026

Copy link
Copy Markdown
Collaborator

@CodeNomadBot

I want you to perform the gatekeeper checks for latest PR state

check for regressions
check for better possible implementations
Be the PR gatekeeper
Be ruthless about code quality

@codenomadbot

codenomadbot Bot commented May 31, 2026

Copy link
Copy Markdown
Contributor

Understood request: perform a ruthless gatekeeper review of the latest PR state for regressions and better implementation options. I treated this as review-only and did not modify the PR.

Gatekeeper result: no merge-blocking regression found in the current diff.

Findings:

  • Non-blocking reliability concern: .github/workflows/update-winget.yml uses a 900s default wait for the Windows Tauri release asset. The current v0.16.0 release published at 10:10:43Z and the matching Windows Tauri zip appeared at 10:24:01Z, leaving only about 100 seconds of buffer. That is tight for CI variance. I would strongly prefer either a 30-45 minute default timeout or triggering Winget submission after the release asset upload workflow completes, rather than racing the release.published event.
  • Non-blocking implementation concern: scripts/winget/resolve-release-asset.cjs downloads the full Windows zip to compute SHA-256, but the SHA is only logged and is not passed into winget-releaser; Komac/winget-releaser computes the manifest hash from the URL anyway. This adds a large network dependency to every release. Better options: use asset.digest when present and only fall back to downloading, or remove the hash step unless it is used as an explicit verification gate.
  • Non-blocking hardening concern: the resolver writes GitHub Actions outputs as plain key=value lines. Current generated values are single-line and safe, but custom --asset-regex/template-derived output could become malformed if a future value includes newline-like content. Not urgent for the current defaults, but the multiline-safe $GITHUB_OUTPUT format would be more robust.

Validation performed:

  • Reviewed the full PR diff: new Winget workflow, resolver script, and docs.
  • Checked current release artifact naming in .github/workflows/build-and-upload.yml; the default template matches CodeNomad-Tauri-windows-x64-{version}.zip.
  • Checked vedantmgoyal9/winget-releaser@v2 action inputs and behavior from its action.yml; the supplied inputs are valid.
  • Ran node --check "scripts/winget/resolve-release-asset.cjs" successfully.
  • Ran node "scripts/winget/resolve-release-asset.cjs" --help successfully.
  • Ran the resolver against v0.16.0 release id 322465145; it resolved CodeNomad-Tauri-windows-x64-0.16.0.zip and SHA-256 554E89D6A8DE0780B4A4C6C4B4DE5ADEBE866642C3183596665AE0352667F0BD, matching the existing Winget manifest.

I could not run actionlint locally because it is not installed in this environment.

--
Yours,
CodeNomadBot

@shantur

shantur commented May 31, 2026

Copy link
Copy Markdown
Collaborator

@pascalandr - Approving on the basis that this is tested at your end

@pascalandr pascalandr merged commit 37a8621 into NeuralNomadsAI:dev Jun 3, 2026
22 checks passed
shantur added a commit that referenced this pull request Jun 8, 2026
…ions, safer settings, more languages and smoother desktop performance (#534)

## Thanks for contributions

- [@pascalandr](https://github.com/pascalandr):
[#242](#242),
[#340](#340),
[#357](#357),
[#406](#406),
[#407](#407),
[#458](#458),
[#472](#472),
[#501](#501),
[#513](#513),
[#528](#528),
[#531](#531)
- [@OfflinePing](https://github.com/OfflinePing):
[#413](#413),
[#497](#497),
[#498](#498),
[#499](#499)
- [@omercnet](https://github.com/omercnet):
[#459](#459),
[#466](#466),
[#512](#512)
- [@VooDisss](https://github.com/VooDisss):
[#493](#493),
[#511](#511)
- [@JDis03](https://github.com/JDis03):
[#481](#481),
[#519](#519)
- [@bluelovers](https://github.com/bluelovers):
[#278](#278),
[#284](#284)
- [@aayurt](https://github.com/aayurt):
[#523](#523)
- [@MusiCode1](https://github.com/MusiCode1):
[#388](#388)
- [@jollyxenon](https://github.com/jollyxenon):
[#439](#439)

## Highlights

- **Provider setup is easier from the model selector**: Manage provider
authentication directly from the place where you choose models, with
provider settings scoped to the current CodeNomad instance.
- **Settings are more useful and transparent**: A new Info section shows
version, runtime, and diagnostic details, and a new global config editor
makes it easier to inspect and update CodeNomad/OpenCode configuration
without leaving the app.
- **Sessions load faster and are easier to find**: Session history now
supports progressive loading, server-side search, and stronger workspace
scoping, making large workspaces feel much more responsive.
- **Workspace names are customizable**: Give workspaces friendlier names
so multi-project and multi-instance setups are easier to recognize.
- **Desktop event handling is faster and more reliable**: Tauri desktop
builds now use a Rust-native event transport for better performance and
fewer moving parts during live session updates.
- **More languages are available**: German and Nepali localization
support was added, and Hebrew translation coverage was improved.

## What’s Improved

- **Better chat readability**: Pasted text can collapse in chat history,
session titles now appear in the header bar, and message timing metrics
make it easier to understand how long responses take.
- **More flexible composer experience**: The session composer can now be
resized, making long prompts and detailed instructions easier to work
with.
- **Safer environment variable editing**: Environment variable values
are hidden and password-style inputs are masked, reducing the chance of
exposing sensitive values on screen.
- **Better permission feedback**: Permission requests now show clearer
rejection feedback, and YOLO mode behavior is shared more consistently
across related session flows.
- **More helpful notifications and logs**: Toast notification history
and server log access were improved so important events are easier to
revisit after they disappear.
- **Cleaner status panels**: Status panel sections can now collapse,
making dense side-panel information easier to scan.
- **Smaller desktop packages**: Electron package size was reduced,
making downloads and installs lighter.

## Fixes

- **More reliable live updates**: SSE pong retry logic and message-load
retry handling were tightened to avoid connection issues and runaway
retry loops.
- **Smoother scrolling while sessions stream**: Virtual
follow/autoscroll behavior is more stable, so active conversations
should jump around less while new content arrives.
- **Better OpenCode SDK compatibility**: CodeNomad now supports OpenCode
SDK 1.16 runtime APIs.
- **More reliable worktree behavior**: Worktree mappings now live in
session metadata, and OpenCode calls are routed through workspaces more
consistently.
- **Better draft prompt handling**: Draft prompt command sessions are
supported more reliably, and switching focus between tabs no longer
accidentally clears prompts.
- **Improved mobile usability**: Instance and project tabs remain
tappable while the session drawer is open, and the folder home screen
behaves better on small mobile viewports.
- **Improved Linux browser launching**: Linux browser launch detection
now checks more common browser candidates.
- **Better plugin handling**: Plugin base URLs work better with host
binding, and tuple-style plugin metadata is supported.
- **Markdown rendering polish**: Horizontal rules now render correctly
in markdown content.
- **Simpler session diff UI**: The session diff right-drawer flow was
removed to reduce UI complexity and avoid confusing side-panel behavior.

## Docs

- **Contributor architecture guide added**: A CodeNomad architecture
guide skill was added to help contributors understand the project
structure and key integration patterns.
- **Quick-start guidance improved**: Authentication requirements and
self-signed certificate warnings were added to the quick-start docs.
- **Release automation documented**: Winget release automation docs and
workflow support were added.

### Contributors

- [@shantur](https://github.com/shantur)
- [@pascalandr](https://github.com/pascalandr)
- [@OfflinePing](https://github.com/OfflinePing)
- [@omercnet](https://github.com/omercnet)
- [@JDis03](https://github.com/JDis03)
- [@VooDisss](https://github.com/VooDisss)
- [@bluelovers](https://github.com/bluelovers)
- [@aayurt](https://github.com/aayurt)
- [@MusiCode1](https://github.com/MusiCode1)
- [@jollyxenon](https://github.com/jollyxenon)

**Full Changelog**:
[v0.16.0...v0.17.0](v0.16.0...v0.17.0)

## Merged Pull Requests

### [@shantur](https://github.com/shantur)

- PR [#446](#446)
“fix(ui): support draft prompt command sessions”
- PR [#452](#452)
“fix(ui): keep home actions visible on short viewports”
- PR [#453](#453)
“Reduce Electron package size”
- PR [#476](#476)
“feat(ui): add instance-scoped provider manager from model selector”
- PR [#477](#477) “Add
global config file editor”
- PR [#514](#514)
“Migrate worktree mappings to session metadata”
- PR [#521](#521)
“fix(worktrees): route OpenCode calls through workspaces”
- PR [#522](#522)
“feat(ui): support custom workspace names”
- PR [#526](#526)
“Support OpenCode SDK 1.16 runtime APIs”
- PR [#529](#529)
“fix(ui): stop message load retry loop”
- PR [#532](#532)
“fix(ui): remove session diff right drawer flow”

### [@pascalandr](https://github.com/pascalandr)

- PR [#242](#242)
“perf(tauri): Rust-native desktop event transport”
- PR [#340](#340)
“feat(ui): show the session title in the header bar”
- PR [#357](#357)
“feat(ui): add message timing metrics”
- PR [#406](#406)
“fix(ui): stabilize virtual follow autoscroll”
- PR [#407](#407)
“feat(ui): collapse pasted text in chat history”
- PR [#458](#458)
“fix(ui): allow status panel sections to collapse”
- PR [#472](#472)
“revert: remove tracked NomadWorks repo state”
- PR [#501](#501)
“fix(ui): support tuple plugin metadata”
- PR [#513](#513)
“chore: TASK-075 automate Winget updates on release”
- PR [#528](#528)
“fix(ui): scope primary agent selector to selectable agents”
- PR [#531](#531)
“revert: remove tracked NomadWorks task artifacts”

### [@OfflinePing](https://github.com/OfflinePing)

- PR [#413](#413)
“feat(settings): add Info section with version, runtime, and
diagnostics”
- PR [#497](#497) “Share
YOLO mode across session families”
- PR [#498](#498)
“fix(ui): render markdown horizontal rules”
- PR [#499](#499) “Add
reject feedback to permission UI”

### [@omercnet](https://github.com/omercnet)

- PR [#459](#459)
“fix(mobile): tappable instance/project tab bar while session drawer is
open”
- PR [#466](#466) “ci:
increase comment-pr-artifacts polling timeout”
- PR [#512](#512) “fix:
handle plugin base URL for host binding”

### [@VooDisss](https://github.com/VooDisss)

- PR [#493](#493) “feat:
add CodeNomad architecture guide skill for contributors”
- PR [#511](#511)
“feat(sessions): progressive loading, server-side search, and workspace
scoping”

### [@JDis03](https://github.com/JDis03)

- PR [#481](#481) “docs:
add auth requirement and self-signed cert warning to quick-start”
- PR [#519](#519)
“fix(ui): add retry logic to SSE pong to improve connection resilience”

### [@bluelovers](https://github.com/bluelovers)

- PR [#278](#278)
“feat(ui): Toast Notification History & Server Logs Enhancements”
- PR [#284](#284)
“fix(ui): hide environment variable values and mask inputs as password”

### [@aayurt](https://github.com/aayurt)

- PR [#523](#523) “Add
German and Nepali Localizations”

### [@MusiCode1](https://github.com/MusiCode1)

- PR [#388](#388)
“Update Hebrew translation coverage”

### [@jollyxenon](https://github.com/jollyxenon)

- PR [#439](#439)
“feat(ui): add resizable session composer”
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update winget whenever new version is released

2 participants