nvrsion: Add iOS version bump logic with two TestFlight versions (normal public beta and canary) to align with desktop releases, starting with “0.1.0” via Makefile, VERSION file, and scripts.

Nucleic-Promote: 1
Co-authored-by: Nucleic <[email protected]>
This commit is contained in:
2026-07-02 16:48:51 -07:00
co-authored by Nucleic
parent 42397d0de8
commit 36b2ca27d5
2 changed files with 25 additions and 10 deletions
@@ -10,6 +10,7 @@
BF00000000000000000001 /* NucleicProtocol in Frameworks */ = {isa = PBXBuildFile; productRef = PD00000000000000000001 /* NucleicProtocol */; }; BF00000000000000000001 /* NucleicProtocol in Frameworks */ = {isa = PBXBuildFile; productRef = PD00000000000000000001 /* NucleicProtocol */; };
BF00000000000000000002 /* NucleicRemoteWidgets.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = FR00000000000000000002 /* NucleicRemoteWidgets.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; BF00000000000000000002 /* NucleicRemoteWidgets.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = FR00000000000000000002 /* NucleicRemoteWidgets.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
E7D43FF12FF0806800BF2407 /* app-logo-file.icon in Resources */ = {isa = PBXBuildFile; fileRef = E7D43FF02FF0806800BF2407 /* app-logo-file.icon */; }; E7D43FF12FF0806800BF2407 /* app-logo-file.icon in Resources */ = {isa = PBXBuildFile; fileRef = E7D43FF02FF0806800BF2407 /* app-logo-file.icon */; };
E7D43FF12FF0806800BF2408 /* app-logo-canary.icon in Resources */ = {isa = PBXBuildFile; fileRef = E7D43FF02FF0806800BF2408 /* app-logo-canary.icon */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@@ -38,6 +39,7 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
E7D43FF02FF0806800BF2407 /* app-logo-file.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = "app-logo-file.icon"; sourceTree = "<group>"; }; E7D43FF02FF0806800BF2407 /* app-logo-file.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = "app-logo-file.icon"; sourceTree = "<group>"; };
E7D43FF02FF0806800BF2408 /* app-logo-canary.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; name = "app-logo-canary.icon"; path = "../../app-logo-canary.icon"; sourceTree = "<group>"; };
FR00000000000000000001 /* NucleicRemote.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NucleicRemote.app; sourceTree = BUILT_PRODUCTS_DIR; }; FR00000000000000000001 /* NucleicRemote.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NucleicRemote.app; sourceTree = BUILT_PRODUCTS_DIR; };
FR00000000000000000002 /* NucleicRemoteWidgets.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NucleicRemoteWidgets.appex; sourceTree = BUILT_PRODUCTS_DIR; }; FR00000000000000000002 /* NucleicRemoteWidgets.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NucleicRemoteWidgets.appex; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@@ -110,6 +112,7 @@
SG00000000000000000003 /* Shared */, SG00000000000000000003 /* Shared */,
GR00000000000000000002 /* Products */, GR00000000000000000002 /* Products */,
E7D43FF02FF0806800BF2407 /* app-logo-file.icon */, E7D43FF02FF0806800BF2407 /* app-logo-file.icon */,
E7D43FF02FF0806800BF2408 /* app-logo-canary.icon */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@@ -227,6 +230,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
E7D43FF12FF0806800BF2407 /* app-logo-file.icon in Resources */, E7D43FF12FF0806800BF2407 /* app-logo-file.icon in Resources */,
E7D43FF12FF0806800BF2408 /* app-logo-canary.icon in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -293,7 +297,8 @@
BC00000000000000000003 /* Debug */ = { BC00000000000000000003 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "app-logo-file"; ASSETCATALOG_COMPILER_APPICON_NAME = "$(NUCLEIC_APPICON)";
NUCLEIC_APPICON = "app-logo-file";
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = NucleicRemote/NucleicRemote.entitlements; CODE_SIGN_ENTITLEMENTS = NucleicRemote/NucleicRemote.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
@@ -308,13 +313,16 @@
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_CFBundleDisplayName = "Nucleic$(NUCLEIC_NAME_SUFFIX)";
NUCLEIC_NAME_SUFFIX = "";
IPHONEOS_DEPLOYMENT_TARGET = 17.0; IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 0.1.0; MARKETING_VERSION = 0.1.0;
PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote"; PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote$(NUCLEIC_BUNDLE_SUFFIX)";
NUCLEIC_BUNDLE_SUFFIX = "";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -330,7 +338,8 @@
BC00000000000000000004 /* Release */ = { BC00000000000000000004 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "app-logo-file"; ASSETCATALOG_COMPILER_APPICON_NAME = "$(NUCLEIC_APPICON)";
NUCLEIC_APPICON = "app-logo-file";
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = NucleicRemote/NucleicRemote.entitlements; CODE_SIGN_ENTITLEMENTS = NucleicRemote/NucleicRemote.entitlements;
CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_IDENTITY = "Apple Development";
@@ -345,13 +354,16 @@
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_CFBundleDisplayName = "Nucleic$(NUCLEIC_NAME_SUFFIX)";
NUCLEIC_NAME_SUFFIX = "";
IPHONEOS_DEPLOYMENT_TARGET = 17.0; IPHONEOS_DEPLOYMENT_TARGET = 17.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 0.1.0; MARKETING_VERSION = 0.1.0;
PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote"; PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote$(NUCLEIC_BUNDLE_SUFFIX)";
NUCLEIC_BUNDLE_SUFFIX = "";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -383,7 +395,8 @@
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 0.1.0; MARKETING_VERSION = 0.1.0;
PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote.widgets"; PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote$(NUCLEIC_BUNDLE_SUFFIX).widgets";
NUCLEIC_BUNDLE_SUFFIX = "";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -413,7 +426,8 @@
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = 0.1.0; MARKETING_VERSION = 0.1.0;
PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote.widgets"; PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote$(NUCLEIC_BUNDLE_SUFFIX).widgets";
NUCLEIC_BUNDLE_SUFFIX = "";
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+5 -4
View File
@@ -1,10 +1,11 @@
# Nucleic release version state — the single source of truth for this app's version. # Nucleic release version state — the single source of truth for this app's version.
# Bumped by scripts/bump-version.sh on every release (Mac: ./VERSION; iOS: ios/VERSION). # Bumped by scripts/bump-version.sh on every release (Mac: ./VERSION; iOS: ios/VERSION).
# Shell-sourceable (KEY=value). Don't hand-edit during a release — bump with e.g.: # Shell-sourceable (KEY=value). Don't hand-edit during a release — bump with e.g.:
# make ios-release # build-only (the iOS default): 0.1.0 -> 0.1.0, build +1 # make ios-release-beta # public beta, minor (the beta default): 0.1.0 -> 0.2.0, build +1
# make ios-release BUMP=minor # 0.1.0 -> 0.2.0, build +1 # make ios-release-canary # canary, build-only (the canary default): 0.1.0 -> 0.1.0, build +1
# make ios-release BUMP=major # 0.1.0 -> 1.0.0, build +1 # make ios-release-beta BUMP=major # 0.1.0 -> 1.0.0, build +1
# make ios-release BUMP=patch # 0.1.0 -> 0.1.1, build +1 # make ios-release-beta BUMP=patch # 0.1.0 -> 0.1.1, build +1
# make ios-release-beta BUMP=build # 0.1.0 -> 0.1.0 (build number only), build +1
# #
# NUCLEIC_MARKETING_VERSION semantic version -> CFBundleShortVersionString # NUCLEIC_MARKETING_VERSION semantic version -> CFBundleShortVersionString
# NUCLEIC_BUILD_NUMBER monotonic build -> CFBundleVersion (always +1 per release) # NUCLEIC_BUILD_NUMBER monotonic build -> CFBundleVersion (always +1 per release)