diff --git a/README.en.md b/README.en.md index a51b584..a202ea1 100644 --- a/README.en.md +++ b/README.en.md @@ -12,7 +12,7 @@ responses in a controlled test environment. [![iOS 15+](https://img.shields.io/badge/iOS-15%2B-111111?logo=apple)](project.yml) [![Swift 5.9](https://img.shields.io/badge/Swift-5.9-F05138)](project.yml) [![Go 1.23+](https://img.shields.io/badge/Go-1.23%2B-00ADD8?logo=go)](Core/go.mod) -[![Version](https://img.shields.io/badge/version-v1.0.3-2563EB)](docs/CHANGELOG.md) +[![Version](https://img.shields.io/badge/version-v1.0.4-2563EB)](docs/CHANGELOG.md) [Features](#feature-overview) · [How It Works](#how-it-works) · diff --git a/README.md b/README.md index f662b34..8a82a6a 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ [![iOS 15+](https://img.shields.io/badge/iOS-15%2B-111111?logo=apple)](project.yml) [![Swift 5.9](https://img.shields.io/badge/Swift-5.9-F05138)](project.yml) [![Go 1.23+](https://img.shields.io/badge/Go-1.23%2B-00ADD8?logo=go)](Core/go.mod) -[![Version](https://img.shields.io/badge/version-v1.0.3-2563EB)](docs/CHANGELOG.md) +[![Version](https://img.shields.io/badge/version-v1.0.4-2563EB)](docs/CHANGELOG.md) [功能概览](#功能概览) · [工作原理](#工作原理) · diff --git a/Shared/AppRemoteConfiguration.swift b/Shared/AppRemoteConfiguration.swift index 3b5ab78..476aef6 100644 --- a/Shared/AppRemoteConfiguration.swift +++ b/Shared/AppRemoteConfiguration.swift @@ -23,7 +23,7 @@ struct AppRemoteConfiguration: Decodable, Equatable { let communityPromptClients: [String] static let fallback = AppRemoteConfiguration( - latestVersion: "1.0.3", + latestVersion: "1.0.4", minimumSupportedVersion: "1.0.0", communityPromptClients: [ ThirdPartyProxyClient.surge.rawValue, diff --git a/Tests/PaopaoLocationSpooferTests/AppRemoteConfigurationTests.swift b/Tests/PaopaoLocationSpooferTests/AppRemoteConfigurationTests.swift index b4b62c8..16b2e64 100644 --- a/Tests/PaopaoLocationSpooferTests/AppRemoteConfigurationTests.swift +++ b/Tests/PaopaoLocationSpooferTests/AppRemoteConfigurationTests.swift @@ -62,7 +62,7 @@ final class AppRemoteConfigurationTests: XCTestCase { func testFallbackMatchesCurrentProjectPolicy() { let configuration = AppRemoteConfiguration.fallback - XCTAssertEqual(configuration.latestVersion, "1.0.3") + XCTAssertEqual(configuration.latestVersion, "1.0.4") XCTAssertEqual(configuration.minimumSupportedVersion, "1.0.0") XCTAssertFalse(configuration.requestsCommunityPrompt(for: .shadowrocket)) for client in ThirdPartyProxyClient.allCases where client != .shadowrocket { diff --git a/Tests/third_party_mode_contract_test.sh b/Tests/third_party_mode_contract_test.sh index f9423d3..077357e 100755 --- a/Tests/third_party_mode_contract_test.sh +++ b/Tests/third_party_mode_contract_test.sh @@ -112,7 +112,7 @@ test -s "$ROOT/docs/onboarding-screenshots/shadowrocket/shadowrocket-module-impo grep -q 'presentSuccessfulOperationTip(.activation)' "$ROOT/App/MapHomeView.swift" || fail "third-party save must present the activation tip" grep -q 'presentSuccessfulOperationTip(.deactivation)' "$ROOT/App/MapHomeView.swift" || fail "third-party clear must present the deactivation tip" grep -q 'if spoofState == .active' "$ROOT/App/MapHomeView.swift" || fail "manual help must follow the shared spoof state" -grep -q 'MARKETING_VERSION: "1.0.3"' "$ROOT/project.yml" || fail "marketing version must be 1.0.3" -grep -q 'CURRENT_PROJECT_VERSION: "4"' "$ROOT/project.yml" || fail "build version must be 4" +grep -q 'MARKETING_VERSION: "1.0.4"' "$ROOT/project.yml" || fail "marketing version must be 1.0.4" +grep -q 'CURRENT_PROJECT_VERSION: "5"' "$ROOT/project.yml" || fail "build version must be 5" echo "PASS: third-party proxy mode contract" diff --git a/Tests/update_and_contribution_contract_test.sh b/Tests/update_and_contribution_contract_test.sh index 2308a31..48f2b32 100644 --- a/Tests/update_and_contribution_contract_test.sh +++ b/Tests/update_and_contribution_contract_test.sh @@ -25,7 +25,7 @@ import sys with open(sys.argv[1], encoding="utf-8") as handle: config = json.load(handle) -assert config["latestVersion"] == "1.0.3" +assert config["latestVersion"] == "1.0.4" assert config["minimumSupportedVersion"] == "1.0.0" assert "shadowrocket" not in config["communityPromptClients"] assert set(config["communityPromptClients"]) == { diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 6b84b4a..b0562a9 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,6 +4,7 @@ ## 已发布 +- [v1.0.4](https://github.com/xweiba/location-spoofer/releases/tag/v1.0.4) — 2026-08-09 - [v1.0.3](https://github.com/xweiba/location-spoofer/releases/tag/v1.0.3) — 2026-08-09 - [v1.0.2](https://github.com/xweiba/location-spoofer/releases/tag/v1.0.2) — 2026-08-07 - [v1.0.1](https://github.com/xweiba/location-spoofer/releases/tag/v1.0.1) — 2026-08-06 diff --git a/docs/releases/v1.0.4.md b/docs/releases/v1.0.4.md new file mode 100644 index 0000000..18a9583 --- /dev/null +++ b/docs/releases/v1.0.4.md @@ -0,0 +1,29 @@ +# v1.0.4 + +发布日期:2026-08-09 + +## 主要更新 + +- 增加结构化 ARPC 响应解析,修改定位数据后会正确更新 32 位 payload 长度。 +- 完善 marker、synthetic 和 bare protobuf 响应兼容,保留原始封装前后缀及未知字段。 +- 补充 CellTower 字段 22/24、ARPC 大 payload 和多响应格式回归测试。 + +## 文档与致谢 + +- 整理项目参考、社区贡献和友链结构。 +- 补充相关定位服务研究项目致谢。 + +## 兼容性说明 + +- WiFi 和 CellTower 坐标替换逻辑保持不变。 +- 无法识别的新响应封装会回退原有检测路径,不会截断响应。 +- 本版本未写入语义尚未确认的运动状态字段。 + +## 自签安装 + +- Release 附件为未签名 IPA,安装前需要自行签名。 +- 可使用免费 Apple ID 和 Impactor 完成签名安装,无需付费开发者账号。 +- 签名时请保留 Bundle ID `com.paopaolabs.location-spoofer`、App Group `group.com.paopaolabs.location-spoofer` 及原有 entitlements。 +- 免费 Apple ID 签名通常只有 7 天有效期,到期后需要重新签名安装。 + + diff --git a/project.yml b/project.yml index 313db83..68693a1 100644 --- a/project.yml +++ b/project.yml @@ -8,8 +8,8 @@ options: settings: base: SWIFT_VERSION: "5.9" - MARKETING_VERSION: "1.0.3" - CURRENT_PROJECT_VERSION: "4" + MARKETING_VERSION: "1.0.4" + CURRENT_PROJECT_VERSION: "5" CODE_SIGN_STYLE: Manual CODE_SIGNING_ALLOWED: "NO" CODE_SIGNING_REQUIRED: "NO" diff --git a/version.txt b/version.txt index a34e7b1..4c7b86d 100644 --- a/version.txt +++ b/version.txt @@ -1,5 +1,5 @@ { - "latestVersion": "1.0.3", + "latestVersion": "1.0.4", "minimumSupportedVersion": "1.0.0", "communityPromptClients": ["surge", "quantumultX", "loon", "stash", "egern"] }