github hankscafe/omnibus v1.1.0-beta.071
Omnibus v1.1.0-beta.071

one hour ago

v1.1.0-beta.071 - perf: virtualize the library grid + list so scrolling stays smooth as it grows

πŸ–ΌοΈ Windowed rendering for both library views

  • The library rendered EVERY accumulated card in the DOM (infinite scroll appended without bound) and re-rendered the whole list on each page-append, so scrolling got laggier the deeper you went β€” a client-side cost the earlier query/index work couldn't touch. Switched both views to react-virtuoso so only the on-screen rows exist in the DOM:
    • Grid view β†’ VirtuosoGrid (useWindowScroll) with the existing responsive grid classes as listClassName; the card JSX is unchanged, just moved into itemContent.
    • List view β†’ TableVirtuoso (useWindowScroll) with a module-scoped components object (stable identity so rows don't remount) and a context carrying selection state for per-row click/highlight; header, cells, badges and actions unchanged.

πŸ” endReached replaces the IntersectionObserver

  • Infinite loading is now driven by Virtuoso's endReached (still paused in selection mode, matching the old sentinel that was hidden while selecting). Removed the observer/lastElementRef; the "Loading more…" footer now keys off loadingMore.

πŸ“¦ Dependency

  • Added react-virtuoso@^4.18.10 (dependencies + package-lock, installed with --legacy-peer-deps to match the existing next-auth/nodemailer peer setup so Docker's npm ci resolves it).

βœ… Verification

  • tsc clean; eslint . 0 errors; vitest 298 passed; next build compiled + generated all 80 pages (incl. /library). Visual/interaction behavior (grid columns per breakpoint, sticky list header, row selection, scroll-to-top on filter change) not auto-verifiable β€” confirmed buildable; needs an eyeball in the running container.

Don't miss a new omnibus release

NewReleases is sending notifications on new releases.