wu-sheng opened a new pull request, #17:
URL: https://github.com/apache/skywalking-horizon-ui/pull/17

   ## Summary
   
   Product-readiness pass for Horizon UI. The pillars below describe the 
operator-visible result; full per-bullet detail is in 
[CHANGELOG.md](CHANGELOG.md) under `0.6.0`.
   
   - **Eight-locale parity.** Every admin and operate page is now fully 
translated (Roles, Users, Auth status, Alert page setup, Global defaults, 
Alerting rules, DSL catalog / editor / dump, OAL catalog, Live debugger + MAL / 
LAL / OAL, Capture history, Metrics inspect, OAP config, TTL, Alarms, shared 
modals). Split-sentence ledes that rendered as `English | one localized word | 
English` mid-sentence converted to single `<i18n-t keypath>` units with named 
slots. Each non-English catalog received AI-assisted seed translations per 
CLAUDE.md (IT terms / OAP enums / catalog slugs / status enums stay English; 
placeholders preserved verbatim).
   - **Inter + JetBrains Mono self-hosted** via `@fontsource-variable`. Google 
Fonts CDN dependency removed — air-gapped / firewalled deployments render the 
intended typography. New typography tokens (`--sw-fs-*`, `--sw-fw-*`, 
`--sw-lh-*`, `--sw-ls-*`) + `.sw-uplabel` / `.sw-kicker` utility classes give 
every page the same vocabulary.
   - **OAP-local timestamps across every query route.** Lifted 
`getServerOffsetMinutes` from the alarms route into shared `util/window.ts`; 
every dashboard / landing / topology / endpoint / instance / eBPF / traces / 
logs / trace-tag query now formats `Duration.start` / `end` in OAP-server local 
time. Wrong-window data on non-UTC OAP installs fixed. Traces + logs 
additionally query at SECOND step (records, not metric buckets — verified via 
`DurationUtils.MAX_TIME_RANGE` source cross-reference).
   - **Performance fixes.** Landing chunks the N×M MQE fragment batch at 6 
services per round-trip + `Promise.all` (was 250 fragments tripping OAP's 
complexity ceiling). `NativeTraceWaterfall` rows virtualized via 
`content-visibility` — 5000-span traces no longer freeze the main thread. 
Auto-refresh ticker pauses on `document.visibilitychange` and resumes with one 
immediate tick on return.
   - **RBAC + input-validation hardening.** `/api/health` no longer leaks 
`sessions.size()`; `pageSize` capped server-side on trace (200) / log (100) / 
Zipkin paths; async-profiler + pprof + eBPF + network-profiling task-create 
bodies sanitized with duration / instance-list / payload-size caps.
   - **Diff modal console-error fixed.** `MonacoEnvironment.getWorker` now 
dispatches by `label` and registers the JSON worker. Stops the `Missing 
requestHandler or method: resetSchema` errors logged whenever the admin "Check 
diff & push" modal opened.
   - **DSL / OAL catalog renames** (`Catalog · otel-rules` → `Metrics Analysis 
Language - OpenTelemetry Rules`; `… - Telegraf Rules` / `… - Log MAL Rules`; 
LAL → `Log Analysis Language`; OAL browse → `Observability Analysis Language`). 
New `catalog-labels.ts` helper.
   - **Admin editor opens REMOTE on diverged rows** (Layer Dashboards + 
Overview Templates). Previously seeded from bundled — so operators were editing 
a copy that silently disagreed with what the live menu rendered. Priority is 
now local → remote (diverged / remote-only) → bundled. Source pill reads `from 
local / from remote / from bundled` consistently.
   - **RuleCard arrow stays glued to the rule name.** Short names like 
`default` / `mesh-dp` / `vm` no longer float mid-card with a gap from the ▶ run 
arrow.
   - **Sync-status counters ignore translation rows.** Per-locale overlay rows 
on OAP no longer inflate the `remote-only` / `diverged` counts on the Overview 
Templates and Layer Dashboards admin banners.
   - **`demo.skywalking.apache.org` removed** from CLAUDE.md + `topology.ts` 
comment per request (skills exempted; CHANGELOG historical entry preserved as 
immutable record).
   
   ## Test plan
   
   - [x] `pnpm --filter ui exec vue-tsc --noEmit` — clean.
   - [x] `pnpm --filter bff exec tsc --noEmit` — clean.
   - [x] `pnpm --filter bff test:unit` — 80 / 80 pass.
   - [x] `license-eye -c .licenserc.yaml header check` — 904 files, 0 invalid 
(new `catalog-labels.ts` carries the ASF header).
   - [ ] Smoke against a non-UTC OAP — confirm dashboards / topology / traces / 
logs render the correct window.
   - [ ] Locale switch from English to each of zh-CN / ja / ko / es / pt / de / 
fr on Config, Overview Templates, Layer Dashboards, Alert page setup — confirm 
slot interpolation works (no literal `{endpoint}` / `{mask}` placeholders).
   - [ ] Open the Check diff & push modal on Layer Dashboards in production 
build — confirm no Monaco console error.
   - [ ] Open a 5000-span trace on the Traces tab — confirm it opens 
responsively.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to