test / unit + widget + golden + a11y (push) Failing after 38s
test / integration_test (xvfb) (push) Has been skipped
test / bundle smoke (xvfb 5s) (push) Has been skipped
test / daemon subprocess + web WASM smoke (push) Has been skipped
EditorController mirrors the daemon's active buffer into the Flutter
UI. Hydrates on mount (editor.active → editor.read), subscribes to
editor.opened / active-changed / edited / saved / closed, and pushes
local edits back via editor.set-content. A one-shot echo-suppression
flag keeps the daemon's authoritative edit echo from clobbering the
caret the user just moved.
Text surface is EditableText directly — no TextField / Material
import, so D-007's "bare WidgetsApp" guardrail carries into the
editor tab. JetBrainsMono via the shared mono-family constants;
cursor + selection colours come from the theme tokens.
File-tree click now calls ipc.request('editor.open', {path}) instead
of the kernel command registry (which wouldn't have reached the
daemon). The opened file becomes active, the editor tab's controller
sees editor.active-changed, and the text content reconciles.
Linux release bundle still builds; 174 app tests + 74 core tests
stay green.
Co-Authored-By: Claude <noreply@anthropic.com>
31 lines
961 B
Dart
31 lines
961 B
Dart
import 'package:clide_app/builtin/editor/src/editor_view.dart';
|
|
import 'package:clide_app/extension/extension.dart';
|
|
import 'package:clide_app/kernel/kernel.dart';
|
|
|
|
/// Tier-2 editor pane. Contributes a single workspace tab that
|
|
/// renders the daemon's active buffer. Multi-file tabs live in the
|
|
/// follow-up plan; today the pane is one-at-a-time.
|
|
class EditorExtension extends ClideExtension {
|
|
@override
|
|
String get id => 'builtin.editor';
|
|
@override
|
|
String get title => 'Editor';
|
|
@override
|
|
String get version => '0.1.0';
|
|
@override
|
|
List<String> get dependsOn => const [];
|
|
|
|
@override
|
|
List<ContributionPoint> get contributions => [
|
|
TabContribution(
|
|
id: 'editor.active',
|
|
slot: Slots.workspace,
|
|
title: 'Editor',
|
|
titleKey: 'tab.title',
|
|
i18nNamespace: id,
|
|
priority: 80, // between Claude (90) and welcome (-100)
|
|
build: (_) => const EditorView(),
|
|
),
|
|
];
|
|
}
|