diff --git a/Config/Shared.xcconfig b/Config/Shared.xcconfig index eba75cd..194cbf0 100644 --- a/Config/Shared.xcconfig +++ b/Config/Shared.xcconfig @@ -1,3 +1,7 @@ #include? "Local.xcconfig" CODE_SIGN_STYLE = Automatic + +// Version numbers — bump these once per release; all targets inherit them. +MARKETING_VERSION = 1.2 +CURRENT_PROJECT_VERSION = 1 diff --git a/Hemera.xcodeproj/project.pbxproj b/Hemera.xcodeproj/project.pbxproj index 4da98b2..31c2854 100644 --- a/Hemera.xcodeproj/project.pbxproj +++ b/Hemera.xcodeproj/project.pbxproj @@ -453,7 +453,6 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CURRENT_PROJECT_VERSION = 1; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Hemera/Info.plist; @@ -467,7 +466,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.adborbas.hemera.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -486,7 +484,6 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CURRENT_PROJECT_VERSION = 1; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Hemera/Info.plist; @@ -500,7 +497,6 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.adborbas.hemera.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -518,9 +514,7 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.adborbas.hemera.app.tests; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; @@ -537,9 +531,7 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.adborbas.hemera.app.tests; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; @@ -556,9 +548,7 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.adborbas.hemera.app.uitests; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; @@ -575,9 +565,7 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = com.adborbas.hemera.app.uitests; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; diff --git a/RELEASING.md b/RELEASING.md index af0125a..add031f 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -8,16 +8,15 @@ Hemera uses release branches to allow development to continue on `main` while a ```bash git checkout -b release/1.0.0 main ``` -2. In `CHANGELOG.md`, rename `## [Unreleased]` → `## [1.0.0] - YYYY-MM-DD` -3. Bump the marketing version in Xcode project settings if needed -4. Commit: `"Prepare release 1.0.0"` -5. Push and submit to Apple for review +2. Bump `MARKETING_VERSION` in `Config/Shared.xcconfig` to match the release (e.g. `1.0.0`). All targets inherit it from there. +3. Commit: `"Prepare release 1.0.0"` +4. Push and submit to Apple for review ## Fixing issues during review 1. Create a fix branch from `release/1.0.0` (not from `main`) 2. Open a PR targeting `release/1.0.0` -3. Update the changelog under `[1.0.0]` in the same PR +3. If re-uploading to App Store Connect, bump `CURRENT_PROJECT_VERSION` in `Config/Shared.xcconfig` — the build number must be unique per marketing version. ## Shipping @@ -30,7 +29,7 @@ Once Apple approves: ``` 2. Create a GitHub release from the tag: ```bash - gh release create v1.0.0 --title "1.0.0" --notes "See CHANGELOG.md for details." + gh release create v1.0.0 --title "1.0.0" --notes "Release 1.0.0" ``` ## Merging back to main @@ -40,7 +39,7 @@ git checkout main git merge release/1.0.0 --no-ff -m "Merge release/1.0.0 back to main" ``` -Resolve the changelog conflict by keeping both the `[Unreleased]` section (with any new entries added to `main`) and the `[1.0.0]` section below it. Then delete the release branch: +Then delete the release branch: ```bash git branch -d release/1.0.0