feat(directory-picker-browse): quiet navigation — one-frame landings and a slow-scan loading pill

Navigations keep the previous view rendering while scanning: target and
parent legs land as one two-pane frame when the parent leg settles within
a 200ms wait bound (past it the target lands alone and the late leg
upgrades in place; Escape inside the landing window withdraws the
navigation). The loading indicator floats over the content on the card
background and appears only once a scan outlives a 300ms silence window,
so navigation never shifts the columns or flashes an intermediate frame.
The truncated note now describes the on-screen panes instead of hiding
during scans.
This commit is contained in:
creatixchu
2026-07-30 11:50:16 +08:00
parent 0d5cf7ce4e
commit 7b22a3b454
9 changed files with 235 additions and 40 deletions

View File

@@ -146,11 +146,26 @@
flex-direction: column;
flex: 1 1 0;
min-height: 0;
/* Anchors the floating loading pill (.loadingFloat). */
position: relative;
/* Right inset is slimmer than the left: the trailing column's own 8px
* scrollbar clearance makes up the optical difference. */
padding: 16px 16px 16px 24px;
}
/* The slow-scan indicator floats over the content's bottom-left on the card
* background instead of occupying a row: a scan must never shift the
* columns' height, and the stale view keeps rendering beneath it (it only
* appears at all once a scan outlives SLOW_SCAN_DELAY_MS). */
.loadingFloat {
position: absolute;
left: 24px;
bottom: 8px;
padding: 2px 8px;
border-radius: 6px;
background: var(--dsw-alias-bg-layer-2);
}
/* Columns split the row evenly around the divider (a solo column takes the
* whole row); 256px is the floor below which the row scrolls (scrollbar
* hidden, the effect pins the child pane into view) instead of squeezing