fix: v0.10.4 session list scrolls on its own
build-deb / Lint, test, package (push) Successful in 3m13s
build-deb / Deploy to CT 126 (push) Successful in 13s
build-deb / Notify on failure (push) Skipped

No cap on sessions existed, but only the whole Panels column scrolled, so
many sessions pushed Ops Alerts and Repo/CI far down. The list now has its
own scroll area (46vh), keeps its position across polls and brings the
current session into view on switch. Closes #53

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WHRLCCdXYm41Qx5kNhehaP
This commit is contained in:
2026-10-22 20:53:34 -04:00
co-authored by Claude Opus 5.5
parent ab7e127f70
commit e60f1ad066
3 changed files with 23 additions and 0 deletions
+8
View File
@@ -1,3 +1,11 @@
devdesk (0.10.4) bookworm; urgency=medium
* The Sessions panel's list scrolls on its own (#53). There is no cap on
sessions; with many of them, Ops Alerts and Repo/CI stay in reach below
the list. The current session is scrolled into view when you switch.
-- Jared Vititoe <jjvititoe1@gmail.com> Thu, 22 Oct 2026 20:53:00 -0400
devdesk (0.10.3) bookworm; urgency=medium
* No tmux right-click menus (#52). A stray click on one split a pane, or
+8
View File
@@ -366,7 +366,15 @@ export class SessionsPanel {
}, '×'))));
}
if (!items.length) items.push(el('li', { class: 'dd-empty' }, 'No sessions yet.'));
const scroll = this.list.scrollTop;
this.list.replaceChildren(...items);
// Keep the scroll position across polls; bring the current session into view
// when it changes.
this.list.scrollTop = scroll;
if (this.current !== this.shownCurrent) {
this.shownCurrent = this.current;
this.list.querySelector('.is-current')?.scrollIntoView({ block: 'nearest' });
}
this.projectOptions(this.select);
}
+7
View File
@@ -239,6 +239,13 @@ body.dd-sidebar-open .dd-sidebar {
flex-direction: column;
gap: 2px;
margin-bottom: var(--space-sm);
/* Any number of sessions: the list scrolls on its own so the panels below stay
in reach (devdesk#53). */
max-height: 46vh;
overflow-y: auto;
overscroll-behavior: contain;
scrollbar-width: thin;
scrollbar-color: var(--bg-tertiary) transparent;
}
.dd-session-item {