Changeset 0.18.1 (#80)

This commit is contained in:
2026-02-28 19:41:59 +00:00
parent e4a943b03e
commit a591b810a9
13 changed files with 1415 additions and 197 deletions

View File

@@ -2,6 +2,71 @@
All notable changes to Chat Switchboard.
## [0.18.1] — 2026-02-28
### Added
- **Side panel architecture.** Complete rewrite of the side panel system
from shared-tab layout to independent single-slot panels. Any action
(preview, notes, diagram pop-out) fills the slot, replacing whatever
was there — no tabs, no association between panel types.
- **Panel registry** (`PanelRegistry`): named panels with independent
open/close state, scroll/state preservation across switches, keyboard
shortcuts (Ctrl+\ cycle, Ctrl+Shift+\ toggle dual-view).
- **Dual-view mode**: two panels side-by-side via CSS grid with a
drag-adjustable split ratio (0.20.8 range, 6px divider handle).
Toggle button in header actions area alongside fullscreen and close.
- **Live HTML preview**: streaming responses update the preview iframe
in real-time (500ms debounce). Extracts the last fenced HTML block
from partial content and renders it as the response streams in.
- **Extension pop-out**: `⧉` button on rendered extension blocks
(mermaid, KaTeX, etc.) clones the content into the preview iframe
and opens the side panel.
- **Extension UI primitives** (`ctx.ui`): seven methods exposed to
browser extensions through the scoped extension context:
- `toast(msg, type)` — toast notifications via `UI.toast()`
- `openPreview(html)` — load HTML into side panel preview iframe
- `isDark()` — theme detection without DOM sniffing
- `isMobile()` — viewport width check (≤768px)
- `isPanelOpen()` — side panel container visibility
- `confirm(msg, opts)` — modal confirm dialog (Promise\<boolean>)
- `createMenu(anchor, opts)` — popup menu (unchanged from stub)
- **Mermaid context-aware expand**: single `⛶` button replaces the
previous two-button (pop-out + fullscreen) approach. When the side
panel is open, expand pops the diagram into it; when closed, expand
goes fullscreen.
- **Mermaid fullscreen close button**: 40px circular close button
overlaid top-right in fullscreen mode, 48px on mobile. Fixes the
previous Escape-key-only exit which was unusable on touch devices.
- **Mobile side panel**: swipe navigation between panels (80px
threshold, 1.5× horizontal-to-vertical ratio), tap-to-close overlay,
responsive auto-collapse of dual mode on narrow viewports, enlarged
touch targets for all panel controls.
- **Side panel header label**: simple text label showing the active
panel name, replacing the previous tab bar UI.
### Changed
- Side panel model changed from tabbed (Preview + Notes tabs visible
simultaneously) to single-slot (one panel fills the space, actions
replace it). No user-selectable tabs — content is entirely
action-driven.
- Dual-view toggle button moved from tab bar (dynamically injected)
to static header actions area next to fullscreen and close.
- Mermaid extension refactored to use `ctx.ui` primitives exclusively.
Zero direct references to `UI.*`, `PanelRegistry.*`, or DOM class
sniffing for theme detection. Extension remains fully self-contained
in `extensions/builtin/mermaid-renderer/`.
- Mermaid source copy uses `ctx.ui.toast()` instead of inline button
text swap. Theme detection uses `ctx.ui.isDark()` instead of manual
`document.body.classList.contains('dark-theme')` check.
- Side panel outer resize minimum bumped to 480px in dual mode (vs
280px single).
### Removed
- Tab bar UI (`.side-panel-tabs`, `.side-panel-tab`, tab rendering
logic). Panels no longer have user-selectable tabs.
- Separate pop-out and fullscreen buttons in mermaid toolbar (collapsed
into single context-aware expand button).
## [0.18.0] — 2026-02-28
### Added
@@ -1080,4 +1145,4 @@ All notable changes to Chat Switchboard.
### Changed
- Backward-compatible API routes with v0.8 field name aliases
- User model preferences table (`user_model_settings`)
- User model preferences table (`user_model_settings`)