tear down the previous workspace's services on project switch (T-367)
buildDispatcher composed a fresh PaneRegistry, FilesService, SearchService, and EditorRegistry per workspace, but their shutdown() methods had zero callers — every project switch left the old set's file watcher emitting into the new workspace's bus and its PTYs alive. The dispatcher now pairs with a teardown closure that the serialized swap invokes after the old server stops; the same-path reuse fast-path drops the unused new set without teardown since its services are inert until a command starts them. SearchService gains the shutdown() it was missing (cancels in-flight searches). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -52,6 +52,15 @@ class SearchService {
|
||||
_active.remove(id)?.cancel();
|
||||
}
|
||||
|
||||
/// Cancel every in-flight search. Called when the workspace service
|
||||
/// set is torn down on project switch (T-367).
|
||||
Future<void> shutdown() async {
|
||||
for (final c in _active.values) {
|
||||
c.cancel();
|
||||
}
|
||||
_active.clear();
|
||||
}
|
||||
|
||||
/// Compute (preview) or perform (apply) a search-and-replace.
|
||||
///
|
||||
/// Preview returns per-file before/after edits without touching disk.
|
||||
|
||||
Reference in New Issue
Block a user