docs: add release checklist#123
Conversation
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 6 minutes and 50 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughAdds a tracked release runbook at Changes
Sequence Diagram(s)sequenceDiagram
participant Runner as Release Runner
participant Script as verify-release.ts
participant GitHub as GitHub API
participant Assets as Release Assets (downloads)
Runner->>Script: invoke with tag (and optional owner/repo)
Script->>GitHub: GET release by tag
GitHub-->>Script: release JSON (assets list, draft/prerelease flags)
Script->>Assets: download `latest.yml` and `latest-mac.yml` (if present)
Script-->>Script: parse updater YAML -> extract URLs
Script->>Assets: verify referenced asset names exist in release assets
Script-->>Runner: success or list of verification failures (exit codes)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive release checklist and a new verification script to automate the validation of GitHub release assets and updater metadata for the PawWork desktop application. The script is accompanied by a suite of unit tests. Review feedback highlights several areas for improving the script's robustness, including more resilient YAML parsing to handle quoted strings, better error handling for missing assets to ensure all failures are reported at once, and implementing try-catch blocks to handle network or API exceptions gracefully.
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/desktop-electron/scripts/verify-release.test.ts`:
- Around line 54-65: Add a regression test that ensures parseUpdaterFileUrls
correctly parses quoted YAML scalar values and ignores inline comments: update
the test suite (the test that currently checks unquoted values in
verify-release.test.ts) to include a new case where url and path entries are
quoted (e.g. "pawwork-mac-arm64.zip") and include optional inline comments on
those lines; assert the returned array matches the expected filenames so
parseUpdaterFileUrls handles quoted scalars and comments as in real updater YAML
variants.
In `@packages/desktop-electron/scripts/verify-release.ts`:
- Around line 34-46: The parseUpdaterFileUrls extractor currently returns values
with surrounding quotes and inline comments which breaks matching; update
parseUpdaterFileUrls to post-process each captured value (from fileMatch[1] and
pathMatch[1]) by trimming whitespace, stripping matching surrounding single or
double quotes, and removing any trailing inline comment (e.g., split/remove
content after an unescaped '#' or simply remove ' #...' and following). Ensure
this normalization is applied before pushing into urls so entries like url:
"foo.zip" # comment or path: 'bar' are normalized to foo.zip and bar.
- Around line 148-150: Wrap the top-level invocation of main() in an explicit
try/catch so any thrown error is caught and produces deterministic CLI output
and a non-zero exit code: when import.meta.main is true, call await main()
inside a try block and in catch log a concise failure message including the
error (e.g., error.message) to stderr (console.error or process.stderr.write)
and call process.exit(1); reference the existing top-level invocation of main()
to locate where to add the try/catch.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 5f217168-18d8-48e3-9f4b-e28ed397c593
📒 Files selected for processing (3)
.github/RELEASE_CHECKLIST.mdpackages/desktop-electron/scripts/verify-release.test.tspackages/desktop-electron/scripts/verify-release.ts
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
2171400 to
417e5a3
Compare
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
417e5a3 to
4b08007
Compare
3038bf5 to
ddbb4df
Compare
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/RELEASE_CHECKLIST.md:
- Around line 109-112: Update the publish command string "gh release edit vX.Y.Z
--repo Astro-Han/pawwork --draft=false --latest" to explicitly clear prerelease
by adding --prerelease=false so the command becomes "gh release edit vX.Y.Z
--repo Astro-Han/pawwork --draft=false --latest --prerelease=false".
In `@packages/desktop-electron/scripts/verify-release.ts`:
- Around line 138-147: The fetchText and fetchJson helpers currently use the
default fetch with no timeout; add a bounded timeout by creating an
AbortController, passing controller.signal into fetch(...) in both fetchText and
fetchJson, and scheduling a setTimeout to call controller.abort() after a
configurable timeout (e.g. constant DEFAULT_FETCH_TIMEOUT_MS); clear the timeout
when the response arrives and ensure abort errors are surfaced (wrap or rethrow
so formatFetchError still applies) so stalled GitHub API/asset requests fail
fast instead of hanging the verifier.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 24f79f8a-1955-4caa-8767-2d1920b8b631
📒 Files selected for processing (3)
.github/RELEASE_CHECKLIST.mdpackages/desktop-electron/scripts/verify-release.test.tspackages/desktop-electron/scripts/verify-release.ts
ddbb4df to
6851af9
Compare
Summary
Add a tracked release checklist and a post-release verification helper for PawWork desktop releases.
Why
The v0.2.5 release exposed process gaps around release notes timing, manual release command handling, and updater metadata verification. This PR documents the intended release flow and adds a script that verifies user-facing installers plus updater metadata before release issues are closed.
Related Issue
Closes #120
How To Verify
Expected result for the final command: it fails on v0.2.5 because that release's current
latest-mac.ymldoes not includepawwork-mac-arm64.zip. That is the historical release gap this checklist/helper is meant to catch for future releases.Screenshots or Recordings
Not included. This is a release process and verification script change with no visible UI.
Checklist
dev, and my PR title and commit messages use Conventional Commits in EnglishSummary by CodeRabbit
Documentation
Tests
Chores