From 17a6b61082bdb1ad24808c8e2ff6a28c868d9369 Mon Sep 17 00:00:00 2001 From: Jacob Clayden Date: Wed, 12 Aug 2026 18:20:08 +0100 Subject: [PATCH] chore: prepared build 47 release - Updated release metadata to build 47. - Aligned immutable tag examples and guards. --- Scripts/check_ci_release_workflows.rb | 4 ++-- Scripts/check_fork_identity.sh | 4 ++-- Scripts/test_ci_release_workflows.sh | 2 +- Xcodes.xcodeproj/project.pbxproj | 6 +++--- docs/RELEASING.md | 14 +++++++------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Scripts/check_ci_release_workflows.rb b/Scripts/check_ci_release_workflows.rb index ceebc805..b77436e6 100755 --- a/Scripts/check_ci_release_workflows.rb +++ b/Scripts/check_ci_release_workflows.rb @@ -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( diff --git a/Scripts/check_fork_identity.sh b/Scripts/check_fork_identity.sh index 8cacbd88..91654772 100755 --- a/Scripts/check_fork_identity.sh +++ b/Scripts/check_fork_identity.sh @@ -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)"' @@ -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" diff --git a/Scripts/test_ci_release_workflows.sh b/Scripts/test_ci_release_workflows.sh index 51c835a7..76138e94 100755 --- a/Scripts/test_ci_release_workflows.sh +++ b/Scripts/test_ci_release_workflows.sh @@ -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/`", "Reusable workflows are called after release publication"); File.write(path, text)' diff --git a/Xcodes.xcodeproj/project.pbxproj b/Xcodes.xcodeproj/project.pbxproj index 143c767d..279f6ba6 100644 --- a/Xcodes.xcodeproj/project.pbxproj +++ b/Xcodes.xcodeproj/project.pbxproj @@ -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; @@ -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; @@ -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; diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 3260b195..2a1162d7 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -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. @@ -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 -f 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 @@ -77,8 +77,8 @@ export NOTARY_KEY_ID='' export NOTARY_ISSUER_ID='' 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.