Changelog
Updates to paneui.
Share images for Next.js routes
October 19, 2026 · Components
- OG Image renders straight from an
opengraph-image.tsxroute withImageResponse. It exportsogImageSizeandogImageContentTypefor the route'ssizeandcontentType, and has a new look: title at the bottom, an optional URL, a faint grid or dot backdrop and an accent glow. @paneui/og-image-routeaddsapp/opengraph-image.tsxandapp/twitter-image.tsx;@paneui/og-image-post-routeadds a per-post image underapp/blog/[slug]. The docs site draws its own share image the same way and writes it to/og.png, so static hosts serve it as an image; the OG Image notes show how.- New:
OgCoverArt, the Cover Art compositions drawn for share images. A slug picks the same art in both. The file now installs as a ui component, atcomponents/ui/og-image.tsx.
Sidebar-first App Shell, one border colour
October 19, 2026 · Components
- App Shell leads with a full-height sidebar: a team switcher (
AppShellSwitcher) on top, folding groups, projects and the user menu at the foot, and the panel's own header (AppShellInsetHeader) with the trigger, a divider and a breadcrumb. AddAppShellHeaderfor the header-first layout, now its own example. - The sidebar's edge line no longer runs past the inset panel's rounded corners, and the floating rail's icons sit on the trigger's column again (they were 3px off). The panel header's divider is centred.
- Outline buttons, cards, select and combobox triggers, fields, tab lists and dividers share one edge colour,
--border(gray a4) at 1px, in light and dark.--inputnow equals it. - Edited Files Card: Undo, Review and the toggle follow the card's corner, and so does a closed last file row.
Vendor logos in the model picker, sparkline gaps
October 19, 2026 · Components
- Model Picker: model and effort rows show the name only. A
descriptionstill type-checks and shows withshowDescriptions. The examples and the agent templates show each model's vendor logo; OpenAI and xAI marks ship inpackages/ui/src/lib/brand-marks.tswith Brand Icon. - Sparkline takes missing points (
null).gapbridges them with a faint dashed line (default), breaks the line or plots zero. An empty or one-point series draws a flat dashed baseline. The line no longer breaks into dashes when the chart is stretched. - Removed: 404 Terminal. The SaaS template's 404 page uses Empty State.
iOS Zoom Lock
October 18, 2026 · Components
- New: iOS Zoom Lock. Mount it once and iOS stops zooming into a focused field, while pinch zoom keeps working. It's opt-in; nothing mounts it for you.
- The Input and Textarea notes now recommend it for phone forms.
max-md:text-basestill works when you'd rather have 16px text on phones.
Phone fixes for fields, the outline and the arrow button
October 18, 2026 · Components
- Input, Textarea, Input Group, Combobox, Command, Multi Select and Native Select keep the control text size on phones too; they no longer step up to 16px under 768px. Add
max-md:text-baseto a field where the browser's focus zoom matters more than density. - Outline no longer flickers between sections while the page scrolls. A heading has to be clearly past the line before the section changes, and a clicked entry holds while the page scrolls to it.
- The shadow swatches on Theme and the accent role strip on Customize keep every label whole and centred on a phone.
App shell layouts and smaller fixes
October 18, 2026 · Components
- App Shell takes
layout:inset(the default, unchanged),sidebarfor a flush shell with hairlines, andfloatingfor a rail on its own panel. Leave outAppShellSidebarfor a header-only shell. - Accordion icon chips follow the row's corner instead of sitting round inside it.
- Agent Code Block
wrapnow wraps long lines; before, the block still scrolled sideways. - The SaaS dashboard header shows the workspace mark beside its name.
Icon stroke that matches the text, and filled nav icons
October 18, 2026 · Icons
- Icons take
weight="bold"for a 20% heavier stroke, or sit insideicon-bold. Badges, card, dialog, drawer and popover titles, page headers, empty states and settings sections use it so icons match semibold text. Buttons keep the regular stroke. Reinstall@paneui/themefor the utility; the upgrade check warns when it is missing. - Home, Inbox, Chat, Calendar Days, Bell, User, Settings and Folder have filled versions in every icon style. Tab Bar items take
activeIconto show one on the current tab. - The design skill adds rules 41–43 (stroke weight, filled active glyphs, logical text alignment) and three checks:
icon-weight,nav-active-iconandtext-align-logical.
Start and end alignment, and more translated labels
October 18, 2026 · Components
- Text aligned left or right now aligns to the start or end, so it flips in right-to-left. In Table,
align="left"and"right"map to start and end. - Editable Table column menus say Insert before and Insert after, and the insert marker sits on the correct side in right-to-left.
- Tool approval, edited files, file diff, AI sidebar, colour picker, chart and pagination summary labels come from the locale provider, in English and Simplified Chinese.
Icons that point the right way in right-to-left
October 17, 2026 · Components
- Arrows, chevrons, send, undo, external-link and log-out icons flip in right-to-left across components, blocks, templates and examples. Disclosure chevrons still turn down when open.
- Carousel dots sit further apart so each one is a full 24px target.
- The upgrade check warns when your theme is missing
media-outline. Reinstall@paneui/themeto fix it.
Polish rules, checks and examples in the design skill
October 17, 2026 · Design skill
- The design skill has eight new rules (33–40) for the details that make a screen feel finished, from target sizes to icon swaps and exits. Each comes with a Recommended and Avoid pair, shipped with the skill in
examples/. - The check gains 21 rules (run
--list) and--self-test, which runs the examples.scripts/polish-probe.jschecks hit areas, image edges, heading wrap and live numbers on the rendered page. - The theme adds
media-outline. Reinstall@paneui/themeto get it. - Checkbox and radio reach a 24px target; carousel dots, tab and chip close buttons extend theirs without overlapping. Button trims 2px on the icon side at every size, using start and end padding so it holds in right-to-left.
- Icon swaps in the copy button, password reveal, theme toggle, overflow actions, status marks and slide action share one cross-fade, and springs that bounced now settle once.
Whole descenders and default labels that stay
October 17, 2026 · Components
- OG Image titles and descriptions no longer cut off the bottom of g, y and p on their last line.
- Passing
aria-label={undefined}(ortitle,aria-labelledby) to a component keeps its default or translated label instead of removing it. A label you pass still wins.
Share cards, fitting tables and more translated labels
October 17, 2026 · Components
- OG Image is a 1200 × 630 share card you render to PNG at build time. Its colours come from
OG_IMAGE_TOKENS, generated from the theme for every accent in both modes. - Simple Table body cells keep their minimum width only on small screens, so short tables with many columns fit a reading column on desktop; empty cells never get one.
cellMinWidthkeeps the floor everywhere or removes it. - The outline, sidebar nav, command palette, theme toggle and cover art read their built-in text from Locale Provider, in English and Simplified Chinese. Their props still win, and
SidebarNavSectiontakes atoggleLabel.
Table overflow, group icons and stable installs
October 17, 2026 · Components
- Inline code in Simple Table no longer breaks inside a word, and body text keeps a minimum width, so a narrow table scrolls sideways instead of squeezing its columns.
SidebarNavSectiontakes anicon. When rows or group labels beside each other mix icons and none, the ones without start at the icon rows' text, and so do the rows inside those groups.TabBarItemdraws its focus ring around the icon pill and has no corners of its own, so it sits cleanly inside a rounded screen. The jump-to-latest button inMessageScrollerand an expandedExpandableControlhover to the accent's own hover colour.- Reinstalling items now writes the same files every time, in projects with or without Server Components: shipped files keep
"use client"where they use client APIs, and files that don't, such asLabel,SeparatorandTimeline, no longer have it. - The upgrade check with
--fixchecks again after fixing and lists only what is left.
Cover seeds, linked nav groups and Markdown tables
October 17, 2026 · Components
- Cover Art has eight compositions, and a
seednow also sets a mirror, a tone offset and a pattern, so posts next to each other no longer share a cover. Seeded covers change once;variant0to3look as before.coverArtStyle(seed)returns everything a seed decides. SidebarNavLinktakes anicon. ASidebarNavSectionlabel can be a link to the section's own page withhreforlabelRender, marked current withactive; the chevron beside it still folds the rows.SimpleTableHeadandSimpleTableCelltake thealignvalues Markdown writes:left,centerandrightmap to the start edge, the center and the end edge. Barecodein body cells gets the inline-code chip, so MDX tables map straight onto them.- The
Outlinedivider above Back to top now fades in with the link instead of showing on its own. ThreadListItemwithactionssendsclassName,id,styleanddata-*to the list item and the rest to the row button, and takesbuttonProps.SettingsRowLinktakes every anchor attribute, addsrel="noopener noreferrer"totarget="_blank"links and shows an external icon withexternal.- Read-only checkboxes, such as task items in
ResponseMarkdown, no longer show a pointer. The menu and command shortcuts no longer trip the design check in your project. - Theme 2.3: reinstalling the theme leaves your stylesheet unchanged, because it no longer ships
@propertyrules. Run the upgrade check with--fixonce to delete the old copies. The design skill and the upgrade check now land at the project root in projects withsrc/; move an earliersrc/.agentscopy up, or delete it and reinstall.
Tab bar, timeline, locales and agent fixes
October 16, 2026 · Components
- New items: Tab Bar for phone navigation, Timeline for schedules and Locale Provider, which switches the built-in labels of overlays, fields, navigation and agent parts to another language at once. English stays the default; Chinese is built in.
ModelPickerandComposerPickertakesearchableandmaxPerGroupfor long model lists, and every option carriesdata-value.AgentComposerhides its attach button withoutonAttachand takeslabelsandinputProps.ThreadListItemtakesdescription,metaandactions; actions sit outside the row button, so a row menu no longer nests a button in a button.SettingsRowtakesinteractiveanddetail, andSettingsRowLinkrenders a link row.WorkSummaryStepcan fold its output withcollapsible, andWorkSummaryThoughtshows the model's thinking.ResponseMarkdownkeeps a numbered list's first number, links bare URLs and shows task items with a checkbox.CodeHighlightloads only its seven grammars, each on first use.- The design check no longer crashes when TypeScript 7 is installed; it falls back to its line checks.
Docs built from the library, five docs layouts
October 16, 2026 · Components
- New items: Outline (the On this page rail and its popover), Sidebar Nav, Simple Table and Cover Art. The docs site, the docs template and the blog template now use them instead of their own copies.
Cardtakesrenderandinteractivefor cards that are one link,NavigationMenuLinkhas atabvariant for header sections, andPageHeaderhassize="lg"for reading pages.- The Docs Site template takes a
layout: classic, notebook, flux, spacious or home. Each one has a preview on its page. - The Markdown copy of each guide page reads cleanly: interactive previews become a short note, link tiles a list, and tables keep only the columns with text.
Docs pages you can copy, share and follow
October 16, 2026 · Docs
- Every docs page has a Markdown copy at the same address with
.md, for example/docs/button.md. Copy page next to the title copies it; its menu opens it, hands it to a chat assistant or copies the page link.llms.txtlinks to these files. - The outline's line steps in for nested entries and back out, and the stretch beside the current section slides as you read. On narrow screens and template pages it folds into an On this page button above the content.
- Hover a heading to copy a link to it. The section name sits above each title, and each page ends with the previous and next page in sidebar order and the date its sources last changed.
Right-to-left examples and a calmer preview toolbar
October 16, 2026 · Docs
- Twenty component pages end their examples with an RTL one in Arabic, among them Select, Menu, Tabs and Animated Sidebar. The toolbar's RTL toggle and control-size switch are gone.
- Popups, dialogs, drawers and toasts carry the
DirectionProviderdirection into their portal, so they read right to left with the page. Toasts stack at the bottom left and swipe out to the left. - Fixed in right-to-left: switch thumbs, slider ticks, carousel arrows and keys, calendar arrow keys, the chevrons in breadcrumbs, pagination and submenus, and the padding of select, combobox, multi-select, menu, dialog, drawer and sidebar parts. Submenus open toward the end side, and shortcut keys keep their order.
- The viewport switch is an icon tab list that matches Preview / Code. New
TabletIconandMaximizeIconin every icon style; a tab whose only child is an icon is square. - The page outline stays inside the window on long pages: its list scrolls on its own, keeps the current section in view, and shows long titles in full on hover. Back to top appears once you scroll.
A design skill for coding agents
October 16, 2026 · Docs
- The design skill collects the library's rules in one place, each with a recommended and an avoid example. Install it with
npx skills add QinYangWang/paneui --skill paneui-designor as thedesign-skillregistry item. - It ships a check that runs without dependencies and reports broken rules before you commit, plus a console snippet for nested corners as rendered.
- Fixes the check found here: menu labels outside their groups, press scale on two controls, tight tracking on small headings, five descriptions over 12 words. Template parts no longer share a name with an item: the blog avatar is
parts/author-avatar.tsxand the editor buffers areparts/buffers.ts. - Code on the guide and component pages is highlighted when the site builds; Customize highlights its CSS as you change it.
Radius stops at 16px
October 16, 2026 · Theme
- Theme 2.2: no radius token goes past 16px, and the custom radius on Customize goes up to 1rem. Above that, controls turned into pills and nested parts drifted off their containers.
rounded-4xlandrounded-5xlstay as names at the cap. - Multi-select chips line up with the field's corners at every radius; they were 2px too square. Message bubbles, the bottom sheet and the card folder follow the same cap.
- The docs and blog templates show code with Code Block instead of highlighting it in the browser, and the SaaS customer drawer uses settings rows for its details and invoices.
Brand icons, an upgrade path and refreshed templates
October 16, 2026 · Templates
- New Brand Icon draws third-party logos at the icon set's sizes, in the text colour or the brand's own. Import logos one at a time so only those reach the bundle.
- Theme 2.1: the wide-gamut colours and the layered popover shadow now take effect after install. Reinstall
themewith--overwrite, then run the newupgrade-checkto clean up what earlier versions left behind. Steps and a migration list are on CLI & registry. - The SaaS dashboard runs on
AppShell, with the workspace menu, breadcrumb, search and theme in the header band, and gains an Integrations page. Settings is one sidebar link; its sections stay in the page's own nav. Sign-in offers GitHub and Google. - Date pickers print the same text on the server and in the browser, which fixes a hydration error on pages that render one (the analytics dashboard among them) and the dark and radius settings it reset.
- Templates use the library for scroll areas, keys, alerts and the three-way theme toggle, and drop leftover translucent colours for the
-subtletokens.
Chart colours match the theme
October 16, 2026 · Theme
--chart-1to--chart-8now come from the same colour scales as the UI: blue, orange, violet, green, pink, amber, cyan and gray, with wide-gamut values. Reinstallthemeto pick them up; series that relied on a token number change hue.- Legend and tooltip swatches are round dots at every radius.
Nested corners stay concentric after install
October 16, 2026 · Theme
- The
themeitem now shipsframe-*,rounded-inner,rounded-inner-*androunded-inner-or-*. Reinstall it so installed components keep their nested corners. - Icon rail items, tab strip tabs, the popover close button, the inline range slider and approval card details follow their container at every radius.
New foundation: Inter, alpha greys, four shadows and a tighter radius
October 16, 2026 · Theme
- UI text is set in Inter with a Chinese fallback, code in JetBrains Mono and reading prose in Newsreader. Install
fontsto self-host them; without it the theme uses system fonts. - Text, fills and borders are translucent greys, so they read the same on any surface. New tokens cover tertiary text, sunken and standout surfaces and subtle and strong borders, and the accent and each state colour gain
-hover,-subtleand-bordervariants. - The accent is eight role variables instead of a ramp. Presets and custom colours on Customize swap all eight; a custom colour saved before today resets to blue.
--radiusis now 0.5rem, so controls are 8px, cards 10px and dialogs 16px. Newrounded-4xlandrounded-5xl.shadow-xstoshadow-xlread four shadow levels. Dialogs, drawers and sheets use the deepest one.
Static code blocks, a system theme and prose in panels
October 16, 2026 · Components
- New Code Block and
CodeGroupfor code highlighted at build time. Nothing is highlighted in the browser. ThemeToggletakesmodes="tri"to cycle light, dark and system. The newuseTheme()hook andgetThemeScript()follow the OS while nothing is stored.typesetonTabsPanel,AccordionPanel,CollapsiblePanelandCardContentstyles their content as prose inside atypesetcontainer.- New Theme Accents switches every accent preset with
data-accent, and the hiddentheme-radiidoes the same fordata-radius. FileTreeFolderandFileTreeFileno longer need avalue; it defaults to the node's path.
Radius control, 16 new components and a new docs layout
October 16, 2026 · Components
- Every radius follows
--radius. Pick a preset or a custom value on Customize, copy the CSS, or install atheme-radius-*item. Nested frames stay concentric at every value. - New
alert-dialog,command,calendar,date-picker,progress,skeleton,separator,kbd,input-otp,input-group,button-group,native-select,menubar,navigation-menu,carouselandhover-card. - The docs have a single header and a text sidebar with collapsible sections, counts and a page outline. The logo is now a capital Q.
- Component previews switch between device widths and open in a new tab.
Sizes and variants across form and display components
October 15, 2026 · Components
- Form controls take the Button size scale (
xs,sm,default,lg), so a field and the button beside it line up at every size. sizeonFieldsizes the label and the control inside.sizeonSelect,ComboboxandMultiSelectsizes the trigger and its rows together.- New
underlinevariant for tabs,outlineandghostcards, algcard, and a small alert. - Checkbox, radio, switch, slider, pagination and breadcrumb take a
size. Every default looks the same as before.
Code editor on the desktop
October 15, 2026 · Templates
- New desktop example in
apps/desktopruns thevscodetemplate in a native window, on folders from disk with real shells. VsCodeApptakes an optionalhostfor folders on disk, terminals, a native menu and a draggable title bar.
Terminal and a code editor template
October 15, 2026 · Templates
- New
terminalruns a shell in the page, or a real one on your machine through the bundled bridge. - New
vscodetemplate: an editor, file explorer and terminals on one shared workspace.
Scroll area, smoother loaders and a compact tool approval
October 15, 2026 · Components
- New
scroll-areakeeps thin scrollbars inside rounded frames. Table, code block, pull to refresh, smooth scroll and scroll progress use it. - Loader runs on CSS keyframes and loops without a jump. Text shimmer has a brighter band.
- Tool approval is a single request row that folds into a result line.
- Data table and availability scheduler lay out by their own width.
App shell, overflow hints and real block drag
October 15, 2026 · Components
- New
app-shell: header, rail sidebar and inset panel on one grid, with the toggle centred on the rail icons. The docs site runs on it. - New
overflow-hintshows the full text of a truncated label in a hover card you can select and copy. Tab strip titles use it, and the last tab keeps its border. - Block editor drag works with mouse and touch, with a drop line, Move up and Move down, and keyboard moves.
- Avatar generator lays out by its own width. Agent activity’s live ring is no longer clipped.
- Inline code no longer breaks after a hyphen, and
shadow-surfacesits lower.
Typeset and shorter copy
October 15, 2026 · Docs
- New
typesetitem for long-form text, withtypeset-docs,typeset-readingandtypeset-chatpresets. It replacesprose-qy, and streamed responses, the blog and the docs template now use it. - Gallery cards show the name and the preview only.
- Every description, example intro and note was rewritten to the copy-density rules in AGENTS.md.
File tree: chevrons for folders, type icons for files
October 15, 2026 · File tree
- Folders show only their chevron; files show a file-type icon picked and tinted by extension. Both sit in the same 16px slot, so at each level chevrons and file icons line up.
getFileKind(name)is exported, and the defaultindentis now 12px. - Redrawn
CarIcon(side view),HighlighterIcon(chisel marker with a stroke) andSendIcon(points right).
Rounded icons are the new default
October 15, 2026 · Icons
iconsis now a hand-drawn rounded set: the same 136 names and props, outline glyphs on a 24×24 grid with 1.75px round strokes, soft corners and shapes that fill the box, so they read larger at the same size.- The previous filled style moved to
icons-puffy;icons-outlineis unchanged. Switch withadd …/r/icons-puffy.json --overwrite, back withadd …/r/icons.json --overwrite. The Icons page toggle has Rounded / Puffy / Outline. ThemeTogglehasvariant="ghost", a 28px toolbar button; the docs header uses it.
Outline icon style
October 15, 2026 · Icons
- The icon set ships in an outline style as
icons-outline: the same 136 names, props and 18×18 grid, with filled shapes drawn as 1.6px round outlines and tiny dots kept solid. It installs topackages/ui/src/icons/index.tsxlike the puffy set, soadd …/r/icons-outline.json --overwriteswitches every component andadd …/r/icons.json --overwriteswitches back. See Icons and CLI & registry. - The Icons page has a Puffy / Outline toggle that previews the whole grid in either style.
Agent workspace and Colors on phones
October 15, 2026 · Mobile
agent-workspacehas a phone layout belowmd: a header with the scrolling thread tabs, the rail and threads in a drawer, terminal / explorer / browser in a bottom sheet and one full-width chat (split chats are desktop only). On tablets it opens with the dock collapsed.- icon-rail gains
orientation="horizontal"; tab-strip scrolls instead of reordering on touch screens, with larger targets; the mode and effort pickers show only their glyph in a composer narrower than 28rem; edited-files-card no longer overlaps its buttons when narrow. - On phones the Colors token tables and every API reference table become stacked lists, so nothing scrolls the page sideways.
SaaS and agent workspace templates, block and email editors
October 15, 2026 · Templates
- One-command templates:
shadcn init -d -n my-app <url>creates a Next.js app with the theme, every component and the routes in place, with nocomponents.jsonsetup (published items reference their dependencies by URL). See CLI & registry. saasreplaces the Landing Page and SaaS Dashboard templates: marketing home, pricing and changelog, login, sign-up, password reset and email code with mock auth, a dashboard with overview, analytics and a customers table, settings (profile, account, billing, team, notifications, appearance) and a 404.agent-workspaceis rebuilt as an Agent Client Protocol client: threads, tabs, split chat panes, terminal, file explorer, review diffs and an offline demo agent, plus a WebSocket bridge (server/acp-bridge.mjs) that runs Claude Code, Codex, Gemini CLI or any ACP agent.- Block editor (slash menu, bubble menu, drag handles, callouts, toggles, tables, MDX import and export) and email editor (email blocks and variables, rendered to email-safe HTML).
- 28 new components the templates are built from: sparkline, trend-chart, bar-list, stat-card, empty-state, page-header, usage-meter, settings-section, field, password-input, segmented-control, accent-picker, pagination, workspace-switcher, user-menu, data-table, resizable, tab-strip, icon-rail, terminal-view, thread-list-item, work-summary, edited-files-card, model-picker, toggle-group, toolbar, menu-list and swatch-picker; the agent-composer block; a plain variant for signup-form and new options on file-diff and message-scroller.
- The theme item now sets
--color-primary,--color-ringand the dark primary and chart colours explicitly, so a fresh shadcn app no longer keeps its default dark primary.
Native desktop style, neutral primary and accent presets
October 14, 2026 · Theme
- New native desktop visual direction: system UI font on a 13px
text-uiscale, translucent fills for secondary, muted and accent, 5–6% hairline borders, a 0.625rem radius with multiplier steps and an inset docs shell. - The primary colour is now neutral (near-black in light, near-white in dark). Five accent presets,
theme-blue,theme-green,theme-orange,theme-roseandtheme-violet, ship as registry items; see Theming. - Desktop density across controls: 32px buttons and inputs, 26px menu rows, no press scale on standard controls.
- Docs: a Getting started section (Introduction, Installation, Theming, CLI & registry, Changelog) and a components overview.
Component pages, templates and lint rules
October 14, 2026 · Docs
- Every component page now has install tabs, usage, composition, examples and an API reference with an on-page TOC.
- Five full-page templates: SaaS Dashboard, Agent Workspace, Landing Page, Docs Site and Personal Blog, plus the
prose-qylong-form typography utility. - Design-system lint rules on
@shadcn/lintand an AGENTS.md guide keep tokens, radii and motion consistent. Cardgained an inset variant withCardPanelfor presented content, andIconChipbecame the frame for header icons.- 37 showcase-only components and the dock were removed to keep the library focused on app UI.
The library grows: motion, agents, charts and blocks
October 13, 2026 · Components
- Forms, overlays and disclosure components, text and number motion, and selection controls.
- Motion components: stateful and confirm buttons, action swaps, morphing surfaces, pickers, slider variants, scroll effects.
- Navigation, virtualized tables, agent surfaces (messages, tool calls, diffs, plans), charts and composed blocks.
- The docs site: live gallery, per-component pages, an animated-sidebar nav, a ⌘K command palette and a light / dark / system theme menu, published as a static export.
First release
October 12, 2026 · Release
- A shadcn registry (the base-nova style) with Tailwind CSS 4, the first core components and the puffy icon set.