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
