diff --git a/.github/release-notes-template.md b/.github/release-notes-template.md index a0cb857c..2fa2dd3f 100644 --- a/.github/release-notes-template.md +++ b/.github/release-notes-template.md @@ -6,16 +6,46 @@ ## Install +New install on Linux, macOS, or WSL2: + ```bash curl -fsSL https://raven.evermind.ai/install.sh | bash ``` -Then reload your shell and run: +New install on native Windows, in PowerShell: + +```powershell +irm https://raven.evermind.ai/install.ps1 | iex +``` + +Windows PowerShell 5.1 (the version built into Windows) rejects that URL with +`Permanent Redirect`; use the direct one instead: + +```powershell +irm https://raw.githubusercontent.com/EverMind-AI/Raven/refs/heads/main/install.ps1 | iex +``` + +Open a new terminal, then run: ```bash raven onboard ``` +## Upgrade + +Already running Raven? Upgrade in place -- configuration, sessions, and memory +are preserved: + +```bash +raven upgrade +``` + +`raven upgrade` installs the latest stable release, so it does not pick up a +pre-release; rerun the installer above for that. Editable source checkouts are +never overwritten -- pull the checkout and rerun its development setup. On +native Windows the upgrade finishes in an external helper; wait for its +completion message before running Raven again. + ## Release Status - Version: `__VERSION__` diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 595dabcd..bd5cf2c3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -132,10 +132,20 @@ jobs: id="" fi if [ -z "$id" ]; then - gh release create "$tag" dist/*.whl dist/*.tar.gz dist/raven-constraints.txt \ - --title "Raven $ver ($today)" --notes-file "$RUNNER_TEMP/notes.md" --draft $pre + draft_url=$(gh release create "$tag" dist/*.whl dist/*.tar.gz dist/raven-constraints.txt \ + --title "Raven $ver ($today)" --notes-file "$RUNNER_TEMP/notes.md" --draft $pre) + # A draft lives at releases/tag/untagged- and keeps serving that + # stale page after publication, with no redirect to the real tag. Print + # both URLs so nobody shares the draft one by copying the address bar. + { + echo "### Release $tag" + echo "" + echo "- Draft (temporary, do not share): $draft_url" + echo "- Public URL once published: https://github.com/$repo/releases/tag/$tag" + } >> "$GITHUB_STEP_SUMMARY" else echo "Release $tag already published (id=$id); leaving as-is." + echo "Release $tag already published: https://github.com/$repo/releases/tag/$tag" >> "$GITHUB_STEP_SUMMARY" fi # (Optional, wire up when ready) publish to PyPI on tag: diff --git a/RELEASING.md b/RELEASING.md index 87d03e6a..f1900e2d 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -31,9 +31,14 @@ Highlights before publishing. Structure: - ## Install - curl -fsSL https://raven.evermind.ai/install.sh | bash + install.sh one-liner for Linux / macOS / WSL2 + install.ps1 one-liner for native Windows (plus the PowerShell 5.1 direct URL) then: raven onboard +## Upgrade + raven upgrade, with its limits (latest stable only, editable checkouts + untouched, external helper on native Windows) + ## Release Status - Version: `X.Y.Z` - Tag: `vX.Y.Z` @@ -59,6 +64,15 @@ Highlights before publishing. Structure: 4. Fill the summary + Highlights in the draft, then click **Publish**. Publishing makes it `/releases/latest`, which `install.sh` serves. +While a release is a draft, GitHub addresses it as +`releases/tag/untagged-` -- even though the tag already exists, since CI +only runs after the tag is pushed. Publishing moves the release to +`releases/tag/vX.Y.Z` and leaves the old URL serving its own stale page with no +redirect. So never share the draft URL: a reader who opens it after publication +sees "untagged" and concludes the tag is missing or the release never went out. +Link `releases/tag/vX.Y.Z` or `/releases/latest` instead; the release job prints +both URLs in its step summary. + ## Pre-releases - `vX.Y.Z-rcN` tags build a draft marked **pre-release**. A pre-release is never