From c6a3086eb5464af79b2c6eaeee3349036395e2bc Mon Sep 17 00:00:00 2001 From: zhukang <274546966@qq.com> Date: Mon, 23 Mar 2026 19:50:18 +0800 Subject: [PATCH] chore(release): prepare v1.0.3 --- .../Sources/AtlasApp/AtlasAppModel.swift | 4 ++-- .../src/data/release-fallback.json | 2 +- Atlas.xcodeproj/project.pbxproj | 16 ++++++------- CHANGELOG.md | 23 +++++++++++++++++++ Docs/Execution/Release-Signing.md | 10 ++++---- project.yml | 8 +++---- 6 files changed, 43 insertions(+), 20 deletions(-) diff --git a/Apps/AtlasApp/Sources/AtlasApp/AtlasAppModel.swift b/Apps/AtlasApp/Sources/AtlasApp/AtlasAppModel.swift index 79e5d0c..cb316af 100644 --- a/Apps/AtlasApp/Sources/AtlasApp/AtlasAppModel.swift +++ b/Apps/AtlasApp/Sources/AtlasApp/AtlasAppModel.swift @@ -100,11 +100,11 @@ final class AtlasAppModel: ObservableObject { } var appVersion: String { - Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0.2" + Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0.3" } var appBuild: String { - Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "3" + Bundle.main.infoDictionary?["CFBundleVersion"] as? String ?? "4" } func checkForUpdate() async { diff --git a/Apps/LandingSite/src/data/release-fallback.json b/Apps/LandingSite/src/data/release-fallback.json index fc2c3e5..4b32ed6 100644 --- a/Apps/LandingSite/src/data/release-fallback.json +++ b/Apps/LandingSite/src/data/release-fallback.json @@ -1,6 +1,6 @@ { "channel": "prerelease", - "version": "1.0.2", + "version": "1.0.3", "publishedAt": null, "releaseUrl": "https://github.com/CSZHK/CleanMyPc/releases", "assets": { diff --git a/Atlas.xcodeproj/project.pbxproj b/Atlas.xcodeproj/project.pbxproj index 7f3767a..65e91cb 100644 --- a/Atlas.xcodeproj/project.pbxproj +++ b/Atlas.xcodeproj/project.pbxproj @@ -458,7 +458,7 @@ buildSettings = { AD_HOC_CODE_SIGNING_ALLOWED = YES; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 4; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleShortVersionString = "$(MARKETING_VERSION)"; INFOPLIST_KEY_CFBundleVersion = "$(CURRENT_PROJECT_VERSION)"; @@ -467,7 +467,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = com.atlasformac.app.worker; PRODUCT_NAME = AtlasWorkerXPC; SDKROOT = macosx; @@ -535,7 +535,7 @@ buildSettings = { AD_HOC_CODE_SIGNING_ALLOWED = YES; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 4; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleShortVersionString = "$(MARKETING_VERSION)"; INFOPLIST_KEY_CFBundleVersion = "$(CURRENT_PROJECT_VERSION)"; @@ -544,7 +544,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = com.atlasformac.app.worker; PRODUCT_NAME = AtlasWorkerXPC; SDKROOT = macosx; @@ -557,7 +557,7 @@ AD_HOC_CODE_SIGNING_ALLOWED = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 4; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = "Atlas for Mac"; INFOPLIST_KEY_CFBundleShortVersionString = "$(MARKETING_VERSION)"; @@ -569,7 +569,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = com.atlasformac.app; PRODUCT_MODULE_NAME = AtlasApp; PRODUCT_NAME = "Atlas for Mac"; @@ -665,7 +665,7 @@ AD_HOC_CODE_SIGNING_ALLOWED = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 4; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = "Atlas for Mac"; INFOPLIST_KEY_CFBundleShortVersionString = "$(MARKETING_VERSION)"; @@ -677,7 +677,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 1.0.2; + MARKETING_VERSION = 1.0.3; PRODUCT_BUNDLE_IDENTIFIER = com.atlasformac.app; PRODUCT_MODULE_NAME = AtlasApp; PRODUCT_NAME = "Atlas for Mac"; diff --git a/CHANGELOG.md b/CHANGELOG.md index e9eccb1..8b0c758 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,29 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [1.0.3] - 2026-03-23 + +### Added + +- `Apps` uninstall preview now records structured review-only evidence groups, including observed paths for support files, caches, preferences, logs, and launch items. +- Added scripted fixture baselines for `Apps` evidence and `Smart Clean` verification through `scripts/atlas/apps-manual-fixtures.sh`, `scripts/atlas/apps-evidence-acceptance.sh`, and the expanded Smart Clean fixture script. +- Added versioned workspace-state persistence and schema-versioned app recovery payloads so future recovery hardening can evolve without immediately dropping older local state. +- Expanded real `Smart Clean` execution coverage for additional high-confidence user-owned roots, including CoreSimulator caches and common developer cache locations such as Gradle, Ivy, and SwiftPM caches. + +### Changed + +- App restore now clears stale uninstall preview state and refreshes app inventory before the `Apps` surface reuses footprint counts. +- `History` recovery detail now surfaces recorded recovery evidence, including payload schema version, review-only uninstall groups, and restore-path mappings when available. +- `full-acceptance` now treats fixture-script validation as a routine release-readiness gate alongside packaging, install, launch, and UI automation checks. +- Local protocol and persistence contracts were tightened to distinguish versioned workspace-state storage from legacy compatibility fallback, while keeping review-only evidence explicitly non-executable. + +### Fixed + +- Legacy unversioned workspace-state files now migrate forward into the current persisted envelope instead of breaking on the newer persistence shape. +- Revalidated the `1.0.3` release candidate with package tests, app tests, native packaging, DMG install verification, installed-app launch smoke, and native UI automation. +- Fixed the post-restore `Apps` trust gap where recovered app payloads could leave stale uninstall preview or stale footprint evidence visible until a manual refresh. + + ## [1.0.2] - 2026-03-14 ### Added diff --git a/Docs/Execution/Release-Signing.md b/Docs/Execution/Release-Signing.md index 076c310..7614c21 100644 --- a/Docs/Execution/Release-Signing.md +++ b/Docs/Execution/Release-Signing.md @@ -49,13 +49,13 @@ If preflight passes, the current machine is ready for signed packaging. Before pushing a release tag, align the app version, build number, and changelog skeleton: ```bash -./scripts/atlas/prepare-release.sh 1.0.2 +./scripts/atlas/prepare-release.sh 1.0.3 ``` Optional arguments: ```bash -./scripts/atlas/prepare-release.sh 1.0.2 3 2026-03-14 +./scripts/atlas/prepare-release.sh 1.0.3 4 2026-03-23 ``` This updates: @@ -64,7 +64,7 @@ This updates: - `Apps/AtlasApp/Sources/AtlasApp/AtlasAppModel.swift` - `CHANGELOG.md` -The script increments `CURRENT_PROJECT_VERSION` automatically when you omit the build number. Review the new changelog section before creating the `V1.0.2` tag. +The script increments `CURRENT_PROJECT_VERSION` automatically when you omit the build number. Review the new changelog section before creating the `V1.0.3` tag. ## Signed Packaging @@ -120,8 +120,8 @@ If those secrets are missing, the workflow automatically falls back to: Release flow: ```bash -git tag -a V1.0.2 -m "Release V1.0.2" -git push origin V1.0.2 +git tag -a V1.0.3 -m "Release V1.0.3" +git push origin V1.0.3 ``` That tag creates one GitHub Release containing: diff --git a/project.yml b/project.yml index 23c323a..001a7dc 100644 --- a/project.yml +++ b/project.yml @@ -38,8 +38,8 @@ targets: base: PRODUCT_BUNDLE_IDENTIFIER: com.atlasformac.app.worker PRODUCT_NAME: AtlasWorkerXPC - MARKETING_VERSION: "1.0.2" - CURRENT_PROJECT_VERSION: 3 + MARKETING_VERSION: "1.0.3" + CURRENT_PROJECT_VERSION: 4 GENERATE_INFOPLIST_FILE: YES INFOPLIST_KEY_CFBundleShortVersionString: $(MARKETING_VERSION) INFOPLIST_KEY_CFBundleVersion: $(CURRENT_PROJECT_VERSION) @@ -64,8 +64,8 @@ targets: PRODUCT_BUNDLE_IDENTIFIER: com.atlasformac.app PRODUCT_NAME: Atlas for Mac PRODUCT_MODULE_NAME: AtlasApp - MARKETING_VERSION: "1.0.2" - CURRENT_PROJECT_VERSION: 3 + MARKETING_VERSION: "1.0.3" + CURRENT_PROJECT_VERSION: 4 GENERATE_INFOPLIST_FILE: YES INFOPLIST_KEY_CFBundleShortVersionString: $(MARKETING_VERSION) INFOPLIST_KEY_CFBundleVersion: $(CURRENT_PROJECT_VERSION)