refactor: extract shared mixins and helpers, drop dead abstractions

Introduces shared seams for paginated views, D-pad reorder, media control
routing, async singletons and the device method channel, then points the
open-coded copies at them.

Also removes unused models and duplicated provider/server plumbing, folds
the twice-implemented artifact store in the server, and factors the
repeated Flutter toolchain prologue in CI into a composite action.
This commit is contained in:
edde746
2026-07-26 06:09:48 +02:00
parent 61344f7862
commit 352b88109b
217 changed files with 6813 additions and 8773 deletions
@@ -5,7 +5,7 @@ import '../../i18n/strings.g.dart';
import '../../models/hotkey_model.dart';
import '../../services/keyboard_shortcuts_service.dart';
import '../../utils/app_logger.dart';
import '../../services/shader_service.dart';
import '../../services/shortcut_action.dart';
import '../../utils/dialogs.dart';
import '../../utils/snackbar_helper.dart';
import '../../focus/focusable_button.dart';
@@ -26,9 +26,7 @@ class KeyboardShortcutsScreen extends StatelessWidget {
listenable: keyboardService,
builder: (context, _) {
final hotkeys = keyboardService.hotkeys;
final actions = hotkeys.keys
.where((action) => action != 'shader_toggle' || ShaderService.isPlatformSupported)
.toList();
final actions = hotkeys.keys.where((action) => ShortcutAction.fromId(action)?.isSupported ?? true).toList();
return FocusedScrollScaffold(
title: Text(t.settings.keyboardShortcuts),
slivers: [