Skip to content

Let a payload-free redistributable track its upstream - #1

Merged
pathartl merged 2 commits into
mainfrom
feat/dgvoodoo2
Aug 21, 2026
Merged

Let a payload-free redistributable track its upstream#1
pathartl merged 2 commits into
mainfrom
feat/dgvoodoo2

Conversation

@pathartl

Copy link
Copy Markdown
Contributor

Adds dgVoodoo2 to the library, and fixes the two things that stopped it working.

Source.Mode: none was effectively static

Resolve-RedistributablePayload answered from LastKnownVersion and only fell back to source.ps1 when that was empty, so check-upstream compared the value against itself, computed changed=false forever, and never opened a pull request. A redistributable using the mode looked healthy while tracking nothing.

Two additions, both confined to the none branch — OpenALSoft and UmuLauncher are download mode and are untouched:

  • -CheckOnly now runs source.ps1 when it exists, mirroring download. LastKnownVersion is what a build pins to, and a build should stay offline and deterministic; it has no business answering the upstream check.
  • -RefreshReference lets source.ps1 repopulate the repository's Reference/ directory. With no payload the upstream config still has to come from somewhere, and unlike a payload it is a committed artefact — it is the only input the option schema has, so the upstream-update PR has to carry it. check-upstream passes the switch and adds Reference/** to its add-paths.

PayloadPath stays null in every none path and Invoke-RedistributableBuild never passes -RefreshReference, so a build still cannot acquire files it is not allowed to publish. That is structural rather than a matter of care, which matters when the mode exists precisely because a licence forbids bundling.

Verified: -CheckOnly returns 2.87.3 from upstream while a build of the same repo with LastKnownVersion: "0.0.0-stale" returns 0.0.0-stale.

ChoiceCommentPattern doc correction

The comment in Ini.ps1 cited dgVoodoo.conf as the motivating example, but dgVoodoo documents a whole section in one block above a blank line, and the blank-line rule drops it — the pattern reads none of that file. Points at ConfigFormat: custom for that shape instead.

dgVoodoo2

Registered as a submodule. Published at LANCommander.Redistributables.dgVoodoo2, release v2.87.3. The .lcx contains scripts and a schema and no Archives/ entry, because dgVoodoo's licence forbids bundling it inside a launcher.

95/95 hub tests pass; OpenALSoft and UmuLauncher both still build -Strict.

🤖 Generated with Claude Code

pathartl and others added 2 commits August 21, 2026 00:48
Source.Mode 'none' was effectively static. Resolve-RedistributablePayload
answered from LastKnownVersion and only fell back to source.ps1 when that was
empty, so check-upstream compared the value against itself, computed
changed=false forever, and never opened a pull request. A redistributable using
it looked healthy while tracking nothing.

Two additions, both confined to the 'none' branch so the two shipped
redistributables -- both 'download' mode -- are untouched:

  - -CheckOnly now runs source.ps1 when it exists, mirroring 'download'.
    LastKnownVersion is what a build pins to, and a build should stay offline
    and deterministic; it has no business answering the upstream check.

  - -RefreshReference lets source.ps1 repopulate the repository's Reference/
    directory. When there is no payload, the upstream config still has to come
    from somewhere, and unlike a payload it is a committed artefact: it is the
    only input the option schema has, so the upstream-update pull request has
    to carry it. check-upstream passes the switch and adds Reference/** to its
    add-paths.

PayloadPath stays null in every 'none' path, and Invoke-RedistributableBuild
never passes -RefreshReference, so a build still cannot acquire files it is not
allowed to publish. That is structural rather than a matter of care, which
matters when the mode exists precisely because a license forbids bundling.

Also corrects the ChoiceCommentPattern doc comment. It cited dgVoodoo.conf as
the motivating example, but dgVoodoo documents a whole section in one block
above a blank line, and the blank-line rule drops it -- the pattern reads none
of that file. Point at ConfigFormat 'custom' for that shape instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@pathartl
pathartl merged commit 90086c4 into main Aug 21, 2026
3 checks passed
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.

1 participant