Streaming assistant replies in the Control UI now render markdown live: the in-flight tail is repaired with remend (zero-dep, Apache-2.0, extracted from Vercel's Streamdown) before the existing markdown-it + DOMPurify pipeline, and open code fences stream as live-highlighted code blocks. Deletes the plain-text streaming tail path (toStreamingPlainTextHtml) and extracts an uncached render core so tail deltas stop churning the markdown LRU cache. Closes#106053
The sidebar's expandable "MORE" section (uppercase header, chevron, persisted
sidebarMoreExpanded pref, dedicated "Edit pinned items" row) collapses into a
single More nav row that opens a transient popup menu with the unpinned
routes, dynamic plugin tabs, and the pin editor entry. Menu rows are real
anchors, so Cmd/middle-click keeps native link behavior; the More row carries
the active highlight when the current route lives inside the menu. The
sessions list gets the reclaimed vertical space, and one persisted setting is
gone (stale keys are ignored on load). The nav rows and menus move to
app-sidebar-nav-menus.ts to keep app-sidebar.ts under the TS LOC ratchet.
Docs: docs/web/control-ui.md sidebar-navigation section updated.
Fixes#105905
* feat(ui): make the sidebar agent chip body the menu trigger
The footer chip's big name/avatar area now opens the agent menu directly
and the chevron toggle button is removed. New-session plus stays as the
only trailing action; the unread dot moves onto the chip body.
* chore(ui): prune removed agentChip.openConversation key from locale bundles
* fix(ui): keep the agent name in the chip menu trigger accessible name
PR #105866 split the footer block inset evenly (calc(inset/2) top/bottom)
but left chat-responsive.browser.test.ts asserting the full inset, breaking
checks-ui on main.
* feat(ui): scope the sidebar sessions list to the selected agent
* fix(ui): render the target agent's cached sessions during a chip switch
* fix(ui): key the sessions list off the chip-selected agent
* feat(ui): agent-centric sidebar footer chip with utility menu
* feat(ui): agent chip menu anchoring, link styling, locale sync
* fix(ui): keep agent chip presence announcement out of the aria-hidden avatar
* fix(ui): resolve agent chip resume sessions against the target agent, not the route agent
* fix(ui): tie unprefixed session keys to the system default agent in chip resume
* style(ui): oxfmt layout.css
* feat(chat): native session scroll-back with import-aware history paging
* fix(chat): page imported session history
* fix(chat): restore terminal import snapshots
* fix(chat): gate cli import resolver on ignore flag to stop history recursion
* fix(chat): correct scroll-back types and drop orphaned recent-messages reader
* fix(ui): explain grayed-out rows in the new-session folder picker
Disabled device rows now carry a reason tooltip (device offline vs. no
folder-browsing support), the admin-gated folder trigger says it needs an
admin connection, and dimmed dot-directories are labeled as hidden folders.
* chore(i18n): sync locale bundles for new-session picker tooltips