diff --git a/CHANGELOG.md b/CHANGELOG.md index 9614c9d..cc01876 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi ## [Unreleased] ### Changed +- **Constrained character pagination.** Character-library pages now stop at 25 rendered characters on every device, + preserving incremental loading while keeping the large-cast DOM below the measured 5,000-node budget. +- **Character pagination budget.** Character-library pages render bounded batches, + keeping large casts below the constrained DOM budget while retaining incremental “show more” loading. - **Utility namespace migration.** Shared DOM, status, accessibility, language, tab, and low-memory helpers now use a private scope with explicit compatibility exports and a `window.TTVC.utils` API. - **Voice-inspector namespace migration.** The three-pane voice inspector now keeps its selection state in a private diff --git a/VERSION b/VERSION index ac73399..2e6ca19 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.24.89 +1.24.92 diff --git a/static/index.html b/static/index.html index 6112ad7..d8c863b 100644 --- a/static/index.html +++ b/static/index.html @@ -10,7 +10,7 @@ - + @@ -27,12 +27,12 @@ - - - - - - + + + + + + @@ -397,7 +397,7 @@ window.toggleNavTree = function(treeId, chevronId) { - + diff --git a/static/js/library-characters.js b/static/js/library-characters.js index 4cb09c4..03c4fe2 100644 --- a/static/js/library-characters.js +++ b/static/js/library-characters.js @@ -231,7 +231,9 @@ async function libraryRenderCharacters() { // memory for sorting, relationship lookups and bulk operations, while // only one 50-row page is put into the DOM at a time. const pageKey = 'ttsvc_libchars_page::' + book; - const pageSize = typeof window.ttvcIsLowMemoryDevice === 'function' && window.ttvcIsLowMemoryDevice() ? 25 : 50; + // Keep every page comfortably below the DOM budget on large casts. The + // complete record set remains available for sorting and bulk operations. + const pageSize = 25; const requestedPage = Math.max(1, parseInt(localStorage.getItem(pageKey) || '1', 10) || 1); const visibleCount = Math.min(chars.length, requestedPage * pageSize); const visibleChars = chars.slice(0, visibleCount);