devdesk (0.7.2) bookworm; urgency=medium

  * Fix: Go to file failed in big non-git folders such as /root/code: the
    file walk was cut off at its cap with SIGPIPE, which failed the command
    and truncated its reply. Producers piped into a cap now tolerate it (also
    for very large folders and git status). Outside git, Go to file skips
    build/cache folders and stops at 10,000 files.
  * Large side-channel replies no longer cost quadratic time in the browser.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Thu, 08 Oct 2026 01:50:50 -0400

devdesk (0.7.1) bookworm; urgency=medium

  * Files pane reworked like VS Code (#37):
    - Explorer tree beside the editor: folders expand in place (also with
      the keyboard: arrows, Enter), the open file is highlighted and can be
      revealed, git colours on names, change dots on folders, gitignored
      entries dimmed, file-type badges. A drag handle sizes the explorer.
    - Tabs: a click opens a preview tab (italic) that the next click
      replaces; double-click or Enter keeps it. Switching tabs is instant and
      keeps the scroll position. Files Claude changes reload in place.
    - Go to file (Ctrl+P in the pane, the ⌕ button, the palette): fuzzy
      search over git ls-files, or a capped find outside git.
    - Explorer and Changes are two views of the left column; diffs open as
      tabs.
    - Expanded folders, open tabs and the active tab are remembered per
      session; an empty editor offers recent files and the change count.
    - Narrow panes and phones: the explorer slides over the editor.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Thu, 08 Oct 2026 01:40:47 -0400

devdesk (0.7.0) bookworm; urgency=medium

  * Files pane (#19): a Files button (Ctrl+Shift+E) next to Panels opens the
    session's folder beside the terminal (a drag-resizable split on wide
    screens, an overlay on narrow ones and phones).
    - Browse folders; read files with syntax highlighting (CodeMirror,
      read-only, Ctrl+F search, line wrap toggle), markdown rendered as a
      sanitized preview with its relative images, images shown inline.
    - Changes tab: uncommitted git changes with line counts and a "C" badge
      on files Claude edited (recorded by the state hook from Edit/Write);
      diff against HEAD for any changed file. Non-git sessions list the files
      Claude edited there.
    - "→ Claude" types @path into the prompt; Copy path.
    - After Claude's turn the list refreshes, and an open file that changed
      on disk offers a reload.
    - Paths stay inside the session folder (no absolute paths, no symlink
      escapes). Read-only for now; editing is v0.8.0.
    - The editor (~600 KB) is not in the page: it ships in
      /usr/share/devdesk/assets, is fetched over ttyd the first time Files
      opens, checked against the page's SHA-256 and cached in the browser.
  * Fix: the state hook mis-read hook fields when Claude's message was empty.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Thu, 08 Oct 2026 01:16:26 -0400

devdesk (0.6.1) bookworm; urgency=medium

  * Inbox bell (#36): sessions waiting on you, firing alerts, and what
    happened while you were away (a background session finished or started
    waiting, CI passed or failed). Click to jump there; shared by all tabs.
    Replaces the count on the Panels button.
  * Phone header: theme in the ⋯ menu, Panels as an icon, so the bell fits.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Thu, 08 Oct 2026 00:50:56 -0400

devdesk (0.6.0) bookworm; urgency=medium

  * Light mode, like the other web_template apps (#31): the ☀/◐ button in the
    header, shared lt_theme preference (OS setting until you choose), applied
    before first paint and synced across tabs. The terminal has a light
    palette; Claude runs with its dark-ansi theme so its colours come from
    that palette, and the light palette maps bright white to ink, so Claude's
    text, scrollback included, stays readable in both modes. tmux and the
    statusLine use ANSI colours so they follow the theme too. Sessions pick
    up Claude's theme the next time Claude starts in them.
  * Command palette (#32): ⌕ button or Ctrl+Shift+P. Switch, create, rename
    and end sessions, Claude/Shell window, scroll back, detach, theme, panels,
    text size, fullscreen, notifications, copy link, open the repo / PRs / CI
    run, show alerts, keyboard help.
  * Dialogs instead of browser prompt/confirm for rename, end and new
    session (name check inline, project folder picker), and a keyboard
    shortcuts sheet in the ⋯ menu, the palette and the footer (#33).
  * Toasts for results: created, renamed, ended, uploads, link copied, CI
    finished, errors (#34).
  * Fix: renames, ends and new sessions often reported "no response" although
    they worked; ttyd dropped the reply of commands that exit right after
    printing. Replies now wait for the browser to hang up (#35).
  * Fix: the Sessions panel showed stale names right after a rename or end.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Thu, 08 Oct 2026 00:32:11 -0400

devdesk (0.5.1) bookworm; urgency=medium

  * A session created by opening its URL shows up in the Sessions panel and
    the switcher right away instead of at the next poll.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Wed, 07 Oct 2026 23:42:01 -0400

devdesk (0.5.0) bookworm; urgency=medium

  * Security (from the 2026-10-07 review):
    - ttyd :7681 is firewalled to NPM in CT 126 and its credential was
      rotated (#1).
    - "Ask Claude" strips control characters from Grafana text and pastes it
      as bracketed paste, so alert text can never run a command (#2).
    - OSC 52 clipboard is write-only: terminal output can no longer read the
      browser clipboard; tmux allow-passthrough is off (#7).
    - Gitea/Grafana tokens reach curl on stdin, never on its command line;
      remote URLs lose any userinfo (#11).
  * Fixes:
    - Ending the session you are in no longer leaves a ghost entry (#3).
    - Reconnecting after a drop never re-creates a session that was ended or
      renamed meanwhile (`attach --existing`) (#4).
    - Repo panel uses git --no-optional-locks and drops the safe.directory
      override (#5); uploads get unique names and are cleaned up on hangup
      (#6); uploads are size-checked first and streamed in slices with an
      idle timeout (#9); paths with tabs no longer break the session list
      (#10).
    - ttyd allows 32 clients; side-channel calls run two at a time and one
      tab polls for all open tabs (#8).
  * Header: the SSO chip is gone ("Sign in again" appears only when the
    session expires); the session chip shows Claude's state as a dot and
    opens a session switcher; LIVE is a dot; text size, notifications (with
    mute) and fullscreen move into a ⋯ menu; the Panels button shows a badge
    for waiting sessions and alerts (#13, #16).
  * A bare URL reattaches your last session instead of opening the picker
    (#16).
  * Notifications when *other* sessions start waiting, and alerts are polled
    with the panels closed (#15).
  * Sidebar: the Claude Context panel is folded into a context bar in each
    session row; Repo/CI collapses for non-git folders and offers "Ask Claude
    to fix CI"; the new-session form hides behind "+ New"; more legible
    labels (#17).
  * Phone: key bar (Esc, Tab, ⇧Tab, ^C, arrows, ⏎, Claude/Shell), drawer
    with backdrop, layout that follows the on-screen keyboard, DOM renderer
    on touch devices, no clock in the tmux status line (#14).
  * Matrix "Claude needs you": a wait that lasts 30 s with nobody attached
    posts one message with a link to the Devdesk hookshot webhook (#28).

 -- Jared Vititoe <jjvititoe1@gmail.com>  Wed, 07 Oct 2026 23:34:48 -0400

devdesk (0.4.0) bookworm; urgency=medium

  * Session status at a glance: Claude hooks record whether each session is
    working, waiting on you (with Claude's message) or idle. The sidebar shows
    it with context %, the header shows the current session's state, and a
    pulsing "needs you" chip jumps to sessions waiting for input.
  * File & image drop: drag files onto the terminal or paste a screenshot.
    They're uploaded through ttyd to /var/lib/devdesk/uploads/<session>/ (25 MB
    max, pruned after 7 days) and the path is pasted into Claude, which
    attaches images itself.
  * Ops Alerts panel is live: firing/pending Grafana alert rules with
    severity, instances, summary and a link, plus an "Ask Claude" button that
    types an investigation prompt into the current session.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Wed, 07 Oct 2026 19:24:15 -0400

devdesk (0.3.1) bookworm; urgency=medium

  * Auto-deploy: tagged releases trigger CT 126's webhook listener (house HMAC
    pattern), which runs /usr/lib/devdesk/devdesk-deploy to upgrade the
    package from the apt registry. Running sessions are untouched.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Wed, 07 Oct 2026 13:20:58 -0400

devdesk (0.3.0) bookworm; urgency=medium

  * Repo / CI panel is live: branch, ahead/behind, uncommitted changes, the
    Gitea CI status of HEAD (linked to the run) and open PRs for the current
    session's folder, via `devdesk attach --repo` over the ttyd channel. No
    sidecar needed; public repos need no token (optional
    /etc/devdesk/gitea-token for private ones). A notification fires when CI
    for HEAD finishes while the tab is in the background.
  * Remote Control verified with resume (same claude.ai session link).
  * Local settings now go in /etc/devdesk/env.local (read after the packaged
    env, never shipped), so upgrades no longer stop at a conffile prompt.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Wed, 07 Oct 2026 12:57:04 -0400

devdesk (0.2.1) bookworm; urgency=medium

  * Session hook and status line only record for panes on DevDesk's own
    tmux server (Claude run with these settings elsewhere no longer writes
    into DevDesk's state).
  * The Claude wrapper re-reads /etc/devdesk/env before every Claude launch,
    so Remote Control and CLAUDE_ARGS changes apply on the next restart.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Wed, 07 Oct 2026 12:54:06 -0400

devdesk (0.2.0) bookworm; urgency=medium

  * Sessions no longer need a project folder: any name works and starts in
    DEVDESK_DEFAULT_DIR unless it matches a project; new NAME [PROJECT].
  * Rename and end sessions from the Sessions panel (and devdesk rename).
    Renames keep the running Claude and its recorded conversation.
  * Claude Context panel is live: a statusLine command snapshots model,
    context-window use, cost and edits per session; Claude's footer shows a
    one-line summary.
  * Drop GANDALF from the Ops Alerts panel.
  * CI: bash shell, download retries, Node 22 test invocation,
    build-essential, smoke-test pipe fix.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Wed, 07 Oct 2026 03:01:21 -0400

devdesk (0.1.0) bookworm; urgency=medium

  * Initial release: persistent browser terminal for Claude Code
    (ttyd + tmux) with LotusGuild TDS styling, multiple named sessions,
    per-session conversation resume and Debian packaging.

 -- Jared Vititoe <jjvititoe1@gmail.com>  Tue, 06 Oct 2026 22:58:26 -0400
