Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
fa4a1e9
feat(design-system): motion tokens, reduced-motion parity, aria-live …
jscraik Mar 23, 2026
4531581
fix(a11y): WCAG 2.2 fixes across Combobox, TagInput, Carousel, CodeBl…
jscraik Mar 23, 2026
04e1646
feat(a11y): CarouselItem index/total props for slide position announc…
jscraik Mar 23, 2026
8999104
fix(security): block javascript: URL injection in TextLink and Markdown
jscraik Mar 23, 2026
a6c600a
chore(baseline-ui): apply text-balance, text-pretty, and h-screen fixes
jscraik Mar 23, 2026
aa60d91
perf(combobox): add useDeferredValue for search filtering
jscraik Mar 23, 2026
8ea17a8
feat(tokens): wire z-index scale into Tailwind preset
jscraik Mar 23, 2026
4f9c1b7
docs(chart): add security JSDoc to ChartStyle
jscraik Mar 23, 2026
dec0132
fix(design-system): apply frontend-design review improvements
jscraik Mar 23, 2026
173cde7
fix(test): resolve userEvent@14 + vitest4 document capture bug; add s…
jscraik Mar 23, 2026
07772d0
feat(design-system): harden agent UI guidance and exemplars
jscraik Mar 25, 2026
9d02d74
test(ui): align assertions with semantic sizing ratchet
jscraik Mar 25, 2026
ff6baf6
fix(ci): restore workspace version synchronization
jscraik Mar 25, 2026
d68fa4c
fix(visual): stabilize Storybook exemplar capture across runners
jscraik Mar 25, 2026
9fe348d
fix(ci): run exemplar visuals on the baseline platform
jscraik Mar 25, 2026
91e718f
fix(tokens): preserve semantic shadows during regeneration
jscraik Mar 25, 2026
465e73f
fix(a11y): raise contrast for small web helper copy
jscraik Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
147 changes: 147 additions & 0 deletions .design-system-guidance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
{
"schemaVersion": 1,
"docs": [
"docs/design-system/CONTRACT.md",
"docs/design-system/PROFESSIONAL_UI_CONTRACT.md",
"docs/design-system/AGENT_UI_ROUTING.md"
],
"include": [
"packages/ui/src/app",
"platforms/web/apps/web/src/pages",
"packages/ui/src/components/ui",
"packages/ui/src/design-system/showcase",
"packages/ui/src/storybook",
"packages/ui/src/styles"
],
"ignore": [
"node_modules",
"dist",
".git",
"coverage",
".next",
"build"
],
"scopes": {
"error": [
"packages/ui/src/app/settings/AppsPanel/AppsPanel.stories.tsx",
"packages/ui/src/app/settings/AppsPanel/AppsPanel.tsx",
"packages/ui/src/app/settings/ArchivedChatsPanel/ArchivedChatsPanel.stories.tsx",
"packages/ui/src/app/settings/ArchivedChatsPanel/ArchivedChatsPanel.tsx",
"packages/ui/src/app/settings/AudioSettingsPanel/AudioSettingsPanel.stories.tsx",
"packages/ui/src/app/settings/AudioSettingsPanel/AudioSettingsPanel.tsx",
"packages/ui/src/app/settings/CheckForUpdatesPanel/CheckForUpdatesPanel.stories.tsx",
"packages/ui/src/app/settings/CheckForUpdatesPanel/CheckForUpdatesPanel.tsx",
"packages/ui/src/app/settings/DataControlsPanel/DataControlsPanel.stories.tsx",
"packages/ui/src/app/settings/DataControlsPanel/DataControlsPanel.tsx",
"packages/ui/src/app/settings/ManageAppsPanel/ManageAppsPanel.stories.tsx",
"packages/ui/src/app/settings/ManageAppsPanel/ManageAppsPanel.tsx",
"packages/ui/src/app/settings/NotificationsPanel/NotificationsPanel.stories.tsx",
"packages/ui/src/app/settings/NotificationsPanel/NotificationsPanel.tsx",
"packages/ui/src/app/settings/PersonalizationPanel/PersonalizationPanel.stories.tsx",
"packages/ui/src/app/settings/PersonalizationPanel/PersonalizationPanel.tsx",
"packages/ui/src/app/settings/SecurityPanel/SecurityPanel.stories.tsx",
"packages/ui/src/app/settings/SecurityPanel/SecurityPanel.tsx",
"packages/ui/src/app/settings/SettingDropdown/SettingDropdown.stories.tsx",
"packages/ui/src/app/settings/SettingDropdown/SettingDropdown.tsx",
"packages/ui/src/app/settings/SettingRow/SettingRow.stories.tsx",
"packages/ui/src/app/settings/SettingRow/SettingRow.tsx",
"packages/ui/src/app/settings/SettingToggle/SettingToggle.stories.tsx",
"packages/ui/src/app/settings/SettingToggle/SettingToggle.tsx",
"packages/ui/src/app/settings/shared/**/*.tsx",
"packages/ui/src/app/chat/AttachmentMenu/AttachmentMenu.stories.tsx",
"packages/ui/src/app/chat/AttachmentMenu/AttachmentMenu.tsx",
"packages/ui/src/app/chat/ChatInput/ChatInput.stories.tsx",
"packages/ui/src/app/chat/ChatInput/ChatInput.tsx",
"packages/ui/src/app/chat/ChatHeader/ChatHeader.stories.tsx",
"packages/ui/src/app/chat/ChatHeader/ChatHeader.tsx",
"packages/ui/src/app/chat/ChatMessages/ChatMessages.stories.tsx",
"packages/ui/src/app/chat/ChatMessages/ChatMessages.tsx",
"packages/ui/src/app/chat/ChatShell/ChatShell.stories.tsx",
"packages/ui/src/app/chat/ChatVariants/ChatVariants.tsx",
"packages/ui/src/app/chat/ChatView/ChatView.tsx",
"packages/ui/src/app/chat/ChatUIRoot/ChatUIRoot.stories.tsx",
"packages/ui/src/app/chat/ChatUIRoot/ChatUIRoot.tsx",
"packages/ui/src/app/chat/compose/ComposeInstructionsPanel/ComposeInstructionsPanel.tsx",
"packages/ui/src/app/chat/compose/ProEditConfigModal/ProEditConfigModal.tsx",
"packages/ui/src/app/chat/compose/PromptBuilderSection/PromptBuilderSection.tsx",
"packages/ui/src/app/chat/ComposeView/ComposeView.stories.tsx",
"packages/ui/src/app/chat/ComposeView/ComposeView.tsx",
"packages/ui/src/app/modals/DiscoverySettingsModal/DiscoverySettingsModal.stories.tsx",
"packages/ui/src/app/modals/DiscoverySettingsModal/DiscoverySettingsModal.tsx",
"packages/ui/src/app/modals/IconPickerModal/IconPickerModal.stories.tsx",
"packages/ui/src/app/modals/IconPickerModal/IconPickerModal.tsx",
"packages/ui/src/app/modals/SettingsModal/SettingsModal.stories.tsx",
"packages/ui/src/app/modals/SettingsModal/SettingsModal.tsx",
"packages/ui/src/app/modals/settings/**/*.tsx",
"packages/ui/src/app/chat/ChatSidebar/ChatSidebar.stories.tsx",
"packages/ui/src/app/chat/ChatSidebar/ChatSidebar.tsx",
"packages/ui/src/app/chat/ChatSidebar/components/ChatSidebarHistory/ChatSidebarHistory.stories.tsx",
"packages/ui/src/app/chat/ChatSidebar/components/ChatSidebarHistory/ChatSidebarHistory.tsx",
"packages/ui/src/app/chat/ChatSidebar/modals/NewProjectModal/NewProjectModal.stories.tsx",
"packages/ui/src/app/chat/ChatSidebar/modals/NewProjectModal/NewProjectModal.tsx",
"packages/ui/src/app/chat/ChatSidebar/modals/ProjectSettingsModal/ProjectSettingsModal.stories.tsx",
"packages/ui/src/app/chat/ChatSidebar/modals/ProjectSettingsModal/ProjectSettingsModal.tsx",
"packages/ui/src/components/ui/navigation/NavigationMenu/fallback/NavigationMenu.tsx",
"packages/ui/src/components/ui/navigation/sidebar/fallback/Sidebar.tsx",
"packages/ui/src/components/ui/navigation/tabs/fallback/Tabs.tsx",
"packages/ui/src/components/ui/navigation/ModeSelector/ModeSelector.tsx",
"packages/ui/src/components/ui/navigation/ModelSelector/ModelSelector.tsx",
"packages/ui/src/components/ui/base/IconButton/IconButton.tsx",
"packages/ui/src/components/ui/base/button/fallback/Button.tsx",
"packages/ui/src/components/ui/base/InputOTP/InputOTP.tsx",
"packages/ui/src/components/ui/base/RadioGroup/fallback/RadioGroup.tsx",
"packages/ui/src/components/ui/base/ScrollArea/fallback/ScrollArea.tsx",
"packages/ui/src/components/ui/base/checkbox/fallback/Checkbox.tsx",
"packages/ui/src/components/ui/base/input/input.tsx",
"packages/ui/src/components/ui/base/select/fallback/Select.tsx",
"packages/ui/src/components/ui/base/switch/fallback/Switch.tsx",
"packages/ui/src/components/ui/base/table/table.tsx",
"packages/ui/src/components/ui/base/textarea/textarea.tsx",
"packages/ui/src/components/ui/data-display/card/card.tsx",
"packages/ui/src/components/ui/feedback/ErrorBoundary/ErrorBoundary.tsx",
"packages/ui/src/components/ui/feedback/toast/toast.tsx",
"packages/ui/src/components/ui/overlays/command/command.tsx",
"packages/ui/src/components/ui/overlays/drawer/drawer.tsx",
"packages/ui/src/components/ui/overlays/modal/modal.tsx",
"packages/ui/src/components/ui/overlays/tooltip/fallback/Tooltip.tsx",
"packages/ui/src/storybook/_holding/component-stories/Chart.stories.tsx",
"packages/ui/src/storybook/_holding/component-stories/IconButton.stories.tsx",
"packages/ui/src/storybook/_holding/component-stories/MessageActions.stories.tsx",
"packages/ui/src/storybook/_holding/component-stories/NavigationMenu.stories.tsx",
"packages/ui/src/storybook/_holding/docs/APIReference.mdx",
"packages/ui/src/storybook/_holding/docs/DesignSystem.mdx",
"packages/ui/src/storybook/_holding/docs/GettingStarted.mdx",
"packages/ui/src/storybook/_holding/docs/Migration.mdx",
"packages/ui/src/storybook/_holding/docs/Patterns.mdx",
"packages/ui/src/storybook/_holding/docs/QuickStart.mdx",
"platforms/web/apps/web/src/pages/ChatShellPage.tsx",
"platforms/web/apps/web/src/pages/HarnessPage.tsx",
"platforms/web/apps/web/src/pages/TemplateBrowserPage.tsx",
"platforms/web/apps/web/src/pages/TemplateWidgetPage.tsx"
],
"warn": [
"packages/ui/src/app/**/*.{ts,tsx,js,jsx,css}",
"platforms/web/apps/web/src/pages/**/*.{ts,tsx,js,jsx,css}",
"packages/ui/src/components/ui/**/*.{ts,tsx,js,jsx,css}",
Comment on lines +123 to +125
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make test/spec exemptions override warn scope globs

The new warn scopes are more specific than the broad **/*.test.* and **/*.spec.* exempt globs, and findBestScopeMatch chooses the most specific match before precedence; as a result, test files are still linted as warnings (for example Chart.test.tsx warnings are emitted by design-system-guidance:check:ci) despite being listed under scopes.exempt. This can cause touched-file ratchet failures on test-only changes that should be exempt.

Useful? React with 👍 / 👎.

"packages/ui/src/design-system/showcase/**/*.{ts,tsx,js,jsx,css}",
"packages/ui/src/storybook/**/*.{ts,tsx,js,jsx,css}",
"**/*.stories.tsx"
],
"exempt": [
"packages/tokens/**",
"packages/ui/src/styles/theme.css",
"docs/design-system/**",
"**/*.test.{ts,tsx,js,jsx}",
"**/*.spec.{ts,tsx,js,jsx}",
"docs/design-system/COVERAGE_MATRIX.json",
"docs/design-system/COVERAGE_MATRIX.md",
"docs/design-system/COVERAGE_MATRIX_SURFACES.json"
]
},
"exemptionLedger": "docs/design-system/ENFORCEMENT_EXEMPTIONS.json",
"scopePrecedence": [
"error",
"warn",
"exempt"
]
}
8 changes: 6 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -129,15 +129,19 @@ jobs:
if: matrix.platform == 'web'
run: pnpm test:mcp-contract

- name: Install Playwright (web platform only)
if: matrix.platform == 'web'
- name: Install Playwright (web + macOS exemplar lanes)
if: matrix.platform == 'web' || matrix.platform == 'macos'
run: |
if [ "${{ runner.os }}" = "Linux" ]; then
pnpm exec playwright install --with-deps chromium
else
pnpm exec playwright install chromium
fi

- name: Exemplar evaluation (macOS baseline lane)
if: matrix.platform == 'macos'
run: pnpm test:exemplar-evaluation

- name: Enhanced build pipeline
run: node scripts/build-pipeline.mjs --platforms ${{ matrix.platform }}

Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ screenshots/
**/storybook-static/
**/test-results/
**/playwright-report/
**/node_modules/.vite/
**/node_modules/.tmp/

# Misc
.cache/
Expand All @@ -106,6 +108,9 @@ Thumbs.db
ops/metrics/skill-feedback/*.jsonl
# Internal docs (do not commit)
docs/transcripts/
# Local audit/run artifacts
reports/audit-report.md
reports/audit-screenshot-*.png

# Project memory doc (FORJAMIE.md) is tracked in git.

Expand Down
Loading
Loading