feat: App mode empty graph handling (#9393)

## Summary

Adds handling for entering app mode with an empty graph prompting the
user to load a template as a starting point

## Changes

- **What**: 
- app mode handle empty workflows, disable builder button, show
different message
- fix fitView when switching from app mode to graph

## Review Focus

Moving the fitView since the canvas is hidden in app mode until after
the workflow is loaded and the mode has been switched back to graph, I
don't see how this could cause any issues but worth a closer eye

## Screenshots (if applicable)

<img width="1057" height="916" alt="image"
src="https://github.com/user-attachments/assets/2ffe2b6d-9ce1-4218-828a-b7bc336c365a"
/>

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-9393-feat-App-mode-empty-graph-handling-3196d73d3650812cab0ce878109ed5c9)
by [Unito](https://www.unito.io)
This commit is contained in:
pythongosssss
2026-03-05 10:27:05 +00:00
committed by GitHub
parent e0089d93d0
commit 5376b7ed1e
7 changed files with 91 additions and 52 deletions

View File

@@ -130,8 +130,8 @@ describe('appModeStore', () => {
})
describe('empty workflow dialog callbacks', () => {
function getDialogOptions() {
vi.mocked(app.rootGraph).nodes = []
function getDialogOptions(nodes: LGraphNode[] = []) {
vi.mocked(app.rootGraph).nodes = nodes
workflowStore.activeWorkflow = createBuilderWorkflow('graph')
store.enterBuilder()
return mockEmptyWorkflowDialog.lastOptions
@@ -149,10 +149,7 @@ describe('appModeStore', () => {
})
it('onEnterBuilder enters builder when nodes exist', () => {
const options = getDialogOptions()
// Simulate template having loaded nodes
vi.mocked(app.rootGraph).nodes = [{ id: 1 } as LGraphNode]
const options = getDialogOptions([{ id: 1 } as LGraphNode])
options.onEnterBuilder()