Sidebar
Browse view
Cmd+K
Mobile pages
Search overlay
Journal cal
[[ autocomplete
CSS config
Python settings
9 components × 10,000 rows = 90,000 objects in heap per mount
listSummary()
SELECT * → all 10,000 rows
OOM at 7,600
Postgres
10k pages, 90k blocks
After: each component gets a budget
Sidebar
~25 rows
Browse
100/page
Cmd+K
50 rows
[[ autocomplete
prefix → ~20
Journal cal
3k (5min stale)
Mobile
200 rows
Search
30 rows
Settings
1 row
Server does the filtering — LIMIT + WHERE, not client JS
Max ~200 rows in heap at once