lazy backend boot and rename workspace to project

Backend isolate now boots in two phases: resolve toolchain on spawn
(binary availability only), initialize services on project.open. The
dispatcher stays empty until a project activates — IPC requests before
that return "No project active".

Scheduler ticker only runs while a project is open. Fires an immediate
first cycle on ProjectOpened so sidebar panels refresh without waiting
for the next interval. Stops on ProjectClosed.

Renamed workspace → project throughout backend messages
(project.validate, project.open, project.ready), callbacks
(onProjectOpen, onValidateProject), and methods
(openProject, validateProject, resolveProject).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jeroen Schweitzer
2026-04-26 14:16:46 +02:00
co-authored by Claude Opus 4.6
parent a89910dc36
commit 5515d88407
9 changed files with 367 additions and 204 deletions
+4
View File
@@ -105,6 +105,8 @@ class KernelServices {
DaemonClient? isolateClient,
bool autoStartDaemonClient = true,
Toolchain? toolchain,
Future<void> Function(String path)? onProjectOpen,
Future<String?> Function(String path)? onValidateProject,
}) async {
final log = Logger();
final events = DaemonBus();
@@ -148,6 +150,8 @@ class KernelServices {
events: events,
settings: settings,
toolchain: tc,
onProjectOpen: onProjectOpen,
onValidateProject: onValidateProject,
);
final ipc = isolateClient
?? (daemonClientFactory != null