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:
Jokin
2026-07-11 13:38:40 +02:00
co-authored by Claude Fable 5
parent a150c5ee2e
commit b907e0a4ce
10 changed files with 519 additions and 2 deletions
+5
View File
@@ -23,6 +23,11 @@ export function formatDate(epochMs: number): string {
return DATE_FORMAT.format(new Date(epochMs));
}
/** POSIX-style join for UI-composed paths (both panels use "/" on macOS + remote). */
export function joinPath(dir: string, name: string): string {
return dir.endsWith('/') ? dir + name : `${dir}/${name}`;
}
/** 0o755 -> "rwxr-xr-x" */
export function formatMode(mode: number): string {
const flags = 'rwxrwxrwx';