- 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>
- PermissionRequest hook: the state file records tool, detail and
description of a pending permission; Notification keeps it.
- devdesk attach --answer (presses 1/Esc only if the same wait is on and the
prompt is visible), --peek (last exchange from the transcript), --reply
(bracketed paste + Enter, streamed like uploads).
- Inbox: Allow/Deny/Open for permission waits; Peek & reply for other waits
and finished sessions. Matrix messages include the command.
Closes#22Closes#23
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>
- Header: no SSO chip ("Sign in again" only on expiry), state dot on the
session chip, LIVE as a dot, ⋯ menu for text size/notifications/fullscreen,
Panels badge for waiting sessions and alerts.
- Session switcher on the chip; bare URL reattaches the last session; + New
opens the panel form with project folders.
- Notifications when other sessions start waiting; alerts polled with the
panels closed; one tab polls for all tabs over BroadcastChannel.
- Sidebar: context bar per session instead of the Context panel; compact
Repo/CI with "Ask Claude to fix CI"; legible labels.
- Phone: key bar, drawer with backdrop, visualViewport-aware layout, DOM
renderer on touch, compact connection dot.
- devdesk-notify-matrix: one Matrix message per wait that lasts
DEVDESK_MATRIX_DELAY seconds with nobody attached.
Closes#8Closes#13Closes#14Closes#15Closes#16Closes#17Closes#28
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- devdesk-state-hook (Claude UserPromptSubmit/PostToolUse/Notification/Stop/
SessionStart/SessionEnd) records whether each session is working, waiting on
you or idle; --list carries it. The sidebar shows it, the header shows the
current session's state, and a pulsing "needs you" chip jumps to sessions
waiting for input. Session refresh no longer depends on the sidebar being open.
- `devdesk attach --upload SESSION FILE BYTES` receives a file as base64
terminal input (raw mode, exact length, size-checked, sanitised name) into
/var/lib/devdesk/uploads/<session>/. The UI uploads dropped or pasted files and
pastes the path into Claude, which attaches images itself.
- `devdesk alerts` / `--alerts`: firing and pending Grafana alert rules with
severity, instances, summary and a link. The panel's "Ask Claude" types an
investigation prompt into the current session.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>