P2: file operations with dialogs (mkdir, new file, rename, delete, chmod)
- prompt/confirm/chmod dialogs (signals-driven via DialogsService) - FileActionsService: acts on selection or cursor row of the active panel - function bar + F2/F7/F8/Delete keys; delete confirms and recurses - verified provider ops + walkTree + removeRecursive on a scratch tree Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -149,6 +149,8 @@ export class PanelsService {
|
||||
readonly left: PanelState;
|
||||
readonly right: PanelState;
|
||||
readonly activeSide = signal<Side>('left');
|
||||
/** Bumped to tell the active panel to grab keyboard focus again (e.g. after a dialog closes). */
|
||||
readonly focusTick = signal(0);
|
||||
|
||||
constructor(rpc: RpcService, toast: ToastService) {
|
||||
const deps = { rpc, toast };
|
||||
@@ -175,4 +177,8 @@ export class PanelsService {
|
||||
other(side: Side): PanelState {
|
||||
return this.get(this.otherSide(side));
|
||||
}
|
||||
|
||||
refocus(): void {
|
||||
this.focusTick.update((n) => n + 1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user