Skip to content

feat: Mod browsing UX improvements - #78

Open
Blakenator wants to merge 5 commits into
ArmchairDevelopers:ver/beta10from
Blakenator:feat/mod-manifest-ux
Open

feat: Mod browsing UX improvements#78
Blakenator wants to merge 5 commits into
ArmchairDevelopers:ver/beta10from
Blakenator:feat/mod-manifest-ux

Conversation

@Blakenator

@Blakenator Blakenator commented Jul 28, 2026

Copy link
Copy Markdown

Problem

The Mod Browser & Installed Mod lists have a few papercut UX issues that make it difficult to reason about your installed mods. Some of the pain points are:

  • One mod downloaded from the Mod Browser can result in multiple mods being added to the list, making it really tricky to remember/figure out which mods came from which Mod Browser listing after a while
  • Once downloaded, there's not currently a way to go to the Mod Browser page for a given installed mod. This means that if you want to check for updates for a mod, you have to search and find the mod again
  • When browsing mods to install in the Mod Browser, it's really difficult to figure out which versions of mod files are the latest ones, and which files correspond to a specific version. This means that if you have to use an older version of a mod, it's not currently possible to see which specific files correspond to that version (as opposed to an earlier version) or even which version is the next most recent to use (dates aren't shown either).
  • [internal] we have no persisted metadata mapping downloaded & extracted mod files to their original mods, so any features that depend on this are not possible to build reliably

Implemented Changes

This PR consists of multiple changes to try to improve these issues:

  1. [internal]
    a. add a mod Manifest file & persistence handler that stores a mapping from mod files -> mod id, and also mod id -> mod metadata (title, last downloaded, etc). This acts as a source of truth for the current installed mods, and is not mandatory for all mods (all features built on this manifest are hidden when an entry is not detected)
    b. Also included (but not required) is a mod manifest backfill script to try to match up existing mod files to their nexusmods id
  2. [UI]
    a. [Installed Mods] Groups the installed mod list by mod ID. When multiple mod files exist for the same mod present them as a collapsible group. When only one mod file exists, it maintains the current row UI
    b. [Installed Mods] Adds a button in the mod details pane (right side pane when a mod is selected) to go to the Mod Browser page for the selected mod (when the mod id is available via the manifest)
    c. [Mod Browser] Groups the mod files in the Mod Details pane (right side) by version, and adds the upload date in each row

Mod Browser details (grouped):
kyber mod changes

Mod list with grouped and ungrouped rows:

Kyber.Launcher.2026-07-27.16-38-18.-.Trim2.mp4

Testing

  • Verified that mods downloaded via the download manager persist the mod manifest file entries correctly
  • Verified that mods with manifest entries and multiple files are grouped together correctly
  • Verified that mods with manifest entries have a "Go to mod browser" button in their details pane, and that it navigates to the correct page
  • Verified that mods without manifest entries still display correctly, are interactable, and do not show the new "Go to mod browser" button
  • Verified that the mod backfill only runs once on app startup, that only mods without manifest entries are backfilled, and that mods where the heuristic-based matching fails do not break/crash/corrupt the app
  • Verified that mod files are correctly grouped and sorted, and that upload dates are listed

- Add nexus_mod_manifest.json for tracking installed mod to NexusMods ID mappings
- Add ModManifestBackfillService: one-time GQL backfill for pre-existing mods
- Add mod list grouping by original NexusMods mod ID with collapsible sections
- Add 3-tier NexusMods ID resolution in mod info box (manifest, link, title)
- Add 'View on NexusMods' button when mod ID is resolved
- Add installed version badge on mod browser tiles
- Group mod file downloads by version in mod details
- Pass mod metadata through download dialog for manifest
- Extract shared ModService.readManifest/writeManifest helpers
Previously grouped by (version, date, category), causing files with the
same version but different upload dates to appear as duplicate groups.
Now grouped by version alone — all files sharing the same version are
collapsed into a single group regardless of upload timestamp.
- Add ModService.readManifest(), readManifestSection(), writeManifest(),
  manifestPath for centralized manifest access
- Replace sync I/O with async variants in backfill, cubit, and info box
- Remove duplicate backfillAll call in constructor (was running on empty list)
- Rename _trySearch to _searchModAndMatchVersion
- Add fine-level logging to GQL search error path
- Remove unused dart:convert/dart:io imports
@Blakenator
Blakenator requested a review from 7reax as a code owner July 28, 2026 01:55
…strator

- Encode mod metadata (name, version, modId) through download requests
- Write to nexus_mod_manifest.json at download-complete time
- Snapshot-based file detection for new .fbmod files after extraction
- Add reliability fix: push immediate status update after enqueue
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