feat: mobile-like window size and always-visible stats

- Changed window size to mobile phone format (400x800)
- Removed width condition for ActiveProxyFooter - now always visible
- Added run-umbrix.sh launch script with icon copying
- Stats cards now display on all screen sizes
This commit is contained in:
Umbrix Developer
2026-01-17 13:09:20 +03:00
parent ec5ebbd54b
commit 76a374950f
245 changed files with 7931 additions and 1315 deletions

View File

@@ -4,17 +4,17 @@ import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:gap/gap.dart';
import 'package:go_router/go_router.dart';
import 'package:hiddify/core/localization/translations.dart';
import 'package:hiddify/core/notification/in_app_notification_controller.dart';
import 'package:hiddify/core/preferences/preferences_provider.dart';
import 'package:hiddify/core/router/router.dart';
import 'package:hiddify/features/common/qr_code_scanner_screen.dart';
import 'package:hiddify/features/config_option/data/config_option_repository.dart';
import 'package:hiddify/features/config_option/notifier/warp_option_notifier.dart';
import 'package:umbrix/core/localization/translations.dart';
import 'package:umbrix/core/notification/in_app_notification_controller.dart';
import 'package:umbrix/core/preferences/preferences_provider.dart';
import 'package:umbrix/core/router/router.dart';
import 'package:umbrix/features/common/qr_code_scanner_screen.dart';
import 'package:umbrix/features/config_option/data/config_option_repository.dart';
import 'package:umbrix/features/config_option/notifier/warp_option_notifier.dart';
import 'package:hiddify/features/config_option/overview/warp_options_widgets.dart';
import 'package:hiddify/features/profile/notifier/profile_notifier.dart';
import 'package:hiddify/utils/utils.dart';
import 'package:umbrix/features/config_option/overview/warp_options_widgets.dart';
import 'package:umbrix/features/profile/notifier/profile_notifier.dart';
import 'package:umbrix/utils/utils.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
class AddProfileModal extends HookConsumerWidget {
@@ -155,7 +155,7 @@ class AddProfileModal extends HookConsumerWidget {
child: Material(
key: const ValueKey("add_warp_button"),
elevation: 8,
color: theme.colorScheme.surface,
color: theme.colorScheme.primary,
surfaceTintColor: theme.colorScheme.surfaceTint,
shadowColor: Colors.transparent,
borderRadius: BorderRadius.circular(8),
@@ -169,13 +169,13 @@ class AddProfileModal extends HookConsumerWidget {
children: [
Icon(
FluentIcons.add_24_regular,
color: theme.colorScheme.primary,
color: Colors.white,
),
const SizedBox(width: 8),
Text(
t.profile.add.addWarp,
style: theme.textTheme.labelLarge?.copyWith(
color: theme.colorScheme.primary,
color: Colors.white,
),
),
],
@@ -193,7 +193,7 @@ class AddProfileModal extends HookConsumerWidget {
child: Material(
key: const ValueKey("add_manually_button"),
elevation: 8,
color: theme.colorScheme.surface,
color: theme.colorScheme.primary,
surfaceTintColor: theme.colorScheme.surfaceTint,
shadowColor: Colors.transparent,
borderRadius: BorderRadius.circular(8),
@@ -208,13 +208,13 @@ class AddProfileModal extends HookConsumerWidget {
children: [
Icon(
FluentIcons.add_24_regular,
color: theme.colorScheme.primary,
color: Colors.white,
),
const SizedBox(width: 8),
Text(
t.profile.add.manually,
style: theme.textTheme.labelLarge?.copyWith(
color: theme.colorScheme.primary,
color: Colors.white,
),
),
],
@@ -274,9 +274,9 @@ class AddProfileModal extends HookConsumerWidget {
toast?.start();
// }
if (region == "cn") {
await profile.add("#profile-title: Hiddify WARP\nwarp://p1@auto#National&&detour=warp://p2@auto#WoW"); //
await profile.add("#profile-title: Umbrix WARP\nwarp://p1@auto#National&&detour=warp://p2@auto#WoW");
} else {
await profile.add("https://raw.githubusercontent.com/hiddify/hiddify-next/main/test.configs/warp"); //
await profile.add("#profile-title: Umbrix WARP\nwarp://p1@auto#National&&detour=warp://p2@auto#WoW");
}
}
}
@@ -298,7 +298,7 @@ class _Button extends StatelessWidget {
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final color = theme.colorScheme.primary;
final color = Colors.white;
return Semantics(
button: true,
@@ -307,7 +307,7 @@ class _Button extends StatelessWidget {
height: size,
child: Material(
elevation: 8,
color: theme.colorScheme.surface,
color: theme.colorScheme.primary,
surfaceTintColor: theme.colorScheme.surfaceTint,
shadowColor: Colors.transparent,
borderRadius: BorderRadius.circular(8),