Summary
Workspace section tabs are ordered inconsistently across surfaces, and the current order doesn't communicate any order of operations. Users and admins tell us they don't understand that Identities feed both Sync and Actions, that Actions belong to Agents, or that Workflows consume Agents.
Current state
| Surface |
Order |
Personal tabs (workspace.html) |
Documents, Sync, Identities, Prompts, Agents, Actions, Workflows, Endpoints |
| Personal Section dropdown |
Documents, Sync, Identities, Prompts, Agents, Actions, Workflows, Endpoints |
| Personal sidebar submenu |
Documents, Prompts, Workflows, Agents, Actions, Endpoints, Sync, Identities |
Group tabs (group_workspaces.html) |
Documents, Sync, Identities, Prompts, Workflows, Agents, Actions, Endpoints |
| Group Section dropdown |
Documents, Sync, Identities, Prompts, Workflows, Agents, Actions, Endpoints |
| Group sidebar submenu |
Documents, Prompts, Agents, Actions, Endpoints, Sync, Identities (no Workflows link at all) |
Public browse (public_workspaces.html) |
Documents, Prompts |
Proposed canonical order
Adopt one build-up order everywhere a workspace section list is rendered. Sections still only appear when their existing feature gates are enabled — this is a pure reorder.
- Documents — the knowledge you bring in
- Prompts — the instructions you reuse
- Identities — the credentials Sync and Actions both resolve against
- Sync — uses Identities to pull Documents in
- Endpoints — the models Agents and Workflows run on
- Actions — governed tools, using Identities and Endpoints
- Agents — assemble Documents, Prompts, Actions, Endpoints
- Workflows — run Agents on a schedule or trigger
Applies to all three section-listing surfaces: the top nav-tabs bar, the collapsed/mobile Section <select>, and the left-hand sidebar submenus, for personal, group, and public workspaces.
Sidebar gating bugs found while scoping
These are fixed as part of this change, because otherwise the "only enabled sections show up, in this order" rule doesn't actually hold:
| Item |
Today |
Should be |
| Personal "Your Agents" |
per_user_semantic_kernel and enable_semantic_kernel |
+ allow_user_agents |
| Personal "Your Actions" |
per_user_semantic_kernel and enable_semantic_kernel |
+ allow_user_agents and allow_user_plugins |
| Personal "Identities" |
file_sync_enabled or enable_semantic_kernel or enable_multi_model_endpoints |
file_sync_enabled or enable_semantic_kernel (match tab gate) |
| Group "Group Agents" |
allow_group_agents and enable_semantic_kernel |
+ per_user_semantic_kernel |
| Group "Group Actions" |
allow_group_agents and enable_semantic_kernel |
+ per_user_semantic_kernel and allow_group_plugins |
| Group "Identities" |
file_sync_enabled or enable_semantic_kernel or enable_multi_model_endpoints |
file_sync_enabled or enable_semantic_kernel (match tab gate) |
| Group "Workflows" |
missing entirely |
add link, gated by allow_group_workflows |
Each mismatch means a sidebar link can point at a tab that was never rendered.
Scope decisions
- Tab panes are not reordered. Bootstrap resolves panes by
id / data-bs-target and inactive panes are hidden, so DOM order has no visual or accessibility effect. Leaving them keeps the diff reviewable (the group template is ~389 KB).
- Documents stays first, so
class="nav-link active" and the "first sidebar link is active" logic in workspace_sidebar_nav.js keep working unchanged.
- Public workspaces already conform — the browse page is Documents then Prompts, and
manage_public_workspace.html already lists Identities before Sync. Audit only.
- Guided tutorial is out of scope — it still walks Documents → Prompts → Agents → Actions. Its selectors are id-based, so nothing breaks.
Files affected
application/single_app/templates/workspace.html
application/single_app/templates/group_workspaces.html
application/single_app/templates/_sidebar_nav.html
application/single_app/config.py (version bump)
functional_tests/test_endpoints_tab_order_visibility.py (updated)
functional_tests/test_workspace_section_order.py (new)
docs/explanation/features/v0.250.209/WORKSPACE_SECTION_ORDER.md (new)
docs/explanation/release_notes.md
Follow-ups (not in this change)
- Visual grouping of sections. Reordering is the groundwork; a further pass could add dividers or group labels (e.g. Content / Connections / Automation) so the relationships read as cohesive rather than just sequential.
- Orphan tab pane.
group_workspaces.html contains a #group-settings-tab pane with no corresponding nav button anywhere in the codebase — dead markup that should be removed or wired up.
Summary
Workspace section tabs are ordered inconsistently across surfaces, and the current order doesn't communicate any order of operations. Users and admins tell us they don't understand that Identities feed both Sync and Actions, that Actions belong to Agents, or that Workflows consume Agents.
Current state
workspace.html)group_workspaces.html)public_workspaces.html)Proposed canonical order
Adopt one build-up order everywhere a workspace section list is rendered. Sections still only appear when their existing feature gates are enabled — this is a pure reorder.
Applies to all three section-listing surfaces: the top
nav-tabsbar, the collapsed/mobile Section<select>, and the left-hand sidebar submenus, for personal, group, and public workspaces.Sidebar gating bugs found while scoping
These are fixed as part of this change, because otherwise the "only enabled sections show up, in this order" rule doesn't actually hold:
per_user_semantic_kernel and enable_semantic_kernelallow_user_agentsper_user_semantic_kernel and enable_semantic_kernelallow_user_agents and allow_user_pluginsfile_sync_enabled or enable_semantic_kernel or enable_multi_model_endpointsfile_sync_enabled or enable_semantic_kernel(match tab gate)allow_group_agents and enable_semantic_kernelper_user_semantic_kernelallow_group_agents and enable_semantic_kernelper_user_semantic_kernel and allow_group_pluginsfile_sync_enabled or enable_semantic_kernel or enable_multi_model_endpointsfile_sync_enabled or enable_semantic_kernel(match tab gate)allow_group_workflowsEach mismatch means a sidebar link can point at a tab that was never rendered.
Scope decisions
id/data-bs-targetand inactive panes are hidden, so DOM order has no visual or accessibility effect. Leaving them keeps the diff reviewable (the group template is ~389 KB).class="nav-link active"and the "first sidebar link is active" logic inworkspace_sidebar_nav.jskeep working unchanged.manage_public_workspace.htmlalready lists Identities before Sync. Audit only.Files affected
application/single_app/templates/workspace.htmlapplication/single_app/templates/group_workspaces.htmlapplication/single_app/templates/_sidebar_nav.htmlapplication/single_app/config.py(version bump)functional_tests/test_endpoints_tab_order_visibility.py(updated)functional_tests/test_workspace_section_order.py(new)docs/explanation/features/v0.250.209/WORKSPACE_SECTION_ORDER.md(new)docs/explanation/release_notes.mdFollow-ups (not in this change)
group_workspaces.htmlcontains a#group-settings-tabpane with no corresponding nav button anywhere in the codebase — dead markup that should be removed or wired up.