Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,6 @@ GoogleService-Info.plist
android/app/google-services.json
ios/BitSleuthWallet/GoogleService-Info.plist
ios/GoogleService-Info.plist
ios/BitSleuthWallet.xcodeproj/GoogleService-Info.plist
ios/BitSleuthWallet.xcodeproj/GoogleService-Info.plist
# Build archives
*.tar.gz
39 changes: 33 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.2.2] - 2026-06-10

### Added
- **Open Source Release**: BitSleuth Wallet is now open source under AGPL-3.0 license
- GitHub Actions workflows for CI/CD (lint, build verification, security scanning)
Expand All @@ -18,6 +20,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Security scanning with dependency review and secret detection
- GitHub Discussions for community support
- Issue and PR templates for structured contributions
- **Satoshi API Fee Fallback**: Added a secondary fee-estimate source so fee recommendations remain available when the Esplora `/fee-estimates` endpoint fails
- **Firebase Performance Monitoring**: Enabled app performance tracking alongside Crashlytics (crash reporting and performance only — no analytics)
- **Automated GitHub Releases**: Pushing a version tag now creates the GitHub release automatically with notes extracted from this changelog
- **UI Polish**: Premium animations, haptic feedback, and micro-interactions across wallet flows, plus refined theme and typography

### Changed
- Pinned `react-native-reanimated` to exact version 4.1.6 (with patch-package patch) to keep Android EAS builds reproducible
- `patch-package` now fails loudly on local installs so broken patches are caught early
- Raised the Node.js engine requirement to >=20.19.4 for Metro compatibility
- Downgraded Gradle to 9.3 for Android build stability
- Aligned dependency versions with Expo SDK 54 expectations
- Updated `@react-native-firebase` packages to 23.8.x
- Updated iOS liquid glass tab documentation and checks from iOS 18+ to iOS 26+
- Routine dependency updates (yaml, tar, lodash, hono, react-native-svg, lucide, Gradle wrapper, firebase-crashlytics-gradle, GitHub Actions)

### Fixed
- **iOS Build Error**: Fixed build failure caused by non-modular header includes in React Native Firebase
- Resolves Xcode 26 build errors: "include of non-modular header inside framework module 'RNFBApp...'"
- Added `ios.forceStaticLinking` for `RNFBApp`, `RNFBCrashlytics` and `RNFBPerf` via `expo-build-properties` so the Firebase pods build as static libraries instead of static frameworks (Expo SDK 54 mechanism, expo/expo#39742)
- Removed the `@react-native-firebase` patch-package patches that previously attempted to work around the header errors (ineffective under Xcode 26 explicitly-built modules)
- Removed unused `use_modular_headers!` podfile property from app.json
- **Android EAS Build**: Fixed build failure caused by Android build artifacts accidentally included in the reanimated patch
- **Receive Tab Performance**: Fixed QR code rendering performance and New Address refresh behavior
- **Wallet Import Speed**: Optimized transaction fetching during wallet import
- **Address Validation**: Bitcoin address validation now performs proper checksum verification
- Fixed TypeScript build errors in `AnimatedNumber` under Reanimated v4 and improved type safety in `rbf-service.ts`

### Security
- **CVE-2025-55182**: Updated React to version 19.1.2 to address security vulnerability
Expand All @@ -26,12 +54,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Updated `@types/react` from ~19.1.10 to ~19.1.2 to align with React version
- All peer dependencies remain compatible (React Native 0.81.5, Expo SDK 54, @tanstack/react-query, zustand, React Native Reanimated, Expo Router, NativeWind)
- No breaking changes or compatibility issues

### Fixed
- **iOS Build Error**: Fixed build failure caused by non-modular header includes in React Native Firebase
- Removed `use_modular_headers!` from Podfile which was causing RNFBApp to fail when importing React-Core headers
- Firebase works correctly with static frameworks without requiring modular headers
- Resolves Xcode build errors: "include of non-modular header inside framework module"
- **CVE-2026-2391**: Upgraded `qs` from 6.14.1 to 6.15.0
- Forced `@xmldom/xmldom` (pinned to ~0.8.13) and `postcss` to patched versions via npm overrides
- Resolved remaining high-severity advisories via `npm audit fix`
- Removed Firebase config files and API keys from the repository; added example templates and setup documentation
- Removed the debug keystore from the repository and added keystore patterns to `.gitignore`

## [1.2.0] - 2025-11-05

Expand Down
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.2.1"
versionName "1.2.2"

buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\""
}
Expand Down
6 changes: 2 additions & 4 deletions app.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"expo": {
"name": "BitSleuth Wallet",
"slug": "bitsleuth-wallet",
"version": "1.2.1",
"version": "1.2.2",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"scheme": "myapp",
Expand Down Expand Up @@ -67,9 +67,7 @@
},
"ios": {
"useFrameworks": "static",
"podfileProperties": {
"use_modular_headers!": true
}
"forceStaticLinking": ["RNFBApp", "RNFBCrashlytics", "RNFBPerf"]
}
}
],
Expand Down
6 changes: 3 additions & 3 deletions eas.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"development": {
"developmentClient": true,
"distribution": "internal",
"node": "20.18.1",
"node": "20.19.4",
"android": {
"image": "ubuntu-22.04-jdk-17-ndk-r25b"
},
Expand All @@ -18,7 +18,7 @@
},
"preview": {
"distribution": "internal",
"node": "20.18.1",
"node": "20.19.4",
"android": {
"image": "ubuntu-22.04-jdk-17-ndk-r25b"
},
Expand All @@ -29,7 +29,7 @@
},
"production": {
"autoIncrement": true,
"node": "20.18.1",
"node": "20.19.4",
"android": {
"image": "ubuntu-22.04-jdk-17-ndk-r25b"
},
Expand Down
2 changes: 1 addition & 1 deletion ios/BitSleuthWallet/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.2.1</string>
<string>1.2.2</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand Down
2 changes: 1 addition & 1 deletion ios/Podfile.properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
"EX_DEV_CLIENT_NETWORK_INSPECTOR": "true",
"newArchEnabled": "true",
"ios.useFrameworks": "static",
"ios.forceStaticLinking": "[]",
"ios.forceStaticLinking": "[\"RNFBApp\",\"RNFBCrashlytics\",\"RNFBPerf\"]",
"apple.privacyManifestAggregationEnabled": "true"
}
64 changes: 42 additions & 22 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "bitsleuth-wallet",
"main": "index.js",
"version": "1.2.1",
"version": "1.2.2",
"license": "AGPL-3.0",
"packageManager": "npm@10.2.4",
"engines": {
"node": ">=20.18.0"
"node": ">=20.19.4"
},
"scripts": {
"start": "expo start",
Expand All @@ -17,7 +17,7 @@
"ios": "expo run:ios --dev-client",
"android-debug": "expo run:android --dev-client --clear",
"ios-debug": "expo run:ios --dev-client --clear",
"postinstall": "patch-package"
"postinstall": "patch-package --error-on-fail"
},
"dependencies": {
"@babel/core": "^7.29.0",
Expand Down Expand Up @@ -88,7 +88,7 @@
"react-native-get-random-values": "^1.11.0",
"react-native-polyfill-globals": "^3.1.0",
"react-native-qrcode-svg": "^6.3.21",
"react-native-reanimated": "~4.1.6",
"react-native-reanimated": "4.1.6",
"react-native-safe-area-context": "~5.6.2",
"react-native-screens": "~4.16.0",
"react-native-svg": "15.12.1",
Expand Down Expand Up @@ -127,7 +127,7 @@
"overrides": {
"react-native-randombytes": "^3.6.2",
"react-native-renderer": "19.1.0",
"@xmldom/xmldom": ">=0.8.13",
"@xmldom/xmldom": "~0.8.13",
"postcss": ">=8.5.10"
},
"resolutions": {
Expand Down
38 changes: 0 additions & 38 deletions patches/@react-native-firebase+crashlytics+23.8.6.patch

This file was deleted.

Loading
Loading