Skip to content

Trim release ZIP to WRAITH.exe + README only#36

Merged
OpenSource-For-Freedom merged 1 commit into
mainfrom
fix/release-zip-trim
Jun 7, 2026
Merged

Trim release ZIP to WRAITH.exe + README only#36
OpenSource-For-Freedom merged 1 commit into
mainfrom
fix/release-zip-trim

Conversation

@OpenSource-For-Freedom

@OpenSource-For-Freedom OpenSource-For-Freedom commented Jun 7, 2026

Copy link
Copy Markdown
Owner

Why

The latest build artifact ZIP shipped the entire repo working tree — scanner/, automation/, quick-scan.ps1, START.bat, wraith.env.json, LICENSE — instead of a Windows-branded executable. Users opening the download saw raw source artefacts.

Fix

./release/ staging now copies exactly two files into the ZIP:

File What it is
WRAITH.exe Self-contained single-file build. Windows-branded — <ApplicationIcon>WRAITH/Assets/wraith.ico</ApplicationIcon> from the csproj plus -p:Version / -p:FileVersion / -p:AssemblyVersion / -p:InformationalVersion from the publish step.
README.md Docs.

Removed

  • The 140-line Write START.bat heredoc step — the EXE's BootstrapService already handles first-launch Python install.
  • Copy-Item -Recurse ./scanner ./release/scanner and the matching ./automation recurse.
  • Copy-Item ./quick-scan.ps1 ./release/quick-scan.ps1.
  • Copy-Item ./LICENSE ./release/LICENSE.
  • The blank wraith.env.json template emission.
  • The release-page body section about START.bat will: auto-install Python …, the quick-scan.ps1 snippet, and the Python | Auto-installed by START.bat requirements row.

Untouched

Velopack publish (./publish-velopack, installer channel) still pulls scanner/ + automation/ via the csproj Content Include items. Installed users get the full surface; only the portable ZIP is slimmed.

Verification

  • python3 -c "import yaml; yaml.safe_load(...)" clean.
  • Diff: 12 insertions, 185 deletions (almost all from the dropped START.bat heredoc).

Test plan

  • Merge, watch the deploy run, download the resulting WRAITH-vX.Y.Z-win-x64.zip.
  • Confirm the archive contains only WRAITH.exe + README.md.
  • Confirm the EXE shows the WRAITH icon in Explorer and the correct version in Properties → Details.

The previous staging step packaged the entire repo working tree into
the release ZIP — scanner/, automation/, quick-scan.ps1, START.bat,
wraith.env.json, LICENSE — leaving end users with raw source
artefacts instead of a Windows-branded executable.

ZIP now contains exactly two files:
  WRAITH.exe   - self-contained, icon and version stamped via the
                 csproj ApplicationIcon + the publish-step -p:Version
                 / -p:FileVersion / -p:AssemblyVersion arguments
  README.md

Dropped the Write START.bat step entirely (140 lines of heredoc that
shelled out to Python install logic). The EXE handles bootstrap on
first launch via BootstrapService; nothing needs to live next to it
in the archive.

Release-page body trimmed to match: 'Download, extract, double-click
WRAITH.exe' — no START.bat, no quick-scan.ps1, no Python pre-install
instructions. The header comment block listing ZIP contents is
updated to the new two-file inventory.

Velopack publish (./publish-velopack, used for the installer
channel) is unaffected — it still pulls scanner/ + automation/ via
the csproj Content includes, which is what installed users need.
Copilot AI review requested due to automatic review settings June 7, 2026 14:00

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the GitHub Actions deploy workflow to slim the portable Windows release ZIP so it no longer ships the repository working tree (scripts + source directories), and instead targets a minimal end-user download.

Changes:

  • Updates the release ZIP staging step to copy only WRAITH.exe and README.md into ./release/ before zipping.
  • Removes the generated START.bat step and removes release-notes text that referenced START.bat, quick-scan.ps1, and Python auto-install behavior.
  • Updates the header comment describing the ZIP’s intended contents.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +296 to 300
# Everything else (scanner/, automation/, etc.) is embedded in
# the EXE via the csproj Content includes or surfaced through
# the in-app feed-refresh flow — the user should never see
# raw repo contents in the release archive.
Copy-Item ./publish/WRAITH.exe ./release/WRAITH.exe
@OpenSource-For-Freedom OpenSource-For-Freedom merged commit 28c86e9 into main Jun 7, 2026
8 checks passed
OpenSource-For-Freedom added a commit that referenced this pull request Jun 7, 2026
PR #36 trimmed the ZIP to just WRAITH.exe + README.md on the assumption
that the csproj Content includes embedded the Python scanner and the
PowerShell automation scripts inside the single-file binary. They don't.
CopyToOutputDirectory drops those trees ALONGSIDE the EXE in ./publish;
the single-file bundler only ingests managed assemblies and native libs.

Result: portable ZIP users extracted, double-clicked WRAITH.exe, hit
Scan, and every Python-backed scan failed with "Python scanner not
found at <extract-dir>\scanner\scanner.py" because BootstrapService
.ResolveBaseDir() joins "scanner" to the EXE dir and the ZIP had none.

Stage step now copies ./publish/scanner and ./publish/automation into
./release before the Compress-Archive call, sourcing from the publish
output so the csproj's existing Exclude pattern (test_*.py, __pycache__,
*.pyc) automatically carries through — no duplicate filter to drift.

Header comment + ZIP inventory block updated to match.

Kept out (PR #36 intent preserved): START.bat, quick-scan.ps1,
wraith.env.json template, LICENSE, repo CI/test files. The portable
ZIP is now exactly the runtime payload — nothing more, nothing less.

Velopack installer path was never broken by PR #36 (it consumes
./publish-velopack which still includes the directories via the same
csproj rule), so this fix is portable-ZIP-only.
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.

2 participants