feat: v0.5.0 header, switcher, phone key bar, shared polling, Matrix "needs you"
build-deb / Lint, test, package (push) Successful in 2m12s
build-deb / Deploy to CT 126 (push) Successful in 3s
build-deb / Notify on failure (push) Skipped

- 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 #8
Closes #13
Closes #14
Closes #15
Closes #16
Closes #17
Closes #28

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 23:34:59 -04:00
co-authored by Claude Opus 5.5
parent 7aa624bc13
commit be9b026a01
19 changed files with 838 additions and 257 deletions
+43
View File
@@ -1,3 +1,46 @@
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