Skip to content

fix: review fixes 01-1.1, 1.2, 03-3.1, 3.2, 3.3, 3.4, 3.9 - #77

Merged
daggerok merged 2 commits into
mainfrom
review/2026-10-perf-fixes
Oct 12, 2026
Merged

daggerok merged 2 commits into
mainfrom
review/2026-10-perf-fixes

Conversation

@daggerok

Copy link
Copy Markdown
Owner

Review fixes from the 2026-10-11 code review (plans 01 and 03), applied with patch-brands-critical.py and patch-brands-perf.py; every anchor matched exactly once

Commits

  1. fix: 01-1.1+1.2+03-3.2 critical fixes
    • 01-1.1 holdings count as loaded only when every page loaded: a failed load is marked failed (no endless "Loading…"), deselect + reselect retries it, a load cancelled by deselecting resumes on the next selection
    • 01-1.2 fetchJson aborts after 30 s (headers and body)
    • 03-3.2 sheet pages are appended in place instead of concat copies (the tableView cache still invalidates: its signature carries the row count)
  2. perf: 03 sheet window, sort keys, delegation, incremental sheetView
    • 03-3.1 Holdings and History mount 300-row chunks that grow on scroll or click; filters, sort, exports still use every loaded row
    • 03-3.3 sort keys are computed once per row (same order as before: numbers, then 21-Aug-2026 dates, then numeric collation; empty values last)
    • 03-3.4 one delegated listener per event on the table body; Watchlist appends the next chunk instead of re-rendering everything
    • 03-3.9 sheet row objects are built once and reused while pages arrive

Checks run

  • bun install --frozen-lockfile, bun test, bun build --target=bun src/main.tsx --outfile=/dev/null, bun run build, git diff --check
  • .claude/tools/etfs/tc/check.sh: no type errors
  • browser (ui-std, built site): brand filters test, columns-uitest.ts, categories-uitest.ts: all 0 failed; console errors: none
  • Playwright check of the changed paths: select 3 funds through the delegated checkbox listener, Watchlist renders and grows on click with consecutive row numbers, fund link opens its Overview, Holdings of the largest fund mounts at most 2 chunks first and reaches every row by scrolling, sorting resets the window, unselect works; no console errors

Manual checks still worth doing

  • on the live site: a fund with thousands of holdings scrolls smoothly; Watchlist of 3+ large funds

WisdomTree results: 44pass unit tests; brand-uitest, columns-uitest, categories-uitest 0 failed; Playwright check 16 passed, 0 failed (UNIY AGGY DDWM, 6159 holdings rows)

01-1.1 a fund's holdings count as loaded only when every page loaded:
a failed or cancelled load is retried on the next selection instead of
leaving partial data marked complete
01-1.2 fetchJson aborts after 30 s
03-3.2 sheet pages are appended in place instead of concat copies
03-3.1 Holdings and History render in 300-row windows that grow on scroll
03-3.3 sort keys are computed once per row, not per comparison
03-3.4 one delegated listener per event type; Watchlist appends chunks
03-3.9 sheet row objects are built once and reused as pages arrive
@daggerok
daggerok merged commit b9c6c5d into main Oct 12, 2026
1 check passed
@daggerok
daggerok deleted the review/2026-10-perf-fixes branch October 12, 2026 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant