Skip to content

Feature: New Mod Browser + In-game Steam Workshop browser - #80

Merged
inmny merged 18 commits into
WorldBoxOpenMods:masterfrom
KhromeHearts:feature/mod-hub
Oct 18, 2026
Merged

inmny merged 18 commits into
WorldBoxOpenMods:masterfrom
KhromeHearts:feature/mod-hub

Conversation

@KhromeHearts

@KhromeHearts KhromeHearts commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

1. New Stuff

  • Old mod browser has been scrapped, and has been replaced with the Manage Mods window. A fresher looking mod browser with more functionality
  • Steam tab on the side that opens the Download Mods window, allows you to install workshop mods while game is running

2. Manage Mods Window

  • Different filters for mods:
    • Show: All mods, Enabled Mods, Disabled Mods, Mods that failed to load, Mods with an update on steam,
    • Sorts : Name, A to Z, Name, Z to A, Recently changed
    • Search by: Mod name, Author
  • Enable all / Disable all mods buttons: asks first, applies changes on restart
  • More info button: opens Mod Info with the mod's description (Workshop mods show their Steam page description)
  • Delete button: shows up on mods that are disabled. Deletes the folder, or unsubscribes if it's a Workshop mod
  • Clicking the mods icon 8 times still opens the updated workshop uploading procedure

3. Download Mods Window

  • Different filters for mod downloads:
    • Sort: Newest First, Name, A to Z, Recently Updated First, Most Subscribed First, Trending: Most Popular This Week, Top Rated First
    • Updated Within: Anytime, The Last Week, The Last Month, The Last 3 Months, The Last Year
    • Show: All Mods, Downloaded, Not Downloaded, Updated Available
    • Categories : These are from the overhauled upload process categories, Gameplay, Traits, Civilizations, Items, Creatures, Buildings, Visuals, UI & QoL, Worldgen, Library / API
    • Ai Content: These are from the overhauled upload process Ai tags, Show All Mods, Hide Mods Tagged Ai-Made, Hide Mods Tagged Ai-Made or Ai-Assisted
    • Search by: Mod name, Author
  • Workshop Page Button: Opens up the mods workshop page
  • Reload List Button: Refreshes the mod list if its bugged, or for any reason
  • Download disclaimer on your first download

4. Code Cleanup

  • Removed the old ModListWindow, NewModListWindow and WorkshopModListWindow files

5. Misc Info

  • Hovering over mod names in the Manage Mods window, shows the authors name
  • Hovering over mod names in the Download Mods window, show the authors name and stats about the mod
  • In the Manage Mods Window, little icons beside the mods title, tell you whether your mod from Steam or your Local Folders.
  • Everything uses the game's own sprites and layout groups instead of hard-coded positions
  • I am looking into adding the download workshop mods functionality for Gamebanana
  • Claude was used in the making of the chinese translations, and the all of the Ui

Screenshots

Manage Mods Window

image

Download Mods Window

image

Plain logic behind the new Manage Mods window:
- InstalledMod: snapshot of a recognized mod, its status (Enabled,
  Disabled, Failed, Missing dependency, Restart required) derived from
  NML's load state and saved disabled flag, and where it was found.
- InstalledModQuery: filter, search (name or author) and sort.
- ModHubSettings: preferences in NML/mod_hub_settings.json. Search text
  is not stored.
- ModManagerService: reads AllRecognizedMods and applies choices through
  the existing TryEnableMod / DisableMod paths.
- ModHubWindow: entry menu, one entry per window, plus NML's version.
- ModManagerWindow: pooled list of every recognized mod with filter,
  sort, search, Enable all / Disable all (confirmed, applied at the next
  start) and Open Mods folder.
- ModManagerRow: status badge that toggles the mod, source icon, info
  button, config button only when the config has items, reload button in
  developer mode, and the 8-click shortcut to the upload window.
- ModInfoWindow: status, source, folder, tags, dependencies with their
  state and the description, shown as plain text.
- ConfirmWindow: small reusable confirmation dialog.

Locale keys are appended at the end of en, cz and ch. Tooltip keys are
lower case because the game snake-cases tooltip keys before the lookup.
The NML_ModsList button now opens the Mod Hub. ModListWindow and
WorkshopModListWindow are still created and registered by id, so
anything that opens them directly keeps working; the Hub links to the
Workshop subscriptions window until the Download Mods screen exists.
Browse every NML mod on the Workshop (fetched once, then filtered and
sorted locally), download with a one-time security notice, cancel, and
update all. New downloads are saved as disabled and never compiled from
the browser. Manage Mods shows Workshop updates and can unsubscribe.
Downloads that Steam finishes while the game is closed stay disabled,
and disabled BepInEx Workshop mods are no longer linked at startup.
Upstream now opens ModUploadModeWindow from the 8-click shortcut.
Moved the Hub's spacing, colours, font sizes and sprites into one file
(ModHubStyle). The Hub window uses layout groups now instead of
hard-coded positions, and sizes itself to fit.
Rows use the game's rounded panel now, with a status pill you click to
turn the mod on or off. The author shows when you hover the title.
Mod Info only shows the description, plus a warning when the mod has a
problem. Dropped the custom sprites, everything uses the game's own
sprites now.
Rows look like the ones in Manage Mods. Hovering a title shows the
mod's details. Added a small progress bar while loading, and the
category filter is now a panel that opens over the list.
For a mod installed from the Steam Workshop, Mod Info shows the
description from its Workshop page once Steam sends it, as plain text
without BBCode, instead of the one in mod.json. Descriptions are kept
for the game session.
NML's button opens Manage Mods instead of the Hub menu. Both windows
show tabs on their left edge, in the container the game uses for its
own window tabs, to switch between them. NML's version moves under the
Manage Mods buttons, without the commit.

Also: the source icon's tooltip says where a mod is loaded from instead
of its folder path, mod titles no longer play the click animation while
scrolling, and the old ModListWindow and NewModListWindow are removed.
WorkshopModListWindow was only opened from the removed ModListWindow.
Also removes the locale keys only the removed windows used, and the
style kit's window resizing and clickable cards, which only the Hub menu
used.
The click animation scale is a multiplier of the normal size; 0 shrank
the text to nothing for a moment. Use 1, so it keeps its size.
Toolbar buttons are 20 pixels instead of 16, and the search boxes fill
their line, so the clear button lines up with the end of the strip.
Switching Hub tabs replaces the current window instead of adding a step
to the back button's history.
A disabled or failed mod gets a trash button next to its "?" button.
After a confirmation it deletes the mod's folder when it sits directly in
the Mods folder, or unsubscribes from a Workshop mod so Steam deletes it.
BepInEx plugins and mods in other folders have no trash button.

Also lets the mouse wheel and drags scroll the lists while the pointer is
over a row's title or buttons, which caught the scroll events before.
Replaces the drawn trash can with the game's delete-world icon, so the
Hub adds no images of its own.
Copilot AI balanced review requested due to automatic review settings October 17, 2026 14:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Download failures can bypass disabled-by-default protection, and registration, state synchronization and resource-lifetime defects remain unresolved.

14 open issues
What changed in this PR

Replaces NeoModLoader’s legacy mod lists with Manage Mods and an in-game Steam Workshop browser.

Changes:

  • Adds searchable, filterable mod management and Workshop downloads.
  • Introduces download tracking, persisted preferences, thumbnails and mod details.
  • Removes legacy windows and updates English and Chinese translations.
File Description
utils/​WorkshopThumbnails.cs Adds thumbnail downloading and caching.
utils/​ModInfoUtils.cs Handles pending downloads during startup.
ui/​WorkshopModListWindow.cs Removes legacy Workshop window.
ui/​UIManager.cs Registers the new windows.
ui/​prefabs/​ModManagerRow.cs Adds installed-mod controls.
ui/​prefabs/​ModListItem.cs Removes legacy row prefab.
ui/​prefabs/​ModBrowserRow.cs Displays Workshop listings and downloads.
ui/​prefabs/​CategoryFilterPanel.cs Adds category selection.
ui/​NewModListWindow.cs Removes unused replacement window.
ui/​ModManagerWindow.cs Adds Manage Mods window.
ui/​ModListWindow.cs Removes original mod list.
ui/​ModInfoWindow.cs Displays descriptions and Workshop actions.
ui/​ModHubUI.cs Shares navigation and UI helpers.
ui/​ModHubStyle.cs Centralizes styling and layout.
ui/​ModBrowserWindow.cs Adds Workshop browsing interface.
ui/​ConfirmWindow.cs Adds action confirmation dialog.
services/​WorkshopTags.cs Defines Workshop classification tags.
services/​WorkshopDownloadQueue.cs Coordinates downloads and cancellation.
services/​WorkshopCatalog.cs Loads catalog pages and trending ranks.
services/​WorkshopAuthorNames.cs Fetches and caches author names.
services/​ModWorkshopServiceWindows.cs Adds Windows Workshop operations.
services/​ModWorkshopServiceUnix.cs Adds Unix Workshop operations.
services/​ModWorkshopService.cs Exposes the platform backend.
services/​ModManagerService.cs Implements installed-mod management.
services/​ModListingQuery.cs Filters and sorts Workshop listings.
services/​ModListing.cs Defines listing and installation data.
services/​ModHubSettings.cs Persists preferences and pending downloads.
services/​ModDownloadService.cs Connects downloads to mod registration.
services/​IPlatformSpecificModWorkshopService.cs Extends the backend contract.
services/​InstalledModQuery.cs Filters and sorts installed mods.
services/​InstalledMod.cs Models installed-mod status and source.
resources/​locales/​en.json Updates English interface text.
resources/​locales/​cz.json Updates Simplified Chinese interface text.
resources/​locales/​ch.json Updates Traditional Chinese interface text.
resources/​commit Updates embedded commit identifier.
api/​AbstractListWindow.cs Updates the documentation example reference.

Review effort: Balanced

Comment thread services/ModDownloadService.cs
Comment thread services/ModDownloadService.cs
Comment thread services/ModDownloadService.cs
Comment thread services/ModManagerService.cs
Comment thread services/ModManagerService.cs
Comment thread ui/ModBrowserWindow.cs
Comment thread ui/ModHubUI.cs
Comment thread ui/ModInfoWindow.cs Outdated
Comment thread utils/WorkshopThumbnails.cs
Comment thread utils/WorkshopThumbnails.cs
copilot suggested fix for the "more info" UI, which displays steam workshop descriptions. If a player opened and exit out of it, and then went back into it, instead of seeing the the workshop description, it'll just be the `mod.json` description

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@inmny
inmny merged commit 7638405 into WorldBoxOpenMods:master Oct 18, 2026
2 checks passed
@MelvinShwuaner

Copy link
Copy Markdown
Contributor

sup RTX

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.

4 participants