fix(frontend): Desktop More/wallet menus clipped under EnvironmentRibbon (stacking) #486
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#486
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Desktop bug report: opening the header More menu shows the sticky EnvironmentRibbon (mainnet
MAINNET/Terra Classic · columbus-5 · real assetsstrip) cutting horizontally through the top of the dropdown. The menu appears behind / severed by the ribbon.Reporter perception that the ribbon is “full width when it shouldn’t be” is mostly a stacking illusion: the ribbon is intentionally content-column width (same
min(100% - 24px, 1180px)as the header). The real defect is paint order / z-index within the sticky stacking context, not that the ribbon should shrink to a compact pill.Same stacking applies to the connected wallet dropdown (shared
.app-menu/.wallet-menurules).Current codebase
Sticky chrome is a two-tier stack under one isolated wrapper:
frontend-dapp/src/components/common/Layout.tsx.app-top-stickywrapsheader.app-header-shellthen<EnvironmentRibbon />(DOM order: header → ribbon).role="menu"with classapp-menuinside.app-more-wrapin the header nav.NetworkBadgeand rely on the ribbon as the primary network signal (#483).frontend-dapp/src/components/legal/EnvironmentRibbon.tsx— build-time network strip (MAINNET/TESTNET/LOCAL+ detail). Not page-specific content.frontend-dapp/src/index.css(relevant stacking):.app-top-sticky—position: sticky; top: 0; z-index: 40; isolation: isolate(added/kept for #482 bleed-through fix)..app-menu/.wallet-menu—position: absolute; top: calc(100% + 10px); z-index: 45..app-env-ribbon— no z-index; follows header in DOM; opaque panel tint so scrolled page copy cannot bleed through (#482)..app-menu-dismiss— fixed overlay atz-index: 24(below sticky stack40).Why the More panel loses:
isolation: isolateon.app-top-stickycreates a local stacking context. Inside it, the absolutely positioned.app-menu(z-index: 45) is still a descendant of the header, while the ribbon is a later sibling with auto stacking. Later sibling paint order wins over the menu’s extension below the header, so the ribbon occludes the open dropdown. Raising.app-menu’s z-index alone does not escape the sticky isolate context relative to the ribbon sibling.Prior related work (closed): #138 (environment strip), #482 (sticky seam + opaque ribbon / isolate), #483 (header density / More vs theme gap). Existing E2E in
frontend-dapp/e2e/navigation.spec.tscovers ribbon presence, scroll bleed, More↔theme gap, and More navigation viae2e/helpers/desktop-more-nav.ts, but not open-menu vs ribbon vertical stacking / clickability.Why a new implementation is needed
isolation: isolate+ opaque ribbon made this occlusion visible. Need a stacking fix that preserves #482 opacity/seam goals and #138 persistent network context.VITE_NETWORK=local) still show a ribbon; the bug is structural, not mainnet-only, but mainnet’s reddish full-width card makes the cut more obvious (matches reporter screenshot).Constraints / guardrails
DEFAULT_NETWORK/NETWORKS— no user-controlled HTML in the strip.Layout.tsx..app-mobile-more-sheet,z-index: 55) is out of scope unless a fix accidentally regresses it.Relevant files
frontend-dapp/src/components/common/Layout.tsxfrontend-dapp/src/components/legal/EnvironmentRibbon.tsxfrontend-dapp/src/index.css.app-top-sticky,.app-menu,.wallet-menu,.app-env-ribbon*,.app-menu-dismissfrontend-dapp/src/components/wallet/WalletButton.tsx(and wallet menu markup)frontend-dapp/e2e/navigation.spec.tsfrontend-dapp/e2e/helpers/desktop-more-nav.tsdocs/frontend.md(responsive / shell section)Recommended direction
.app-top-stickyso open header menus paint above the ribbon without weakening isolate/opacity for page scroll:header.app-header-shell(or.app-more-wrap/ open-menu layer) a higherz-indexthan.app-env-ribbon, and keep the ribbon at a lower explicit z-index (still above main content via the sticky stack’sz-index: 40)..app-menu/.wallet-menuremain clickable and fully visible (including top rounded corners and first menuitem) when open over the ribbon band..app-menu-dismissstill receives outside clicks and that menus are not trapped under an opaque sticky layer incorrectly.elementFromPointat menu center-top).Acceptance criteria
HEADER_FULL_NAV_MIN_WIDTH_PX, currently 1200px) and tablet-compact header (768–1199px), open More dropdown is fully visible above the EnvironmentRibbon — no ribbon strip cutting through menu chrome or first items.Test plan (all paths)
/trade(or any long page), scroll subtitle under sticky stack; ribbon text remains readable; no page copy through ribbon.frontend-dapp/e2e/navigation.spec.ts(and/or helper) with open-More vs.app-env-ribbonstacking/clickability check; keep existing ribbon bleed + density tests green.Test plan (attack / hack / abuse vectors)
UI-only chrome, but still verify:
aria-hiddenon live menu..app-env-ribbon-detail.RiskAcknowledgementModal) or wallet connect modal portals.Verification criteria
main(menu top intersected /elementFromPointhits ribbon) and passes after fix; existing #482/#483 navigation specs remain green..app-top-sticky/ menu rules; #482 isolate/opacity intent preserved; no product change to ribbon width disguised as the bugfix.marked as related to #482
marked as related to #483
mentioned in commit
fdda3f9692mentioned in merge request !1022
mentioned in commit
48051b7a56