diff --git a/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue b/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue
index fed10ffe..9dffeb7e 100644
--- a/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue
+++ b/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue
@@ -1,5 +1,5 @@
diff --git a/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts b/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts
index 7cb68256..27725c1a 100644
--- a/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts
+++ b/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts
@@ -31,6 +31,20 @@ describe('detail return navigation', () => {
expect(listSource).toContain('tab: activeTab.value');
});
+ it('returns workflow design to the originating list page and filters', () => {
+ const detailSource = readViewSource('ai/workflow/WorkflowDesign.vue');
+ const listSource = readViewSource('ai/workflow/WorkflowList.vue');
+
+ expect(detailSource).toContain(
+ 'parseWorkflowDesignReturnState(route.query)',
+ );
+ expect(detailSource).toContain(
+ 'query: buildWorkflowListRouteQuery(listState)',
+ );
+ expect(listSource).toContain('buildWorkflowDesignReturnQuery');
+ expect(listSource).toContain('getPageState');
+ });
+
it('returns plugin tool editing to its plugin tool list with a safe fallback', () => {
const editSource = readViewSource('ai/plugin/PluginToolEdit.vue');
const listSource = readViewSource('ai/plugin/PluginToolTable.vue');
diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue
index 980e1377..c7135d3e 100644
--- a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue
+++ b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue
@@ -51,6 +51,10 @@ import {
isWorkflowDataEmpty,
normalizeWorkflowStartNodes,
} from '../../../../../packages/tinyflow-ui/src/utils/workflowNodeFields';
+import {
+ buildWorkflowListRouteQuery,
+ parseWorkflowDesignReturnState,
+} from './workflow-list-route-state';
import '@tinyflow-ai/vue/dist/index.css';
@@ -160,7 +164,11 @@ async function initializeWorkflow() {
}
function backToWorkflowList() {
- router.replace({ path: '/ai/workflow' });
+ const listState = parseWorkflowDesignReturnState(route.query);
+ router.replace({
+ path: '/ai/workflow',
+ query: buildWorkflowListRouteQuery(listState),
+ });
}
const WORKFLOW_DRAFT_WRITE_DELAY = 320;
let draftWriteTimer: ReturnType | undefined;
diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue
index 27e29749..f7f3de0a 100644
--- a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue
+++ b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue
@@ -1,6 +1,8 @@