Fix layout, terminal sizing, notifications, and sidebar styling

Layout:
- Add panel-container and session-panel CSS so workspace content
  doesn't overlap sidebar
- Session panels use position: absolute to fill workspace area
- Workspace is now flex column for proper empty-state/panel stacking

Terminal:
- xterm.js overrides now target .session-panel in addition to
  .terminal-container so terminal fills available space
- Added debounced window resize handler for terminal re-fit

Notifications:
- Rewrote Notifications class to emit .notification-* classes matching
  the existing polished CSS (was emitting .toast-* with no CSS)
- Icon is now a small coloured circle badge instead of oversized SVG

Sidebar:
- Fixed class mismatches: sidebar-dot → protocol-indicator,
  sidebar-item-sub → sidebar-item-host, sidebar-star → sidebar-item-star
- protocolColour() now returns proto-ssh etc. matching CSS selectors

Other:
- Replaced prompt() in tab rename with custom _inputPrompt modal
This commit is contained in:
2026-04-15 00:00:00 +01:00
parent 8752ecef2d
commit 018f25e601
8 changed files with 118 additions and 107 deletions
+3 -3
View File
@@ -151,7 +151,7 @@ class Sidebar {
}
// Protocol colour dot
const dot = createElement('span', `sidebar-dot ${protocolColour(profile.protocol)}`);
const dot = createElement('span', `protocol-indicator ${protocolColour(profile.protocol)}`);
item.appendChild(dot);
// Text content
@@ -164,7 +164,7 @@ class Sidebar {
const subtitle = profile.host
? `${profile.host}:${profile.port}`
: profile.protocol.toUpperCase();
const subEl = createElement('span', 'sidebar-item-sub', {
const subEl = createElement('span', 'sidebar-item-host', {
textContent: truncate(subtitle, 30),
});
textWrapper.appendChild(subEl);
@@ -172,7 +172,7 @@ class Sidebar {
// Favourite star
if (profile.favourite) {
const star = createElement('span', 'sidebar-star', { textContent: '★' });
const star = createElement('span', 'sidebar-item-star is-favourite', { textContent: '★' });
item.appendChild(star);
}