chore: adopt Dart 3.9 toolchain — honest floor + tall-style reformat (T-353)

Raise the declared minimums in pubspec.yaml to what our deps already
require: Flutter >=3.35.0 / Dart >=3.9.0 (was 3.19.0 / 3.5.0). alchemist
0.12 needs Flutter 3.32; Dart 3.9 first ships in Flutter 3.35, so 3.35 is
the binding floor. Pin the exact build toolchain in .fvmrc (Flutter
3.44.1).

Moving to the Dart 3.9 language level switches `dart format` to the new
"tall" style and enables two new lints. This commit is the resulting
mechanical churn, isolated from any behaviour change:
  - whole-tree `dart format` reformat (tall style)
  - `dart fix` for unnecessary_underscores + use_null_aware_elements

No runtime behaviour change; `make test` green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-11 12:11:53 +02:00
co-authored by Claude Opus 4.8
parent bcea5f15b7
commit 6d0ebab721
444 changed files with 7587 additions and 12849 deletions
+5 -20
View File
@@ -30,10 +30,7 @@ void main() {
tearDown(() => registry.shutdown());
test('spawn → emits pane.spawned and lists the pane', () async {
final pane = await registry.spawn(
kind: PaneKind.terminal,
argv: const ['/bin/echo', 'hi'],
);
final pane = await registry.spawn(kind: PaneKind.terminal, argv: const ['/bin/echo', 'hi']);
expect(pane.id, startsWith('p_'));
expect(pane.kind, PaneKind.terminal);
@@ -64,19 +61,13 @@ void main() {
argv: const ['/bin/sh', '-c', 'printf hello-panes; sleep 0.25'],
);
final decoded = await got.future.timeout(
ioTimeout,
onTimeout: () => fail('pane.output never carried "hello-panes" within ${ioTimeout.inSeconds}s'),
);
final decoded = await got.future.timeout(ioTimeout, onTimeout: () => fail('pane.output never carried "hello-panes" within ${ioTimeout.inSeconds}s'));
expect(decoded, contains('hello-panes'));
expect(sink.ofKind('pane.output'), isNotEmpty);
});
test('write + resize emit no spurious events, update state', () async {
final pane = await registry.spawn(
kind: PaneKind.terminal,
argv: const ['/bin/cat'],
);
final pane = await registry.spawn(kind: PaneKind.terminal, argv: const ['/bin/cat']);
final writeCount = registry.write(pane.id, utf8.encode('abc'));
expect(writeCount, greaterThan(0));
@@ -89,10 +80,7 @@ void main() {
});
test('close is idempotent + emits pane.closed once', () async {
final pane = await registry.spawn(
kind: PaneKind.terminal,
argv: const ['/bin/cat'],
);
final pane = await registry.spawn(kind: PaneKind.terminal, argv: const ['/bin/cat']);
await registry.close(pane.id);
await registry.close(pane.id); // second call: no-op
@@ -107,10 +95,7 @@ void main() {
});
test('claude kind round-trips on the wire', () async {
final pane = await registry.spawn(
kind: PaneKind.claude,
argv: const ['/bin/sh', '-c', 'exit 0'],
);
final pane = await registry.spawn(kind: PaneKind.claude, argv: const ['/bin/sh', '-c', 'exit 0']);
expect(pane.kind, PaneKind.claude);
expect(pane.toJson()['kind'], 'claude');
});