This is an automated email from the ASF dual-hosted git repository. wu-sheng pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git
commit 3aa68cac120c90cc56178d3d876852161070569f Author: Wu Sheng <[email protected]> AuthorDate: Tue May 19 23:37:54 2026 +0800 ui: restore service picker on layer trace tab The trace route declared meta.ownsServiceSelector (telling LayerShell to hide its Switch picker because "the trace tabs carry their own"), but LayerTracesView was later refactored to drop its in-toolbar service control on the grounds that "the layer header's Switch button already shows which service the page is bound to". Both sides assumed the other would render the picker → it disappeared entirely on /layer/:key/trace. Sibling Logs tab is the working pattern: no ownsServiceSelector meta, no in-toolbar service control, shell Switch picker shows above the toolbar. Apply the same shape to Trace by dropping the route meta. Zipkin still has its own free-text + datalist service filter inside LayerZipkinTracesView for the case where Zipkin's service universe diverges from SkyWalking's; that input is independent of the shell picker and doesn't conflict. --- apps/ui/src/shell/router/index.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/ui/src/shell/router/index.ts b/apps/ui/src/shell/router/index.ts index 2b753da..fe13b30 100644 --- a/apps/ui/src/shell/router/index.ts +++ b/apps/ui/src/shell/router/index.ts @@ -55,12 +55,16 @@ function layerRoute(): RouteRecordRaw { // `LayerTracesEntry` is a runtime dispatcher: it inspects the // layer template's `traces.source` and renders either the native // trace view or the Zipkin one. Mesh / k8s layers land on Zipkin. - // `ownsServiceSelector` hides the shell's SkyWalking service - // picker — the trace tabs (both native + Zipkin) carry their - // own service input, and Zipkin's service universe is decoupled - // from SkyWalking's anyway (different name index, no `normal` - // flag, queried via `/api/v2/services`). - { path: 'trace', component: () => import('@/layer/traces/LayerTracesEntry.vue'), meta: { ownsServiceSelector: true } }, + // + // Both trace views read the shell-level service selection via + // `useSelectedService`, so we leave `ownsServiceSelector` OFF — + // the LayerShell's Switch picker stays visible and the native + // view's toolbar deliberately doesn't repeat it (see comment + // inside LayerTracesView.vue). The Zipkin view also carries its + // own free-text service filter for the cases where Zipkin's + // service universe drifts from SkyWalking's; that input lives + // inside the view and is independent of the shell picker. + { path: 'trace', component: () => import('@/layer/traces/LayerTracesEntry.vue') }, { path: 'logs', component: () => import('@/layer/logs/LayerLogsView.vue') }, { path: 'trace-profiling', component: () => import('@/layer/profiling/LayerTraceProfilingView.vue') }, { path: 'ebpf-profiling', component: () => import('@/layer/profiling/LayerEBPFProfilingView.vue') },
