Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
c494713
Fix Core Data migration startup crashes
takemiyamakoto Jul 26, 2026
d7648e2
Fix production iOS release identity
takemiyamakoto Jul 26, 2026
b851725
Guard the production iOS archive identity
takemiyamakoto Jul 26, 2026
1d04582
Bind the iOS build number to release settings
takemiyamakoto Jul 26, 2026
749dbdd
Match WalletConnect storage to signed app groups
takemiyamakoto Jul 26, 2026
5ebcf5e
Keep TODO debt baseline current
takemiyamakoto Jul 26, 2026
b11cdc5
Update the Core Data release test invariant
takemiyamakoto Jul 26, 2026
1424b59
Clarify the Core Data release cohort
takemiyamakoto Jul 26, 2026
bcc3997
Keep custom-only chains available after migration
takemiyamakoto Jul 26, 2026
7a819cb
Isolate Debug builds from production wallet data
takemiyamakoto Jul 26, 2026
d689535
Gate and sign the migration crash hotfix release
takemiyamakoto Jul 26, 2026
e6cb0e9
Scope TestFlight provisioning to the app target
takemiyamakoto Jul 26, 2026
afbcde6
Scope App Store signing to the release target
takemiyamakoto Jul 26, 2026
f56b7b8
Accept standard Xcode archive application paths
takemiyamakoto Jul 26, 2026
5469d34
docs: track TestFlight publication evidence
takemiyamakoto Jul 26, 2026
02e7620
build: bump TestFlight build for in-place update
takemiyamakoto Jul 26, 2026
cdb8474
fix: make wallet observation activation lossless
takemiyamakoto Jul 26, 2026
ceb0ed8
build: advance TestFlight hotfix to 2026.7.28
takemiyamakoto Jul 26, 2026
3f00f46
ci: pin workflow actions for release safety
takemiyamakoto Jul 26, 2026
9c89b26
fix: prohibit empty meta account codecs
takemiyamakoto Jul 26, 2026
838840b
test: isolate account export operations
takemiyamakoto Jul 26, 2026
f7e44e6
ci: use pinned Codecov uploader with OIDC
takemiyamakoto Jul 26, 2026
10164c0
ci: generate executable iOS coverage data
takemiyamakoto Jul 26, 2026
ef07cca
chore: scope migration lint suppressions
takemiyamakoto Jul 30, 2026
ab9a73d
test: bind copied phone fixture into release gate
takemiyamakoto Jul 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 104 additions & 24 deletions fearless.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,12 @@
</TestableReference>
</Testables>
</TestAction>
<LaunchAction buildConfiguration="Debug" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB"/>
<LaunchAction buildConfiguration="Debug" selectedLauncherIdentifier="Xcode.DebuggerFoundation.Launcher.LLDB">
<CommandLineArguments>
<CommandLineArgument argument="-UNITTEST" isEnabled="YES"/>
</CommandLineArguments>
</LaunchAction>
<ProfileAction buildConfiguration="Release"/>
<AnalyzeAction buildConfiguration="Debug"/>
<ArchiveAction buildConfiguration="Release"/>
</Scheme>

Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@ bash \&quot;${PROJECT_DIR}/scripts/spm-shared-features-fixes.sh\&quot; \&quot;${
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Dev"
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,27 @@ extension WalletConnectServiceDelegate {
func didChange(sessions _: [Session]) {}
}

enum WalletConnectGroupIdentifierResolver {
static let productionBundleIdentifier = "jp.co.soramitsu.fearlesswallet"
static let developmentBundleIdentifier = "jp.co.soramitsu.fearlesswallet.dev"
static let productionGroupIdentifier = "group.jp.co.soramitsu.fearlesswallet"
Comment thread
takemiyamakoto marked this conversation as resolved.
static let developmentGroupIdentifier = "group.com.walletconnect.sdk"

static func resolve(bundleIdentifier: String?) -> String? {
if bundleIdentifier == productionBundleIdentifier {
return productionGroupIdentifier
}

if bundleIdentifier == developmentBundleIdentifier {
return developmentGroupIdentifier
}

return nil
}
}

final class WalletConnectServiceImpl: WalletConnectService {
static let shared = WalletConnectServiceImpl()
private static let walletConnectGroupIdentifier = "group.com.walletconnect.sdk"

private var listeners: [WeakWrapper] = []
private var cancellablesBag = Set<AnyCancellable>()
Expand All @@ -41,6 +59,17 @@ final class WalletConnectServiceImpl: WalletConnectService {
// MARK: - ApplicationServiceProtocol

func setup() {
guard
let groupIdentifier = WalletConnectGroupIdentifierResolver.resolve(
bundleIdentifier: Bundle.main.bundleIdentifier
)
else {
Logger.shared.error(
"WalletConnect setup skipped for an unsupported application identity"
)
return
}

#if canImport(FearlessKeys)
#if F_DEV
let projectId = WalletConnectDebug.projectId
Expand All @@ -51,7 +80,7 @@ final class WalletConnectServiceImpl: WalletConnectService {
let projectId = WalletConnect.projectId
#endif
Networking.configure(
groupIdentifier: Self.walletConnectGroupIdentifier,
groupIdentifier: groupIdentifier,
projectId: projectId,
socketFactory: WalletConnectSocketFactory()
)
Expand Down
Loading
Loading