Skip to content

AI-First Starting UX: Landing screen shell for new workflow creation#4887

Open
lmac-1 wants to merge 2 commits into
4848-ai-first-starting-ux-parentfrom
4856-ai-first-landing-screen
Open

AI-First Starting UX: Landing screen shell for new workflow creation#4887
lmac-1 wants to merge 2 commits into
4848-ai-first-starting-ux-parentfrom
4856-ai-first-landing-screen

Conversation

@lmac-1

@lmac-1 lmac-1 commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

Part of #4848 epic. Merges into 4848-ai-first-starting-ux-parent parent branch

What this adds

A React overlay that replaces the bare /w/new canvas. When a new user creates a new workflow, they see three options: Build with AI, Browse Templates and Import from YAML. Each downstream path is stubbed - callback props are wired, nothing is connected yet.

Closes #4856

Key files

  • LandingScreen.tsx — the overlay component
  • createUIStore.ts — showLandingScreen state + dismissLandingScreen command
  • useUI.ts — useShowLandingScreen hook
  • CollaborativeEditor.tsx — renders LandingScreenWrapper, gates the header

Design decisions

  1. Header gated on !isNewWorkflow, not !showLandingScreen. The header must stay hidden while the user is on the "Build with AI" path (pink toolbar state) — showLandingScreen is already false at that point but no workflow exists yet. Gating on showLandingScreen would expose the header prematurely.
  2. Landing screen is a React overlay, not a LiveView component. All downstream paths interact via React store calls (openAIAssistantPanel, etc.) and aiAssistantEnabled is already a prop on CollaborativeEditor. Staying in the same layer avoids a React/LiveView boundary at every handoff.
  3. LandingScreenWrapper inner-component pattern CollaborativeEditor sits outside StoreProvider and can't call hooks directly. Same pattern as BreadcrumbContent — a small inner component rendered inside the provider reads the store and returns null or <LandingScreen>.
  4. Enter submits, Shift+Enter / Alt+Enter inserts a newline — confirmed by product; textarea not single-line input.
  5. Empty canvas placeholder suppressed while landing screen is visible. The overlay has a transparent background so the dot pattern shows through. Without suppression, the "Create your workflow" placeholder renders visibly behind it.
  6. Modals open on top of the landing screen — Browse Templates and Import YAML overlays leave the landing screen visible underneath. The landing screen is only dismissed when a path is committed, not when a card is clicked.

Out of scope (intentional)

Additional notes for the reviewer

  1. Not planning to have this PR reviewed as it's the first piece of work in a series of issues for this epic. Things may change.

AI Usage

Please disclose whether you've used AI anywhere in this PR (it's cool, we just
want to know!):

  • I have used Claude Code
  • I have used another model
  • I have not used AI

You can read more details in our
Responsible AI Policy

Pre-submission checklist

  • I have performed an AI review of my code (we recommend using /review
    with Claude Code)
  • I have implemented and tested all related authorization policies.
    (e.g., :owner, :admin, :editor, :viewer)
  • I have updated the changelog. To be done in final issue
  • I have ticked a box in "AI usage" in this PR

lmac-1 added 2 commits June 22, 2026 15:23
When a user navigates to /w/new, show a full-screen overlay before they
reach the empty canvas. The overlay presents three entry points:

- Build with AI (textarea + submit, shown when AI assistant is enabled)
- Browse Templates
- Import from YAML

The action handlers are stubs for now, wired up in follow-on issues
#4857 (Build with AI), #4858 (Browse Templates), and #4859 (Import YAML).

Implementation notes:
- Adds showLandingScreen boolean to UIStore, initialised to true when
  isNewWorkflow is true, with a dismissLandingScreen() action
- Hides the breadcrumb/header bar while the landing screen is visible
- Guards the existing empty-canvas placeholder with !showLandingScreen
  so they don't render simultaneously (TODO: remove placeholder in #4856
  once landing screen is fully stable)
- Adds CSS design tokens for border-subtle, border-strong, surface-subtle,
  and semantic-success used by the landing screen UI
@github-project-automation github-project-automation Bot moved this to New Issues in Core Jun 22, 2026
@github-actions

Copy link
Copy Markdown

Security Review ✅

  • S0 (project scoping): N/A — all changes are frontend React/TypeScript in assets/js/collaborative-editor/; no new queries, channel handlers, or endpoints touch project-scoped data.
  • S1 (authorization): N/A — the new LandingScreen component (assets/js/collaborative-editor/components/LandingScreen.tsx) is a pure UI overlay with stub callbacks (onBuildWithAI/onBrowseTemplates/onImportYAML are () => {}), introducing no server-side actions.
  • S2 (audit trail): N/A — no Repo.insert/update/delete or Ecto.Multi changes; createUIStore.ts only adds a client-side showLandingScreen flag.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: New Issues

Development

Successfully merging this pull request may close these issues.

1 participant