Skip to content

Hold back HTML tables above a row limit and summarise oversized index tabs - #227

Merged
abrignoni merged 1 commit into
mainfrom
feat/html-report-row-limit
Sep 19, 2026
Merged

abrignoni merged 1 commit into
mainfrom
feat/html-report-row-limit

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Holds back HTML tables above a row limit and summarises oversized index tabs.

  • Above 50,000 rows an artifact's page carries a notice with the row count, the limit and where the complete rows are (the LAVA database and the TSV export) instead of the table. TSV, timeline, KML and LAVA output are unchanged, the page stays in the side bar, and the index Details tab lists every held-back table with a link. --html_row_limit changes the limit; 0 writes every table.
  • Measured in Chromium on a 16-column messages page: 100,000 rows were usable after 25.8 s with the browser at 1.7 GB; at 150,000 the table script failed with "Maximum call stack size exceeded", the spinner never cleared and the browser held 9 GB. A 1.2 million row page was 415 MB. On a full run of a public iOS 17 image, eight tables were above the limit, the largest a 6.65 million row FSEvents page of 2.1 GB; the report's HTML folder went from 5.2 GB to 1.6 GB and its index from 16.2 MB to 3.9 MB, with every LAVA table and TSV the same.
  • Above 2 MB the run log tab keeps 200 lines from each end and the processed files tab keeps each artifact's patterns with their counts and first 200 paths, both linking to the full file. A 43 MB list of 229,869 paths opened fast but clicking its tab blocked the page for over a minute at 12 GB. On a real run the DLEAPP WhatsApp desktop index went from 8.9 MB to 139 KB with the same rows everywhere else.
  • The LAVA-only notices no longer describe LAVA as unreleased. Tests cover the notice, the complete TSV and LAVA rows behind it, the index entry and the summarised tabs.

Same change in all five cores.

🤖 Generated with Claude Code

… tabs

Every row of every artifact went into its HTML page, and the table script
then read them all back into memory. Measured in Chromium on a 16-column
messages page: 25,000 rows were usable 5.9 s after opening, 50,000 in 11.3 s
and 100,000 in 25.8 s with the browser holding 1.7 GB for the page; at
150,000 the DataTables call failed with "Maximum call stack size exceeded"
inside jQuery, the loading spinner never cleared and the browser held 9 GB.
A 1.2 million row page was 415 MB. The index copied the run log and the
processed files list into two tabs: a 43 MB list of 229,869 paths opened in
under a second, but clicking its tab laid out 230,000 list items, blocked
the page for over a minute and took the browser to 12 GB.

write_artifact_data_table now writes a notice instead of a table above
HTML_TABLE_ROW_LIMIT (50,000): the row count, the limit, and where the
complete rows are, the LAVA database and the TSV export. TSV, timeline, KML
and LAVA output are unchanged, the page keeps its place in the side bar, and
the index Details tab lists every held-back table with a link. A new
--html_row_limit argument changes the limit; 0 writes every table. Above
2 MB the run log tab keeps 200 lines from each end and the processed files
tab keeps each artifact's patterns with their counts and first 200 paths,
both linking to the full file. The LAVA-only notices no longer describe LAVA
as unreleased.

A 60,000-row store now writes a 6 KB page in place of a 21 MB one with the
same TSV and LAVA rows; a 25,000-row store's page, TSV and LAVA tables are
byte-identical to before. On a full run of a public iOS 17 image eight
tables were above the limit, the largest a 6.65 million row FSEvents page of
2.1 GB; the HTML folder went from 5.2 GB to 1.6 GB and the index from
16.2 MB to 3.9 MB with every LAVA table and TSV the same. Tests cover the
notice, the complete TSV and LAVA rows behind it, the index entry, and the
summarised tabs.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@abrignoni
abrignoni merged commit b16a295 into main Sep 19, 2026
8 checks passed
@abrignoni
abrignoni deleted the feat/html-report-row-limit branch September 19, 2026 16:51
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