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
The following commit(s) were added to refs/heads/main by this push:
new 17edd80 ui: small cleanup — remove SWIP-14 label + dead
placeholderTabs + empty CSS
17edd80 is described below
commit 17edd80ba1cc9d969295d7727d4ef27b5c94e5ac
Author: Wu Sheng <[email protected]>
AuthorDate: Tue May 19 20:40:16 2026 +0800
ui: small cleanup — remove SWIP-14 label + dead placeholderTabs + empty CSS
- InspectView: drop the visible 'SWIP-14' subtitle next to the page
title (user-facing references to SWIPs should not appear). The
.ins__sub CSS goes with it.
- router/index.ts: the per-layer placeholderTabs array was empty and
unused. Removed it + the dead .map() that consumed it + the now-
orphaned humanKey() helper.
- apps/ui/src/layer/LayerTabPlaceholder.vue: deleted (only caller was
the dead placeholderTabs map). Every layer sub-tab has its own
view component now.
---
.../src/features/operate/inspect/InspectView.vue | 2 -
apps/ui/src/layer/LayerTabPlaceholder.vue | 94 ----------------------
apps/ui/src/shell/router/index.ts | 24 +-----
3 files changed, 4 insertions(+), 116 deletions(-)
diff --git a/apps/ui/src/features/operate/inspect/InspectView.vue
b/apps/ui/src/features/operate/inspect/InspectView.vue
index a5be58d..4e61964 100644
--- a/apps/ui/src/features/operate/inspect/InspectView.vue
+++ b/apps/ui/src/features/operate/inspect/InspectView.vue
@@ -1142,7 +1142,6 @@ function scopeShort(scope: InspectScope): string {
<AdminFeatureWarning module="inspect" feature-label="Inspect" />
<header class="ins__header">
<h1 class="ins__h1">Inspect</h1>
- <span class="ins__sub">SWIP-14</span>
<div class="ins__spacer" />
<span v-if="catalogQuery.isFetching.value"
class="ins__refreshing">refreshing…</span>
<Btn @click="refreshEverything">refresh</Btn>
@@ -1580,7 +1579,6 @@ function scopeShort(scope: InspectScope): string {
.ins__header { display: flex; align-items: center; gap: 12px; }
.ins__h1 { margin: 0; font-family: var(--rr-font-ui); font-weight: 500;
font-size: 14px; color: var(--rr-heading); }
-.ins__sub { font-family: var(--rr-font-mono); font-size: 11.5px; color:
var(--rr-dim); }
.ins__spacer { flex: 1 1 auto; }
.ins__refreshing {
font-family: var(--rr-font-mono);
diff --git a/apps/ui/src/layer/LayerTabPlaceholder.vue
b/apps/ui/src/layer/LayerTabPlaceholder.vue
deleted file mode 100644
index dbbf887..0000000
--- a/apps/ui/src/layer/LayerTabPlaceholder.vue
+++ /dev/null
@@ -1,94 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<!--
- Placeholder body for per-layer tabs that haven't been built yet
- (Topology / Traces / Logs / Dashboards / Instances / Endpoints /
- Profiling / Events). Reads `?service=` from the URL so when an
- operator picks a service in the top selector zone, the placeholder
- reflects the scope they'd see once the phase ships.
--->
-<script setup lang="ts">
-import { computed } from 'vue';
-import { useSelectedService } from '@/layer/useSelectedService';
-
-defineProps<{ title: string; phase: string; note?: string }>();
-
-const { selectedId } = useSelectedService();
-const scoped = computed(() => selectedId.value !== null);
-</script>
-
-<template>
- <div class="sw-card layer-ph">
- <div class="kicker">Coming in {{ phase }}</div>
- <h2>{{ title }}</h2>
- <p v-if="note" class="note">{{ note }}</p>
- <p v-if="scoped" class="scope">
- When this view ships, the selected service
- <code>{{ selectedId }}</code>
- will scope the query automatically.
- </p>
- <p v-else class="scope muted">
- Pick a service from the selector above to scope this view in advance.
- </p>
- </div>
-</template>
-
-<style scoped>
-.layer-ph {
- padding: 20px 24px;
- margin-top: 4px;
-}
-.kicker {
- font-size: 10px;
- text-transform: uppercase;
- letter-spacing: 0.1em;
- color: var(--sw-accent);
- margin-bottom: 8px;
-}
-.layer-ph h2 {
- margin: 0 0 6px;
- font-size: 16px;
- font-weight: 600;
- color: var(--sw-fg-0);
- letter-spacing: -0.02em;
-}
-.note {
- margin: 0 0 12px;
- font-size: 12px;
- color: var(--sw-fg-2);
- line-height: 1.5;
-}
-.scope {
- margin: 0;
- font-size: 11.5px;
- color: var(--sw-fg-1);
- line-height: 1.5;
- border-top: 1px dashed var(--sw-line);
- padding-top: 10px;
-}
-.scope.muted {
- color: var(--sw-fg-3);
-}
-.scope code {
- font-family: var(--sw-mono);
- font-size: 10.5px;
- background: var(--sw-bg-2);
- padding: 1px 4px;
- border-radius: 3px;
- color: var(--sw-fg-1);
-}
-</style>
diff --git a/apps/ui/src/shell/router/index.ts
b/apps/ui/src/shell/router/index.ts
index e1947e5..2b753da 100644
--- a/apps/ui/src/shell/router/index.ts
+++ b/apps/ui/src/shell/router/index.ts
@@ -20,23 +20,15 @@ import { pushEvent } from '@/controls/eventLog';
const placeholder = () => import('@/shell/PlaceholderView.vue');
-function humanKey(k: string): string {
- return k.replace(/[-_]/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
-}
-
// Layer sub-routes nest under a single LayerShell route so every tab
// shares the header KPI strip + cap-driven tab navigation. The shell
// reads `:layerKey` from the URL and pulls layer config / live data.
// Sub-route components fill the tab body via a nested router-view.
+// The canonical landing is `/service` — that's the widget-grid view
+// operators see when they click a layer. Every layer sub-tab now
+// has its own dedicated component; the earlier `placeholderTabs`
+// array (for tabs awaiting their per-page treatment) is gone.
function layerRoute(): RouteRecordRaw {
- // Per-layer sub-routes that still render generic placeholders until
- // their phases land. The canonical landing is `/service` — that's
- // the widget-grid view operators see when they click a layer.
- // Tabs that still don't have a per-scope dashboard set. Topology +
- // dependency + logs need their own page treatments (Phase 4 / 5);
- // their JSON template `components.*` flag still gates the sidebar
- // entry, this just keeps the URL routing legible.
- const placeholderTabs: { path: string; label: string; phase: string }[] = [];
return {
path: 'layer/:layerKey',
component: () => import('@/layer/LayerShell.vue'),
@@ -109,14 +101,6 @@ function layerRoute(): RouteRecordRaw {
path: 'traces',
redirect: (to) => ({ path: `/layer/${to.params.layerKey}/trace`,
query: to.query }),
},
- ...placeholderTabs.map<RouteRecordRaw>((f) => ({
- path: f.path,
- component: () => import('@/layer/LayerTabPlaceholder.vue'),
- props: (r) => ({
- title: `${humanKey(String(r.params.layerKey))} · ${f.label}`,
- phase: f.phase,
- }),
- })),
],
};
}