Avatar for the omniviewdev user
omniviewdev
ui
BlogDocsChangelog

Performance History

Latest Results

fix(base-ui): second round of CodeRabbit review fixes - sections: setFullYear to avoid year 0-99 remapping - Calendar: reset background on disabled cells; useLayoutEffect for post-focus commit - DateRangePicker: drop current.start cap on end field min; aria-disabled on icon - DateTimePicker: aria-disabled for readOnly; hover only when enabled - TimePicker: full readOnly disabling of icon button; hover only when enabled - TimeColumns: readOnly doesn't disable option focus - DateField: remove unused placeholder prop - useDateField: enforce min/max in validation - dateUtils: clampDate returns copies of min/max - formatters: locale-specific weekStartsOn map - CSS: margin-inline-end for RTL-safe footer layout - Tests: tighter getMonthMatrix assertion; Clear preserves calendar date - Docs: mark pickers as Beta in top-level COMPONENT_STATUS
feat/date-time-pickers
1 month ago
feat: unified storybook + PR preview pipeline (#35) * chore: add storybook devDependencies to workspace root Root-level .storybook/ config needs these packages directly available, not just hoisted from individual packages. * feat: add unified storybook config merging all packages Pulls stories from base-ui, ai-ui, and editors into a single build. Merges Vite configs: @omniview/base-ui alias for cross-package imports, monaco-editor optimizations, and STORYBOOK_BASE env var for PR previews. * feat: add unified storybook preview with all toolbar controls Superset of all package previews: theme/density/motion controls, ThemeProvider decorator, base-ui CSS, and Monaco worker setup. Editors stories now gain density/motion controls they previously lacked. * feat: update scripts for unified storybook Root 'pnpm storybook' now launches all packages. Per-package scripts available as storybook:base, storybook:ai, storybook:editors. * feat: update deploy-storybook workflow for S3/CloudFront Replaces GitHub Pages deployment with S3 sync + CloudFront invalidation. Deploys unified storybook (all packages) to storybook.omniview.dev. * feat: add PR storybook preview workflow Builds unified storybook with path prefix, deploys to S3, posts preview URL as a comment on the PR. Skips forks, uses concurrency groups to prevent race conditions. * feat: add storybook preview cleanup workflow Event-driven cleanup on PR close + weekly cron safety net. Cron lists all pr-* prefixes, checks PR status via GitHub API, deletes stale ones. * fix: add react and vite-plugin-react to workspace root The root .storybook/ config needs react, react-dom, and @vitejs/plugin-react directly available. Without these, the storybook build produces "React is not defined" errors. * fix: resolve React runtime errors and add all themes to storybook - Add .npmrc with shamefully-hoist=true so root storybook can resolve all workspace package dependencies - Explicitly inject @vitejs/plugin-react in viteFinal when missing (pnpm workspace hoisting can lose it from @storybook/react-vite) - Add obsidian, carbon, void themes to toolbar in all storybook previews (root, base-ui, ai-ui, editors)
main
2 months ago
feat: showcase app with interactive demos and theme palettes (#33) * feat(showcase): scaffold package with vite, react, theme * feat(showcase): add app registry and placeholder demos * feat(showcase): add Dock component with icon buttons and theme switcher * feat(showcase): complete shell with dock, home screen, and lazy routing * fix: rollup declaration files so dist/index.d.ts resolves correctly All three library packages (base-ui, ai-ui, editors) generated declarations under dist/src/ instead of dist/, causing TS7016 errors for consumers. Adding rollupTypes: true to vite-plugin-dts bundles them to the expected path. * feat(showcase): add global reset styles and pass typecheck * fix(base-ui): correct styles.css export path to match build output * fix(showcase): use compound Card/Tooltip APIs and replace ThemeSwitcher with icon toggle - Cards now use Card.ActionArea, Card.Header, Card.Title, Card.Description and Card.Group (which provides correct min-width-aware grid) - Replace ThemeSwitcher (3-dropdown form) with useTheme() + IconButton dark/light toggle suitable for the 52px dock - Use Tooltip compound API (Root/Trigger/Portal/Positioner/Popup) - Use correct IconButton props: 'solid'/'ghost' variants, 'brand'/'neutral' colors * docs: add showcase demos design spec for 4 interactive demos * docs: apply spec review feedback to showcase demos design - Add Monaco worker setup section to IDE Editor - Add scripted replay timing guidance to AI Chat - Commit to DockLayout (remove AppShell option) - Add CSS import requirements for ai-ui and editors - Fix Typography compound API usage (no .Code sub-component) - Reduce mock containers from 50 to 15-20 with full data - Add FilterBar fallback strategy - Fix coverage matrix (add Separator, ChatAvatar; remove Dialog/Drawer, AppShell) - Add navigation state management and component API conventions - Note remaining 3 demos deferred to future spec * docs: address round 2 spec review findings - Fix Typography.Code — it does exist, use it for inline code - Clarify AIArtifact/AIBranch use separate named exports, not dot-notation - Restore 50 container count (15-20 unique + ~30 generated) for virtual scrolling - Split NavList/List into separate coverage matrix rows - Add coverage notes for uncovered ai-ui (~20) and base-ui (~60) components - Add DockLayout fallback strategy in gaps table - Add editor package note for Container Mgmt (Terminal uses xterm, not Monaco) - Add 'use no memo' convention for DataTable MemoizedRow * docs: final spec alignment — add AIArtifactDescription, NavList to IDE Minor fixes from review round 3 suggestions: - Add AIArtifactDescription to AI Chat component table - Add NavList to IDE Editor component table (aligns with coverage matrix) * docs: add showcase demos implementation plan with API-verified fixes Four-chunk plan covering File Explorer, IDE Editor, AI Chat, and Container Management demos. All component APIs verified from source and corrected after 4 parallel review passes. * docs: use react-icons/lu everywhere, no text emojis in plan * feat(file-explorer): add mock data and types * feat(file-explorer): layout shell with dual tree panes Implements TreePane component wrapping TreeList with breadcrumb header, and FileExplorer root layout using nested ResizableSplitPane for dual local/remote trees with a detail placeholder. * feat(file-explorer): detail panel, toolbar, context menu, status bar * feat(ide-editor): add mock data and types * feat(ide-editor): layout shell with sidebar, editor tabs, terminal Implements Task 5 — full IDE editor layout with: - IconStrip: vertical panel switcher using Tooltip.Root compound API - SidebarPanel: files (TreeList), search (SearchInput + results), git (StatusDot) - Main IDE layout: ResizableSplitPane (horizontal sidebar + vertical editor/terminal) - EditorTabs tab bar driving CodeEditor, DiffViewer, MarkdownPreview based on tab type - Terminal via ref + TerminalHandle, writing terminalOutput in onReady - CommandPalette wired to Ctrl+K/Cmd+K with toggle-terminal command - Monaco workers set up at module level via setupMonacoWorkers() Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(ai-chat): add mock data, types, and conversation script * feat(ai-chat): layout, pre-built conversation, scripted replay with streaming and artifacts Implements Tasks 8 and 9 — the full AI Chat demo with: - MessageRenderer component rendering ChatBubble, ThinkingBlock, ToolCall/ToolResult, AIMarkdown, AIBranch navigation, AISources, AIContextIndicator, and AIMessageActions - ArtifactPanel component using AIArtifact* named exports with AICodeBlock content - useScriptedReplay hook driving a state machine through typing → thinking → tool-call → streaming (character-by-character) → artifact → follow-up → done phases - Main layout using ResizableSplitPane for split chat/artifact view when an artifact is open, with AIConversationHeader, AIModelSelector, ChatMessageList (virtualised), ChatSuggestions, AIFollowUp, AIStopButton, and ChatInput Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat(container-mgmt): complete demo with list view, detail view, and tabs Implements Tasks 10-12: types, mock data (~50 containers), ContainerList with DataTable + FilterBar, and ContainerDetail with Logs/Inspect/Stats/Files tabs using Terminal, ObjectInspector, Card, TreeList. * feat(tabs): add endDecorator prop to Tabs.Tab * feat(sortable-table): add useSortableTable hook * feat(sortable-table): add SortableHeader component * feat(file-table): add formatting utilities * feat(file-table): add FileTable compound component * test(file-table): add FileTable integration tests * fix(file-table): render Status outside table element * refactor(file-explorer): use Tabs + Progress in TransferPanel * refactor(file-explorer): use FileTable component in FilePane * docs: web browser demo design spec Spec for Chrome-style browser chrome simulator demo, including EditorTabs variant="pill" base-ui enhancement and iframe-based page loading with error handling. * docs: web browser demo implementation plan 9-task plan across 4 chunks: EditorTabs pill variant, types/data/CSS, demo components (toolbar, bookmarks, new-tab, viewport), and assembly. * feat(editor-tabs): add variant='pill' for rounded browser-style tabs Extends the EditorTabsProps variant type (local Omit union, not touching ComponentVariant) and adds pill CSS rules: rounded top corners, no bottom border indicator, transparent dividers — matching Chrome/JetBrains tab aesthetics for the showcase browser demo. * feat(web-browser): add types and default data * feat(web-browser): add CSS module for browser demo * feat(web-browser): add useBrowser state management hook * feat(web-browser): add BookmarksBar component * feat(web-browser): add BrowserToolbar component * feat(web-browser): add NewTabPage component * feat(web-browser): add ErrorPage and BrowserViewport components * feat(web-browser): wire up browser demo with EditorTabs pill variant * fix(web-browser): use correct design tokens and fix toolbar sizing - EditorTabs pill variant: use --ov-color-bg-* tokens instead of non-existent --ov-color-surface-* tokens - BrowserToolbar: remove dense prop from IconButtons so they match Input sm height (28px) - CSS module: fix all surface token references to actual --ov-color-bg-* * fix(editor-tabs): pill variant uses all-corner rounding (JetBrains style) * feat(chat-app): add design spec and implementation plan * feat(chat-app): add foundation — types, mock data, useChat hook, CSS layout * feat(chat-app): add WorkspaceRail, ChannelSidebar, ChannelHeader, ReactionBar, TypingIndicator * feat(chat-app): add MessageItem, MessageList, MessageComposer, ThreadPanel, final assembly * feat(theme): add Obsidian, Carbon, Void dark theme palettes Add three new dark theme presets with deeper backgrounds and crisper contrast. Extend ThemeMode type and isThemeMode guard, add CSS token blocks for all three themes, and replace the showcase dock's light/dark toggle with a Menu-based theme picker showing all 7 available themes. * feat: showcase demo refinements, base-ui fixes, and design docs - Fix ResizableSplitPane reverse prop, List/NavList avatar accommodation - Chat app: DM avatar shape, status dot overlay, thread resize - AI chat, IDE editor, container management, file explorer refinements - Accordion, DataTable, Menu, TreeList, StatusBar style fixes - Add ChatInput component to ai-ui package - Design specs and plans for theme palettes and base-ui components * fix: address code review findings across showcase demos - useChat: move global ID counter to useRef, fix date boundary calc - ContainerList: clickable div → semantic button, guard div-by-zero - containerStatusColor: use ContainerStatus type instead of string - FilePane: fix rename icon (LuTextCursor), type accessor params - TransferPanel: add scope="col" to th elements - TreePane: add role="region", CommandLog: add type="button" - IconStrip: div[role=navigation] → semantic nav element - SidebarPanel: wire SearchPanel onOpenFile handlers - IDE editor: case-insensitive Cmd+K, fix stale tabs in close handler - BrowserToolbar: use NEW_TAB_URL constant, fix ensureProtocol schemes - useBrowser: conditional timeout in goBack/goForward, remove ! assertion - Add focus-visible to speedDialCard, type="button" to misc buttons - Remove unwired "Apply to editor" action from ArtifactPanel - CSS: overflow-wrap instead of word-break, remove composes, font smoothing * fix: address follow-up review findings - ArtifactPanel: add .catch to clipboard write for insecure contexts - SidebarPanel: replace div[role=button] with native button + CSS reset - ErrorPage: reword to avoid unescaped apostrophe - errorUrl: add overflow-wrap for long URLs * fix: resolve search result path to file ID, add errorButton focus-visible - SidebarPanel: resolve result.file path to canonical fileId before calling onOpenFile so the tab open logic works correctly - errorButton: add :focus-visible for keyboard accessibility * fix: add exhaustive default to statusToStatusDot switch * fix: exhaustive switch in SidebarPanel, avoid Set spread allocation --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
main
2 months ago

Latest Branches

CodSpeed Performance Gauge
+14%
feat(base-ui): date/time/range pickers with sectioned guided input#38
1 month ago
c952e6f
feat/date-time-pickers
CodSpeed Performance Gauge
+11%
feat: npm publishing with Changesets#37
2 months ago
5a3fbb7
feat/npm-publishing
CodSpeed Performance Gauge
-17%
2 months ago
80f0edb
feat/unified-storybook
© 2026 CodSpeed Technology
Home Terms Privacy Docs