C1.source/Apptag/Info.plist
@@ -32,7 +32,7 @@ </dict> </array> <key>CFBundleVersion</key> <string>20260707.1242</string> <string>20260707.1506</string> <key>LSApplicationCategoryType</key> <string>public.app-category.utilities</string> <key>LSMinimumSystemVersion</key> C1.source/CHANGELOG.md
@@ -6,7 +6,7 @@ - 设置页顶部固定 Pro 状态 / 引导行移除外层圆角矩形背景和描边,保留原位置、身份文案、购买和恢复购买入口 - 扩展 Pro 门禁 QA,防止该固定 Pro 行回退为带外框样式 - 版本号更新为 `8.3.6`,Build 更新为 `20260707.1242` - 版本号更新为 `8.3.6`,Build 更新为 `20260707.1506` ## [8.3.5] — 2026-07-02 C1.source/Scripts/macos14_build_metadata_qa.sh
@@ -17,6 +17,20 @@ [[ -f "$INFO_PLIST" ]] || fail "Info.plist not found: $INFO_PLIST" [[ -x "$EXECUTABLE" ]] || fail "executable not found or not executable: $EXECUTABLE" unreadable_dirs="$(find "$APP_BUNDLE" -type d ! -perm -005 -print | head -20)" if [[ -n "$unreadable_dirs" ]]; then fail "app bundle contains directories not readable/searchable by non-root users: $unreadable_dirs" fi unreadable_files="$(find "$APP_BUNDLE" -type f ! -perm -004 -print | head -20)" if [[ -n "$unreadable_files" ]]; then fail "app bundle contains files not readable by non-root users: $unreadable_files" fi if find "$EXECUTABLE" -type f ! -perm -005 -print | grep -q .; then fail "main executable is not readable/executable by non-root users: $EXECUTABLE" fi actual_minimum_system="$(/usr/libexec/PlistBuddy -c 'Print :LSMinimumSystemVersion' "$INFO_PLIST")" if [[ "$actual_minimum_system" != "$EXPECTED_MINIMUM_SYSTEM" ]]; then fail "LSMinimumSystemVersion expected $EXPECTED_MINIMUM_SYSTEM, got $actual_minimum_system" C1.source/build.sh
@@ -317,6 +317,9 @@ echo "==> Setting permissions..." chmod +x "$MACOS_DIR/$APP_NAME" find "$APP_BUNDLE" -type d -exec chmod 755 {} + find "$APP_BUNDLE" -type f -exec chmod 644 {} + chmod 755 "$MACOS_DIR/$APP_NAME" echo "==> Stripping debug symbols..." strip -x "$MACOS_DIR/$APP_NAME" C2.builds/AppStore-8.3.6-20260707.1506/Archive/TagLauncher-8.3.6-build20260707.1506.dmgBinary files differ
C2.builds/AppStore-8.3.6-20260707.1506/SHA256SUMS.txt
New file @@ -0,0 +1,2 @@ a35525d303b3ee85d40c16f595b9461fc912c5fab559d20d4881b1776fa44f35 Archive/TagLauncher-8.3.6-build20260707.1506.dmg 933043a2dac0be016b7dfd9effdf048462456592d340f68fd3fe5653052d59b9 Upload/TagLauncher-8.3.6-build20260707.1506.pkg C2.builds/AppStore-8.3.6-20260707.1506/Upload/TagLauncher-8.3.6-build20260707.1506.pkgBinary files differ
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1242/UPLOAD_FAILED_ASC_VALIDATION.md
New file @@ -0,0 +1,41 @@ # Upload Failed - Do Not Upload This Package Date: 2026-07-07 Build: `8.3.6 (20260707.1242)` ## Result Do not upload: - `Upload/TagLauncher-8.3.6-build20260707.1242.pkg` Transporter / App Store Connect rejected this package with: ```text Validation failed (409) The installer package includes files that are only readable by the root user. ``` ## Root Cause The package payload preserved an app bundle directory with mode `700`, specifically the localization resource directory copied into: ```text TagLauncher.app/Contents/Resources/Localization ``` After installation this would be owned by `root`, preventing non-root users from reading resources needed for code signature verification. ## Replacement Use the rebuilt package instead: ```text ../AppStore-8.3.6-20260707.1506/Upload/TagLauncher-8.3.6-build20260707.1506.pkg ``` Replacement SHA256: ```text 933043a2dac0be016b7dfd9effdf048462456592d340f68fd3fe5653052d59b9 ``` K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/Archive/TagLauncher-8.3.6-build20260707.1506.dmgBinary files differ
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/PKG_PREFLIGHT_REPORT.md
New file @@ -0,0 +1,63 @@ # TagLauncher 8.3.6 App Store PKG Preflight Date: 2026-07-07 Version: 8.3.6 Build: 20260707.1506 ## Package - Upload package: `Upload/TagLauncher-8.3.6-build20260707.1506.pkg` - Local rollback DMG: `Archive/TagLauncher-8.3.6-build20260707.1506.dmg` - Replaces failed upload package: `AppStore-8.3.6-20260707.1242/Upload/TagLauncher-8.3.6-build20260707.1242.pkg` ## Signing - App signing identity: `3rd Party Mac Developer Application: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)` - Installer signing identity: `3rd Party Mac Developer Installer: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)` - Embedded provisioning profile: `TagLauncher Mac App Store 20260707` - Provisioning profile UUID: `3ee49163-ef5c-4467-8971-f93cc1fc6b6d` ## Payload Metadata - `CFBundleShortVersionString`: `8.3.6` - `CFBundleVersion`: `20260707.1506` - Bundle ID: `com.taglauncher.app` - Team ID: `CR3J54M8BQ` ## Permission Gate The failed `20260707.1242` upload was rejected because a payload directory was only readable by root after installation. The rebuilt payload was expanded and checked with: ```bash find "$APP" \( -type d ! -perm -005 -o -type f ! -perm -004 \) -ls ``` Result: - PASS: no app bundle directories are restricted from non-root search/read access. - PASS: no app bundle files are restricted from non-root read access. - PASS: main executable is readable and executable by non-root users. ## Verification Commands completed successfully: ```bash pkgutil --check-signature Upload/TagLauncher-8.3.6-build20260707.1506.pkg pkgutil --expand-full Upload/TagLauncher-8.3.6-build20260707.1506.pkg /tmp/taglauncher-836-1506-pkg-preflight/expanded codesign --verify --deep --strict --verbose=2 /tmp/taglauncher-836-1506-pkg-preflight/expanded/com.taglauncher.app.pkg/Payload/TagLauncher.app hdiutil verify Archive/TagLauncher-8.3.6-build20260707.1506.dmg shasum -a 256 -c SHA256SUMS.txt ``` Non-gating local distribution check: - `spctl -a -vv -t install` may reject App Store upload packages signed with `3rd Party Mac Developer Installer`. - This artifact is for App Store Connect upload, not Developer ID local distribution. Treat `pkgutil --check-signature`, payload `codesign --verify`, embedded provisioning profile, payload permission gate, and ASC upload validation as the release gates. ## Hashes ```text a35525d303b3ee85d40c16f595b9461fc912c5fab559d20d4881b1776fa44f35 Archive/TagLauncher-8.3.6-build20260707.1506.dmg 933043a2dac0be016b7dfd9effdf048462456592d340f68fd3fe5653052d59b9 Upload/TagLauncher-8.3.6-build20260707.1506.pkg ``` K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/QA/taglauncher-8.3.6-settings-about-no-pro-header-frame.png
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/QA_RELEASE_EVIDENCE.md
New file @@ -0,0 +1,62 @@ # TagLauncher 8.3.6 QA Release Evidence Date: 2026-07-07 Build: `8.3.6 (20260707.1506)` ## User-Facing Requirement The Settings fixed Pro status / guidance row must not have an outer rounded rectangle frame. ## Transporter Regression Fix Apple Transporter rejected build `20260707.1242`: ```text The installer package includes files that are only readable by the root user. ``` The replacement build `20260707.1506` normalizes app bundle permissions before signing and adds a QA gate that fails if any app payload directory/file is not readable by non-root users. ## Visual Smoke Evidence screenshot: - `QA/taglauncher-8.3.6-settings-about-no-pro-header-frame.png` Result: - PASS: fixed Pro status / guidance row remains in the same position. - PASS: row has no outer rounded rectangle background or border. - PASS: identity text, unlock button, restore purchase button, tab layout, and app version display remain visible. ## Automated / Static QA Passed: ```bash bash Scripts/pro_feature_gate_qa.sh bash Scripts/pro_localization_qa.sh bash Scripts/macos14_availability_typecheck_qa.sh bash Scripts/macos14_build_metadata_qa.sh build/TagLauncher.app codesign --verify --deep --strict --verbose=2 build/TagLauncher.app pkgutil --check-signature Upload/TagLauncher-8.3.6-build20260707.1506.pkg hdiutil verify Archive/TagLauncher-8.3.6-build20260707.1506.dmg shasum -a 256 -c SHA256SUMS.txt ``` Package payload preflight: - PASS: no root-only readable app bundle directories/files in the expanded package payload. - PASS: expanded payload app code signature verifies. - PASS: embedded provisioning profile matches Team ID `CR3J54M8BQ`. Non-PASS items inherited from the previous 8.3.6 gate: - `bash Scripts/quick_search_app_name_qa.sh`: script returned `SKIP Sunlogin wrapper app not installed at /Applications/贝锐向日葵被控.app`. - `bash Scripts/window_logic_qa.sh`: script returned `FAIL: cliclick is required for window-position click checks.` ## Release Gate Conclusion - App Store upload package: PASS. - Use `Upload/TagLauncher-8.3.6-build20260707.1506.pkg` for App Store Connect. - Do not upload the superseded `20260707.1242` package. K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/RELEASE_MANIFEST.md
New file @@ -0,0 +1,65 @@ # TagLauncher 8.3.6 Release Manifest Date: 2026-07-07 ## Version - Version: `8.3.6` - Build: `20260707.1506` - Supersedes failed upload build: `20260707.1242` - Branch: `codex/slim-migration-taglauncher2` - Scope: Settings fixed Pro status / guidance row no longer renders the outer rounded rectangle frame. ## Reason For Rebuild Transporter rejected build `20260707.1242` with: ```text Validation failed (409) The installer package includes files that are only readable by the root user. ``` Root cause: `Contents/Resources/Localization` was copied into the app bundle with mode `700`, so after installation it would be owned by `root` and unreadable by ordinary users. Fix: `build.sh` now normalizes app bundle permissions before signing: - directories: `755` - files: `644` - main executable: `755` `Scripts/macos14_build_metadata_qa.sh` now fails if any app bundle directory/file is not readable by non-root users. ## Artifacts - App Store upload package: `Upload/TagLauncher-8.3.6-build20260707.1506.pkg` - Local rollback DMG: `Archive/TagLauncher-8.3.6-build20260707.1506.dmg` - Visual QA screenshot: `QA/taglauncher-8.3.6-settings-about-no-pro-header-frame.png` - Hash file: `SHA256SUMS.txt` ## Verification Summary Passed: - `bash Scripts/pro_feature_gate_qa.sh` - `bash Scripts/pro_localization_qa.sh` - `bash Scripts/macos14_availability_typecheck_qa.sh` - `bash Scripts/macos14_build_metadata_qa.sh build/TagLauncher.app` - `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app` - `pkgutil --check-signature Upload/TagLauncher-8.3.6-build20260707.1506.pkg` - expanded package payload permission check: no files/directories restricted to root-only readability - expanded package payload `codesign --verify --deep --strict --verbose=2` - `hdiutil verify Archive/TagLauncher-8.3.6-build20260707.1506.dmg` - `shasum -a 256 -c SHA256SUMS.txt` Non-PASS items inherited from the previous 8.3.6 gate: - `bash Scripts/quick_search_app_name_qa.sh`: skipped because the Sunlogin wrapper fixture app is not installed on this Mac. - `bash Scripts/window_logic_qa.sh`: blocked because `cliclick` is not installed. ## Hashes ```text a35525d303b3ee85d40c16f595b9461fc912c5fab559d20d4881b1776fa44f35 Archive/TagLauncher-8.3.6-build20260707.1506.dmg 933043a2dac0be016b7dfd9effdf048462456592d340f68fd3fe5653052d59b9 Upload/TagLauncher-8.3.6-build20260707.1506.pkg c49127307de06d4be71536502bfdaece185bd0196a668f74e9c7fb55d60a6f8f QA/taglauncher-8.3.6-settings-about-no-pro-header-frame.png ``` K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/SHA256SUMS.txt
New file @@ -0,0 +1,3 @@ a35525d303b3ee85d40c16f595b9461fc912c5fab559d20d4881b1776fa44f35 Archive/TagLauncher-8.3.6-build20260707.1506.dmg 933043a2dac0be016b7dfd9effdf048462456592d340f68fd3fe5653052d59b9 Upload/TagLauncher-8.3.6-build20260707.1506.pkg c49127307de06d4be71536502bfdaece185bd0196a668f74e9c7fb55d60a6f8f QA/taglauncher-8.3.6-settings-about-no-pro-header-frame.png K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/Upload/TagLauncher-8.3.6-build20260707.1506.pkgBinary files differ