chore(lint): LeanCode's strict rules and a pre-push check
The workspace root's analysis_options.yaml includes leancode_lint 27 and enables its analyzer plugin (rules for blocs, Equatable and Flutter layout); the server and the app include that file, while the generated client keeps its own options. Plugins can only be enabled at the root of a pub workspace and only reach packages whose options include the root file, which was verified before settling on this layout. Most rules are warnings, casts, inference and raw types are strict, and the check treats infos as fatal too. lints and flutter_lints are no longer needed.
tool/check.sh checks formatting, runs dart analyze --fatal-infos and the server tests; .git/hooks/pre-push links to it, so every push has to pass it. AGENTS.md describes the checklist and how to install the hook in a fresh clone.
Fixes for the new rules: package imports, run() returns Future<void>, the server setup as one cascade, a primary constructor for the app widget, a const and a redundant argument. The workspace root keeps its conventional name `_` with a documented ignore.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-09-29 23:06:29 +02:00
|
|
|
import 'package:halkyon_learn_flutter/client.dart';
|
2026-09-29 23:11:00 +02:00
|
|
|
import 'package:material_ui/material_ui.dart';
|
2026-09-16 19:24:59 +02:00
|
|
|
|
|
|
|
|
void main() async {
|
|
|
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
|
await initializeClient();
|
2026-09-24 14:16:12 +02:00
|
|
|
runApp(const HalkyonLearnApp());
|
2026-09-16 19:24:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Builds a theme for the given [brightness].
|
|
|
|
|
ThemeData _buildTheme(Brightness brightness) {
|
|
|
|
|
return ThemeData(
|
|
|
|
|
colorScheme: ColorScheme.fromSeed(
|
|
|
|
|
seedColor: Colors.blue,
|
|
|
|
|
brightness: brightness,
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
chore(lint): LeanCode's strict rules and a pre-push check
The workspace root's analysis_options.yaml includes leancode_lint 27 and enables its analyzer plugin (rules for blocs, Equatable and Flutter layout); the server and the app include that file, while the generated client keeps its own options. Plugins can only be enabled at the root of a pub workspace and only reach packages whose options include the root file, which was verified before settling on this layout. Most rules are warnings, casts, inference and raw types are strict, and the check treats infos as fatal too. lints and flutter_lints are no longer needed.
tool/check.sh checks formatting, runs dart analyze --fatal-infos and the server tests; .git/hooks/pre-push links to it, so every push has to pass it. AGENTS.md describes the checklist and how to install the hook in a fresh clone.
Fixes for the new rules: package imports, run() returns Future<void>, the server setup as one cascade, a primary constructor for the app widget, a const and a redundant argument. The workspace root keeps its conventional name `_` with a documented ignore.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-09-29 23:06:29 +02:00
|
|
|
class const HalkyonLearnApp({super.key}) extends StatelessWidget {
|
2026-09-16 19:24:59 +02:00
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return MaterialApp(
|
2026-09-24 14:16:12 +02:00
|
|
|
title: 'Halkyon Learn',
|
2026-09-16 19:24:59 +02:00
|
|
|
theme: _buildTheme(Brightness.light),
|
|
|
|
|
darkTheme: _buildTheme(Brightness.dark),
|
2026-09-29 23:11:00 +02:00
|
|
|
// Packages that still import package:flutter/material.dart (Serverpod's sign-in
|
|
|
|
|
// widgets, the rich-text editor) see this app's theme and localizations only
|
|
|
|
|
// through the bridge, since material_ui is a separate copy of that library. The
|
|
|
|
|
// bridge is deprecated on purpose, as a reminder: remove it once they have moved.
|
|
|
|
|
// ignore: deprecated_member_use
|
|
|
|
|
builder: (context, child) => MaterialUiCompatibilityBridge(child: child!),
|
chore(lint): LeanCode's strict rules and a pre-push check
The workspace root's analysis_options.yaml includes leancode_lint 27 and enables its analyzer plugin (rules for blocs, Equatable and Flutter layout); the server and the app include that file, while the generated client keeps its own options. Plugins can only be enabled at the root of a pub workspace and only reach packages whose options include the root file, which was verified before settling on this layout. Most rules are warnings, casts, inference and raw types are strict, and the check treats infos as fatal too. lints and flutter_lints are no longer needed.
tool/check.sh checks formatting, runs dart analyze --fatal-infos and the server tests; .git/hooks/pre-push links to it, so every push has to pass it. AGENTS.md describes the checklist and how to install the hook in a fresh clone.
Fixes for the new rules: package imports, run() returns Future<void>, the server setup as one cascade, a primary constructor for the app widget, a const and a redundant argument. The workspace root keeps its conventional name `_` with a documented ignore.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-09-29 23:06:29 +02:00
|
|
|
home: Scaffold(appBar: AppBar(title: const Text('Halkyon Learn'))),
|
2026-09-16 19:24:59 +02:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|