Skip to content

feat: clean up BetterHUD settings menu#19

Draft
dsnsgithub wants to merge 8 commits into
mainfrom
cursor/cleanup-settings-menu-73d4
Draft

feat: clean up BetterHUD settings menu#19
dsnsgithub wants to merge 8 commits into
mainfrom
cursor/cleanup-settings-menu-73d4

Conversation

@dsnsgithub

@dsnsgithub dsnsgithub commented May 8, 2026

Copy link
Copy Markdown
Owner

Summary

The BetterHUD config screen previously dumped all seven options for every module into one flat list, used a free-form text-search dropdown for the four-value Orientation setting, and exposed Custom X / Custom Y as unbounded integer text fields that were always interactive even when Custom Position was off. This PR reworks the cloth-config UI into a cleaner, more discoverable layout.

Changes

src/main/java/dsns/betterhud/ModMenu.java

  • Group each module's options into Position and Appearance sub-categories rather than a flat list of seven controls.
  • Replace the free-form string dropdown for Orientation with a cycling Selector that uses friendly labels (Top Left, Top Right, Bottom Left, Bottom Right).
  • Replace the unbounded Custom X / Custom Y integer fields with sliders that respect the existing 0-100 bounds and render as percentages.
  • Hide the Anchor selector while Custom Position is on, and hide the Custom X / Custom Y sliders while it is off, so only the relevant controls are interactive.
  • Add tooltips to every control explaining what it does.
  • Promote the per-module enable toggle to a top-level Enable <Module> switch with Enabled / Disabled labels via setYesNoTextSupplier.
  • Surface module-specific extras (e.g. Coordinates Decimal) in an Options sub-category.
  • Include the Scale control from main under Appearance.

No persisted setting names, types, or value formats changed, so existing betterhud.properties files continue to load unmodified.

Testing

  • Merged latest main (Stonecutter multi-version builds + concurrent launch-test CI).
  • ./gradlew :1.21:build :1.21.6:build :26.1:build :26.2:build — all variants build cleanly.
  • ./gradlew modrinthBundle — succeeds.
  • ./gradlew :launchtest:runProductionClientGameTest -PtestMcVersion=26.1 — client reaches a survival world and captures the HUD screenshot.
Open in Web Open in Cursor 

Reorganize the cloth-config UI for a less cluttered, more discoverable
settings screen:

- Group each module's options into 'Position' and 'Appearance'
  sub-categories instead of a flat list of seven controls.
- Replace the freeform string dropdown for Orientation with a cycling
  Selector and human-friendly labels (Top Left, Top Right, ...).
- Replace the unbounded Custom X / Custom Y integer fields with sliders
  that respect the existing 0-100 bounds and render as percentages.
- Hide Anchor when Custom Position is on, and hide Custom X/Y when it
  is off, so only the relevant controls are interactive.
- Add tooltips to every control explaining what it does.
- Show the Enable toggle as a top-level Enabled/Disabled switch with a
  clearer 'Enable <Module>' label.

Co-authored-by: Dominic Seung <dominic@seung.dev>
@dsnsgithub dsnsgithub changed the title Clean up BetterHUD settings menu feat: clean up BetterHUD settings menu May 8, 2026
@dsnsgithub dsnsgithub marked this pull request as ready for review May 8, 2026 00:44
claude and others added 4 commits July 2, 2026 11:46
The merge from main brought in the new per-module Scale setting, but
the reworked ModMenu builds its controls explicitly rather than
iterating over settings, so Scale would have been missing from the
config screen. Expose it as a double field in the Appearance group
with bounds read from the setting definition.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Lmeg4FeVuuYgrKUT7sPnPu
…gs-menu-73d4

Co-authored-by: Dominic Seung <dominic@seung.dev>
Bring in the Stonecutter multi-version build system and concurrent
launch-test CI from main. Re-add the Options sub-category for
non-standard per-module settings (e.g. Coordinates Decimal) that was
lost during the earlier Scale integration.

Co-authored-by: Dominic Seung <dominic@seung.dev>
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

The game launched, entered a survival singleplayer world with the HUD active, and opened the BetterHUD settings through Mod Menu, on every supported Minecraft version, for a0e9490. Each cell shows the survival world and the settings screen. A ❌ means that version's launch test did not produce that screenshot — check its job. Title-screen and mod-list screenshots and game logs are in the run artifacts.

1.21
BetterHUD on Minecraft 1.21
BetterHUD settings on Minecraft 1.21
1.21.1
BetterHUD on Minecraft 1.21.1
BetterHUD settings on Minecraft 1.21.1
1.21.2
BetterHUD on Minecraft 1.21.2
BetterHUD settings on Minecraft 1.21.2
1.21.3
BetterHUD on Minecraft 1.21.3
BetterHUD settings on Minecraft 1.21.3
1.21.4
BetterHUD on Minecraft 1.21.4
BetterHUD settings on Minecraft 1.21.4
1.21.5
BetterHUD on Minecraft 1.21.5
BetterHUD settings on Minecraft 1.21.5
1.21.6
BetterHUD on Minecraft 1.21.6
BetterHUD settings on Minecraft 1.21.6
1.21.7
BetterHUD on Minecraft 1.21.7
BetterHUD settings on Minecraft 1.21.7
1.21.8
BetterHUD on Minecraft 1.21.8
BetterHUD settings on Minecraft 1.21.8
1.21.9
BetterHUD on Minecraft 1.21.9
BetterHUD settings on Minecraft 1.21.9
1.21.10
BetterHUD on Minecraft 1.21.10
BetterHUD settings on Minecraft 1.21.10
1.21.11
BetterHUD on Minecraft 1.21.11
BetterHUD settings on Minecraft 1.21.11
26.1
BetterHUD on Minecraft 26.1
BetterHUD settings on Minecraft 26.1
26.1.1
BetterHUD on Minecraft 26.1.1
BetterHUD settings on Minecraft 26.1.1
26.1.2
BetterHUD on Minecraft 26.1.2
BetterHUD settings on Minecraft 26.1.2
26.2
❌ no survival screenshot
❌ no settings screenshot

* Update Minecraft dependency version range (#24)

* Update requirements formatting in README.md

* Add automated publish workflow for Modrinth and CurseForge (#26)

* Add on-demand publish workflow for Modrinth and CurseForge

Run the "publish" workflow from the Actions tab to release the current
mod_version: it builds every Stonecutter variant and uploads each release
jar as its own version on Modrinth (betterhudfabric) and CurseForge
(project 1375095) via mc-publish, selecting exactly the Minecraft
versions each jar covers from supported-versions.json.

- generate-matrices.sh gains a `publish` matrix (variant, java, per-jar
  game version list, and a human-readable range for the release name)
- inputs: changelog, release channel (release/beta/alpha), and platform
  selection (both/modrinth/curseforge)
- uploads run one variant at a time, oldest first, so the newest
  Minecraft build ends up as the most recent upload; a failure stops
  the remaining uploads
- fails fast if a selected platform's token secret (MODRINTH_TOKEN /
  CURSEFORGE_TOKEN) is missing, since mc-publish would otherwise skip
  it silently
- README release section updated accordingly

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gw2SqwSvrHSQcDDXSH2Vn9

* Match existing release title format ("Minecraft" in the range)

Titles now read e.g. "BetterHUD 2.1.1 (Minecraft 1.21-1.21.5)", matching
the convention of the existing uploads on Modrinth and CurseForge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Gw2SqwSvrHSQcDDXSH2Vn9

---------

Co-authored-by: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Repository owner deleted a comment from github-actions Bot Jul 8, 2026
@dsnsgithub dsnsgithub marked this pull request as draft July 8, 2026 01:40
dsnsgithub and others added 2 commits July 8, 2026 00:09
Extend the per-version client launch tests so that, after the survival
world check, the test opens Mod Menu's mod list and then BetterHUD's
config screen through Mod Menu's registered factory — the same path a
player takes via the Configure button — and screenshots both. This
end-to-end exercises the reworked cloth-config settings screen on every
supported Minecraft version with that version's exact Mod Menu build.

- gametest flavours (1.21.4+): open ModsScreen and the config screen
  after leaving the world, with mods-menu and settings screenshots.
- fallback flavour (1.21-1.21.3): drive the same screens from the tick
  state machine while in the pre-generated world.
- launchtest/build.gradle: compile against the per-version Mod Menu
  already launched via productionRuntimeMods.
- CI: fail a launch job when the settings screenshot is missing, and
  show survival + settings screenshots per version in the PR comment;
  mod-list screenshots stay in the run artifacts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Lmeg4FeVuuYgrKUT7sPnPu
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.

3 participants