open-design/apps/web/tests/components
lefarcen 387dc83b27
Some checks failed
ci / Detect CI change scopes (push) Failing after 2s
landing-page-ci / Validate landing page (push) Failing after 1s
landing-page-deploy / Deploy landing page (push) Has been skipped
nix-check / build (push) Failing after 1s
ci / Preflight (push) Has been skipped
ci / Core package tests (push) Has been skipped
ci / Tools workspace tests (push) Has been skipped
ci / Daemon workspace tests (push) Has been skipped
ci / Web workspace tests (push) Has been skipped
ci / E2E vitest (push) Has been skipped
ci / Playwright critical (push) Has been skipped
ci / Build workspaces (push) Has been skipped
ci / App workspace tests (push) Has been skipped
ci / Validate workspace (push) Failing after 0s
fix(plugins): wire Open Design "Open Design PR" button end-to-end (#2182)
Two-part fix for the Plugin folder card's "Open Design PR" button. The
flow was broken end-to-end: the CLI emitted a 404 URL, and the agent
prompt under-specified the contribution steps so the agent stalled
mid-turn or fell back to the legacy issue-URL path.

Catalog target — `apps/daemon/src/plugins/publish.ts`:

`buildPublishLink({ catalog: 'open-design' })` hardcoded a submission URL
at `github.com/open-design/plugin-registry`, the dedicated registry repo
proposed in docs/plans/plugin-registry.md §1.2. That repo doesn't exist
yet (P3.1 notes "creating the external GitHub repo is an operational
launch step, not a code blocker"), so every generated URL 404'd. Retarget
the catalog at the live `nexu-io/open-design` monorepo and update the
target-path hint in the PR body to `plugins/community/<plugin-name>/`
(the actual layout under main). Plan §1.2 stays the long-term goal — see
the code comment.

Also updates the matching `od plugin yank` issue URL in cli.ts.

Agent prompt — `apps/web/src/components/design-files/pluginFolderActions.ts`:

The `contribute` action prompt only said "use the supported `od plugin
publish` Open Design registry flow", which produces an issue URL (the
legacy path) and left the agent to invent the remaining steps. The agent
ended up calling `AskUserQuestion` mid-turn waiting for input that the
DesignFilesPanel buttons couldn't satisfy, then stalled for 600s.

Rewrite the `contribute` prompt to drive the full PR flow via raw `gh`
commands:
  1. preflight `gh --version` / `gh auth status` (detect-and-instruct on
     missing CLI, never auto-install anything)
  2. read manifest, resolve author login
  3. `gh repo fork nexu-io/open-design --remote=false`
  4. clone fork, branch, cp plugin into `plugins/community/<name>/`,
     commit/push using author's git identity (not a hardcoded bot)
  5. `gh pr create ... --web` so the author reviews and clicks Create

Hard bans on `AskUserQuestion`, retry-on-failure, and the legacy
`od plugin publish --to open-design` CLI keep the turn fire-and-forget.
The `install` / `publish` action prompts are unchanged.

Tests:

* `apps/daemon/tests/plugins-publish.test.ts` — assert URL host +
  catalogLabel match `nexu-io/open-design`, body contains the new path
  hint.
* `apps/web/tests/components/pluginFolderActions.test.ts` (new) — lock
  the contribute prompt's command surface, the `--web` review window,
  the `AskUserQuestion` ban, the install-tool ban, and folder-path
  interpolation. Nine assertions covering the prompt contract without
  coupling to exact wording.

Validation:

* `pnpm --filter @open-design/daemon exec vitest run tests/plugins-publish.test.ts`
  → 11/11 passed
* `pnpm --filter @open-design/web exec vitest run tests/components/pluginFolderActions.test.ts`
  → 9/9 passed
* `pnpm --filter @open-design/web typecheck` clean
* E2E: button click in DesignFilesPanel under namespace=e2e-pr-test ran
  `gh --version` → fork → clone → branch → commit/push → ended at
  `gh pr create --web` opening the GitHub PR draft in browser. No
  AskUserQuestion stall this time.

Doesn't touch: `5f71968f` server-side endpoints (`/contribute-open-design`
+ `/publish-github` still in main as dead code — separate cleanup),
plan/spec docs (per maintainer call to keep the dedicated-repo as the
long-term goal), or `registry-backends.test.ts` (plan terminal-state
fixture; no production caller).
2026-05-19 15:26:59 +08:00
..
Theater test(web): Critique Theater Phase 13 (reducer p99 bench + surface coverage walker) (#1318) 2026-05-14 15:55:36 +08:00
AgentIcon.test.tsx Fix Kimi CLI icon contrast in light mode (#1667) 2026-05-14 20:32:52 +08:00
App.connectors.test.tsx feat(privacy): collapse first-run consent banner to a single "I get it" button (#2202) 2026-05-19 15:26:56 +08:00
App.mediaProviders.test.tsx Merge origin/main into garnet-hemisphere (reconcile) 2026-05-13 22:29:21 +08:00
assistant-message-tool-status.test.tsx fix(web): complete finished tool calls missing results (#1240) 2026-05-11 15:54:11 +08:00
assistant-message-unfinished-todos.test.tsx Garnet hemisphere (#1769) 2026-05-15 14:42:11 +08:00
AssistantMessage.test.ts chore: enforce test directory conventions (#496) 2026-05-05 15:34:22 +08:00
AssistantMessage.test.tsx Revert "fix(web): restore consistent app header layout (#1432)" 2026-05-13 11:20:16 +08:00
auto-open-file.test.ts chore: enforce test directory conventions (#496) 2026-05-05 15:34:22 +08:00
BoardComposerPopover.pod-chip-hover.test.tsx feat(web): highlight captured Pod component on chip hover (#1982) 2026-05-18 16:34:19 +08:00
BoardComposerPopover.pod-remove.test.tsx feat(web): add manual removal for captured Pod components (#1951) 2026-05-17 20:13:56 +08:00
chat-feedback.test.tsx fix(web): auto-scroll feedback form (#1566) 2026-05-13 19:06:08 +08:00
chat-scroll-preservation.test.tsx fix(web): keep chat pinned during content growth (#1716) 2026-05-15 14:12:00 +08:00
ChatComposer.context-pickers.test.tsx fix(web): expand skill mention picker (#2170) 2026-05-19 13:49:15 +08:00
ChatComposer.search.test.tsx Garnet hemisphere (#1769) 2026-05-15 14:42:11 +08:00
ChatPane.streaming.test.tsx [codex] Land design system GitHub intake handoff (#2187) 2026-05-19 14:30:17 +08:00
CommentTargetOverlay.hover-class.test.tsx feat(web): highlight captured Pod component on chip hover (#1982) 2026-05-18 16:34:19 +08:00
ConnectorsBrowser.test.tsx fix(web): keep connector errors out of cards (#1740) 2026-05-18 17:06:46 +08:00
ContinueInCliButton.test.tsx feat(web): add Finalize design package + Continue in CLI buttons (#451) (#974) 2026-05-10 11:44:32 +08:00
conversation-timestamps.test.tsx fix(web): freeze completed run durations across conversations (#1351) 2026-05-14 14:25:37 +08:00
CustomSelect.test.tsx feat(web): add custom select primitive (#1714) 2026-05-15 14:43:18 +08:00
DesignFilesPanel.test.tsx Polish project workspace UI (#2201) 2026-05-19 15:14:16 +08:00
DesignsTab.select-mode.test.tsx feat(web): redesign Designs tab cards — covers, tags, overflow menu, multi-select (#1161) 2026-05-12 15:08:22 +08:00
DesignsTab.test.ts chore: enforce test directory conventions (#496) 2026-05-05 15:34:22 +08:00
DesignSystemFlow.test.tsx [codex] Land design system GitHub intake handoff (#2187) 2026-05-19 14:30:17 +08:00
DesignSystemsTab.test.tsx [codex] Land design system GitHub intake handoff (#2187) 2026-05-19 14:30:17 +08:00
EntryView.test.ts fix(web): surface connector auth errors and stop silent popup close (#725) (#1128) 2026-05-10 19:38:18 +08:00
examples-tab-filter-counts.test.tsx fix: keep examples filter counts consistent (#949) 2026-05-08 21:41:52 +08:00
examples-tab-preview-dispatch.test.tsx fix(web): dispatch Examples preview on od.preview.type (#897) (#1001) 2026-05-09 21:32:45 +08:00
examples-tab-retry.test.tsx fix(web): dispatch Examples preview on od.preview.type (#897) (#1001) 2026-05-09 21:32:45 +08:00
ExamplesTab.test.tsx test: expand entry and settings automation coverage (#954) 2026-05-11 10:49:42 +08:00
file-viewer-markdown-copy.test.tsx feat(analytics): add project_id + project_kind to studio/artifact events (#1509) 2026-05-13 12:13:55 +08:00
file-viewer-render-mode.test.ts Prevent imported Claude canvases from zooming on scroll (#1726) 2026-05-15 16:37:57 +08:00
FileOpsSummary.test.tsx feat(web): implement file operations summary in assistant messages 2026-05-11 23:25:38 +08:00
FileViewer.manual-edit-history.test.tsx fix(web): align Icon names and FileViewer tests with merged state 2026-05-13 18:40:48 +08:00
FileViewer.manual-edit.test.tsx fix(web): align Icon names and FileViewer tests with merged state 2026-05-13 18:40:48 +08:00
FileViewer.test.tsx Polish project workspace UI (#2201) 2026-05-19 15:14:16 +08:00
FileWorkspace.design-system.test.tsx [codex] Land design system GitHub intake handoff (#2187) 2026-05-19 14:30:17 +08:00
FileWorkspace.test.tsx Garnet hemisphere (#1702) 2026-05-14 21:12:50 +08:00
GenUISurfaceRenderer.diff-review.test.tsx feat(web): native diff-review UI on GenUISurfaceRenderer (Phase 8 entry slice) 2026-05-09 15:36:38 +00:00
GenUISurfaceRenderer.schema-form.test.tsx feat(daemon): enrich API responses with surface specs and add new flags 2026-05-11 20:27:05 +08:00
GenUISurfaceRenderer.test.tsx feat(web): plugin composer surface — applyPlugin + Rail + Inputs + GenUI renderer 2026-05-09 11:47:12 +00:00
HomeHero.plugin-picker.test.tsx fix(web): demote Plugins and Integrations to nav rail footer (#1806) 2026-05-19 14:58:15 +08:00
HomeHero.rail.test.tsx fix(web): demote Plugins and Integrations to nav rail footer (#1806) 2026-05-19 14:58:15 +08:00
HomeView.context-picker.test.tsx Garnet hemisphere (#1769) 2026-05-15 14:42:11 +08:00
HomeView.media-options.test.tsx Implement Home audio essential workflow (#2104) 2026-05-18 23:14:03 +08:00
HomeView.plugin-i18n.test.tsx Garnet hemisphere (#1702) 2026-05-14 21:12:50 +08:00
HomeView.prefill.test.tsx fix(web): demote Plugins and Integrations to nav rail footer (#1806) 2026-05-19 14:58:15 +08:00
InlinePluginsRail.test.tsx feat(web): enhance PluginLoopHome with plugin details modal and refined plugin rail 2026-05-11 23:18:34 +08:00
ManualEditPanel.test.tsx chore: pin dependency versions and harden CI caches (#2189) 2026-05-19 13:58:27 +08:00
MarketplaceView.test.tsx feat(web): MarketplaceView + PluginDetailView + /marketplace routes 2026-05-09 12:28:59 +00:00
McpClientSection.oauth.test.tsx fix(mcp): support no-auth local HTTP servers (#2008) 2026-05-18 17:08:46 +08:00
McpJsonHelper.test.tsx feat: add collapsible MCP JSON field-mapping helper (#1136) 2026-05-10 19:37:46 +08:00
MemorySection.test.tsx test(web): decouple memory preview icon assertion (#1863) 2026-05-16 11:37:34 +08:00
modelOptions.test.tsx test: cover model option rendering (#948) 2026-05-08 21:38:13 +08:00
NewProjectPanel.media.test.tsx Revert "fix(web): restore consistent app header layout (#1432)" 2026-05-13 11:20:16 +08:00
NewProjectPanel.test.ts feat(audio): add ElevenLabs audio support (#1384) 2026-05-13 15:53:41 +08:00
NewProjectPanel.test.tsx fix(web): surface daemon error messages for invalid folder imports (#1923) 2026-05-17 15:00:49 +08:00
PluginDetailsModal.dispatch.test.tsx feat(web): standardize plugin terminology and enhance UI components 2026-05-13 12:19:29 +08:00
pluginFolderActions.test.ts fix(plugins): wire Open Design "Open Design PR" button end-to-end (#2182) 2026-05-19 15:26:59 +08:00
PluginInputsForm.test.tsx chore: pin dependency versions and harden CI caches (#2189) 2026-05-19 13:58:27 +08:00
plugins-home-facets.test.ts feat(daemon, web): enhance plugin preview handling and add new templates 2026-05-13 20:58:24 +08:00
plugins-home-html-surface.test.tsx feat(daemon): enhance plugin preview handling and add fallback mechanisms 2026-05-12 16:45:24 +08:00
plugins-home-preview.test.ts feat(web): enhance TasksView and plugin preview components with new features and styles 2026-05-12 18:10:37 +08:00
plugins-home-section.test.tsx feat(plugins): add login and whoami commands for GitHub CLI authentication 2026-05-14 07:25:05 +08:00
plugins-home-visualScore.test.ts feat(plugins): enhance visual score sorting and add new example templates 2026-05-13 21:02:05 +08:00
PluginShareMenu.test.tsx feat(plugins): add login and whoami commands for GitHub CLI authentication 2026-05-14 07:25:05 +08:00
PluginsSection.test.tsx feat(web): redesign entry view with new navigation and home layout 2026-05-12 10:56:35 +08:00
PluginsView.test.tsx fix(web): demote Plugins and Integrations to nav rail footer (#1806) 2026-05-19 14:58:15 +08:00
preview-modal-error-state.test.tsx fix(web): show explicit error/retry state when example preview HTML fails to load (#863) 2026-05-08 11:16:14 +08:00
preview-modal-fullscreen.test.tsx test(e2e): gate beta packaged runtime (#637) 2026-05-06 17:44:29 +08:00
preview-modal-unavailable-state.test.tsx fix(web): dispatch Examples preview on od.preview.type (#897) (#1001) 2026-05-09 21:32:45 +08:00
PreviewDrawOverlay.test.tsx fix(web): keep draw overlay scrollable (#1848) 2026-05-15 23:05:49 +08:00
PreviewModal.test.tsx fix: fix link handling in example preview iframe sandbox (#701) 2026-05-09 21:24:25 +08:00
PrivacyConsentModal.test.tsx feat(privacy): collapse first-run consent banner to a single "I get it" button (#2202) 2026-05-19 15:26:56 +08:00
PrivacySection.test.tsx feat: add opt-in Langfuse telemetry (#800) 2026-05-09 10:06:01 +08:00
ProjectView.api-empty-response.test.tsx Fix pointer HTML artifact previews (#2075) 2026-05-18 18:28:28 +08:00
ProjectView.deleteConversation.test.tsx Add reliable agent-browser skill (#1284) 2026-05-11 20:09:12 +08:00
ProjectView.pendingPrompt.test.tsx feat: generic skills + split skills/design-templates + finalize-design API (#955) 2026-05-11 17:48:34 +08:00
ProjectView.projectInstructions.test.tsx feat(web): surface saved Project instructions for review and retrieval (#1933) 2026-05-17 23:07:25 +08:00
ProjectView.run-cleanup.test.tsx [codex] Land design system GitHub intake handoff (#2187) 2026-05-19 14:30:17 +08:00
ProjectView.run-isolation.test.tsx Fix conversation run isolation (#1271) 2026-05-11 21:13:54 +08:00
ProjectView.tabs-navigation.test.tsx fix(web): deep-link Routines history rows to their specific conversation (Fixes #1505) (#1508) 2026-05-14 14:27:34 +08:00
QuestionForm.test.tsx feat(audio): add ElevenLabs audio support (#1384) 2026-05-13 15:53:41 +08:00
QuickSwitcher.test.tsx feat(web): add Cmd/Ctrl+P quick file switcher (#556) 2026-05-06 10:31:50 +08:00
RoutinesSection.test.tsx Persist routine failure reasons (#1963) 2026-05-17 23:22:00 +08:00
SettingsDialog.execution.test.tsx chore: pin dependency versions and harden CI caches (#2189) 2026-05-19 13:58:27 +08:00
SettingsDialog.media.test.tsx refactor(web): rename Execution mode and tighten settings dialog UI (#1568) 2026-05-15 14:35:06 +08:00
SettingsDialog.orbit.test.tsx chore: pin dependency versions and harden CI caches (#2189) 2026-05-19 13:58:27 +08:00
SettingsDialog.test.ts [codex] Add Cursor Agent auth diagnostics (#1538) 2026-05-13 20:25:34 +08:00
sketch-model.test.ts fix(web): render static previews for sketch json files (#1060) 2026-05-11 19:29:46 +08:00
SkillsSection.test.tsx fix(web): warn before editing a built-in skill creates a shadow (#1850) 2026-05-17 18:30:45 +08:00
Toast.test.tsx feat(web): add Finalize design package + Continue in CLI buttons (#451) (#974) 2026-05-10 11:44:32 +08:00
TrustBadge.test.tsx feat(web): unify plugin trust badges (#2088) 2026-05-18 19:20:01 +08:00
use-everywhere-agent-guide.test.ts feat(web): enhance entry view with responsive topbar and GitHub star integration 2026-05-12 11:57:41 +08:00
WorkspaceTabsBar.test.tsx Garnet hemisphere (#1769) 2026-05-15 14:42:11 +08:00