Merge branch 'main' of https://github.com/hiddify/hiddify-next
This commit is contained in:
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,5 +1,19 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.13.5.dev] - 2023-1-6
|
||||||
|
|
||||||
|
### New Features and Improvements
|
||||||
|
|
||||||
|
- Updated sing-box to version 1.7.8
|
||||||
|
- Improved TLS Fragmentation. [PR#12](https://github.com/hiddify/hiddify-sing-box/pull/12) by [Kyōchikutō | キョウチクトウ](https://github.com/kyochikuto)
|
||||||
|
- Improved v2ray config parser
|
||||||
|
- Added cancel button on new profile modal
|
||||||
|
- Changed default Connection Test URL
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- Fixed Android service mode
|
||||||
|
- Fixed QR code scanner not scanning deep links
|
||||||
|
|
||||||
## [0.13.4.dev] - 2023-1-4
|
## [0.13.4.dev] - 2023-1-4
|
||||||
|
|
||||||
@@ -197,6 +211,7 @@
|
|||||||
- Fixed localization mistakes in Russian. [PR#95](https://github.com/hiddify/hiddify-next/pull/95) by [solokot](https://github.com/solokot)
|
- Fixed localization mistakes in Russian. [PR#95](https://github.com/hiddify/hiddify-next/pull/95) by [solokot](https://github.com/solokot)
|
||||||
- Fixed localization mistakes in Russian. [PR#74](https://github.com/hiddify/hiddify-next/pull/74) by [Elshad Guseynov](https://github.com/lifeindarkside)
|
- Fixed localization mistakes in Russian. [PR#74](https://github.com/hiddify/hiddify-next/pull/74) by [Elshad Guseynov](https://github.com/lifeindarkside)
|
||||||
|
|
||||||
|
[0.13.5.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.5.dev
|
||||||
[0.13.4.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.4.dev
|
[0.13.4.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.4.dev
|
||||||
[0.13.3.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.3.dev
|
[0.13.3.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.3.dev
|
||||||
[0.13.2.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.2.dev
|
[0.13.2.dev]: https://github.com/hiddify/hiddify-next/releases/tag/v0.13.2.dev
|
||||||
|
|||||||
@@ -17,13 +17,13 @@ import 'package:hiddify/core/preferences/preferences_migration.dart';
|
|||||||
import 'package:hiddify/core/preferences/preferences_provider.dart';
|
import 'package:hiddify/core/preferences/preferences_provider.dart';
|
||||||
import 'package:hiddify/features/app/widget/app.dart';
|
import 'package:hiddify/features/app/widget/app.dart';
|
||||||
import 'package:hiddify/features/auto_start/notifier/auto_start_notifier.dart';
|
import 'package:hiddify/features/auto_start/notifier/auto_start_notifier.dart';
|
||||||
|
import 'package:hiddify/features/deep_link/notifier/deep_link_notifier.dart';
|
||||||
import 'package:hiddify/features/geo_asset/data/geo_asset_data_providers.dart';
|
import 'package:hiddify/features/geo_asset/data/geo_asset_data_providers.dart';
|
||||||
import 'package:hiddify/features/log/data/log_data_providers.dart';
|
import 'package:hiddify/features/log/data/log_data_providers.dart';
|
||||||
import 'package:hiddify/features/profile/data/profile_data_providers.dart';
|
import 'package:hiddify/features/profile/data/profile_data_providers.dart';
|
||||||
import 'package:hiddify/features/profile/notifier/active_profile_notifier.dart';
|
import 'package:hiddify/features/profile/notifier/active_profile_notifier.dart';
|
||||||
import 'package:hiddify/features/system_tray/notifier/system_tray_notifier.dart';
|
import 'package:hiddify/features/system_tray/notifier/system_tray_notifier.dart';
|
||||||
import 'package:hiddify/features/window/notifier/window_notifier.dart';
|
import 'package:hiddify/features/window/notifier/window_notifier.dart';
|
||||||
import 'package:hiddify/services/deep_link_service.dart';
|
|
||||||
import 'package:hiddify/singbox/service/singbox_service_provider.dart';
|
import 'package:hiddify/singbox/service/singbox_service_provider.dart';
|
||||||
import 'package:hiddify/utils/utils.dart';
|
import 'package:hiddify/utils/utils.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
@@ -144,7 +144,7 @@ Future<void> lazyBootstrap(
|
|||||||
);
|
);
|
||||||
await _safeInit(
|
await _safeInit(
|
||||||
"deep link service",
|
"deep link service",
|
||||||
() => container.read(deepLinkServiceProvider.future),
|
() => container.read(deepLinkNotifierProvider.future),
|
||||||
timeout: 1000,
|
timeout: 1000,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:hiddify/core/preferences/general_preferences.dart';
|
import 'package:hiddify/core/preferences/general_preferences.dart';
|
||||||
import 'package:hiddify/core/router/routes.dart';
|
import 'package:hiddify/core/router/routes.dart';
|
||||||
import 'package:hiddify/services/deep_link_service.dart';
|
import 'package:hiddify/features/deep_link/notifier/deep_link_notifier.dart';
|
||||||
import 'package:hiddify/utils/utils.dart';
|
import 'package:hiddify/utils/utils.dart';
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||||
@@ -21,7 +21,7 @@ final GlobalKey<NavigatorState> rootNavigatorKey = GlobalKey<NavigatorState>();
|
|||||||
GoRouter router(RouterRef ref) {
|
GoRouter router(RouterRef ref) {
|
||||||
final notifier = ref.watch(routerListenableProvider.notifier);
|
final notifier = ref.watch(routerListenableProvider.notifier);
|
||||||
final deepLink = ref.listen(
|
final deepLink = ref.listen(
|
||||||
deepLinkServiceProvider,
|
deepLinkNotifierProvider,
|
||||||
(_, next) async {
|
(_, next) async {
|
||||||
if (next case AsyncData(value: final link?)) {
|
if (next case AsyncData(value: final link?)) {
|
||||||
await ref.state.push(AddProfileRoute(url: link.url).location);
|
await ref.state.push(AddProfileRoute(url: link.url).location);
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ import 'package:hiddify/core/theme/theme_preferences.dart';
|
|||||||
import 'package:hiddify/features/app_update/notifier/app_update_notifier.dart';
|
import 'package:hiddify/features/app_update/notifier/app_update_notifier.dart';
|
||||||
import 'package:hiddify/features/connection/widget/connection_wrapper.dart';
|
import 'package:hiddify/features/connection/widget/connection_wrapper.dart';
|
||||||
import 'package:hiddify/features/profile/notifier/profiles_update_notifier.dart';
|
import 'package:hiddify/features/profile/notifier/profiles_update_notifier.dart';
|
||||||
|
import 'package:hiddify/features/shortcut/shortcut_wrapper.dart';
|
||||||
import 'package:hiddify/features/system_tray/widget/system_tray_wrapper.dart';
|
import 'package:hiddify/features/system_tray/widget/system_tray_wrapper.dart';
|
||||||
import 'package:hiddify/features/window/widget/window_wrapper.dart';
|
import 'package:hiddify/features/window/widget/window_wrapper.dart';
|
||||||
import 'package:hiddify/features/wrapper/shortcut/shortcut_wrapper.dart';
|
|
||||||
import 'package:hiddify/utils/utils.dart';
|
import 'package:hiddify/utils/utils.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:upgrader/upgrader.dart';
|
import 'package:upgrader/upgrader.dart';
|
||||||
|
|||||||
@@ -77,11 +77,17 @@ class QRCodeScannerScreen extends HookConsumerWidget with PresLogger {
|
|||||||
MobileScanner(
|
MobileScanner(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
onDetect: (capture) {
|
onDetect: (capture) {
|
||||||
final data = capture.barcodes.first;
|
final rawData = capture.barcodes.first.rawValue;
|
||||||
if (context.mounted && data.type == BarcodeType.url) {
|
loggy.debug('captured raw: [$rawData]');
|
||||||
loggy.debug('captured raw: [${data.rawValue}]');
|
if (rawData != null) {
|
||||||
loggy.debug('captured url: [${data.url?.url}]');
|
final uri = Uri.tryParse(rawData);
|
||||||
Navigator.of(context, rootNavigator: true).pop(data.url?.url);
|
if (context.mounted && uri != null) {
|
||||||
|
loggy.debug('captured url: [$uri]');
|
||||||
|
Navigator.of(context, rootNavigator: true)
|
||||||
|
.pop(uri.toString());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
loggy.warning("unable to capture");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
errorBuilder: (_, error, __) {
|
errorBuilder: (_, error, __) {
|
||||||
|
|||||||
@@ -4,17 +4,16 @@ import 'package:hiddify/utils/utils.dart';
|
|||||||
import 'package:protocol_handler/protocol_handler.dart';
|
import 'package:protocol_handler/protocol_handler.dart';
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
|
|
||||||
part 'deep_link_service.g.dart';
|
part 'deep_link_notifier.g.dart';
|
||||||
|
|
||||||
typedef NewProfileLink = ({String? url, String? name});
|
typedef NewProfileLink = ({String? url, String? name});
|
||||||
|
|
||||||
@Riverpod(keepAlive: true)
|
@Riverpod(keepAlive: true)
|
||||||
class DeepLinkService extends _$DeepLinkService
|
class DeepLinkNotifier extends _$DeepLinkNotifier
|
||||||
with ProtocolListener, InfraLogger {
|
with ProtocolListener, InfraLogger {
|
||||||
@override
|
@override
|
||||||
Future<NewProfileLink?> build() async {
|
Future<NewProfileLink?> build() async {
|
||||||
if (Platform.isLinux) return null;
|
if (Platform.isLinux) return null;
|
||||||
loggy.debug("initializing");
|
|
||||||
for (final protocol in LinkParser.protocols) {
|
for (final protocol in LinkParser.protocols) {
|
||||||
await protocolHandler.register(protocol);
|
await protocolHandler.register(protocol);
|
||||||
}
|
}
|
||||||
2
libcore
2
libcore
Submodule libcore updated: 29c6413bce...a6ef8d65b6
20
pubspec.lock
20
pubspec.lock
@@ -329,6 +329,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.3"
|
version: "2.3.3"
|
||||||
|
dependency_validator:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: dependency_validator
|
||||||
|
sha256: f727a5627aa405965fab4aef4f468e50a9b632ba0737fd2f98c932fec6d712b9
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.2.3"
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1102,7 +1110,7 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.0"
|
version: "4.1.0"
|
||||||
retry:
|
retry:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: retry
|
name: retry
|
||||||
sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc"
|
sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc"
|
||||||
@@ -1458,14 +1466,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "2.1.3"
|
||||||
timeago:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: timeago
|
|
||||||
sha256: c44b80cbc6b44627c00d76960f2af571f6f50e5dbedef4d9215d455e4335165b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.6.0"
|
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1667,7 +1667,7 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.0"
|
version: "0.3.0"
|
||||||
web_socket_channel:
|
web_socket_channel:
|
||||||
dependency: "direct main"
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: web_socket_channel
|
name: web_socket_channel
|
||||||
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
|
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
|
||||||
|
|||||||
24
pubspec.yaml
24
pubspec.yaml
@@ -1,7 +1,7 @@
|
|||||||
name: hiddify
|
name: hiddify
|
||||||
description: Cross Platform Multi Protocol Proxy Frontend.
|
description: Cross Platform Multi Protocol Proxy Frontend.
|
||||||
publish_to: "none"
|
publish_to: "none"
|
||||||
version: 0.13.4+1340
|
version: 0.13.5+1350
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.2.0 <4.0.0"
|
sdk: ">=3.2.0 <4.0.0"
|
||||||
@@ -15,27 +15,25 @@ dependencies:
|
|||||||
intl: ^0.18.1
|
intl: ^0.18.1
|
||||||
slang: ^3.28.0
|
slang: ^3.28.0
|
||||||
slang_flutter: ^3.28.0
|
slang_flutter: ^3.28.0
|
||||||
timeago: ^3.6.0
|
|
||||||
fpdart: ^1.1.0
|
fpdart: ^1.1.0
|
||||||
freezed_annotation: ^2.4.1
|
freezed_annotation: ^2.4.1
|
||||||
json_annotation: ^4.8.1
|
json_annotation: ^4.8.1
|
||||||
hooks_riverpod: ^2.4.9
|
hooks_riverpod: ^2.4.9
|
||||||
flutter_hooks: ^0.20.3
|
flutter_hooks: ^0.20.4
|
||||||
riverpod_annotation: ^2.3.3
|
riverpod_annotation: ^2.3.3
|
||||||
rxdart: ^0.27.7
|
rxdart: ^0.27.7
|
||||||
drift: ^2.14.1
|
drift: ^2.14.1
|
||||||
sqlite3_flutter_libs: ^0.5.18
|
sqlite3_flutter_libs: ^0.5.18
|
||||||
shared_preferences: ^2.2.2
|
shared_preferences: ^2.2.2
|
||||||
dio: ^5.4.0
|
dio: ^5.4.0
|
||||||
web_socket_channel: ^2.4.0
|
|
||||||
ffi: ^2.1.0
|
ffi: ^2.1.0
|
||||||
path_provider: ^2.1.1
|
path_provider: ^2.1.1
|
||||||
mobile_scanner: ^3.5.5
|
mobile_scanner: ^3.5.5
|
||||||
protocol_handler: ^0.1.6
|
protocol_handler: ^0.1.6
|
||||||
flutter_native_splash: ^2.3.8
|
flutter_native_splash: ^2.3.9
|
||||||
share_plus: ^7.2.1
|
share_plus: ^7.2.1
|
||||||
window_manager: ^0.3.7
|
window_manager: ^0.3.7
|
||||||
tray_manager: ^0.2.0
|
tray_manager: ^0.2.1
|
||||||
package_info_plus: ^5.0.1
|
package_info_plus: ^5.0.1
|
||||||
url_launcher: ^6.2.2
|
url_launcher: ^6.2.2
|
||||||
vclibs: ^0.1.0
|
vclibs: ^0.1.0
|
||||||
@@ -52,24 +50,23 @@ dependencies:
|
|||||||
tint: ^2.0.1
|
tint: ^2.0.1
|
||||||
accessibility_tools: ^1.0.1
|
accessibility_tools: ^1.0.1
|
||||||
neat_periodic_task: ^2.0.1
|
neat_periodic_task: ^2.0.1
|
||||||
retry: ^3.1.2
|
|
||||||
watcher: ^1.1.0
|
watcher: ^1.1.0
|
||||||
go_router: ^13.0.0
|
go_router: ^13.0.1
|
||||||
flex_color_scheme: ^7.3.1
|
flex_color_scheme: ^7.3.1
|
||||||
flutter_animate: ^4.3.0
|
flutter_animate: ^4.3.0
|
||||||
flutter_svg: ^2.0.9
|
flutter_svg: ^2.0.9
|
||||||
gap: ^3.0.1
|
gap: ^3.0.1
|
||||||
percent_indicator: ^4.2.3
|
percent_indicator: ^4.2.3
|
||||||
sliver_tools: ^0.2.12
|
sliver_tools: ^0.2.12
|
||||||
flutter_adaptive_scaffold: ^0.1.7+1
|
flutter_adaptive_scaffold: ^0.1.7+2
|
||||||
humanizer: ^2.2.0
|
humanizer: ^2.2.0
|
||||||
upgrader: ^8.4.0
|
upgrader: ^8.4.0
|
||||||
toastification: ^1.1.0
|
toastification: ^1.1.0
|
||||||
version: ^3.0.2
|
version: ^3.0.2
|
||||||
posix: ^6.0.1
|
posix: ^6.0.1
|
||||||
win32: ^5.1.1
|
win32: ^5.2.0
|
||||||
qr_flutter: ^4.1.0
|
qr_flutter: ^4.1.0
|
||||||
native_dio_adapter: ^1.2.0
|
native_dio_adapter: ^1.3.0
|
||||||
flutter_displaymode: ^0.6.0
|
flutter_displaymode: ^0.6.0
|
||||||
windows_single_instance: ^1.0.1
|
windows_single_instance: ^1.0.1
|
||||||
flutter_loggy_dio: ^3.0.1
|
flutter_loggy_dio: ^3.0.1
|
||||||
@@ -86,11 +83,12 @@ dev_dependencies:
|
|||||||
drift_dev: ^2.14.1
|
drift_dev: ^2.14.1
|
||||||
ffigen: ^8.0.2
|
ffigen: ^8.0.2
|
||||||
slang_build_runner: ^3.28.0
|
slang_build_runner: ^3.28.0
|
||||||
flutter_gen_runner: ^5.3.2
|
flutter_gen_runner: ^5.4.0
|
||||||
go_router_builder: ^2.4.0
|
go_router_builder: ^2.4.1
|
||||||
custom_lint: ^0.5.7
|
custom_lint: ^0.5.7
|
||||||
riverpod_lint: ^2.3.7
|
riverpod_lint: ^2.3.7
|
||||||
icons_launcher: ^2.1.6
|
icons_launcher: ^2.1.6
|
||||||
|
dependency_validator: ^3.2.3
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
|||||||
Reference in New Issue
Block a user