Skip to content

fix(core): admit list items under per-item text quotas - #25

Merged
GeekCmore merged 1 commit into
mainfrom
fix/list-item-text-quota
Sep 20, 2026
Merged

GeekCmore merged 1 commit into
mainfrom
fix/list-item-text-quota

Conversation

@GeekCmore

Copy link
Copy Markdown
Collaborator

Summary

  • /sessions in a session-heavy directory failed admission with Mayfly UI text exceeds 20000 characters, rendered as the overlay's content: eagerly-admitted list.items (≤200 rows) charged every row's id/label/detail/searchText/parentId to the shared tree text budget, so ~80+ session rows (~250 chars each) exhausted it.
  • Larger lists passed untouched because lazy admission already isolates each item under a fresh validationState(). listItem now creates that per-item state itself at all call sites (list.items, form select/multiselect options, lazy rows) — aggregate row text can no longer exhaust the tree budget while each item stays individually capped.
  • Strict eager semantics unchanged: malformed items still reject the whole tree, uniqueIds and tree-cycle checks still run on ≤200-item lists.

Test plan

  • New regression spec: 120-row list + 120-option select over the shared budget admit cleanly; a single >20000-char item still trips MAYFLY_LIMIT_EXCEEDED
  • pnpm run verify:changed — lint, typecheck, build, 2488 tests, 100% coverage on changed files
  • PTY run of dsh --profile mayfly-scroll-perf in a 103-session directory: /sessions renders rows, tree disclosure, ← current badge, filter hints — no quota error
  • Human acceptance: /sessions in your session-heavy directory, plus a nearby picker (/plugin, /model)

Generated with Devin

Eagerly admitted list items and select options charged their aggregate
text to the shared tree budget, so a picker with ~80+ data rows (the
/sessions panel in a populated directory) was rejected with "Mayfly UI
text exceeds 20000 characters" while larger lists passed untouched
through lazy admission. Each item now validates under its own state —
the same isolation lazy rows already get — keeping strict eager faults
while the tree budget bounds only non-item text.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@GeekCmore
GeekCmore merged commit 57e8373 into main Sep 20, 2026
7 checks passed
@GeekCmore
GeekCmore deleted the fix/list-item-text-quota branch September 20, 2026 08:05
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