Compare commits

..

2 Commits

Author SHA1 Message Date
dependabot[bot]
78aa644c68 Merge 3dab05fc0e into 9a0b97476e 2026-02-02 04:23:13 +00:00
dependabot[bot]
3dab05fc0e build(deps): bump fluent_ui from 4.11.3 to 4.12.0
Bumps [fluent_ui](https://github.com/bdlukaa/fluent_ui) from 4.11.3 to 4.12.0.
- [Release notes](https://github.com/bdlukaa/fluent_ui/releases)
- [Changelog](https://github.com/bdlukaa/fluent_ui/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bdlukaa/fluent_ui/commits)

---
updated-dependencies:
- dependency-name: fluent_ui
  dependency-version: 4.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 00:19:59 +00:00
22 changed files with 112 additions and 430 deletions

View File

@@ -183,6 +183,9 @@ class AppGlobalModel extends _$AppGlobalModel {
state = state.copyWith(windowsVersion: 10);
await Window.setEffect(effect: WindowEffect.disabled);
}
} else {
state = state.copyWith(windowsVersion: 9);
await Window.setEffect(effect: WindowEffect.disabled);
}
// Show window after acrylic effect is applied
await windowManager.show();
@@ -265,6 +268,8 @@ class AppGlobalModel extends _$AppGlobalModel {
Timer? _activityThemeColorTimer;
void checkActivityThemeColor(AppVersionData networkVersionData) {
final isDisableAcrylic = state.windowsVersion <= 11;
if (_activityThemeColorTimer != null) {
_activityThemeColorTimer?.cancel();
_activityThemeColorTimer = null;
@@ -288,8 +293,8 @@ class AppGlobalModel extends _$AppGlobalModel {
final colorCfg = networkVersionData.activityColors;
state = state.copyWith(
themeConf: ThemeConf(
backgroundColor: HexColor(colorCfg?.background ?? "#132431").withValues(alpha: .75),
menuColor: HexColor(colorCfg?.menu ?? "#132431").withValues(alpha: .95),
backgroundColor: HexColor(colorCfg?.background ?? "#132431").withValues(alpha: isDisableAcrylic ? 1 : .75),
menuColor: HexColor(colorCfg?.menu ?? "#132431").withValues(alpha: isDisableAcrylic ? 1 : .95),
micaColor: HexColor(colorCfg?.mica ?? "#0A3142"),
),
);
@@ -303,8 +308,8 @@ class AppGlobalModel extends _$AppGlobalModel {
dPrint("reset Color ....");
state = state.copyWith(
themeConf: ThemeConf(
backgroundColor: HexColor("#132431").withValues(alpha: .75),
menuColor: HexColor("#132431").withValues(alpha: .95),
backgroundColor: HexColor("#132431").withValues(alpha: isDisableAcrylic ? 1 : .75),
menuColor: HexColor("#132431").withValues(alpha: isDisableAcrylic ? 1 : .95),
micaColor: HexColor("#0A3142"),
),
);

View File

@@ -402,9 +402,6 @@ class MessageLookup extends MessageLookupByLibrary {
"Loading images...",
),
"app_common_network_error": m1,
"app_common_recommended": MessageLookupByLibrary.simpleMessage(
"Recommended",
),
"app_common_tip": MessageLookupByLibrary.simpleMessage("Tip"),
"app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"app_common_tip_confirm": MessageLookupByLibrary.simpleMessage("Confirm"),
@@ -2169,9 +2166,6 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Hosts Acceleration (Experimental)",
),
"tools_action_info_cleaning": MessageLookupByLibrary.simpleMessage(
"Cleaning...",
),
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"Cleanup complete, please complete one installation / game launch operation.",
),
@@ -2283,9 +2277,6 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_rsi_launcher_log_fix": MessageLookupByLibrary.simpleMessage(
"RSI Launcher Log Fix",
),
"tools_action_start_cleaning": MessageLookupByLibrary.simpleMessage(
"Start Cleaning",
),
"tools_action_switch_graphics_renderer":
MessageLookupByLibrary.simpleMessage("Switch DirectX/Vulkan Renderer"),
"tools_action_switch_graphics_renderer_info": m104,
@@ -2416,18 +2407,12 @@ class MessageLookup extends MessageLookupByLibrary {
"Installing patch, this will take some time depending on your computer\'s performance...",
),
"tools_shader_clean_all": MessageLookupByLibrary.simpleMessage("Clean All"),
"tools_shader_clean_all_desc": MessageLookupByLibrary.simpleMessage(
"Clean all version caches (only keep GraphicsSettings). Suitable for graphics anomalies or post-update cleaning.",
),
"tools_shader_clean_dialog_title": MessageLookupByLibrary.simpleMessage(
"Clear Shader Cache",
),
"tools_shader_clean_keep_latest": MessageLookupByLibrary.simpleMessage(
"Keep Latest",
),
"tools_shader_clean_keep_latest_desc": MessageLookupByLibrary.simpleMessage(
"Suitable for use after game updates and completing the first launch. Keep all files in the latest version, clean other old versions (only keep GraphicsSettings).",
),
"tools_unp4k_action_cancel_multi_select":
MessageLookupByLibrary.simpleMessage("Cancel Multi-Select"),
"tools_unp4k_action_deselect_all": MessageLookupByLibrary.simpleMessage(

View File

@@ -349,7 +349,6 @@ class MessageLookup extends MessageLookupByLibrary {
"画像を読み込み中...",
),
"app_common_network_error": m1,
"app_common_recommended": MessageLookupByLibrary.simpleMessage("推奨"),
"app_common_tip": MessageLookupByLibrary.simpleMessage("ヒント"),
"app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("キャンセル"),
"app_common_tip_confirm": MessageLookupByLibrary.simpleMessage("確認"),
@@ -1845,9 +1844,6 @@ class MessageLookup extends MessageLookupByLibrary {
),
"tools_action_hosts_acceleration_experimental":
MessageLookupByLibrary.simpleMessage("Hosts加速実験的"),
"tools_action_info_cleaning": MessageLookupByLibrary.simpleMessage(
"クリーニング中...",
),
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"クリーンアップが完了しました。インストールまたはゲーム起動操作を完了してください。",
),
@@ -1949,9 +1945,6 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_rsi_launcher_log_fix": MessageLookupByLibrary.simpleMessage(
"RSI Launcher ログ修復",
),
"tools_action_start_cleaning": MessageLookupByLibrary.simpleMessage(
"クリーニング開始",
),
"tools_action_unp4k": MessageLookupByLibrary.simpleMessage("P4Kビューア"),
"tools_action_unp4k_info": MessageLookupByLibrary.simpleMessage(
"Star Citizen p4kファイルを解凍",
@@ -2044,18 +2037,12 @@ class MessageLookup extends MessageLookupByLibrary {
"パッチをインストール中、これはコンピュータのパフォーマンスによって時間がかかります...",
),
"tools_shader_clean_all": MessageLookupByLibrary.simpleMessage("すべてクリア"),
"tools_shader_clean_all_desc": MessageLookupByLibrary.simpleMessage(
"すべてのバージョンのキャッシュをクリアGraphicsSettingsのみ保持。グラフィック異常またはアップデート後のクリーニングに適しています。",
),
"tools_shader_clean_dialog_title": MessageLookupByLibrary.simpleMessage(
"シェーダーキャッシュをクリア",
),
"tools_shader_clean_keep_latest": MessageLookupByLibrary.simpleMessage(
"最新を保持",
),
"tools_shader_clean_keep_latest_desc": MessageLookupByLibrary.simpleMessage(
"ゲームアップデート後と初回起動完了後の使用に適しています。最新バージョンのすべてのファイルを保持し、他の古いバージョンをクリアGraphicsSettingsのみ保持",
),
"tools_unp4k_missing_runtime": MessageLookupByLibrary.simpleMessage(
"ランタイムがありません",
),

View File

@@ -372,9 +372,6 @@ class MessageLookup extends MessageLookupByLibrary {
"Загрузка изображений...",
),
"app_common_network_error": m1,
"app_common_recommended": MessageLookupByLibrary.simpleMessage(
"Рекомендуется",
),
"app_common_tip": MessageLookupByLibrary.simpleMessage("Подсказка"),
"app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("Отмена"),
"app_common_tip_confirm": MessageLookupByLibrary.simpleMessage(
@@ -2081,9 +2078,6 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage(
"Ускорение через Hosts (экспериментально)",
),
"tools_action_info_cleaning": MessageLookupByLibrary.simpleMessage(
"Очистка...",
),
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"Очистка завершена, пожалуйста, выполните установку или запуск игры.",
),
@@ -2196,9 +2190,6 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_rsi_launcher_log_fix": MessageLookupByLibrary.simpleMessage(
"Исправление лог-файла RSI Launcher",
),
"tools_action_start_cleaning": MessageLookupByLibrary.simpleMessage(
"Начать очистку",
),
"tools_action_unp4k": MessageLookupByLibrary.simpleMessage(
"Просмотрщик P4K",
),
@@ -2305,18 +2296,12 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_shader_clean_all": MessageLookupByLibrary.simpleMessage(
"Очистить всё",
),
"tools_shader_clean_all_desc": MessageLookupByLibrary.simpleMessage(
"Очистить кеш всех версий (сохранить только GraphicsSettings). Подходит для графических аномалий или очистки после обновления.",
),
"tools_shader_clean_dialog_title": MessageLookupByLibrary.simpleMessage(
"Очистить кеш шейдеров",
),
"tools_shader_clean_keep_latest": MessageLookupByLibrary.simpleMessage(
"Сохранить последнее",
),
"tools_shader_clean_keep_latest_desc": MessageLookupByLibrary.simpleMessage(
"Подходит для использования после обновления игры и завершения первого запуска. Сохранить все файлы последней версии, очистить другие старые версии (сохранить только GraphicsSettings).",
),
"tools_unp4k_missing_runtime": MessageLookupByLibrary.simpleMessage(
"Отсутствует среда выполнения",
),

View File

@@ -363,7 +363,6 @@ class MessageLookup extends MessageLookupByLibrary {
"加载图片...",
),
"app_common_network_error": m1,
"app_common_recommended": MessageLookupByLibrary.simpleMessage("推荐"),
"app_common_tip": MessageLookupByLibrary.simpleMessage("提示"),
"app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("取消"),
"app_common_tip_confirm": MessageLookupByLibrary.simpleMessage("确认"),
@@ -1835,9 +1834,6 @@ class MessageLookup extends MessageLookupByLibrary {
),
"tools_action_hosts_acceleration_experimental":
MessageLookupByLibrary.simpleMessage("Hosts 加速(实验性)"),
"tools_action_info_cleaning": MessageLookupByLibrary.simpleMessage(
"正在清理...",
),
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"清理完毕,请完成一次安装 / 游戏启动 操作。",
),
@@ -1933,7 +1929,6 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_rsi_launcher_log_fix": MessageLookupByLibrary.simpleMessage(
"RSI Launcher Log 修复",
),
"tools_action_start_cleaning": MessageLookupByLibrary.simpleMessage("开始清理"),
"tools_action_switch_graphics_renderer":
MessageLookupByLibrary.simpleMessage("切换 DirectX/Vulkan 渲染器"),
"tools_action_switch_graphics_renderer_info": m104,
@@ -2050,18 +2045,12 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_rsi_launcher_enhance_working_msg2":
MessageLookupByLibrary.simpleMessage("安装补丁,这需要一点时间,取决于您的计算机性能 ..."),
"tools_shader_clean_all": MessageLookupByLibrary.simpleMessage("全部清理"),
"tools_shader_clean_all_desc": MessageLookupByLibrary.simpleMessage(
"清理所有版本的缓存。适合画面异常或更新后清理。",
),
"tools_shader_clean_dialog_title": MessageLookupByLibrary.simpleMessage(
"清理着色器缓存",
),
"tools_shader_clean_keep_latest": MessageLookupByLibrary.simpleMessage(
"保留最新",
),
"tools_shader_clean_keep_latest_desc": MessageLookupByLibrary.simpleMessage(
"适合游戏更新并完成首次启动后使用。保留最新版本的所有文件,清理其他旧版本。",
),
"tools_unp4k_action_cancel_multi_select":
MessageLookupByLibrary.simpleMessage("取消多选"),
"tools_unp4k_action_deselect_all": MessageLookupByLibrary.simpleMessage(

View File

@@ -334,7 +334,6 @@ class MessageLookup extends MessageLookupByLibrary {
"載入圖片...",
),
"app_common_network_error": m1,
"app_common_recommended": MessageLookupByLibrary.simpleMessage("推薦"),
"app_common_tip": MessageLookupByLibrary.simpleMessage("提示"),
"app_common_tip_cancel": MessageLookupByLibrary.simpleMessage("取消"),
"app_common_tip_confirm": MessageLookupByLibrary.simpleMessage("確認"),
@@ -1730,9 +1729,6 @@ class MessageLookup extends MessageLookupByLibrary {
),
"tools_action_hosts_acceleration_experimental":
MessageLookupByLibrary.simpleMessage("Hosts 加速Beta"),
"tools_action_info_cleaning": MessageLookupByLibrary.simpleMessage(
"正在清理...",
),
"tools_action_info_cleanup_complete": MessageLookupByLibrary.simpleMessage(
"清理完畢,請完成一次安裝 / 遊戲啟動 操作。",
),
@@ -1826,7 +1822,6 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_action_rsi_launcher_log_fix": MessageLookupByLibrary.simpleMessage(
"啟動器日誌修復",
),
"tools_action_start_cleaning": MessageLookupByLibrary.simpleMessage("開始清理"),
"tools_action_unp4k": MessageLookupByLibrary.simpleMessage("P4K 查看器"),
"tools_action_unp4k_info": MessageLookupByLibrary.simpleMessage(
"解包星際公民 p4k 文件",
@@ -1913,18 +1908,12 @@ class MessageLookup extends MessageLookupByLibrary {
"tools_rsi_launcher_enhance_working_msg2":
MessageLookupByLibrary.simpleMessage("安裝補丁,這需要一點時間,取決於您的電腦性能 ..."),
"tools_shader_clean_all": MessageLookupByLibrary.simpleMessage("全部清理"),
"tools_shader_clean_all_desc": MessageLookupByLibrary.simpleMessage(
"清理所有版本的快取(僅保留 GraphicsSettings。適合畫面異常或更新後清理。",
),
"tools_shader_clean_dialog_title": MessageLookupByLibrary.simpleMessage(
"清理著色器緩存",
),
"tools_shader_clean_keep_latest": MessageLookupByLibrary.simpleMessage(
"保留最新",
),
"tools_shader_clean_keep_latest_desc": MessageLookupByLibrary.simpleMessage(
"適合遊戲更新並完成首次啟動後使用。保留最新版本的所有檔案,清理其他舊版本(僅保留 GraphicsSettings",
),
"tools_unp4k_missing_runtime": MessageLookupByLibrary.simpleMessage(
"缺少運行庫",
),

View File

@@ -9576,56 +9576,6 @@ class S {
args: [],
);
}
/// `Suitable for use after game updates and completing the first launch. Keep all files in the latest version, clean other old versions (only keep GraphicsSettings).`
String get tools_shader_clean_keep_latest_desc {
return Intl.message(
'Suitable for use after game updates and completing the first launch. Keep all files in the latest version, clean other old versions (only keep GraphicsSettings).',
name: 'tools_shader_clean_keep_latest_desc',
desc: '',
args: [],
);
}
/// `Clean all version caches (only keep GraphicsSettings). Suitable for graphics anomalies or post-update cleaning.`
String get tools_shader_clean_all_desc {
return Intl.message(
'Clean all version caches (only keep GraphicsSettings). Suitable for graphics anomalies or post-update cleaning.',
name: 'tools_shader_clean_all_desc',
desc: '',
args: [],
);
}
/// `Cleaning...`
String get tools_action_info_cleaning {
return Intl.message(
'Cleaning...',
name: 'tools_action_info_cleaning',
desc: '',
args: [],
);
}
/// `Start Cleaning`
String get tools_action_start_cleaning {
return Intl.message(
'Start Cleaning',
name: 'tools_action_start_cleaning',
desc: '',
args: [],
);
}
/// `Recommended`
String get app_common_recommended {
return Intl.message(
'Recommended',
name: 'app_common_recommended',
desc: '',
args: [],
);
}
}
class AppLocalizationDelegate extends LocalizationsDelegate<S> {

View File

@@ -1918,15 +1918,5 @@
"tools_shader_clean_keep_latest": "Keep Latest",
"@tools_shader_clean_keep_latest": {},
"tools_shader_clean_all": "Clean All",
"@tools_shader_clean_all": {},
"tools_shader_clean_keep_latest_desc": "Suitable for use after game updates and completing the first launch. Keep all files in the latest version, clean other old versions (only keep GraphicsSettings).",
"@tools_shader_clean_keep_latest_desc": {},
"tools_shader_clean_all_desc": "Clean all version caches (only keep GraphicsSettings). Suitable for graphics anomalies or post-update cleaning.",
"@tools_shader_clean_all_desc": {},
"tools_action_info_cleaning": "Cleaning...",
"@tools_action_info_cleaning": {},
"tools_action_start_cleaning": "Start Cleaning",
"@tools_action_start_cleaning": {},
"app_common_recommended": "Recommended",
"@app_common_recommended": {}
"@tools_shader_clean_all": {}
}

View File

@@ -1740,15 +1740,5 @@
"tools_shader_clean_keep_latest": "最新を保持",
"@tools_shader_clean_keep_latest": {},
"tools_shader_clean_all": "すべてクリア",
"@tools_shader_clean_all": {},
"tools_shader_clean_keep_latest_desc": "ゲームアップデート後と初回起動完了後の使用に適しています。最新バージョンのすべてのファイルを保持し、他の古いバージョンをクリアGraphicsSettingsのみ保持。",
"@tools_shader_clean_keep_latest_desc": {},
"tools_shader_clean_all_desc": "すべてのバージョンのキャッシュをクリアGraphicsSettingsのみ保持。グラフィック異常またはアップデート後のクリーニングに適しています。",
"@tools_shader_clean_all_desc": {},
"tools_action_info_cleaning": "クリーニング中...",
"@tools_action_info_cleaning": {},
"tools_action_start_cleaning": "クリーニング開始",
"@tools_action_start_cleaning": {},
"app_common_recommended": "推奨",
"@app_common_recommended": {}
"@tools_shader_clean_all": {}
}

View File

@@ -1740,15 +1740,5 @@
"tools_shader_clean_keep_latest": "Сохранить последнее",
"@tools_shader_clean_keep_latest": {},
"tools_shader_clean_all": "Очистить всё",
"@tools_shader_clean_all": {},
"tools_shader_clean_keep_latest_desc": "Подходит для использования после обновления игры и завершения первого запуска. Сохранить все файлы последней версии, очистить другие старые версии (сохранить только GraphicsSettings).",
"@tools_shader_clean_keep_latest_desc": {},
"tools_shader_clean_all_desc": "Очистить кеш всех версий (сохранить только GraphicsSettings). Подходит для графических аномалий или очистки после обновления.",
"@tools_shader_clean_all_desc": {},
"tools_action_info_cleaning": "Очистка...",
"@tools_action_info_cleaning": {},
"tools_action_start_cleaning": "Начать очистку",
"@tools_action_start_cleaning": {},
"app_common_recommended": "Рекомендуется",
"@app_common_recommended": {}
"@tools_shader_clean_all": {}
}

View File

@@ -1331,10 +1331,5 @@
"yearly_report_card_desc": "查看您在{year}年的星际公民游玩统计,数据来自本地 log ,请确保在常用电脑上查看。",
"tools_shader_clean_dialog_title": "清理着色器缓存",
"tools_shader_clean_keep_latest": "保留最新",
"tools_shader_clean_all": "全部清理",
"tools_shader_clean_keep_latest_desc": "适合游戏更新并完成首次启动后使用。保留最新版本的所有文件,清理其他旧版本。",
"tools_shader_clean_all_desc": "清理所有版本的缓存。适合画面异常或更新后清理。",
"tools_action_info_cleaning": "正在清理...",
"tools_action_start_cleaning": "开始清理",
"app_common_recommended": "推荐"
"tools_shader_clean_all": "全部清理"
}

View File

@@ -1673,10 +1673,5 @@
"yearly_report_card_desc": "查看您在{year}年的星際公民遊玩統計,數據來自本地 log ,請確保在常用電腦上查看。",
"tools_shader_clean_dialog_title": "清理著色器緩存",
"tools_shader_clean_keep_latest": "保留最新",
"tools_shader_clean_all": "全部清理",
"tools_shader_clean_keep_latest_desc": "適合遊戲更新並完成首次啟動後使用。保留最新版本的所有檔案,清理其他舊版本(僅保留 GraphicsSettings。",
"tools_shader_clean_all_desc": "清理所有版本的快取(僅保留 GraphicsSettings。適合畫面異常或更新後清理。",
"tools_action_info_cleaning": "正在清理...",
"tools_action_start_cleaning": "開始清理",
"app_common_recommended": "推薦"
"tools_shader_clean_all": "全部清理"
}

View File

@@ -44,6 +44,9 @@ Future<void> _initWindow() async {
await windowManager.setSize(const Size(1280, 810));
await windowManager.setMinimumSize(const Size(1280, 810));
await windowManager.center(animate: true);
if (Platform.isWindows) {
await Window.setEffect(effect: WindowEffect.transparent, color: Colors.transparent, dark: true);
}
}
class App extends HookConsumerWidget with WindowListener {

View File

@@ -41,7 +41,7 @@ final class HomeUIModelProvider
}
}
String _$homeUIModelHash() => r'9e16e9021ef2b68403f5d5ce21829d1fee0f4c8a';
String _$homeUIModelHash() => r'c3affcfc99a0cd7e3587cc58f02dbdc24c4f8ae7';
abstract class _$HomeUIModel extends $Notifier<HomeUIModelState> {
HomeUIModelState build();

View File

@@ -677,11 +677,9 @@ class LocalizationUIModel extends _$LocalizationUIModel {
child: Row(
children: [
Expanded(
child: SelectionArea(
child: Text(
item.value.note ?? S.current.home_localization_msg_no_note,
style: const TextStyle(fontSize: 15),
),
child: Text(
item.value.note ?? S.current.home_localization_msg_no_note,
style: const TextStyle(fontSize: 15),
),
),
],

View File

@@ -1,196 +0,0 @@
import 'package:fluent_ui/fluent_ui.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:starcitizen_doctor/generated/l10n.dart';
/// 着色器缓存清理对话框
class ShaderCacheCleanDialog extends StatefulWidget {
final Future<void> Function(String mode) onClean;
const ShaderCacheCleanDialog({super.key, required this.onClean});
@override
State<ShaderCacheCleanDialog> createState() => _ShaderCacheCleanDialogState();
}
class _ShaderCacheCleanDialogState extends State<ShaderCacheCleanDialog> {
bool _isCleaning = false;
String? _selectedMode;
@override
Widget build(BuildContext context) {
return ContentDialog(
title: Row(
children: [
const Icon(FontAwesomeIcons.shapes, size: 20),
const SizedBox(width: 12),
Text(S.current.tools_shader_clean_dialog_title),
],
),
constraints: const BoxConstraints(maxWidth: 500),
content: _isCleaning
? SizedBox(
height: 120,
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const ProgressRing(),
const SizedBox(height: 16),
Text(S.current.tools_action_info_cleaning),
],
),
),
)
: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const SizedBox(height: 12),
// 保留最新模式
_CleanModeOption(
icon: FluentIcons.save,
title: S.current.tools_shader_clean_keep_latest,
description: S.current.tools_shader_clean_keep_latest_desc,
isSelected: _selectedMode == "keep_latest",
isRecommended: true,
onTap: () {
setState(() {
_selectedMode = "keep_latest";
});
},
),
const SizedBox(height: 12),
// 全部清理模式
_CleanModeOption(
icon: FluentIcons.delete,
title: S.current.tools_shader_clean_all,
description: S.current.tools_shader_clean_all_desc,
isSelected: _selectedMode == "clean_all",
onTap: () {
setState(() {
_selectedMode = "clean_all";
});
},
),
],
),
actions: [
if (!_isCleaning) ...[
Button(onPressed: () => Navigator.of(context).pop(), child: Text(S.current.app_common_tip_cancel)),
FilledButton(
onPressed: _selectedMode == null
? null
: () async {
setState(() {
_isCleaning = true;
});
try {
await widget.onClean(_selectedMode!);
} finally {
if (mounted) {
setState(() {
_isCleaning = false;
});
}
}
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
child: Text(S.current.tools_action_start_cleaning),
),
),
],
],
);
}
}
/// 清理模式选项组件
class _CleanModeOption extends StatelessWidget {
final IconData icon;
final String title;
final String description;
final bool isSelected;
final bool isRecommended;
final VoidCallback onTap;
const _CleanModeOption({
required this.icon,
required this.title,
required this.description,
required this.isSelected,
this.isRecommended = false,
required this.onTap,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: isSelected
? FluentTheme.of(context).accentColor.withValues(alpha: .15)
: FluentTheme.of(context).cardColor,
borderRadius: BorderRadius.circular(8),
border: Border.all(color: isSelected ? FluentTheme.of(context).accentColor : Colors.transparent, width: 2),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Icon(
icon,
size: 20,
color: isSelected ? FluentTheme.of(context).accentColor : Colors.white.withValues(alpha: .7),
),
const SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Expanded(
child: Text(
title,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.w600,
color: isSelected ? FluentTheme.of(context).accentColor : Colors.white,
),
),
),
if (isRecommended)
Container(
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: const Color(0xFF4CAF50),
borderRadius: BorderRadius.circular(4),
),
child: Text(
S.current.app_common_recommended,
style: const TextStyle(fontSize: 11, color: Colors.white, fontWeight: FontWeight.w600),
),
),
],
),
const SizedBox(height: 8),
Text(
description,
style: TextStyle(fontSize: 13, color: Colors.white.withValues(alpha: .6), height: 1.4),
),
],
),
),
],
),
],
),
),
);
}
}

View File

@@ -25,7 +25,6 @@ import 'package:xml/xml.dart';
import 'dialogs/hosts_booster_dialog_ui.dart';
import 'dialogs/rsi_launcher_enhance_dialog_ui.dart';
import 'dialogs/shader_cache_clean_dialog.dart';
import 'yearly_report_ui/yearly_report_ui.dart';
part 'tools_ui_model.g.dart';
@@ -628,28 +627,62 @@ class ToolsUIModel extends _$ToolsUIModel {
// 全部清理模式:
// 前两个:仅保留 GraphicsSettings
// 其他:仅保留 GraphicsSettings
await _cleanShaderCacheDirectory(scDir);
}
}
}
Future<void> _cleanShaderCache(BuildContext context) async {
await showDialog<String>(
// 显示对话框让用户选择清理模式
final result = await showDialog<String>(
context: context,
builder: (dialogContext) => ShaderCacheCleanDialog(
onClean: (mode) async {
state = state.copyWith(working: true);
if (mode == "keep_latest") {
await cleanShaderCacheKeepLatest();
} else {
await cleanShaderCache();
}
if (!context.mounted) return;
loadToolsCard(context, skipPathScan: true);
state = state.copyWith(working: false);
Navigator.of(dialogContext).pop();
},
builder: (dialogContext) => ContentDialog(
constraints: BoxConstraints(maxWidth: 380),
title: Text(S.current.tools_shader_clean_dialog_title),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
const SizedBox(height: 12),
SizedBox(
width: double.infinity,
child: FilledButton(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: Text(S.current.tools_shader_clean_keep_latest),
),
onPressed: () => Navigator.pop(dialogContext, "keep_latest"),
),
),
const SizedBox(height: 12),
SizedBox(
width: double.infinity,
child: Button(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: Text(S.current.tools_shader_clean_all),
),
onPressed: () => Navigator.pop(dialogContext, "clean_all"),
),
),
],
),
actions: [Button(child: Text(S.current.app_common_tip_cancel), onPressed: () => Navigator.pop(dialogContext))],
),
);
if (result == null || !context.mounted) return;
state = state.copyWith(working: true);
if (result == "keep_latest") {
await cleanShaderCacheKeepLatest();
} else {
await cleanShaderCache();
}
if (!context.mounted) return;
loadToolsCard(context, skipPathScan: true);
state = state.copyWith(working: false);
}
/// 清理着色器缓存目录,保留 GraphicsSettings 文件夹

View File

@@ -429,10 +429,10 @@ packages:
dependency: "direct main"
description:
name: file_picker
sha256: "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343"
sha256: d974b6ba2606371ac71dd94254beefb6fa81185bde0b59bdc1df09885da85fde
url: "https://pub.dev"
source: hosted
version: "10.3.10"
version: "10.3.8"
file_sizes:
dependency: "direct main"
description:
@@ -453,10 +453,10 @@ packages:
dependency: "direct main"
description:
name: fluent_ui
sha256: "569f61002931665b9613ed12008a368d60ae66baab78b6270c4dc8b44f24d1df"
sha256: "8645eabacb46bfc9632fadc6e106756cdc6f2a4efb5a4fed4410bd3131306fe8"
url: "https://pub.dev"
source: hosted
version: "4.11.3"
version: "4.12.0"
flutter:
dependency: "direct main"
description: flutter
@@ -673,10 +673,10 @@ packages:
dependency: "direct main"
description:
name: hive_ce
sha256: "8e9980e68643afb1e765d3af32b47996552a64e190d03faf622cea07c1294418"
sha256: b844955c89f61f479170632b971dcf6fbb8e7233d2a5c2e3c7b89e1b2986bdb5
url: "https://pub.dev"
source: hosted
version: "2.19.3"
version: "2.19.1"
hooks_riverpod:
dependency: "direct main"
description:
@@ -761,10 +761,10 @@ packages:
dependency: transitive
description:
name: isolate_channel
sha256: a9d3d620695bc984244dafae00b95e4319d6974b2d77f4b9e1eb4f2efe099094
sha256: "000d617d021a608186b468584bbc6df2509ecba048f08510f832fdb9cf7aafbe"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.4.1"
isolate_contactor:
dependency: transitive
description:

View File

@@ -24,13 +24,13 @@ dependencies:
url: https://github.com/boyan01/window_manager.git
path: packages/window_manager
ref: 6fae92d21b4c80ce1b8f71c1190d7970cf722bd4
fluent_ui: 4.11.3
fluent_ui: 4.12.0
flutter_staggered_grid_view: ^0.7.0
flutter_acrylic: ^1.1.4
url_launcher: ^6.3.2
font_awesome_flutter: ^10.12.0
cupertino_icons: ^1.0.8
hive_ce: ^2.19.3
hive_ce: ^2.19.1
path_provider: ^2.1.5
dio: ^5.9.1
markdown: ^7.3.0
@@ -38,7 +38,7 @@ dependencies:
extended_image: ^10.0.1
animate_do: ^4.2.0
device_info_plus: ^12.3.0
file_picker: ^10.3.10
file_picker: ^10.3.8
file_sizes: ^1.0.6
flutter_svg: ^2.2.3
archive: ^4.0.7

54
rust/Cargo.lock generated
View File

@@ -683,9 +683,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
[[package]]
name = "bytes"
version = "1.11.1"
version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
[[package]]
name = "bzip2"
@@ -2986,8 +2986,8 @@ dependencies = [
[[package]]
name = "librqbit"
version = "9.0.0-beta.2"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
version = "9.0.0-beta.1"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"arc-swap",
@@ -3051,7 +3051,7 @@ dependencies = [
[[package]]
name = "librqbit-bencode"
version = "3.1.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"arrayvec",
@@ -3067,7 +3067,7 @@ dependencies = [
[[package]]
name = "librqbit-buffers"
version = "4.2.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"bytes",
"librqbit-clone-to-owned",
@@ -3078,7 +3078,7 @@ dependencies = [
[[package]]
name = "librqbit-clone-to-owned"
version = "3.0.1"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"bytes",
]
@@ -3086,7 +3086,7 @@ dependencies = [
[[package]]
name = "librqbit-core"
version = "5.0.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"bytes",
@@ -3115,7 +3115,7 @@ dependencies = [
[[package]]
name = "librqbit-dht"
version = "5.3.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"backon",
@@ -3162,7 +3162,7 @@ dependencies = [
[[package]]
name = "librqbit-lsd"
version = "0.1.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"atoi",
@@ -3182,7 +3182,7 @@ dependencies = [
[[package]]
name = "librqbit-peer-protocol"
version = "4.3.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"bitvec",
@@ -3202,7 +3202,7 @@ dependencies = [
[[package]]
name = "librqbit-sha1-wrapper"
version = "4.1.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"assert_cfg",
"aws-lc-rs",
@@ -3211,7 +3211,7 @@ dependencies = [
[[package]]
name = "librqbit-tracker-comms"
version = "3.0.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"async-stream",
@@ -3239,7 +3239,7 @@ dependencies = [
[[package]]
name = "librqbit-upnp"
version = "1.0.0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=42adca125d3c4781bcef14c94a899b53814178c0#42adca125d3c4781bcef14c94a899b53814178c0"
source = "git+https://github.com/StarCitizenToolBox/rqbit?rev=1e281d545c068a4f5ec98553539cd46a159cad14#1e281d545c068a4f5ec98553539cd46a159cad14"
dependencies = [
"anyhow",
"bstr",
@@ -3678,9 +3678,9 @@ checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
[[package]]
name = "notify-rust"
version = "4.12.0"
version = "4.11.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21af20a1b50be5ac5861f74af1a863da53a11c38684d9818d82f1c42f7fdc6c2"
checksum = "6442248665a5aa2514e794af3b39661a8e73033b1cc5e59899e1276117ee4400"
dependencies = [
"futures-lite",
"log",
@@ -3724,9 +3724,9 @@ dependencies = [
[[package]]
name = "num-conv"
version = "0.2.0"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]]
name = "num-integer"
@@ -5686,30 +5686,30 @@ dependencies = [
[[package]]
name = "time"
version = "0.3.47"
version = "0.3.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c"
checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
dependencies = [
"deranged",
"itoa",
"num-conv",
"powerfmt",
"serde_core",
"serde",
"time-core",
"time-macros",
]
[[package]]
name = "time-core"
version = "0.1.8"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
[[package]]
name = "time-macros"
version = "0.2.27"
version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215"
checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
dependencies = [
"num-conv",
"time-core",
@@ -7098,9 +7098,9 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
[[package]]
name = "wmi"
version = "0.18.1"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "746791db82f029aaefc774ccbb8e61306edba18ef2c8998337cadccc0b8067f7"
checksum = "d71d1d435f7745ba9ed55c43049d47b5fbd1104449beaa2afbc80a1e10a4a018"
dependencies = [
"chrono",
"futures",

View File

@@ -37,7 +37,7 @@ reqwest = { version = "0.12.26", features = [
hickory-resolver = { version = "0.25.2" }
anyhow = "1.0.100"
scopeguard = "1.0"
notify-rust = "4.12.0"
notify-rust = "4.11.7"
asar = "0.3.0"
walkdir = "2.5.0"
ort = { version = "2.0.0-rc.11", features = [
@@ -57,9 +57,8 @@ uuid = { version = "1.20.0", features = ["v4"] }
rayon = "1.10"
parking_lot = "0.12.5"
crossbeam-channel = "0.5.15"
librqbit = { git = "https://github.com/StarCitizenToolBox/rqbit", rev = "42adca125d3c4781bcef14c94a899b53814178c0" }
# librqbit = { path = "../../rqbit/crates/librqbit" }
bytes = "1.11"
librqbit = { git = "https://github.com/StarCitizenToolBox/rqbit", rev = "1e281d545c068a4f5ec98553539cd46a159cad14" }
bytes = "1.10"
# WebView
[target.'cfg(not(target_os = "macos"))'.dependencies]

View File

@@ -71,13 +71,8 @@ pub async fn get_rsi_launcher_asar_data(asar_path: &str) -> anyhow::Result<RsiLa
let mut main_js_content: Vec<u8> = Vec::new();
asar.files().iter().for_each(|v| {
let (path, file) = v;
let path_string = path.clone().into_os_string().into_string().unwrap();
let path_start = if cfg!(target_os = "windows") {
"app\\static\\js\\main."
} else {
"app/static/js/main."
};
if path_string.starts_with(path_start) && path_string.ends_with(".js") {
let path_string = path.clone().into_os_string().into_string().unwrap().replace("\\", "/");
if path_string.starts_with("app/static/js/main.") && path_string.ends_with(".js") {
main_js_path = path_string;
main_js_content = file.data().to_vec();
}