From d05e2bd8ec0616bde3f8ee9757d33c2ae23634ba Mon Sep 17 00:00:00 2001 From: sudacode Date: Sat, 16 May 2026 00:54:49 -0700 Subject: [PATCH] ci(prerelease): use committed release-notes, drop CI claude regen CI runners don't have Claude Code installed, so the regen step in the prerelease workflow died on 'claude CLI not found'. Mirror the stable release model: generate prerelease-notes.md locally (claude -p), commit it, and have CI just verify and reference the committed file. --- .github/workflows/prerelease.yml | 8 ++++++-- .gitignore | 1 + docs/RELEASING.md | 5 ++++- release/prerelease-notes.md | 32 ++++++++++++++++++++++++++++++++ src/prerelease-workflow.test.ts | 7 ++++--- 5 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 release/prerelease-notes.md diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 9c4f32b6..95e149cb 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -369,8 +369,12 @@ jobs: id: version run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> "$GITHUB_OUTPUT" - - name: Generate prerelease notes from pending fragments - run: bun run changelog:prerelease-notes --version "${{ steps.version.outputs.VERSION }}" + - name: Verify committed prerelease notes + run: | + if [ ! -s release/prerelease-notes.md ]; then + echo "::error::release/prerelease-notes.md is missing or empty. Run 'bun run changelog:prerelease-notes --version ' locally and commit the file before tagging." + exit 1 + fi - name: Publish Prerelease env: diff --git a/.gitignore b/.gitignore index 39275637..ff95a573 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ dist/ release/* !release/ !release/release-notes.md +!release/prerelease-notes.md build/yomitan/ coverage/ diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 5f838fde..737cc4ba 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -55,7 +55,10 @@ `bun run build` When validating packaged updater output, confirm the platform build writes `*.yml` and `*.blockmap` files under `release/`. -5. Commit the prerelease prep. Do not run `bun run changelog:build`. +5. Commit the prerelease prep (package.json version bump + the generated + `release/prerelease-notes.md`). CI does not regenerate notes — it uses the + committed file — so review it before committing. Do not run + `bun run changelog:build`. 6. Tag the commit: `git tag v`. 7. Push commit + tag. diff --git a/release/prerelease-notes.md b/release/prerelease-notes.md new file mode 100644 index 00000000..d58e3b26 --- /dev/null +++ b/release/prerelease-notes.md @@ -0,0 +1,32 @@ +> This is a prerelease build for testing. Stable changelog and docs-site updates remain pending until the final stable release. + +## Highlights +### Added + +- **Auto-Update:** Tray and `subminer -u` command-line update checks for new SubMiner releases, with app and launcher update prompts, checksum verification, configurable update notifications, and an opt-in prerelease channel for beta and RC builds. +- **First-Run Setup:** Guided setup flow to install Bun and the `subminer` command-line launcher on Linux, macOS, and Windows. On Windows, a `subminer.cmd` PATH shim is installed so you can type `subminer` in any terminal without adding the main executable to PATH. + +### Fixed + +- **macOS Overlay:** Transient mpv window appearances no longer incorrectly hide the subtitle overlay; minimizing mpv still hides it as expected. mpv controls are also now clickable before hovering a subtitle bar. +- **Subtitle Sync Modal:** Opening the subtitle sync panel on macOS no longer flashes and dismisses on the first attempt, and no longer leaves stale modal state after syncing. +- **Updater Stability:** Linux tray and background update checks now use GitHub release metadata instead of the native Electron updater, preventing crashes. Unsafe native updater paths are avoided on all platforms. +- **Linux Launcher Update:** `subminer -u` on Linux now performs release updates directly from the launcher without requiring the tray app to be running. When already on the latest version it reports up to date without downloading assets. Support asset updates are limited to the Linux rofi theme. +- **Linux Launcher Install:** First-run launcher installs on Linux now use a valid Bun shebang so the installed launcher executes correctly. +- **macOS Setup:** First-run setup now correctly recognizes launchers already installed via Homebrew or user PATH directories, and manual installs avoid writing to Homebrew-managed locations. +- **Update Dialog:** macOS update dialogs are brought to the front when `subminer --update` is run from the command line. +- **Setup Flow:** `subminer app --setup` now correctly opens the setup window when SubMiner is already running in the background. The standalone setup process also quits after first-run completes, returning the terminal prompt instead of leaving the app open. +- **Build:** One-shot `make clean build install` flows now correctly pick up the AppImage produced by the current build rather than a stale previous one. +- **Tray Settings:** Closing Yomitan settings launched from the tray no longer quits the tray app, and loading settings no longer blocks other tray actions. A close button is shown within the Yomitan settings page on Hyprland where native window controls are unavailable. The embedded Yomitan popup preview is disabled in the tray settings window to prevent renderer hangs. Extension refreshes are now serialized to prevent startup race conditions, and session help modals can close correctly without mpv running. + +## Installation + +See the README and docs/installation guide for full setup steps. + +## Assets + +- Linux: `SubMiner.AppImage` +- macOS: `SubMiner-*.dmg` and `SubMiner-*.zip` +- Optional extras: `subminer-assets.tar.gz` and the `subminer` launcher + +Note: the `subminer` wrapper script uses Bun (`#!/usr/bin/env bun`), so `bun` must be installed and on `PATH`. diff --git a/src/prerelease-workflow.test.ts b/src/prerelease-workflow.test.ts index ee42b3bc..270db094 100644 --- a/src/prerelease-workflow.test.ts +++ b/src/prerelease-workflow.test.ts @@ -27,9 +27,10 @@ test('package scripts expose prerelease notes generation separately from stable ); }); -test('prerelease workflow generates prerelease notes from pending fragments', () => { - assert.match(prereleaseWorkflow, /bun run changelog:prerelease-notes --version/); - assert.doesNotMatch(prereleaseWorkflow, /bun run changelog:build --version/); +test('prerelease workflow uses committed prerelease notes and never calls claude in CI', () => { + assert.match(prereleaseWorkflow, /--notes-file release\/prerelease-notes\.md/); + assert.doesNotMatch(prereleaseWorkflow, /run: bun run changelog:prerelease-notes/); + assert.doesNotMatch(prereleaseWorkflow, /run: bun run changelog:build/); }); test('prerelease workflow includes the environment suite in the gate sequence', () => {