Skip to content

Fix Windows RAM display and bound unbounded version dropdowns - #23

Merged
TheUnknownThing merged 3 commits into
mainfrom
fix/issue-21-22-dropdown-ram-display
Nov 3, 2026
Merged

TheUnknownThing merged 3 commits into
mainfrom
fix/issue-21-22-dropdown-ram-display

Conversation

@TheUnknownThing

Copy link
Copy Markdown
Owner

Summary

Three fixes on one branch:

  • bug: RAM display is incorrect on windows #22 — RAM display on Windows: FrontendSystemMemoryService had no Windows platform reader, so it always fell back to GC heap stats and reported the launcher's own managed heap (~0.1 GB) as system-wide used memory, and computed automatic RAM allocation from a bogus "available" figure. It now queries GlobalMemoryStatusEx via the backend KernelInterop, matching the Linux/macOS readers.
  • feat: make forge/fabric, etc. choices collapsible #21 — unbounded mod-loader dropdowns: the install option cards (download-install and instance-install pages) rendered every Forge/Fabric/OptiFine version inline, stretching cards to thousands of pixels — slow fold animations and a page-flooding dropdown. Choice lists are now capped at 420px with an internal ScrollViewer; rows stay virtualized.
  • feat: make forge/fabric, etc. choices collapsible #21 (follow-up): the Download-tab installer catalogs (Forge / NeoForge / OptiFine / etc.) had the same problem in their grouped version sections; the same bound is applied there.

Testing

  • New unit tests: FrontendSystemMemoryServiceTest (platform-source preference, GB conversion, cache invalidation).
  • New E2E tests: SetupMemoryE2E (settings memory summary matches real system memory), InstallOptionsE2E and DownloadCatalogE2E (bounded, internally scrolling, virtualized lists; selection and collapse still work).
  • Full suites pass: 165 frontend unit tests, 42 E2E tests.

Fixes #22, fixes #21

🤖 Generated with Claude Code

TheUnknownThing and others added 3 commits November 3, 2026 11:13
FrontendSystemMemoryService only had Linux and macOS platform readers, so
on Windows it always fell back to GC.GetGCMemoryInfo()/GC.GetTotalMemory(),
which measures the launcher's own managed heap. The settings memory card
therefore showed the process heap (~0.1 GB) as system-wide used memory and
the automatic RAM allocation computed from a bogus "available" value.

Query GlobalMemoryStatusEx through the backend KernelInterop (already used
by the Windows runtime info source) so total/available physical memory are
real system-wide figures.

Adds a test seam (PhysicalMemoryBytesOverride + cache invalidation) with
unit tests, and an E2E test asserting the Setup-Launch memory summary
matches /proc/meminfo on Linux.

Fixes #22

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ling

The Forge/Fabric/OptiFine option cards on the download-install and
instance-install pages rendered every choice inline, so opening a loader
with hundreds of versions stretched the card to thousands of pixels: the
expand/collapse height animation took seconds and the open dropdown filled
the whole page.

Wrap each choice list in a ScrollViewer capped at 420px (10 rows) so the
card stays bounded, the list scrolls internally, and rows stay
virtualized. The shorter animated distance also makes folding feel
instant.

Adds an E2E test that seeds 120 Forge choices and asserts the bounded
viewport, internal scrolling, virtualization, selection after scrolling
to the end, and collapse back to header height.

Fixes #21

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…crolling

The Download tab installer catalogs (Forge, NeoForge, OptiFine, Fabric,
Quilt, ...) render grouped version sections as collapsible cards whose
entries were laid out inline, so a large group (e.g. Forge 1.20.1 with
dozens of builds) stretched the card to thousands of pixels, made the
expand/collapse animation crawl, and pushed the rest of the page away.

Apply the same treatment as the install option cards: cap each section's
list at 420px with an internal ScrollViewer so the card stays bounded
and rows stay virtualized.

Adds an E2E test seeding a 120-entry Forge section and asserting the
bounded viewport, internal scrolling, virtualization, and collapse back
to header height.

Refs #21

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@sclass53 sclass53 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Could merge and release v1.0.1.

@TheUnknownThing
TheUnknownThing merged commit 5b74423 into main Nov 3, 2026
3 checks passed
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.

bug: RAM display is incorrect on windows feat: make forge/fabric, etc. choices collapsible

2 participants