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 [...]

Reply via email to