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') },

Reply via email to