aboutsummaryrefslogtreecommitdiffstats
path: root/frontend-vanilla/src/regression.test.ts
Commit message (Collapse)AuthorAgeFilesLines
* Refine Settings UI: Fix dark mode text colors, split font controls for ↵Adam Mathes8 days1-1/+3
| | | | headers and body, update monospace stack, and soft-deprecate tags
* Fix regression: mark-as-read not triggering on window scrollAdam Mathes8 days1-0/+44
|
* fix: replace IntersectionObserver with scroll-position check for infinite scrollClaude8 days1-35/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | The IntersectionObserver approach for infinite scroll was unreliable — items would not load when scrolling to the bottom in v3, while v1's polling approach worked fine. The issue was that IntersectionObserver with a custom root element (main-content, whose height comes from flex align-items:stretch rather than an explicit height) didn't fire reliably, and renderItems() being called 3 times per fetch cycle (from both items-updated and loading-state-changed events) kept destroying and recreating the observer. Replace with a simple scroll-position check in the existing onscroll handler, matching v1's proven approach: when the user scrolls within 200px of the bottom of #main-content, trigger loadMore(). This runs on every scroll event (cheap arithmetic comparison) and only fires when content actually overflows the container. Remove the unused itemObserver module-level variable. Update regression tests to simulate scroll position instead of IntersectionObserver callbacks, with 4 cases: scroll near bottom triggers load, scroll far from bottom doesn't, loading=true blocks, and hasMore=false hides sentinel. https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
* fix: store sentinel IntersectionObserver in module-level variable to prevent GCClaude8 days1-0/+95
| | | | | | | | | | | | | | | | | | The load-more sentinel observer was assigned to a local `const observer` that fell out of scope after renderItems() returned. Without a persistent JS reference, engines can garbage-collect the observer, silently breaking infinite scroll (no more items loaded on scroll). Fix: assign to the existing module-level `itemObserver` variable, which is already disconnected/replaced at the top of each renderItems() call. Add three regression tests in regression.test.ts that use a class-based IntersectionObserver mock to capture the callback and verify: - sentinel visible → loadMore fires - sentinel visible while loading → loadMore suppressed - hasMore=false → no sentinel rendered, no loadMore https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
* Add regression tests for NK-t8qnrh, NK-mcl01m, NK-z1czaq (NK-26sdqp)Claude9 days1-1/+91
| | | | | | | | | | - NK-t8qnrh: test that item-description renders links in feed items - NK-mcl01m: test sidebar section order (filters → search → feeds → tags), and presence of "+ new" link - NK-z1czaq: test that sidebar and main-content are siblings (overlay layout) - Import renderLayout and createFeedItem into regression test suite https://claude.ai/code/session_01DpWhB9uGGMBnzqS28HxnuV
* Update V2/V3 'mark as read' logic to require item bottom to be above ↵Adam Mathes9 days1-14/+45
| | | | viewport, while keeping V1 unchanged
* Update frontend build artifacts and fix test lint errorsAdam Mathes9 days1-1/+1
|
* Add regression test for scroll-to-read functionalityAdam Mathes9 days1-0/+138