diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 6afead88..dfd251df 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -690,7 +690,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -700,7 +700,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -826,7 +826,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -836,7 +836,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -854,7 +854,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -864,7 +864,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -885,7 +885,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -898,7 +898,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -924,7 +924,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -937,7 +937,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -960,7 +960,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -973,7 +973,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -996,7 +996,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1008,7 +1008,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; @@ -1037,7 +1037,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1049,7 +1049,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; @@ -1075,7 +1075,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -1087,7 +1087,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; diff --git a/lib/core/route.dart b/lib/core/route.dart index e32f3c62..70aa511c 100644 --- a/lib/core/route.dart +++ b/lib/core/route.dart @@ -132,10 +132,7 @@ class AppRoutes { } static AppRoutes sftp( - {Key? key, - required Spi spi, - String? initPath, - bool isSelect = false}) { + {Key? key, required Spi spi, String? initPath, bool isSelect = false}) { return AppRoutes( SftpPage( key: key, diff --git a/lib/data/model/app/net_view.dart b/lib/data/model/app/net_view.dart index 301fa31a..cb8774c7 100644 --- a/lib/data/model/app/net_view.dart +++ b/lib/data/model/app/net_view.dart @@ -2,7 +2,6 @@ import 'package:fl_lib/fl_lib.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:server_box/core/extension/context/locale.dart'; import 'package:server_box/data/model/server/server.dart'; -import 'package:server_box/data/res/store.dart'; part 'net_view.g.dart'; @@ -27,36 +26,43 @@ enum NetViewType { NetViewType.speed => l10n.speed, }; - (String, String) build(ServerStatus ss) { - final ignoreLocal = Stores.setting.ignoreLocalNet.fetch(); - switch (this) { - case NetViewType.conn: - return ( - '${l10n.conn}:\n${ss.tcp.maxConn}', - '${libL10n.fail}:\n${ss.tcp.fail}', - ); - case NetViewType.speed: - if (ignoreLocal) { + /// If no device is specified, return the cached value (only real devices, + /// such as ethX, wlanX...). + (String, String) build(ServerStatus ss, {String? dev}) { + final notSepcifyDev = dev == null || dev.isEmpty; + try { + switch (this) { + case NetViewType.conn: return ( - '↓:\n${ss.netSpeed.cachedRealVals.speedIn}', - '↑:\n${ss.netSpeed.cachedRealVals.speedOut}', + '${l10n.conn}:\n${ss.tcp.maxConn}', + '${libL10n.fail}:\n${ss.tcp.fail}', ); - } - return ( - '↓:\n${ss.netSpeed.speedIn()}', - '↑:\n${ss.netSpeed.speedOut()}', - ); - case NetViewType.traffic: - if (ignoreLocal) { + case NetViewType.speed: + if (notSepcifyDev) { + return ( + '↓:\n${ss.netSpeed.cachedVals.speedIn}', + '↑:\n${ss.netSpeed.cachedVals.speedOut}', + ); + } return ( - '↓:\n${ss.netSpeed.cachedRealVals.sizeIn}', - '↑:\n${ss.netSpeed.cachedRealVals.sizeOut}', + '↓:\n${ss.netSpeed.speedIn(device: dev)}', + '↑:\n${ss.netSpeed.speedOut(device: dev)}', ); - } - return ( - '↓:\n${ss.netSpeed.sizeIn()}', - '↑:\n${ss.netSpeed.sizeOut()}', - ); + case NetViewType.traffic: + if (notSepcifyDev) { + return ( + '↓:\n${ss.netSpeed.cachedVals.sizeIn}', + '↑:\n${ss.netSpeed.cachedVals.sizeOut}', + ); + } + return ( + '↓:\n${ss.netSpeed.sizeIn(device: dev)}', + '↑:\n${ss.netSpeed.sizeOut(device: dev)}', + ); + } + } catch (e, s) { + Loggers.app.warning('NetViewType.build', e, s); + return ('N/A', 'N/A'); } } diff --git a/lib/data/model/server/custom.dart b/lib/data/model/server/custom.dart index 443b82b0..dad20912 100644 --- a/lib/data/model/server/custom.dart +++ b/lib/data/model/server/custom.dart @@ -21,6 +21,14 @@ final class ServerCustom { @HiveField(5) final String? logoUrl; + /// The device name of the network interface displayed in the home server card. + @HiveField(6) + final String? netDev; + + /// The directory where the script is stored. + @HiveField(7) + final String? scriptDir; + const ServerCustom({ //this.temperature, this.pveAddr, @@ -28,6 +36,8 @@ final class ServerCustom { this.cmds, this.preferTempDev, this.logoUrl, + this.netDev, + this.scriptDir, }); factory ServerCustom.fromJson(Map json) => @@ -35,12 +45,6 @@ final class ServerCustom { Map toJson() => _$ServerCustomToJson(this); - - @override - String toString() { - return toJson().toString(); - } - @override bool operator ==(Object other) { return other is ServerCustom && @@ -49,7 +53,9 @@ final class ServerCustom { other.pveIgnoreCert == pveIgnoreCert && other.cmds == cmds && other.preferTempDev == preferTempDev && - other.logoUrl == logoUrl; + other.logoUrl == logoUrl && + other.netDev == netDev && + other.scriptDir == scriptDir; } @override @@ -59,5 +65,7 @@ final class ServerCustom { pveIgnoreCert.hashCode ^ cmds.hashCode ^ preferTempDev.hashCode ^ - logoUrl.hashCode; + logoUrl.hashCode ^ + netDev.hashCode ^ + scriptDir.hashCode; } diff --git a/lib/data/model/server/custom.g.dart b/lib/data/model/server/custom.g.dart index 0ebf5142..50343b2d 100644 --- a/lib/data/model/server/custom.g.dart +++ b/lib/data/model/server/custom.g.dart @@ -22,13 +22,15 @@ class ServerCustomAdapter extends TypeAdapter { cmds: (fields[3] as Map?)?.cast(), preferTempDev: fields[4] as String?, logoUrl: fields[5] as String?, + netDev: fields[6] as String?, + scriptDir: fields[7] as String?, ); } @override void write(BinaryWriter writer, ServerCustom obj) { writer - ..writeByte(5) + ..writeByte(7) ..writeByte(1) ..write(obj.pveAddr) ..writeByte(2) @@ -38,7 +40,11 @@ class ServerCustomAdapter extends TypeAdapter { ..writeByte(4) ..write(obj.preferTempDev) ..writeByte(5) - ..write(obj.logoUrl); + ..write(obj.logoUrl) + ..writeByte(6) + ..write(obj.netDev) + ..writeByte(7) + ..write(obj.scriptDir); } @override @@ -64,6 +70,8 @@ ServerCustom _$ServerCustomFromJson(Map json) => ServerCustom( ), preferTempDev: json['preferTempDev'] as String?, logoUrl: json['logoUrl'] as String?, + netDev: json['netDev'] as String?, + scriptDir: json['scriptDir'] as String?, ); Map _$ServerCustomToJson(ServerCustom instance) => @@ -73,4 +81,6 @@ Map _$ServerCustomToJson(ServerCustom instance) => 'cmds': instance.cmds, 'preferTempDev': instance.preferTempDev, 'logoUrl': instance.logoUrl, + 'netDev': instance.netDev, + 'scriptDir': instance.scriptDir, }; diff --git a/lib/data/model/server/net_speed.dart b/lib/data/model/server/net_speed.dart index 8bc33a19..c4205cfe 100644 --- a/lib/data/model/server/net_speed.dart +++ b/lib/data/model/server/net_speed.dart @@ -14,6 +14,13 @@ class NetSpeedPart extends TimeSeqIface { bool same(NetSpeedPart other) => device == other.device; } +typedef CachedNetVals = ({ + String sizeIn, + String sizeOut, + String speedIn, + String speedOut, +}); + class NetSpeed extends TimeSeq> { NetSpeed(super.init1, super.init2); @@ -24,14 +31,14 @@ class NetSpeed extends TimeSeq> { realIfaces.clear(); realIfaces.addAll(devices - .where((e) => realIfacePrefixs.any((prefix) => e.startsWith(prefix))) - .toList()); + .where((e) => realIfacePrefixs.any((prefix) => e.startsWith(prefix)))); final sizeIn = this.sizeIn(); final sizeOut = this.sizeOut(); final speedIn = this.speedIn(); final speedOut = this.speedOut(); - cachedRealVals = ( + + cachedVals = ( sizeIn: sizeIn, sizeOut: sizeOut, speedIn: speedIn, @@ -49,12 +56,7 @@ class NetSpeed extends TimeSeq> { /// Cached non-virtual network device prefix final realIfaces = []; - ({ - String sizeIn, - String sizeOut, - String speedIn, - String speedOut, - }) cachedRealVals = + CachedNetVals cachedVals = (sizeIn: '0kb', sizeOut: '0kb', speedIn: '0kb/s', speedOut: '0kb/s'); /// Time diff between [pre] and [now] @@ -67,7 +69,8 @@ class NetSpeed extends TimeSeq> { BigInt sizeOutBytes(int i) => now[i].bytesOut; String speedIn({String? device}) { - if (pre[0].device == '' || now[0].device == '') return '0kb/s'; + if (pre.isEmpty || now.isEmpty) return 'N/A'; + if (pre.length != now.length) return 'N/A'; if (device == null) { var speed = 0.0; for (final device in devices) { @@ -84,7 +87,8 @@ class NetSpeed extends TimeSeq> { } String sizeIn({String? device}) { - if (pre[0].device == '' || now[0].device == '') return '0kb'; + if (pre.isEmpty || now.isEmpty) return 'N/A'; + if (pre.length != now.length) return 'N/A'; if (device == null) { var size = BigInt.from(0); for (final device in devices) { @@ -101,7 +105,8 @@ class NetSpeed extends TimeSeq> { } String speedOut({String? device}) { - if (pre[0].device == '' || now[0].device == '') return '0kb/s'; + if (pre.isEmpty || now.isEmpty) return 'N/A'; + if (pre.length != now.length) return 'N/A'; if (device == null) { var speed = 0.0; for (final device in devices) { @@ -118,7 +123,8 @@ class NetSpeed extends TimeSeq> { } String sizeOut({String? device}) { - if (pre[0].device == '' || now[0].device == '') return '0kb'; + if (pre.isEmpty || now.isEmpty) return 'N/A'; + if (pre.length != now.length) return 'N/A'; if (device == null) { var size = BigInt.from(0); for (final device in devices) { diff --git a/lib/data/model/server/server_private_info.dart b/lib/data/model/server/server_private_info.dart index 2957b9a8..df59429e 100644 --- a/lib/data/model/server/server_private_info.dart +++ b/lib/data/model/server/server_private_info.dart @@ -75,8 +75,7 @@ class Spi { this.envs, }) : id = '$user@$ip:$port'; - factory Spi.fromJson(Map json) => - _$SpiFromJson(json); + factory Spi.fromJson(Map json) => _$SpiFromJson(json); Map toJson() => _$SpiToJson(this); diff --git a/lib/data/model/server/snippet.dart b/lib/data/model/server/snippet.dart index 09ff3a76..ac072075 100644 --- a/lib/data/model/server/snippet.dart +++ b/lib/data/model/server/snippet.dart @@ -34,7 +34,8 @@ class Snippet implements TagPickable { this.autoRunOn, }); - factory Snippet.fromJson(Map json) => _$SnippetFromJson(json); + factory Snippet.fromJson(Map json) => + _$SnippetFromJson(json); Map toJson() => _$SnippetToJson(this); diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index e1aa84a9..b3c4348d 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -3,6 +3,6 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 1060; + static const int build = 1068; static const int script = 57; } diff --git a/lib/data/store/setting.dart b/lib/data/store/setting.dart index 53f1359f..732ae7ea 100644 --- a/lib/data/store/setting.dart +++ b/lib/data/store/setting.dart @@ -180,7 +180,7 @@ class SettingStore extends PersistentStore { /// Ignore local network device (eg: br-xxx, ovs-system...) /// when building traffic view on server tab - late final ignoreLocalNet = property('ignoreLocalNet', true); + //late final ignoreLocalNet = property('ignoreLocalNet', true); /// Remerber pwd in memory /// Used for [DialogX.showPwdDialog] diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index e3381aa3..ceccb9b1 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -587,18 +587,15 @@ ${ss.err?.message ?? 'null'} Widget _buildNet(ServerStatus ss, String id) { final cardNoti = _getCardNoti(id); final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch(); - final (a, b) = type.build(ss); + final device = ServerProvider.pick(id: id)?.value.spi.custom?.netDev ?? 'tailscale0'; + final (a, b) = type.build(ss, dev: device); return AnimatedSwitcher( duration: const Duration(milliseconds: 377), - transitionBuilder: (Widget child, Animation animation) { - return FadeTransition(opacity: animation, child: child); - }, + transitionBuilder: (c, anim) => FadeTransition(opacity: anim, child: c), child: _buildIOData( a, b, - onTap: () { - cardNoti.value = cardNoti.value.copyWith(net: type.next); - }, + onTap: () => cardNoti.value = cardNoti.value.copyWith(net: type.next), key: ValueKey(type), ), ); diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 6cd6b526..ee3bd2e4 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -471,7 +471,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -481,7 +481,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -608,7 +608,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -618,7 +618,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -638,7 +638,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1060; + CURRENT_PROJECT_VERSION = 1068; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; @@ -649,7 +649,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.1060; + MARKETING_VERSION = 1.0.1068; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/pubspec.yaml b/pubspec.yaml index 92e0fa61..6ecfe77a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: server_box description: server status & toolbox app. publish_to: 'none' -version: 1.0.1060+1060 +version: 1.0.1068+1068 environment: sdk: ">=3.0.0"