chore: sync v0.15.2 release commits from main into develop - #302
Conversation
## Release v0.15.1 — Phase 0 DevOps stabilization Brings the 7-PR DevOps cleanup chain to main and cuts a clean release. This is the verification gate for the whole Phase 0 effort — if anything breaks at tag, build, or publish, Phase 0 isn't done. ### What landed since v0.15.0 | PR | Phase | Summary | |----|-------|---------| | #290 | **A1** | \`fix(desktop)\`: pin Electron to ^41.7.1 so better-sqlite3 prebuilts apply (closes the v0.15.0 V8 ABI failure on all 3 build platforms) | | #291 | **A2** | \`fix(release)\`: restore version bumping via \`scripts/bump-version.mjs\` + \`@semantic-release/exec\` (closes the "tag at 0.14.0" trap) | | #292 | **B** | \`chore(ci)\`: workflow surface cleanup — actions @v4→@v5 sweep, \`windows-latest\` → \`windows-2025-vs2026\` pin, drop \`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24\`, \`if-no-files-found: error\`, \`permissions:\` blocks, HUSKY: '0' removal | | #293 | **A4** | \`chore(ci)\`: \`release.yml\` pre-flight dry-run gate + post-flight version assertion (closes the "silent no-release" trap) | | #294 | **C1** | \`ci\`: PR-title commitlint as a standalone workflow → required check on develop + main | | #295 | | \`fix(lint)\`: develop lint baseline (preserve-caught-error × 4 in encryptionService + mcp-server tsconfig split for ESLint projectService) | | #296 | | \`chore(ci)\`: unblock CI on develop — ignore CHANGELOG.md in Prettier (semantic-release writes it), \`pnpm install --ignore-scripts\` in setup job (same shape as release.yml + deploy-api.yml) | ### C2 — branch protection updates (already applied via gh api) Both \`develop\` and \`main\`: - **Required status checks**: \`lint\`, \`test\`, \`typecheck\`, \`CodeRabbit\`, \`commitlint\` - Force-pushes blocked - \`strict: true\` (PRs must be up to date) ### Release pipeline guardrails now in place - **Pre-merge**: PR-title commitlint blocks \`release:\`-style non-conventional squash titles upstream. - **Mid-release**: \`release.yml\` dry-run check fails loud if no release would be cut. \`scripts/bump-version.mjs\` mutates both \`package.json\` files. Post-flight assertion verifies both match the dry-run-announced version. - **Post-release**: \`build.yml\` artifact upload uses \`if-no-files-found: error\` (silent zero-asset releases die at upload). - **Native deps**: \`apps/desktop\` pinned to Electron 41.7.1 with prebuilt better-sqlite3. CI \`setup\` skips postinstall so workflow-side install never rebuilds native modules. ### Expected behavior of the Release pipeline after merge 1. Merge this PR → main tip advances. 2. Manually dispatch the **Release** workflow. 3. \`release.yml\` runs: - \`pnpm install --ignore-scripts\` (no native rebuild needed for semantic-release). - **Pre-flight dry-run** → "next release version is 0.15.1" (single \`fix(release):\` commit since v0.15.0). - \`npx semantic-release\`: - \`@semantic-release/exec\` runs \`node scripts/bump-version.mjs 0.15.1\` → both package.json files updated. - \`@semantic-release/git\` commits + pushes tag \`v0.15.1\`. - \`@semantic-release/github\` creates draft Release. - **Post-flight assertion** → both package.jsons read \`0.15.1\`. 4. Tag push triggers \`build.yml\` on macOS-14, windows-2025-vs2026, ubuntu-latest. 5. All 3 platforms succeed → publish job un-drafts the GitHub Release. 6. Auto-sync PR opens to merge main → develop. ### What still needs verification (post-release) - [ ] Tag push actually triggers Build (needs GH_TOKEN with workflow scope — A3 deferred, may need PAT regen) - [ ] Build completes on all 3 platforms with prebuilt better-sqlite3 (smoke-test desktop bundle after publish) - [ ] Auto-sync PR back to develop is created 🤖 This is the Phase 0 verification gate. Mobile + Plugin Marketplace UI remain deferred. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added PR title validation workflow for automated commit message compliance checks. * **Bug Fixes** * Enhanced error diagnostics in encryption operations. * Added pre-flight checks to release process to prevent failed deployments. * Stricter artifact validation in builds. * **Chores** * Updated GitHub Actions to latest stable versions. * Improved code formatting configuration and build scripts. * Adjusted Electron dependency version. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Why v0.15.1 Build (run 27212685957) failed on linux because electron-builder rejected the AppImage build: \`executableName contains invalid chars: @readieddesktop\`. publish job (\`needs: build\`) was skipped, no binaries reached the GitHub Release, v0.15.1 has been marked draft. This brings the linux fix from #298 (already on develop) into main as a cherry-pick so semantic-release can cut v0.15.2. ## Why not the original develop → main PR (#299) I created a sync PR (#300) earlier to bring main's release-cycle commits (CHANGELOG + version bump) back to develop. Squash-merging that sync PR collapsed the merge ancestry — develop has main's content but not main's commit history, so #299 stayed permanently BEHIND. Cherry-picking the linux fix straight to main sidesteps that. After this lands and Release cuts v0.15.2, the auto sync-develop job in build.yml will bring the v0.15.2 release commits back to develop with proper ancestry. ## Diff \`apps/desktop/package.json\`: \`"executableName": "readied"\` added to \`build.linux\`. Single line. mac+win already build cleanly because they use \`productName\` ("Readied") and \`appId\` (\`app.readied.desktop\`) respectively. ## Expected Build flow semantic-release reads main's commit log since v0.15.1: - \`fix(desktop): set linux.executableName for AppImage build (#298)\` → patch bump → v0.15.2 cut as draft → Build runs on mac/win/linux → all 3 publish to draft → \`publish\` job undrafts → \`sync-develop\` PRs main → develop.
…-develop # Conflicts: # CHANGELOG.md # apps/desktop/package.json # package.json
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughThis PR updates the project to version 0.15.2 by incrementing the version numbers in both the root and desktop app package manifests, and adds a corresponding changelog entry documenting a Linux executableName bug fix. The changelog contains unresolved Git merge conflict markers. ChangesRelease 0.15.2
🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4443db6b05
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| <<<<<<< HEAD | ||
| ======= |
There was a problem hiding this comment.
Remove unresolved merge conflict markers
The committed changelog still contains Git conflict markers (<<<<<<<, =======, >>>>>>>). In the release-sync path this will publish a malformed CHANGELOG and can confuse any tooling or readers that consume the top release entry, so the conflict should be resolved before merging.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@CHANGELOG.md`:
- Around line 1-9: The CHANGELOG.md contains unresolved Git conflict markers
(<<<<<<< HEAD, =======, >>>>>>> origin/main) around the v0.15.2 entry; remove
those markers and reconcile the two blocks into a single clean release section
(preserve the intended version header, date, commit id and bullet line,
deduplicate repeated issue numbers), ensuring the file contains only the final
changelog content for v0.15.2 and no leftover merge artifacts so
release.config.js commits a valid CHANGELOG.md.
🪄 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: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 60b3e878-12db-482a-898c-4b5c634268de
📒 Files selected for processing (3)
CHANGELOG.mdapps/desktop/package.jsonpackage.json
| <<<<<<< HEAD | ||
| ======= | ||
| ## [0.15.2](https://github.com/tomymaritano/readide/compare/v0.15.1...v0.15.2) (2026-06-09) | ||
|
|
||
| ### Bug Fixes | ||
|
|
||
| * **release:** cut v0.15.2 with linux executableName fix ([#301](https://github.com/tomymaritano/readide/issues/301)) ([33769fc](https://github.com/tomymaritano/readide/commit/33769fc8be341b4787d06260bb1b0e45486fac8c)), closes [#298](https://github.com/tomymaritano/readide/issues/298) [#299](https://github.com/tomymaritano/readide/issues/299) [#300](https://github.com/tomymaritano/readide/issues/300) [#299](https://github.com/tomymaritano/readide/issues/299) [#298](https://github.com/tomymaritano/readide/issues/298) | ||
|
|
||
| >>>>>>> origin/main |
There was a problem hiding this comment.
Resolve merge conflict markers before merge.
CHANGELOG.md still contains unresolved Git conflict markers, so this PR is carrying a broken merge artifact into a release-tracked file (release.config.js commits CHANGELOG.md).
Suggested fix
-<<<<<<< HEAD
-=======
## [0.15.2](https://github.com/tomymaritano/readide/compare/v0.15.1...v0.15.2) (2026-06-09)
### Bug Fixes
* **release:** cut v0.15.2 with linux executableName fix ([`#301`](https://github.com/tomymaritano/readide/issues/301)) ([33769fc](https://github.com/tomymaritano/readide/commit/33769fc8be341b4787d06260bb1b0e45486fac8c)), closes [`#298`](https://github.com/tomymaritano/readide/issues/298) [`#299`](https://github.com/tomymaritano/readide/issues/299) [`#300`](https://github.com/tomymaritano/readide/issues/300) [`#299`](https://github.com/tomymaritano/readide/issues/299) [`#298`](https://github.com/tomymaritano/readide/issues/298)
-
->>>>>>> origin/main🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 1-1: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 3-3: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
[warning] 3-3: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Above
(MD022, blanks-around-headings)
[warning] 5-5: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CHANGELOG.md` around lines 1 - 9, The CHANGELOG.md contains unresolved Git
conflict markers (<<<<<<< HEAD, =======, >>>>>>> origin/main) around the v0.15.2
entry; remove those markers and reconcile the two blocks into a single clean
release section (preserve the intended version header, date, commit id and
bullet line, deduplicate repeated issue numbers), ensuring the file contains
only the final changelog content for v0.15.2 and no leftover merge artifacts so
release.config.js commits a valid CHANGELOG.md.
…ync (#305) ## Summary The v0.15.2 sync (#302) committed `CHANGELOG.md` with unresolved merge conflict markers (`<<<<<<< HEAD` / `=======` / `>>>>>>> origin/main`). This makes the release PR #304 (`develop` → `main`) report `CONFLICTING`. This PR restores `CHANGELOG.md` on `develop` to match `main` exactly (the canonical version — semantic-release writes the changelog on `main`). Identical content on both sides means #304 merges cleanly. **Diff: 3 deleted lines** (the markers), nothing else. ## Unblocks - #304 — release PR for v0.15.3 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Auto sync of v0.15.2 release commits (CHANGELOG.md + version bump to 0.15.2). The build.yml sync-develop job tried to create this but GH_TOKEN lacks createPullRequest permission (
Resource not accessible by personal access token), so it's done manually here. Same root cause as the tag→Build auto-trigger gap (A3 — token scope).Summary by CodeRabbit