diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..48589f7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added + +- Added an option to wrap logs in the hamburger menu. (#10) + +- IPv6 and better roaming support. (#24) + +- Certificates can now be replaced. (#33) + +### Changed + +- Upgraded to Flutter 2. (#26) + +- Upgraded core Nebula to 1.4.1. (#41) + +### Fixed + +- iOS: Reworked vpn process IPC for more reliable communication. (#28) + +- Android: Detecting the active vpn site on app boot is now more reliable. (#29) + +- Android: Quickly toggling site connection status no longer presents an error. (#16) + +- Android: Better vpn shutdown support. (#34) + +- Android: System DNS will continue to work when moving between IPv4 only and IPv6 networks. (#40) + +## [0.0.38] - 2020-09-25 + +### Added + +- Initial public release. + +[0.0.38]: https://github.com/DefinedNet/mobile_nebula/releases/tag/v0.0.38 \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 3757e9c..2f27ffc 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -105,6 +105,6 @@ SPEC CHECKSUMS: SwiftyJSON: 2f33a42c6fbc52764d96f13368585094bfd8aa5e url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef -PODFILE CHECKSUM: 87c61886589bcc4c3c709db9ee22a607d81c4861 +PODFILE CHECKSUM: 92e176614f91c6517d4254a0edec8b66f076c77e COCOAPODS: 1.10.1 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 2039150..56a2318 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -579,7 +579,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 576H3XS7FP; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -594,7 +594,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 0.0.40; + MARKETING_VERSION = 0.0.41; PRODUCT_BUNDLE_IDENTIFIER = net.defined.mobileNebula; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -614,7 +614,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = NebulaNetworkExtension/NebulaNetworkExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 576H3XS7FP; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -625,7 +625,7 @@ INFOPLIST_FILE = NebulaNetworkExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 0.0.40; + MARKETING_VERSION = 0.0.41; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ""; @@ -650,7 +650,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = NebulaNetworkExtension/NebulaNetworkExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 576H3XS7FP; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -661,7 +661,7 @@ INFOPLIST_FILE = NebulaNetworkExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 0.0.40; + MARKETING_VERSION = 0.0.41; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = net.defined.mobileNebula.NebulaNetworkExtension; @@ -683,7 +683,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = NebulaNetworkExtension/NebulaNetworkExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 576H3XS7FP; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -694,7 +694,7 @@ INFOPLIST_FILE = NebulaNetworkExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 0.0.40; + MARKETING_VERSION = 0.0.41; MTL_FAST_MATH = YES; OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = net.defined.mobileNebula.NebulaNetworkExtension; @@ -819,7 +819,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 576H3XS7FP; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -834,7 +834,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 0.0.40; + MARKETING_VERSION = 0.0.41; PRODUCT_BUNDLE_IDENTIFIER = net.defined.mobileNebula; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -852,7 +852,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 576H3XS7FP; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -867,7 +867,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 0.0.40; + MARKETING_VERSION = 0.0.41; PRODUCT_BUNDLE_IDENTIFIER = net.defined.mobileNebula; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; diff --git a/lib/services/utils.dart b/lib/services/utils.dart index 7821402..78daf5b 100644 --- a/lib/services/utils.dart +++ b/lib/services/utils.dart @@ -56,11 +56,10 @@ class Utils { /// Builds a simple leading widget that pops the current screen. /// Provide your own onPressed to override that behavior, just remember you have to pop static Widget leadingBackWidget(BuildContext context, {label = 'Back', Function onPressed}) { - if (Platform.isAndroid) { - return IconButton( + if (Platform.isIOS) { + return CupertinoButton( + child: Row(children: [Icon(context.platformIcons.back), Text(label)]), padding: EdgeInsets.zero, - icon: Icon(context.platformIcons.back), - tooltip: label, onPressed: () { if (onPressed == null) { Navigator.pop(context); @@ -71,9 +70,10 @@ class Utils { ); } - return CupertinoButton( - child: Row(children: [Icon(context.platformIcons.back), Text(label)]), + return IconButton( padding: EdgeInsets.zero, + icon: Icon(context.platformIcons.back), + tooltip: label, onPressed: () { if (onPressed == null) { Navigator.pop(context); @@ -121,7 +121,11 @@ class Utils { }); } - static popError(BuildContext context, String title, String error) { + static popError(BuildContext context, String title, String error, {StackTrace stack}) { + if (stack != null) { + error += '\n${stack.toString()}'; + } + showDialog( context: context, barrierDismissible: false, diff --git a/pubspec.yaml b/pubspec.yaml index 7254303..ad733c6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Mobile Nebula Client # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.0.40+43 +version: 0.0.41+50 environment: sdk: ">=2.1.0 <3.0.0"