Repository navigation
v2.14.1 — overlay rendering overhaul
Overlay rendering overhaul: typing no longer re-renders or resizes the window — rows reconcile in place, and the window follows content instantly without acrylic flash. Also fixes folders missing from search results (cache-fallback retention bug) and makes accent color/theme changes apply on next open.
Issues (checklist — completes step 2)
- Folders never appear in search results → cache-fallback compaction retained only the first 5000 DB rows (
ORDER BY id= files before folders), starving folders entirely; folders now retained first. Index-corruption loops made diagnosable (open/reset/commit logging). - Typing causes visible re-renders/window changes → keyed row reconciliation reuses unchanged rows; at most one resize per frame, applied after paint.
- Acrylic visible for a moment during window resize → WebView viewport pinned at max height (pre-rasterized); growth reveals painted pixels, shrink does zero WebView work.
- Window lags behind content when results reduce (apps-only grid) → shrink/small-grow resize applied immediately; no 350ms settle gap.
- Seeing the desktop behind nex for ~1s when typing the first letter → quick-launch rows stay visible during the first search; results replace them atomically (no shrink-to-search-bar gap).
- Accent color / theme change in Windows settings not picked up → re-detected on every show, acrylic tint re-applied while hidden.
- Footer hints off-center (power button offset) + power icon misaligned → hints absolutely centered; power button vertically centered.
- Right-click on folder rows showed Run as Administrator; empty divider lines in context menu → runas hidden on folders; dividers auto-hide.
- Pin/unpin bookmark icon only updated after a re-render; Copy Path refreshed the whole results list → status-only pushes (ApplyStatus) for pure messages; pin/unpin/add use status+refresh.
- Wrong icon glyph flashes before the real icon loads → blank transparent cold-cache slot; pop-in gated on real src swap.
- Quick-launch items animate (stagger) on every show → QL rows excluded from entrance stagger.
- (earlier, unreleased) Outside-click on desktop didn't hide instantly → WH_MOUSE_LL click-outside detection; grid arrow-key navigation; Painted show gate (no window resurrection after click-away).
Changelog (21 commits since v2.14.0)
Performance
- No-resize typing: keyed row reconciliation (
role|kind|title|subtitle|iconstable keys) — unchanged<li>nodes reused in place, no image re-decode, no entrance re-animation on surviving rows. - Zero-flash resize: WebView viewport pinned at MAX_HEIGHT — the window clips a pre-rasterized surface, so grow/shrink never exposes the acrylic backdrop.
- Immediate resize: shrink and small-grow apply instantly (settle timers removed — pre-rasterization made them unnecessary);
lastHdedupe keeps ≤1 resize per frame. - Icon pipeline: blank 1px-GIF cold-cache slot (no wrong-glyph flash), pop-in animation gated on real src swap,
reduceMotionrespected.
Bug Fixes
- Folders missing from search: compaction retained files before folders (row-id order) — folders now retained first, then files fill remaining cache slots.
- First-keystroke desktop peek: quick-launch rows no longer hide instantly on typing (leftover pre-reconciliation hack) — window holds its height through the first search.
- Window lag on result reduction: 350ms shrink settle removed — window follows content instantly (apps-only grid shrinks included).
- Acrylic flash on resize: viewport pre-rasterization (above) — was the blank-WebView → backdrop show-through.
- Stale accent/theme: re-detected in the Show handler; acrylic tint re-applied while invisible.
- Selection/context actions on reused rows: handlers read live
dataset.index+ current row snapshot. - Pin/unpin icon staleness:
set_status_text_and_refreshpushes full state for pin/unpin/add; pure status messages use lightweightApplyStatus(Copy Path no longer re-renders results). - Context menu: Run-as-admin hidden on folders; dividers auto-hidden when adjacent sections empty.
- Tantivy diagnosability: open-failure, reset, and committed-doc logging.
- (earlier, unreleased): click-outside instant hide (WH_MOUSE_LL), 450→150ms deferred-hide cut, grid arrow-key navigation, Painted show gate.
Architecture
- Sizing pipeline simplified: JS measures once per render, posts
immediate:true; host applies synchronously and re-asserts the oversized viewport after wry's WM_SIZE snap.
Commit Log
4b43099fix(overlay): re-detect accent color + theme on every show26bdadffix(overlay): keep quick-launch rows visible during first search - no shrink gap695bf6bstyle(overlay): true vertical centering of power button in footer450bd50style(overlay): absolutely center footer hints - power button no longer offsets the hint groupb8efc0bfix(overlay): immediate shrink/small-grow resize - no window lag behind contentdf33d78fix(overlay): pre-rasterize WebView viewport at max height - kills acrylic flash on resizeb4315c2perf(overlay): keyed row reconciliation + stable window height during typing6c747fbfix(overlay): folder retention in cache fallback, tantivy hardening, context menu polish, lightweight status pushes60dad1ffix(overlay): drop publisher from grid tiles, shrink to 96px - kills empty-gap lookecfd1a6fix(overlay): grid title min-height caused name-publisher gap - bottom-anchor label block instead1ea8682fix(overlay): uniform grid tile height 112px - square vs tall variance from content-driven rows32e6633fix(overlay): grid titles nowrap clipped long names - 2-line clamp + min-height for row alignmentae069b0fix(overlay): grid tile hover lift clipped by list scroll container top edge - use border+bg hover, add grid top padding51e7d06feat(overlay): high-batch design polish - selection transition, row entrance stagger, grid tiles, system accent, theme apply fix48300d9docs: design quality audit0c49228fix(overlay): Painted show gate - don't resurrect window after click-away during show window061c1effeat(overlay): WH_MOUSE_LL click-outside detection - instant hide on real clicks, flap-proof2e5cc9dfix(overlay): cut deferred outside-click hide delay 450ms -> 150ms - no perceptible freezea78b3befix(overlay): grid arrow-key navigation + deferred hide on outside click during focus gracee1958c4chore: work in progress