Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Scripts/check_ci_release_workflows.rb
Original file line number Diff line number Diff line change
Expand Up @@ -475,9 +475,9 @@

releasing_docs = File.file?(releasing_docs_path) ? File.read(releasing_docs_path) : ""
check.call(releasing_docs.include?("environment protection rule must allow only protected tags matching `v*`"), "Release guide must require exact environment tag restrictions")
check.call(releasing_docs.include?("`workflow_dispatch` reruns must use `--ref v4.0.5b46`"), "Release guide must document tag-ref manual dispatch")
check.call(releasing_docs.include?("`workflow_dispatch` reruns must use `--ref v4.0.5b47`"), "Release guide must document tag-ref manual dispatch")
check.call(
releasing_docs.include?("gh workflow run appcast.yml --ref v4.0.5b46 -f tag=v4.0.5b46"),
releasing_docs.include?("gh workflow run appcast.yml --ref v4.0.5b47 -f tag=v4.0.5b47"),
"Release guide must document exact tag-bound appcast dispatch"
)
check.call(
Expand Down
4 changes: 2 additions & 2 deletions Scripts/check_fork_identity.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ readonly tests_id="dev.jacobcx.Xcodes.Tests"
readonly helper_id="dev.jacobcx.Xcodes.Helper"
readonly team_id="K2648T24P4"
readonly marketing_version="4.0.5"
readonly build_number="46"
readonly build_number="47"
readonly app_copyright="Fork contributions © 2026 JacobCXDev. Upstream contributors retain their copyrights."
# shellcheck disable=SC2016 # Xcode expands this build-setting literal, not the shell.
readonly app_requirement='identifier "dev.jacobcx.Xcodes" and info [CFBundleShortVersionString] >= "1.0.0" and anchor apple generic and certificate leaf[subject.OU] = "$(CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT)"'
Expand Down Expand Up @@ -183,7 +183,7 @@ if [[ -e "$repo_root/Xcodes/Frontend/XcodeList/BottomStatusBar.swift" ]] \
fail "Obsolete main-window footer remains"
fi
require_literal "DEVELOPER_ID_APPLICATION_P12_BASE64" "$release_documentation"
require_literal "v4.0.5b46" "$release_documentation"
require_literal "v4.0.5b47" "$release_documentation"

if grep -n -F -- 'Jacob Clayden' "$readme" "$about_source" "$app_info_plist"; then
fail "Legal name leaked into public-facing fork branding"
Expand Down
2 changes: 1 addition & 1 deletion Scripts/test_ci_release_workflows.sh
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ mutate_and_reject publish_unexpected_control \
mutate_and_reject missing_release_drafter_timeout \
'path = File.join(ARGV.fetch(0), ".github/workflows/release-drafter.yml"); data = YAML.safe_load_file(path, aliases: false); data["jobs"]["update_release_draft"].delete("timeout-minutes"); File.write(path, YAML.dump(data) + "# bounded timeout\n")'
mutate_and_reject missing_appcast_dispatch_docs \
'path = File.join(ARGV.fetch(0), "docs/RELEASING.md"); text = File.read(path).sub("gh workflow run appcast.yml --ref v4.0.5b46 -f tag=v4.0.5b46", "gh workflow run appcast.yml --ref main -f tag=latest"); File.write(path, text)'
'path = File.join(ARGV.fetch(0), "docs/RELEASING.md"); text = File.read(path).sub("gh workflow run appcast.yml --ref v4.0.5b47 -f tag=v4.0.5b47", "gh workflow run appcast.yml --ref main -f tag=latest"); File.write(path, text)'
# shellcheck disable=SC2016 # Documentation code spans must remain literal in the mutation.
mutate_and_reject missing_reusable_ref_docs \
'path = File.join(ARGV.fetch(0), "docs/RELEASING.md"); text = File.read(path).sub("Reusable workflows receive the caller'\''s `github.ref`; the appcast build requires that ref to equal `refs/tags/<tag>`", "Reusable workflows are called after release publication"); File.write(path, text)'
Expand Down
6 changes: 3 additions & 3 deletions Xcodes.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1072,7 +1072,7 @@
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 46;
CURRENT_PROJECT_VERSION = 47;
DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\"";
DEVELOPMENT_TEAM = K2648T24P4;
ENABLE_HARDENED_RUNTIME = NO;
Expand Down Expand Up @@ -1325,7 +1325,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 46;
CURRENT_PROJECT_VERSION = 47;
DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\"";
DEVELOPMENT_TEAM = K2648T24P4;
ENABLE_HARDENED_RUNTIME = YES;
Expand Down Expand Up @@ -1354,7 +1354,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 46;
CURRENT_PROJECT_VERSION = 47;
DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\"";
DEVELOPMENT_TEAM = K2648T24P4;
ENABLE_HARDENED_RUNTIME = YES;
Expand Down
14 changes: 7 additions & 7 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ Configure GitHub Actions to allow selected pinned actions. Protect the `v*` tag
3. Commit the version change. Create an annotated tag whose values exactly match the project, for example:

```sh
git tag -a v4.0.5b46 -m 'Xcodes 4.0.5 build 46'
git push origin v4.0.5b46
git tag -a v4.0.5b47 -m 'Xcodes 4.0.5 build 47'
git push origin v4.0.5b47
```

4. Approve the protected `release` environment deployment after confirming the tag and commit.
Expand All @@ -56,16 +56,16 @@ Configure GitHub Actions to allow selected pinned actions. Protect the `v*` tag

Tags using this contract are stable releases. The workflow does not infer prerelease status from the build-number suffix. Add an explicit, reviewed tag grammar and matching appcast policy before publishing prereleases.

For a manual rerun, `workflow_dispatch` reruns must use `--ref v4.0.5b46` and the same `release_tag`; selecting a branch is rejected before credential files are written:
For a manual rerun, `workflow_dispatch` reruns must use `--ref v4.0.5b47` and the same `release_tag`; selecting a branch is rejected before credential files are written:

```sh
gh workflow run release.yml --ref v4.0.5b46 -f release_tag=v4.0.5b46
gh workflow run release.yml --ref v4.0.5b47 -f release_tag=v4.0.5b47
```

A manual appcast rerun must likewise use the published tag for both the workflow ref and input (`--ref <tag> -f tag=<same tag>`):

```sh
gh workflow run appcast.yml --ref v4.0.5b46 -f tag=v4.0.5b46
gh workflow run appcast.yml --ref v4.0.5b47 -f tag=v4.0.5b47
```

## Local packaging dry run
Expand All @@ -77,8 +77,8 @@ export NOTARY_KEY_ID='<key identifier>'
export NOTARY_ISSUER_ID='<issuer UUID>'
export NOTARY_KEY_PATH='/absolute/path/AuthKey_ID.p8'
export SPARKLE_PRIVATE_KEY_FILE='/absolute/path/sparkle-private-key'
bash Scripts/package_release.sh v4.0.5b46
bash Scripts/validate_release_artifacts.sh Product/v4.0.5b46 v4.0.5b46
bash Scripts/package_release.sh v4.0.5b47
bash Scripts/validate_release_artifacts.sh Product/v4.0.5b47 v4.0.5b47
```

Do not paste secret values into shell history on shared machines. Prefer a local secret manager or a short-lived protected shell environment.
Expand Down
Loading