Repository navigation
fix(dist): make dist packs every product, and star ships with its extensions - #914
Merged
Merged
Conversation
…ensions (#903) dist-all builds each product in $(PRODUCTS) instead of a hand-written writ and lore pair, and packs star/extensions at share/star/extensions, the layout .goreleaser.yaml describes. Only tracked files are packed. After each archive is written, its file list is checked against the products and the tracked extensions, and any difference fails the build.
#903) Every file at the archive root is a product. Each one installs itself with `self install <prefix>`; the old `self-install` never existed, and its failure was swallowed as a warning. star finds the archive's share/ at <exeDir>/../share and copies its extensions. install.ps1 defaults to ~/.local on every platform, following XDG on Windows too, and a failed self install is fatal in both installers.
David-Noble-at-work
added a commit
that referenced
this pull request
Sep 25, 2026
…n Windows PowerShell 5.1 (#951) * feat(install): plan for #948, install.ps1 is published and runs on Windows PowerShell 5.1 Claude-Session: https://claude.ai/code/session_01DuNfZFyfxBoD9pdaiDEMrY * feat(install): install.ps1 is published beside install.sh, and runs on Windows PowerShell 5.1 release.yaml's sync step copied install.sh to the site and nothing else, so install.ps1's own usage line -- irm https://devlore.noblefactor.com/install.ps1 | iex -- was a 404. It syncs both scripts now, and the release summary shows the Windows one-liner beside the Unix one. install.ps1 was written for PowerShell 7, which a fresh Windows machine does not have. Ruled 2026-09-24 (#798, ruling 3 reversed): the installer uses what is on the box, Windows PowerShell 5.1, and installs nothing but lore, star and writ. So: #Requires -Version 5.1; Get-OSName reads PSEdition before the $Is* automatic variables, which 5.1 lacks and strict mode would refuse; -UseBasicParsing on every web call, since 5.1's default engages the Internet Explorer parser; TLS 1.2 forced before the first request. The body is otherwise #914's. Verified under pwsh 7 on linux/arm64 against a scratch prefix with a real pre-release. The run under 5.1 on a Windows machine is the owner's, and the plan says so. Resolves #948 Claude-Session: https://claude.ai/code/session_01DuNfZFyfxBoD9pdaiDEMrY
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lane 7 of NobleFactor/noblefactor-ops#217. Every release archive held
writandloreand nothing else, sostarcould not be installed on a machine without a checkout.
make distpacks every product.dist-allbuilds each product in$(PRODUCTS), not a hand-written pair, andpacks
star/extensionsatshare/star/extensions, the layout.goreleaser.yamldescribes.starneeds those files://go:embeddoesn't cover thecom.noblefactor.devlore.*commands. Only tracked files are packed.extensions, or the build fails and names what's missing and what's extra.
<tool> self-install, a command no product has: it exits 64 withunknown command, and the failure was swallowed asa warning. They now run
self install <prefix>from a stagedpkg/bin, sostarfinds the archive'sshare/andcopies its extensions. A failed install is fatal.
install.ps1defaults to~/.localon every platform, wherestar's loader already looks.make diststays the release path. goreleaser adoption, and the owner's build-once-into-a-drop model, are recorded on#453.
Test plan
make dist-all PLATFORM=linux/arm64: the archive holds exactlylore,star,writand 23 extension files,and the check passes
stardropped from thetarline, the check fails withmissing: starself installfrom a stagedpkg/binandpkg/shareof the windows-arm64 builds installs all three productsand star's 23 extension files into a scratch prefix
vet,lint,complexity,verify-ldflagsandtestpass locally;install.ps1gains no PSScriptAnalyzerfinding;
install.shpassesbash -nstarin every archive, including the Windowszips, andinstall.ps1installs it on DANOBLE-WD11-3
Plan: docs/plans/fix/903-dist-packs-every-product.md
Resolves #903
Time
Computed by the algorithm of noblefactor-ops#188 at merge.