docs: switch to permanent v0.x.x versioning + salvage retired release notes#8
Merged
docs: switch to permanent v0.x.x versioning + salvage retired release notes#8
Conversation
The repo's go.mod declares `module github.com/arty2/onion` (no /vN suffix). Per Go's semantic-import-versioning rule (https://go.dev/ref/mod#major-version-suffixes), any tag with major version ≥ 2 is unconsumable via the Go module proxy unless the path includes a matching /v2, /v3, … suffix. That made every v2.x and v3.x tag effectively dead — `hugo mod get github.com/arty2/onion@v3.1.0` fails with a module-path-mismatch error. Two fixes are possible: add /v3 to go.mod (and bump it on every future major), or stay below v2.0 and live in v0.x.x permanently. v0 and v1 are exempt from the suffix rule; the Go ecosystem has ample precedent for indefinite v0 (golang.org/x/…, many libraries). For a Hugo theme — which doesn't ship API stability the way a library does — permanent v0 is the right tradeoff. This commit is docs-only; the destructive cleanup (deleting the 9 existing tags + Releases, tagging v0.1.0) lands as a follow-up once this PR is merged so the v0.1.0 tag points at a commit that already contains CHANGELOG.md. What changed: * CHANGELOG.md (new) — verbatim salvage of the 9 retired Releases' body text, newest-first, with a header explaining the renumbering. v2.3.0's detailed pre-AI → AI-orchestrated changelog is preserved in full; the terse early entries (v1.0, v2.0) are preserved as historical placeholders. * RELEASING.md — "## Versioning" rewritten. v0.X.0 covers both features and breaking changes (since in v0, breaking changes don't bump a major). v0.X.Y is patch. First release is v0.1.0. Cites the Go module-suffix rule and points at CHANGELOG.md for retired tags. * README.md — "As a Hugo Module" install instructions pin v0.1.0 by default; the boilerplate `hugo mod get` line at the bottom swapped from `vX.Y.Z` to `v0.X.Y`. Pointer added from the Development section to CHANGELOG.md.
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.
Why
go.moddeclaresmodule github.com/arty2/onion(no/vNsuffix). Per Go's semantic-import-versioning rule, any tag with major version ≥ 2 is unconsumable via the Go module proxy unless the path includes a matching/v2,/v3, … suffix. That made every existing v2.x and v3.x tag dead on arrival —hugo mod get github.com/arty2/onion@v3.1.0errors with a module-path-mismatch.Two fixes are available: add
/v3togo.mod(and bump it on every future major), or stay below v2.0 indefinitely. Per direction, this PR takes the second route. v0 and v1 are exempt from the suffix rule; the Go ecosystem has ample precedent for permanent v0 (golang.org/x/…, many libraries). For a Hugo theme — which doesn't ship API stability the way a library does — permanent v0 is the right tradeoff.What
Docs-only. Three files:
CHANGELOG.md(new) — verbatim salvage of the 9 retired Releases' body text, newest-first, with a header explaining the renumbering. v2.3.0's detailed pre-AI → AI-orchestrated changelog is preserved in full; the terse early entries (v1.0, v2.0, v2.2) are preserved as historical placeholders so nothing of note is lost when the GitHub Releases get deleted in Phase 2.RELEASING.md— "## Versioning" rewritten:v0.X.0covers BOTH features and breaking changes (in v0, breaking changes don't bump a major; downstream sites pin a minor they've tested).v0.X.Yis patch.v0.1.0.CHANGELOG.mdfor retired tags.README.md— "As a Hugo Module" install instructions pin@v0.1.0by default; the dev-section boilerplate swapped fromvX.Y.Ztov0.X.Y; pointer toCHANGELOG.md.Two-phase rollout
This PR is Phase 1: docs only, zero behavioural change. Once it merges, Phase 2 is the destructive cleanup:
CHANGELOG.md) asv0.1.0.v0.1.0linking to the new policy.Phase 2 runs as a separate one-shot operation, not a PR, since it's tag/Release plumbing rather than code changes.
Test plan
cd exampleSite && hugo --gc --logLevel warnclean — no template / build changes.hugo mod get github.com/arty2/onion@v0.1.0resolves cleanly in a fresh test site (Go module proxy lag ~few minutes after tag push).hugo mod get github.com/arty2/onion@latestresolves to v0.1.0 (would require Phase 2's deletion of v1.0 first; otherwise@latestshadows v0.1.0 since v1.0 > v0.1.0 in semver).Generated by Claude Code