Skip to content

[codex] Gate desktop changelogs and release tags#8371

Merged
Git-on-my-level merged 2 commits into
mainfrom
codex/desktop-release-changelog-ci
Jun 25, 2026
Merged

[codex] Gate desktop changelogs and release tags#8371
Git-on-my-level merged 2 commits into
mainfrom
codex/desktop-release-changelog-ci

Conversation

@Git-on-my-level

@Git-on-my-level Git-on-my-level commented Jun 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add a PR lint guard requiring desktop changes to include a desktop/macos/CHANGELOG.json unreleased entry, with a no-changelog-needed label escape hatch for internal-only changes.
  • Point root AGENTS.md desktop guidance to the existing desktop changelog authoring instructions.
  • Replace per-merge desktop release tagging with a 3-minute release planner that skips tag creation while the latest Codemagic desktop release is queued or running, plus a scheduled retry path for accumulated merges.
  • Remove the app release workflow's duplicate desktop backend dev deploy; desktop_backend_auto_dev.yml remains responsible for Backend-Rust dev deploys.

Validation

  • Independent subagent review found no actionable issues.
  • python3 -m py_compile .github/scripts/check-desktop-changelog.py .github/scripts/plan-desktop-release.py
  • python3 -m json.tool desktop/macos/CHANGELOG.json
  • /Users/dazheng/go/1.23.4/bin/actionlint .github/workflows/desktop_auto_release.yml .github/workflows/lint.yml
  • git diff --check
  • Live release planner check correctly returned should_release=false while v0.11.533+11533-macos Codemagic release was in_progress.
  • force_release mode returned should_release=true for the same pending desktop changes.

Review in cubic

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fc175febee

ℹ️ 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".

Comment thread .github/scripts/plan-desktop-release.py Outdated
if ref is None:
output = git(["ls-files", "desktop/macos"])
else:
output = git(["diff", "--name-only", "--diff-filter=ACM", f"{ref}..HEAD", "--", "desktop/macos"])

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include deletions in desktop release planning

When the only desktop app change since the latest tag is a deletion (for example removing a Swift source or bundled resource), this --diff-filter=ACM diff returns no paths, so changes is empty and the workflow writes should_release=false. The push workflow is still triggered by a deleted desktop/macos/** path, but no macOS tag is created, so that removal never reaches Codemagic until a later non-delete desktop change happens.

Useful? React with 👍 / 👎.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found across 5 files

Confidence score: 2/5

  • In .github/scripts/plan-desktop-release.py, the Codemagic status check fails open on API errors, so the workflow can create a new release tag while the prior release state is unknown; this could produce overlapping or out-of-order desktop releases—treat API/read failures as blocking before merge.
  • In .github/scripts/plan-desktop-release.py, release planning misses deleted or renamed desktop files, which can set should_release=false even when real app changes happened; that risks silently skipping needed desktop releases—include delete/rename events in the change-detection logic before merging.
  • In .github/workflows/lint.yml, substring-based label matching can mis-detect labels (for example, matching not-no-changelog-needed) and incorrectly skip changelog requirements; this is low impact but noisy governance risk—switch to exact array membership matching in the workflow expression.

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread .github/scripts/plan-desktop-release.py Outdated
Comment thread .github/scripts/plan-desktop-release.py Outdated
Comment thread .github/workflows/lint.yml Outdated
@Git-on-my-level Git-on-my-level merged commit e32d8d3 into main Jun 25, 2026
2 checks passed
@Git-on-my-level Git-on-my-level deleted the codex/desktop-release-changelog-ci branch June 25, 2026 21:13

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a154a18af2

ℹ️ 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".

Comment on lines +59 to +60
if [ "${{ contains(github.event.pull_request.labels.*.name, 'no-changelog-needed') }}" = "true" ]; then
SKIP_FLAG="--skip"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Trigger lint when the skip label changes

The new no-changelog-needed escape hatch is evaluated only when this lint workflow runs, but this workflow still uses the default pull_request activity types, so adding the label after a failed changelog check will not start a new run, and removing the label after a skipped check will not invalidate the green status. In those PRs the label state and required check can stay out of sync until someone pushes another commit; add labeled/unlabeled to the PR trigger types if the label is meant to control enforcement.

Useful? React with 👍 / 👎.

Comment on lines +26 to +27
def changed_files(base_ref: str, head_ref: str) -> list[str]:
output = run_git(["diff", "--name-only", "--diff-filter=ACM", f"{base_ref}...{head_ref}"])

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include deletions in changelog enforcement

The release planner now considers deletions, but this PR lint guard still filters changed files with --diff-filter=ACM, which drops deleted desktop paths. A PR that only removes a user-facing desktop file or resource under desktop/macos/ will therefore leave requiring_changelog empty and pass without either an unreleased changelog entry or the no-changelog-needed label.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant