Skip to content

Add intent browser ghost UI and schema-driven search rendering#398

Open
sarbadaj wants to merge 1 commit into
Baur-Software:mainfrom
sarbadaj:feat/intent-browser-ghost-ui
Open

Add intent browser ghost UI and schema-driven search rendering#398
sarbadaj wants to merge 1 commit into
Baur-Software:mainfrom
sarbadaj:feat/intent-browser-ghost-ui

Conversation

@sarbadaj
Copy link
Copy Markdown

@sarbadaj sarbadaj commented Jun 3, 2026

Summary

This PR adds the first concrete UI slice for Papillon’s intent-browser model.

Papillon now treats agent output as structured Schema.org data and renders supported types directly in the canvas. It also improves the ghost/dry-run workflow by grouping pending approvals into intent groups, letting users select candidate agents, fill one shared disclosure form, and render approved results.

What Changed

  • Added a typed renderer for schema:SearchResultsPage and schema:SearchResult.
  • Registered the search results renderer in the default block renderer registry.
  • Replaced the empty rendered canvas state with the existing intent-browser empty state when there are no blocks.
  • Added grouped ghost approvals in the orchestrator/ghost panel.
  • Grouped approval blocks by action type and disclosure requirements.
  • Added candidate-agent checkboxes inside each approval group.
  • Added one shared disclosure form per grouped approval.
  • Added Render selected to approve selected agents and flip back to the rendered canvas.
  • Added Deny group to reject all approvals in a group.
  • Added styling for search result cards, grouped approval cards, agent choices, and disclosure fields.
  • Ignored generated Gradle state at bindings/java/.gradle/.

Why

Todd described Papillon as an intent browser:

  • users ask for an intent without needing AI,
  • Papillon maps that intent to matching agents,
  • the user sees a ghost/dry-run canvas before execution,
  • agents advertise required disclosures,
  • shared disclosure requirements become one approval form,
  • approved results render from Schema.org types,
  • canvases behave like browser tabs.

This PR starts that flow by making the ghost approval UX and Schema.org rendering concrete.

Testing

Ran:

git diff --check
cargo check --manifest-path apps/papillon/frontend/Cargo.toml
just check-wasm
just run-example pap-search-example

Run browser UI:
env -u NO_COLOR just web

Open:
http://127.0.0.1:1420

Add the first intent-browser UI slice for Papillon's schema-driven workflow.

- Render schema.org SearchResultsPage and SearchResult payloads as typed search result cards.

- Register the search result renderer in the default block renderer registry.

- Show the existing intent-browser empty state when a canvas has no blocks.

- Group pending approvals by action and disclosure shape in the ghost run panel.

- Let users select candidate agents, fill one shared disclosure form, render selected agents, or deny the group.

- Add UI styling for grouped ghost approvals, agent choices, disclosure fields, and search result cards.

- Ignore generated Gradle state under bindings/java/.gradle.

Verification: cargo check --manifest-path apps/papillon/frontend/Cargo.toml; just check-wasm; just run-example pap-search-example.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants