Skip to content

feat(automations): simplify empty state to a single "from scratch" card#736

Open
rbren wants to merge 3 commits into
mainfrom
fix/automations-zero-state
Open

feat(automations): simplify empty state to a single "from scratch" card#736
rbren wants to merge 3 commits into
mainfrom
fix/automations-zero-state

Conversation

@rbren
Copy link
Copy Markdown
Member

@rbren rbren commented May 22, 2026

Fixes #732.

Confirmed working!

What changed

The automations zero state duplicated the "Start from a proven workflow" section that already sits below the list. This PR removes the redundant empty-state UI and replaces it with a single, action-oriented card:

  • Remove the database icon + "No automations configured" header.
  • Remove the "How to create an automation" sub-header.
  • Remove the "Using Claude Code or Codex" option (and the Install the OpenHands plugin link). The OpenHands plugin command is now surfaced inside the remaining card.
  • Rework the remaining card to "Create an automation from scratch". It still shows /openhands-automation create as a code block and links to the docs.
  • Wire up the button: clicking "Start a conversation" now creates a new conversation and pre-fills the prompt with /openhands-automation create, using the same draft-message pattern as RecommendedAutomationsLauncher (setPendingTaskDraft / setConversationState + setMessageToSend). Previously it was a plain <NavigationLink to="/"> that didn't pre-fill anything.

The "Start from a proven workflow" section continues to render below the card, so the empty state now offers two clear paths: pick a recommended template or start from scratch.

Also drops the now-unused collapsible prop on CreateInstructions (it was only used by the previous two-option empty state) and the obsolete EmptyState component.

Translation key changes

  • Added: AUTOMATIONS$CREATE_FROM_SCRATCH_TITLE, AUTOMATIONS$CREATE_FROM_SCRATCH_DESC (all 15 supported languages).
  • Removed (no longer referenced): AUTOMATIONS$EMPTY, AUTOMATIONS$EMPTY_HOW_TO_CREATE_TITLE, AUTOMATIONS$EMPTY_OPTION_PLUGIN_TITLE, AUTOMATIONS$EMPTY_OPTION_PLUGIN_DESC, AUTOMATIONS$EMPTY_INSTALL_PLUGIN, AUTOMATIONS$EMPTY_OPTION_CONVERSATION_TITLE, AUTOMATIONS$EMPTY_OPTION_CONVERSATION_DESC.
  • Kept: AUTOMATIONS$EMPTY_START_CONVERSATION, AUTOMATIONS$EMPTY_LEARN_MORE.

Test changes

  • Removed __tests__/components/automations/create-instructions.test.tsx. It asserted that the "Start a conversation" element was a SPA <Link> calling navigate("/") — the new component uses a <button> that creates a conversation via the existing mutation hooks, which are covered by RecommendedAutomationsLauncher's tests.
  • The Playwright snapshot tests/e2e/snapshots/automations.snapshot.spec.ts ("no automations shows empty state") will produce a new screenshot on first run — the empty-state baseline needs to be regenerated.

Verification

  • npm run build
  • npx tsc --noEmit — no new errors (one pre-existing error in src/hooks/mutation/conversation-mutation-utils.ts is unchanged).
  • npx eslint / npx prettier --check on touched files ✓

This PR was created by an AI agent (OpenHands) on behalf of @rbren.


🐳 Docker images for this PR

GHCR package: https://github.com/OpenHands/agent-canvas/pkgs/container/agent-canvas

Component Value
Image ghcr.io/openhands/agent-canvas
Architectures amd64, arm64
Agent Server ghcr.io/openhands/agent-server:1.23.0-python
Automation openhands-automation==1.0.0a3
Commit 69132bee1822fee4418fa46899155fbdab3370e7

Pull (multi-arch manifest)

# Multi-arch manifest — Docker automatically pulls the correct architecture
docker pull ghcr.io/openhands/agent-canvas:sha-69132be

Run

docker run -it --rm \
  -p 8000:8000 \
  ghcr.io/openhands/agent-canvas:sha-69132be

All tags pushed for this build

ghcr.io/openhands/agent-canvas:sha-69132be-amd64
ghcr.io/openhands/agent-canvas:fix-automations-zero-state-amd64
ghcr.io/openhands/agent-canvas:pr-736-amd64
ghcr.io/openhands/agent-canvas:sha-69132be-arm64
ghcr.io/openhands/agent-canvas:fix-automations-zero-state-arm64
ghcr.io/openhands/agent-canvas:pr-736-arm64
ghcr.io/openhands/agent-canvas:sha-69132be
ghcr.io/openhands/agent-canvas:fix-automations-zero-state
ghcr.io/openhands/agent-canvas:pr-736

About Multi-Architecture Support

  • Each tag (e.g., sha-69132be) is a multi-arch manifest supporting both amd64 and arm64
  • Docker automatically pulls the correct architecture for your platform
  • Individual architecture tags (e.g., sha-69132be-amd64) are also available if needed

…rd (#732)

The automations zero state duplicated the 'Start from a proven workflow'
section that already sits below the list. Remove the database icon and
'No automations configured' header, and collapse the two-option 'How to
create an automation' panel down to a single 'Create an automation from
scratch' card. Clicking the button now opens a new conversation
pre-filled with `/openhands-automation create` (reusing the same
draft-message pattern as RecommendedAutomationsLauncher) so the
plugin command runs immediately.

The 'Start from a proven workflow' section continues to sit below the
card, giving users two clear paths from the empty state: pick a
recommended template, or start from scratch.

Fixes #732

Co-authored-by: openhands <openhands@all-hands.dev>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agent-canvas Ready Ready Preview, Comment May 22, 2026 5:36pm

Request Review

Copy link
Copy Markdown
Contributor

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

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

Good simplification removing redundant UI, but there's a state management bug that needs fixing.


Was this automated review useful? React with 👍 or 👎 to this review to help us measure review quality.
Workflow run: https://github.com/OpenHands/agent-canvas/actions/runs/26299592052

Comment thread src/components/features/automations/create-instructions.tsx
Addresses the all-hands-bot review on PR #736: the in-flight guard was
only released on error. If `navigate` resolved to the default noop
(no NavigationProvider in the tree), the component would stay mounted
and the button would be permanently disabled. Reset the ref at the end
of onSuccess so the button stays usable.

Co-authored-by: openhands <openhands@all-hands.dev>
@rbren rbren added the update-snapshots Intentional snapshot changes — CI diff check bypassed; new baselines uploaded on merge label May 22, 2026
github-actions Bot added a commit that referenced this pull request May 22, 2026
github-actions Bot added a commit that referenced this pull request May 22, 2026
@rbren rbren requested a review from all-hands-bot May 22, 2026 17:35
Copy link
Copy Markdown
Contributor

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

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

Clean simplification that removes redundant UI and makes the empty state functional.


Was this automated review useful? React with 👍 or 👎 to this review to help us measure review quality.
Workflow run: https://github.com/OpenHands/agent-canvas/actions/runs/26302704076

github-actions Bot added a commit that referenced this pull request May 22, 2026
@github-actions
Copy link
Copy Markdown
Contributor

📸 Snapshot Test Report

Warning

Snapshot comparison step crashed (timeout, OOM, or runner error) — diff results below may be incomplete or absent.
Check the CI logs for the full error output (look for the "Run snapshot comparison" step).

✅ 5 snapshots changed — acknowledged via the update-snapshots label. New baselines will be uploaded when this PR merges.

Category Count
🔴 Changed 5
🆕 New 0
✅ Unchanged 68
Total 73
🔴 Changed snapshots (5)

automations — 4 snapshots

automations-delete-modal

Expected (main) Actual (PR) Diff
expected actual diff

automations-list-active-inactive

Expected (main) Actual (PR) Diff
expected actual diff

automations-no-automations

Expected (main) Actual (PR) Diff
expected actual diff

automations-search-no-results

Expected (main) Actual (PR) Diff
expected actual diff

backends-extended

backend-after-switch

Expected (main) Actual (PR) Diff
expected actual diff
✅ Unchanged snapshots (68)

archived-conversation

  • conversation-panel-with-archived-badges
  • conversation-view-archived
  • conversation-view-sandbox-error

backends-extended

  • backend-add-blank-disabled
  • backend-add-cloud-advanced-open
  • backend-add-cloud-no-key-disabled
  • backend-add-cloud-with-key-enabled
  • backend-add-form-partially-filled
  • backend-add-invalid-url-disabled
  • backend-add-local-ready
  • backend-add-name-only-disabled
  • backend-add-two-column-layout
  • backend-add-whitespace-host-disabled
  • backend-cancel-nothing-saved
  • backend-dropdown-two-backends
  • backend-edit-prefilled
  • backend-manage-after-removal
  • backend-manage-two-listed
  • backend-remove-cancelled
  • backend-remove-confirmation
  • backend-switch-overlay

backends

  • backend-add-modal
  • backend-manage-modal
  • backend-selector-open

changes-tab

  • changes-deleted-file
  • changes-diff-viewer
  • changes-empty

collapsible-thinking

  • reasoning-content-collapsed
  • reasoning-content-expanded
  • think-action-collapsed
  • think-action-expanded

mcp-page

  • mcp-custom-server-1-editor-open
  • mcp-custom-server-2-url-filled
  • mcp-custom-server-3-all-filled
  • mcp-custom-server-4-installed
  • mcp-custom-server-editor
  • mcp-empty-installed
  • mcp-search-filtered
  • mcp-slack-install-1-marketplace
  • mcp-slack-install-2-modal
  • mcp-slack-install-3-filled
  • mcp-slack-install-4-installed

onboarding

  • onboarding-step-0-choose-agent
  • onboarding-step-1-check-backend
  • onboarding-step-2-setup-llm
  • onboarding-step-3-say-hello

projects-workspace-browser

  • projects-workspace-browser

settings-page

  • add-backend-modal
  • analytics-consent-modal
  • home-screen
  • settings-app-page
  • settings-page

settings-secrets

  • secrets-add-form-filled
  • secrets-add-form
  • secrets-after-save
  • secrets-delete-confirm
  • secrets-list

settings-verification

  • condenser-settings
  • verification-settings-off
  • verification-settings-on

sidebar

  • sidebar-collapsed
  • sidebar-conversation-panel
  • sidebar-filter-menu

skills-page

  • skills-empty
  • skills-loaded
  • skills-no-match
  • skills-search-filtered
  • skills-type-filter

Generated by the Snapshot Tests workflow. This comment was created by an AI agent (OpenHands) on behalf of the repo maintainers.

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

Labels

update-snapshots Intentional snapshot changes — CI diff check bypassed; new baselines uploaded on merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Change automations zero state

3 participants