Ariver
2026-07-07 eb0ce659d906b03ec42b9419ff370c6200a5ec29
release: rebuild 8.3.6 app store package permissions
4 files modified
11 files added
257 ■■■■■ changed files
C1.source/Apptag/Info.plist 2 ●●● patch | view | raw | blame | history
C1.source/CHANGELOG.md 2 ●●● patch | view | raw | blame | history
C1.source/Scripts/macos14_build_metadata_qa.sh 14 ●●●●● patch | view | raw | blame | history
C1.source/build.sh 3 ●●●●● patch | view | raw | blame | history
C2.builds/AppStore-8.3.6-20260707.1506/Archive/TagLauncher-8.3.6-build20260707.1506.dmg patch | view | raw | blame | history
C2.builds/AppStore-8.3.6-20260707.1506/SHA256SUMS.txt 2 ●●●●● patch | view | raw | blame | history
C2.builds/AppStore-8.3.6-20260707.1506/Upload/TagLauncher-8.3.6-build20260707.1506.pkg patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1242/UPLOAD_FAILED_ASC_VALIDATION.md 41 ●●●●● patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/Archive/TagLauncher-8.3.6-build20260707.1506.dmg patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/PKG_PREFLIGHT_REPORT.md 63 ●●●●● patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/QA/taglauncher-8.3.6-settings-about-no-pro-header-frame.png patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/QA_RELEASE_EVIDENCE.md 62 ●●●●● patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/RELEASE_MANIFEST.md 65 ●●●●● patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/SHA256SUMS.txt 3 ●●●●● patch | view | raw | blame | history
K3.运营与发布资料/Release/AppStore-8.3.6-20260707.1506/Upload/TagLauncher-8.3.6-build20260707.1506.pkg patch | view | raw | blame | history
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.dmg
Binary 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.pkg
Binary 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.dmg
Binary 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.pkg
Binary files differ