- Add ref prop to ExpandableTextarea to expose the underlying textarea
- Track streaming state transitions in ChatInterface and refocus the
input via $effect when isStreaming flips to false
Reorder sidebar menu to Activity, Playground, Models, Logs. Remove the
ll header icon and replace it with the connection status indicator
moved from the footer. Add a Settings page (gear icon) at the bottom
that surfaces the build information that was previously hidden behind
the status indicator's tooltip.
- move ConnectionStatus into Sidebar.Header, drop build-info tooltip
- add Settings.svelte route showing version/commit/build date
- register /settings route and title in App.svelte
- add showPagination to Activity route's ActivityTable
- fix pagination reactivity: reassign pagination object in
onPaginationChange so TanStack's effect.pre detects the change, and
reset to first page only when pageSize changes
- move data-change page reset into untrack to avoid clobbering
navigation
- render Cached/Prompt/Drafted headers with a dotted underline trigger
instead of a separate info icon
Replace the hand-rolled table with a TanStack Table-backed shadcn
data-table using the FlexRender/createSvelteTable helpers, with
DropdownMenu column visibility, Select page-size, and icon-button
pagination. Column visibility and page size persist to localStorage.
Move tooltip usage to the canonical shadcn-svelte pattern by adding a
single root Tooltip.Provider in App.svelte and using Tooltip.Root/
Trigger/Content directly in the activity-table sub-components
(HeaderLabel, MetaCell), dropping the custom Tooltip/MetadataTooltip
wrappers.
- add @tanstack/table-core and shadcn data-table helpers
- split cell/header renderers into activity-table/* sub-components
- switch pagination/visibility to TanStack Table state driven by
table.nextPage/previousPage/setPageIndex/setPageSize and
column.toggleVisibility
- Add /models route (ModelsDash) with unload-all, model list with
start/stop buttons, and show-unlisted toggle
- Make sidebar Models and Playground headings navigate to their pages
while the chevron independently expands/collapses the section
- Extract shared model load/unload orchestration into modelLoad store
- Left-align model names in the ConcurrencyInterface load-test list
- Widen CaptureDialog to 90% with flex-based scroll overflow
- Use sm:max-w-[90%] to override the shadcn dialog's sm:max-w-sm cap
- Add ActivityTable component consolidating column customization,
table rendering, pagination, and capture dialog previously
duplicated between Activity.svelte and ModelDetail.svelte
- Split ModelDetail tabs into ModelActivityTab, ModelLogsTab, and
ModelDetailsTab components under components/model/
- Reduce Activity.svelte and ModelDetail.svelte to thin shells
- ModelDetail tabs now reuse ActivityTable instead of duplicating
column management, formatting, and capture logic
Move Models to the top of the sidebar as a collapsible item with each
model listed as a sub-item.
- add persistent modelsMenuOpen store for expand state
- show status dot per model (grey/yellow/green for stopped/changing/loaded)
- right-aligned load/unload button with Play/PowerOff/Loader2 icon
- button stops propagation so it doesn't trigger navigation
Move Playground tabs into the sidebar as collapsible sub-items and make
the sidebar the sole navigation for playground interfaces.
- add collapsible UI primitive (bits-ui wrapper)
- add playground store with selected tab and menu open state (persistent)
- make Playground menu item collapsible; whole button toggles expand state
- move playground sub-items (Chat/Images/Speech/etc) under Playground
- remove in-page Tabs from Playground.svelte
- update sectionTitle breadcrumb to reflect active sub-item
- remove bg-sidebar panel background so items sit on page background
- remove persistent data-active background tint on menu items
fixes#123