- Explorer: context menus, multi-select, inline rename/new, drag to move
or copy, desktop drag-and-drop uploads (folders too), cut/copy/paste,
duplicate, download, delete to a 7-day trash with Undo. Server side in
libexec/devdesk-fsops.sh with bats tests. Closes#54
- Markdown preview in a shadow root: headings with anchors and outline,
highlighted code with copy, callouts, task lists, front matter, links
that open files, live split view. Editor status bar, multi-cursor,
closeBrackets, Ctrl+G, tab menus and reordering. Closes#55
- Search in files (Ctrl+Shift+F) via git grep / grep. Closes#56
- Fix: nested $(...) path checks now fail hard (set -e does not reach
them; an escape created /x in testing); newest folder listing wins;
sessionAction returns the reply JSON.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WHRLCCdXYm41Qx5kNhehaP
- Terminal link provider: printed paths that are files of the session open
in Files (at the line); the file list is preloaded so the first hover works.
- Alerts: "In a new session" opens alert-<name> and types the prompt once
Claude is up.
- devdesk-guard PreToolUse(Bash) hook: permissionDecision "ask" for
destructive commands (verified to prompt in auto mode); DEVDESK_GUARD and
guard.local.
- State hook logs Bash commands and derives host tags (ssh targets, CT/VM
ids); --list carries tags, --peek the last commands; UI shows both.
Closes#21Closes#18Closes#27
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- devdesk attach --fs-write SESSION PATH BYTES BASESHA|new: streamed like
uploads, temp file in the same folder, sha re-check (conflict reply instead
of overwriting), mode/owner kept, atomic mv; new files with folders, never
outside the session folder or through a symlink out of it.
- Editor: editable CodeMirror for UTF-8 text, dirty tracking, Ctrl+S,
Save/Revert, conflict dialog with a disk-vs-yours diff, changed-on-disk
banner, drafts in localStorage (flushed on pagehide), close/leave guards,
New file.
- Upload streaming factored into streamIn(), shared by uploads and saves.
Closes#20
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- devdesk attach --fs-list/--fs-read/--git-status/--git-show/--asset
(libexec/devdesk-files.sh), confined to the session folder.
- The state hook records files Claude edits (Edit/Write/MultiEdit/
NotebookEdit) for the Changes tab's "C" badge; rename/end carry it.
- Files pane: folders, CodeMirror read-only view, sanitized markdown preview
in a sandboxed iframe with inlined relative images, images, Changes tab with
line counts and diff against HEAD, "→ Claude" @path, resizable split.
- The editor bundle ships as /usr/share/devdesk/assets/editor.js, is fetched
over ttyd on first use, verified against the page's SHA-256 and cached in
IndexedDB.
- Fix: the state hook's field split collapsed empty fields.
Closes#19
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>