Windows release automation and bundled resource fix (0.1.24) #63

Merged
ValleyGeek merged 12 commits from 0.1.23/issue-61-windows-release into main 2026-06-12 20:24:20 +00:00
Member

Summary

Automates Forgejo Windows release publishing (closes #61) and fixes bundled Help/resources on Windows onefile builds (closes #32).

Changes

  • CI: windows-release.yml builds on the windows-full host runner when compiled inputs change; publishes windows-latest from main and dev-latest-{branch-slug} from development branches; prunes dev releases when a branch is deleted.
  • Build: manual-build-windows.ps1 -CiMode reuses a persistent Nuitka/pip cache; verifies output with --bio-packaging-self-test.
  • Publish: publish-windows-release.ps1 upserts Forgejo releases and uploads the .exe via curl against the public API.
  • Packaging: resource_paths.py detects Nuitka frozen runtimes without sys.frozen, resolves the versioned onefile unpack cache, and locates bundled USER_GUIDE.md and icons correctly on Windows.
  • Version: 0.1.24

Testing

  • pytest (packaging, onefile cache, version helpers)
  • Windows host runner: Nuitka onefile build, bundled resource self-test, Forgejo release publish
## Summary Automates Forgejo Windows release publishing (closes #61) and fixes bundled Help/resources on Windows onefile builds (closes #32). ## Changes - **CI:** `windows-release.yml` builds on the `windows-full` host runner when compiled inputs change; publishes `windows-latest` from `main` and `dev-latest-{branch-slug}` from development branches; prunes dev releases when a branch is deleted. - **Build:** `manual-build-windows.ps1` `-CiMode` reuses a persistent Nuitka/pip cache; verifies output with `--bio-packaging-self-test`. - **Publish:** `publish-windows-release.ps1` upserts Forgejo releases and uploads the `.exe` via curl against the public API. - **Packaging:** `resource_paths.py` detects Nuitka frozen runtimes without `sys.frozen`, resolves the versioned onefile unpack cache, and locates bundled `USER_GUIDE.md` and icons correctly on Windows. - **Version:** 0.1.24 ## Testing - `pytest` (packaging, onefile cache, version helpers) - Windows host runner: Nuitka onefile build, bundled resource self-test, Forgejo release publish
Grok added 12 commits 2026-06-12 20:14:18 +00:00
Issue #61 needs sanitized branch slugs, dev-branch executable names, and
Forgejo release tag names for automated Windows publishing.
Keep the build venv, Nuitka cache directory, and dependency fingerprint
outside the checkout so repeated Forgejo runner jobs rebuild faster when
only application sources change.
ci: publish Windows releases on push and prune on branch delete
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 12s
2e462f0734
Adds a windows-full host workflow that builds onefile executables on push,
publishes windows-latest on main and dev-latest-{branch} on development
branches, and deletes dev releases when branches are removed.
ci: use PowerShell for Windows build change detection
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 1m11s
e2570d62ed
The windows-full host runner does not provide bash, so the change-detection
step failed before the Nuitka build could start.
build: stop pip stdout from polluting venv path on Windows CI
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 17s
daf81135cc
Forgejo host jobs assign the venv python path from Initialize-BuildVirtualEnvironment.
Pip install output was landing on the success stream and replaced that path with
pip log text, causing the follow-on Nuitka step to fail.
build: drop unsupported Nuitka --cache-dir flag on Windows
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 15m5s
8dc655cb09
Nuitka 4.1 rejects --cache-dir; persistent downloads already use
NUITKA_CACHE_DIR from the CI cache root.
fix: resolve bundled resources from versioned onefile cache on Windows
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 7m25s
e58a719ee7
bundle_root() no longer treats a partial resources/ directory at the
ValleyGeek product folder as authoritative. It walks upward from frozen
runtime anchors and requires resources/help/USER_GUIDE.md, preferring the
deepest match so the versioned unpack directory wins over stale parents.
fix: detect Nuitka frozen runtime and resolve onefile bundle root
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 8m31s
bbe5039abf
Nuitka 4.x on Windows does not always set sys.frozen, so bundle_root()
fell through to project_root() (four levels above resource_paths.py),
which lands on the product folder instead of the versioned onefile unpack
directory. Treat __compiled__ as a frozen signal, scan the Windows cache
for versioned unpack dirs, and only use project_root() when pyproject.toml
is present. Defer Qt imports in main.py so --bio-packaging-self-test runs
without loading PySide6.
fix: publish Windows releases via curl against public Forgejo API
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 7m20s
95da783cee
Invoke-RestMethod PATCH/POST was returning generic 404s on the host runner,
likely due to runner-injected GITHUB_SERVER_URL or PowerShell HTTP quirks.
Route all release API calls through curl.exe, prefer GITHUB_API_URL when set,
parse owner/repo slugs robustly, and pin the workflow publish step to
https://repos.valleygeek.net with explicit repository coordinates.
fix: escape statusCode in publish script PowerShell error string
Some checks failed
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Failing after 7m38s
428fef00ea
PowerShell parsed `$statusCode:` as an invalid scoped variable reference
because the trailing colon followed the variable name in a double-quoted
throw message.
fix: uppercase HTTP verbs for curl in Windows release publish
All checks were successful
Windows Release / prune-dev-release (push) Has been skipped
Windows Release / build-release (push) Successful in 7m30s
476452e3a4
PowerShell passes Get/Post/Patch/Delete to Invoke-ForgejoApi, but curl
treats -X Get as a non-standard method and Forgejo returns HTTP 405.
Normalize verbs with ToUpperInvariant() before calling curl.exe.
docs: PR-prep for 0.1.24 Windows release automation (#61, fixes #32)
All checks were successful
Windows Release / prune-dev-release (push) Has been skipped
CI / lint (pull_request) Successful in 11s
CI / test (pull_request) Successful in 1m47s
Windows Release / build-release (push) Successful in 8m44s
CI / nuitka-smoke (pull_request) Successful in 13m53s
5b4b19d41e
Bump VERSION to 0.1.24. Document Forgejo Windows release CI, bundled
resource resolution on onefile Windows builds, and changelog entries for
issues #61 and #32.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ai-collab/bulk-image-organizer!63
No description provided.