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 ae5d745 docs: add cascade-clear-then-load UI principle
ae5d745 is described below
commit ae5d745acbcae46888174332ffbd5eb358ca88ae
Author: Wu Sheng <[email protected]>
AuthorDate: Sun May 17 17:56:57 2026 +0800
docs: add cascade-clear-then-load UI principle
Pulled out the rule the recent dashboard + picker fixes have all
been pointing at: when an upstream control changes and downstream
queries have to refire, the dependent area must visibly RESET
first and show an explicit "Reading data…" hint while the new
query is in flight. Old data under a spinner reads as the new
state (operators trust broken data); silence between click and
result reads as a freeze.
Counterpart to the existing `enabled` gating in the data layer
(trailing controls listen to upstream + only fire after they
resolve) — the display layer carries the same obligation.
---
CLAUDE.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CLAUDE.md b/CLAUDE.md
index 1a79a89..7ac7468 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -65,6 +65,7 @@ Design tokens have been lifted into the runtime token CSS —
that copy is canon
- **Multi-layer is the spine.** Almost every screen has "this could appear in
multiple layers" semantics. Build for that from day one.
- **Synced crosshairs.** Multiple time-series on a dashboard share one cursor.
Don't build charts that ignore this.
- **Density beats whitespace.** This is an observability-class UI; information
density is a feature.
+- **Cascade-clear, then load.** When an upstream control changes (service /
instance / endpoint pick, time-range change, layer / scope nav) and the
downstream queries have to refire, the dependent area must visibly RESET first
and show an explicit "Reading data…" (or equivalent) hint while the new query
is in flight. Never leave the prior value sitting under a spinner — operators
read it as the new state and trust broken data. Never let the page sit silently
between the click and the res [...]
- **MQE is a core capability**, not a config-screen afterthought.
User-editable, syntax-highlighted, debuggable.
- **Admin views use the same look.** LDAP/RBAC/admin are dark, dense,
design-tokens — not a separate "settings" UI. Alarms are read-only on the UI
side; recovery is backend-automatic (no acknowledge/close/silence actions).
- **Comments earn their keep.** Only write a comment when it does one of two
things: (1) introduces an API — what a module / component / exported function
is for and how callers should think about it; (2) highlights a non-obvious
gotcha — a hidden invariant, a workaround for a specific upstream quirk, a
subtle scope/timing constraint. Do **not** write comments that paraphrase the
code (`// loop over layers`, `// click handler — toggles open state`, `//
returns true when active`). Do **no [...]