diff --git a/src/manifest.json b/src/manifest.json
index c8be39b4..760c9ba3 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -563,7 +563,8 @@
"type": "flow",
"title": "Flow",
"config": { "app": "keepiq" },
- "_note": "The shared CnFlowDetail canvas over the same single engine. Controls render in the NC app sidebar so the canvas keeps full width."
+ "sidebarComponent": "FlowDetailSidebar",
+ "_note": "The shared CnFlowDetail canvas over the same single engine. Controls render in the NC app sidebar (sidebarComponent) so the canvas keeps full width; canvas and sidebar share useFlowStore. The _note claimed this before the field existed, so #/flows/new -- and every #/flows/:id -- rendered a bare canvas with no way to name, describe, trigger or step-edit the flow. Mirrors pipelinq#1490."
}
],
"observability": {
diff --git a/src/registry.js b/src/registry.js
index 183b58c3..13d2e084 100644
--- a/src/registry.js
+++ b/src/registry.js
@@ -46,6 +46,7 @@ import ApplicationRegisterView from './views/ApplicationRegisterView.vue'
import CertificateInventoryView from './views/CertificateInventoryView.vue'
import EmergencyAccessView from './views/EmergencyAccessView.vue'
import EphemeralSendAccess from './views/EphemeralSendAccess.vue'
+import FlowDetailSidebar from './views/flows/FlowDetailSidebar.vue'
import HealthReportView from './views/HealthReportView.vue'
import LinkShareAccess from './views/LinkShareAccess.vue'
import LockScreen from './views/LockScreen.vue'
@@ -55,6 +56,12 @@ import SecretList from './views/SecretList.vue'
import SecretRequestFill from './views/SecretRequestFill.vue'
export default {
+ // --- Flows (ADR-110 Decision 4). Only the SIDEBAR is an app component;
+ // the list and the canvas are the shared `flows` / `flow-detail`
+ // manifest page types. CnFlowSidebar has to mount in the NC app
+ // sidebar for the canvas to keep full width. ---
+ FlowDetailSidebar: { kind: 'page', component: FlowDetailSidebar },
+
LockScreen: { kind: 'page', component: LockScreen },
SecretList: { kind: 'page', component: SecretList },
SecretDetail: { kind: 'page', component: SecretDetail },
diff --git a/src/views/flows/FlowDetailSidebar.vue b/src/views/flows/FlowDetailSidebar.vue
new file mode 100644
index 00000000..fff85173
--- /dev/null
+++ b/src/views/flows/FlowDetailSidebar.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+