feat/fix: App mode QA feedback 2 (#9511)

## Summary

Additional fixes and updates based on testing

## Changes

- **What**: 
- add warning to welcome screen & when sharing an app that has had all
outputs removed
- fix target workflow when changing mode via tab right click menu
- change build app text to be conditional "edit" vs "build" depending on
if an app is already defined
- update empty apps sidebar tab button text to make it clearer
- remove templates button from app mode (we will reintroduce this once
we have app templates)
- add "exit to graph" after applying default mode of node graph
- update cancel button to remove item from queue if it hasn't started
yet
- improve scoping of jobs/outputs to the current workflow [not perfect
but should be much improved]
- close sidebar tabs on entering app mode
- change tooltip to be under the workflow menu rather than covering the
button

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-9511-feat-fix-App-mode-QA-feedback-2-31b6d73d365081d59bbbc13111100d46)
by [Unito](https://www.unito.io)
This commit is contained in:
pythongosssss
2026-03-07 02:57:03 +00:00
committed by GitHub
parent 8bfd93963f
commit 1058b7d12d
27 changed files with 471 additions and 107 deletions

View File

@@ -1,18 +1,57 @@
import ShareWorkflowDialogContent from '@/platform/workflow/sharing/components/ShareWorkflowDialogContent.vue'
import { useDialogService } from '@/services/dialogService'
import { useDialogStore } from '@/stores/dialogStore'
import { useWorkflowStore } from '../../management/stores/workflowStore'
import { useAppModeStore } from '@/stores/appModeStore'
import { showConfirmDialog } from '@/components/dialog/confirm/confirmDialog'
import { t } from '@/i18n'
const DIALOG_KEY = 'global-share-workflow'
export function useShareDialog() {
const dialogService = useDialogService()
const dialogStore = useDialogStore()
const { pruneLinearData } = useAppModeStore()
const workflowStore = useWorkflowStore()
function hide() {
dialogStore.closeDialog({ key: DIALOG_KEY })
}
function show() {
function showNoOutputsDialogIfRequired(share: () => void) {
const wf = workflowStore.activeWorkflow
if (!wf) return share()
const isAppDefault = wf.initialMode === 'app'
const linearData = wf.changeTracker?.activeState?.extra?.linearData
const { outputs } = pruneLinearData(linearData)
if (isAppDefault && outputs.length === 0) {
const dialog = showConfirmDialog({
headerProps: {
title: t('shareNoOutputs.title')
},
props: {
promptText: t('shareNoOutputs.message'),
preserveNewlines: true
},
footerProps: {
confirmText: t('shareNoOutputs.shareAnyway'),
confirmVariant: 'secondary',
onCancel: () => dialogStore.closeDialog(dialog),
onConfirm: () => {
dialogStore.closeDialog(dialog)
share()
}
}
})
return
}
share()
}
function showShareDialog() {
dialogService.showLayoutDialog({
key: DIALOG_KEY,
component: ShareWorkflowDialogContent,
@@ -29,6 +68,10 @@ export function useShareDialog() {
})
}
function show() {
showNoOutputsDialogIfRequired(showShareDialog)
}
return {
show,
hide