feat(automations): simplify empty state to a single "from scratch" card#736
feat(automations): simplify empty state to a single "from scratch" card#736rbren wants to merge 3 commits into
Conversation
…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>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
all-hands-bot
left a comment
There was a problem hiding this comment.
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
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>
all-hands-bot
left a comment
There was a problem hiding this comment.
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
📸 Snapshot Test ReportWarning Snapshot comparison step crashed (timeout, OOM, or runner error) — diff results below may be incomplete or absent. ✅ 5 snapshots changed — acknowledged via the
🔴 Changed snapshots (5)
|
| Expected (main) | Actual (PR) | Diff |
|---|---|---|
![]() |
![]() |
![]() |
automations-list-active-inactive
| Expected (main) | Actual (PR) | Diff |
|---|---|---|
![]() |
![]() |
![]() |
automations-no-automations
| Expected (main) | Actual (PR) | Diff |
|---|---|---|
![]() |
![]() |
![]() |
automations-search-no-results
| Expected (main) | Actual (PR) | Diff |
|---|---|---|
![]() |
![]() |
![]() |
backends-extended
backend-after-switch
| Expected (main) | Actual (PR) | 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.















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:
Install the OpenHands pluginlink). The OpenHands plugin command is now surfaced inside the remaining card./openhands-automation createas a code block and links to the docs./openhands-automation create, using the same draft-message pattern asRecommendedAutomationsLauncher(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
collapsibleprop onCreateInstructions(it was only used by the previous two-option empty state) and the obsoleteEmptyStatecomponent.Translation key changes
AUTOMATIONS$CREATE_FROM_SCRATCH_TITLE,AUTOMATIONS$CREATE_FROM_SCRATCH_DESC(all 15 supported languages).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.AUTOMATIONS$EMPTY_START_CONVERSATION,AUTOMATIONS$EMPTY_LEARN_MORE.Test changes
__tests__/components/automations/create-instructions.test.tsx. It asserted that the "Start a conversation" element was a SPA<Link>callingnavigate("/")— the new component uses a<button>that creates a conversation via the existing mutation hooks, which are covered byRecommendedAutomationsLauncher's tests.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 insrc/hooks/mutation/conversation-mutation-utils.tsis unchanged).npx eslint/npx prettier --checkon 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
ghcr.io/openhands/agent-canvasghcr.io/openhands/agent-server:1.23.0-pythonopenhands-automation==1.0.0a369132bee1822fee4418fa46899155fbdab3370e7Pull (multi-arch manifest)
# Multi-arch manifest — Docker automatically pulls the correct architecture docker pull ghcr.io/openhands/agent-canvas:sha-69132beRun
All tags pushed for this build
About Multi-Architecture Support
sha-69132be) is a multi-arch manifest supporting both amd64 and arm64sha-69132be-amd64) are also available if needed