Skip to content

fix(web): keep large provider model catalogs responsive - #99

Merged
PsychedelicShayna merged 1 commit into
nightlyfrom
fix/provider-settings-freeze
Oct 20, 2026
Merged

PsychedelicShayna merged 1 commit into
nightlyfrom
fix/provider-settings-freeze

Conversation

@PsychedelicShayna

@PsychedelicShayna PsychedelicShayna commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

What

Use the existing LegendList virtualizer for provider model settings instead of mounting every model switch and tooltip. Preserve full-catalog filtering, favorites, ordering, hidden preferences and custom-model reveal. No dependency, pagination workflow or provider-setting default changes.

Why

Refs #67. The installed c1d0d29 artifact mounted 1715 model rows and about 40000 DOM elements. Opening Providers produced a 5396ms renderer task; the host samples had 62–78% idle CPU. The saved CPU profile attributes substantial time to scroll-area focus/ARIA handling, DOM insertion and garbage collection.

This is confined to the model section shared by web and desktop. Mobile uses separate native settings and is unchanged; the behavior applies to every provider and local/remote environments without a contract change. Settings remain reachable and reversible; no startup or composer path changes.

Testing

  • Actual private installed Electron :10 baseline:5396ms blocking task,1715 rows; screenshot and CPU profile retained for matching-release evidence upload.
  • ProviderModelsSection.test.ts:3passed. ProviderInstanceCard.test.ts:2passed,2existing static-markup failures whose fixtures omit the now-optional Codex enabled flag. Separate test-only cleanup removes the wording/class pins, not a runtime workaround.
  • Web package tsc --noEmit passed.
  • Targeted formatting passed for the component, its user guidance and upstream-touch ledger.
  • Installed after-proof passed at 76dba7c after fix(web): refresh virtual model rows after preference changes #101: longest measured renderer task 5396 → 185 ms; 1715 → 16 mounted rows. Full-catalog filtering, favorite/visibility changes, custom-model editing/reorder/removal and a small catalog passed. Proof JSON.

  • vp check and vpr typecheck pass (CI runs both; locally run only the checks for the touched scope, per AGENTS.md › Verifying) — web typecheck and scoped formatting passed; full-repo commands intentionally not run.
  • Tested locally — measured installed baseline and ran the focused checks above.
  • Before/after images (video for motion) uploaded to GitHub for UI changes, not committed (if user-facing) — before, installed, video.

GPT-6 Astra (openai-codex/gpt-6-astra), NeoPi harness.

Render provider model settings through the existing LegendList virtualizer instead of mounting every switch and tooltip. Keep filtering and ordering over the complete catalog, and reveal newly added custom models by index even when their rows are not mounted. Reuse the model/font picker scrolling pattern without adding a pagination workflow or dependency.

The installed c1d0d29 renderer stalled for 5396 ms while mounting 1715 model rows and about 40000 DOM elements. Host samples had 62–78% idle CPU. The CPU profile attributes substantial time to scroll-area focus handling, ARIA-label handling, DOM insertion and garbage collection. Recorded the baseline profile and screenshot outside the worktree.

The three ProviderModelsSection tests and two model-derivation tests passed; two existing ProviderInstanceCard static-markup assertions failed on auth/status wording because their Codex fixtures omit enabled after the fresh-default change. They are outside this rendering change and are being removed separately under the repository's test policy. The web package typecheck passed. Targeted formatting passed for the three changed files. Installed after-proof follows the merged artifact build.

Refs #67

Model: openai-codex/gpt-6-astra
Co-authored-by: GPT-6 Astra <noreply@openai.com>
@PsychedelicShayna PsychedelicShayna added bug Something isn't working priority: p1 High value or prerequisite for several issues mergeable Meets this repository's documented merge criteria; who merges is policy labels Oct 20, 2026
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Oct 20, 2026
@PsychedelicShayna
PsychedelicShayna merged commit fcb2e67 into nightly Oct 20, 2026
22 of 26 checks passed
PsychedelicShayna added a commit that referenced this pull request Oct 20, 2026
…changes (@PsychedelicShayna)

Confidence: 90%. Fixes the installed #99 stale-row regression at the virtualizer invalidation boundary. Web typecheck and targeted formatting passed. The unchanged model behavior tests passed 5/5 on the integrated predecessor. Installed after-proof remains in progress; no startup or persistence changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working mergeable Meets this repository's documented merge criteria; who merges is policy priority: p1 High value or prerequisite for several issues size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant