feat: Mod browsing UX improvements - #78
Open
Blakenator wants to merge 5 commits into
Open
Conversation
- 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
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
Implemented Changes
This PR consists of multiple changes to try to improve these issues:
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
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):

Mod list with grouped and ungrouped rows:
Kyber.Launcher.2026-07-27.16-38-18.-.Trim2.mp4
Testing