Conversation
- Add user-defined mod group storage and persisted collapsed group tracking to application settings - Add ModGroup model with generated identifier, default name, and ordered list of mod IDs. - Add Missing state to ModState enum to represent installed mods that are no longer found on disk. - Add grouped mod filtering and group management support in the main window view model, enabling group-based activation/deactivation and preserving pending update badges during refresh. - Add view model for mod group headers with observable state and commands for collapse toggling, renaming, and deletion - Add support for ghost mod items and grouping with missing mod status handling in the view model - Add group header support to the mod list view with an add-group button, collapsible group controls, rename/delete actions, and refined item template layout. - Add drag-and-drop support for mod items in the list view and generalize Mods and SelectedMod properties to broader enumerable item types.
- Limit workflow to dev branch and simplify CI job to perform a single dotnet build instead of multi-platform publish
- Add repository and homepage URL metadata to mod profile entries for auto-download and fallback browsing. - Add DownloadAndInstallFromUrlAsync method to mod installation service interface - Add ToDownload collection to ProfileDiff to include downloadable mod entries. - Add method to download and install a mod archive from a URL with progress reporting and temporary file cleanup. - Extend profile diff logic to queue missing active mods for download when absent from current mods and having repository or homepage URLs. - Add missing mod download and browser-open handling when applying profiles, preserve selected profile name when refreshing profile lists, and save repository and homepage URLs with active profile entries.
Add mod groups, missing status, drag-and-drop, and URL downloads
- Add SkiaSharp native Linux no-dependencies package reference
- Use a Linux-specific app data directory by respecting XDG_CONFIG_HOME for logs and fall back to standard ApplicationData on other platforms - Wrap log directory creation in a silent try/catch so file logging disables gracefully when the directory is unavailable
- Initialize and expose the localization service at startup so the UI can bind localization resources before settings load. - Add Avalonia markup extension for localized text binding that uses an observable wrapper to refresh UI on language changes. - Add a value converter that resolves localization keys to localized strings with optional format arguments and fallback handling. - Add strings.csv as an embedded resource - Add language setting property to application settings - Add multilingual UI localization strings for DV Mod Manager. - Add localization service interface for key-based translation lookup, live language switching, and English fallback - Add localization service that loads embedded CSV translations, supports language fallback, and notifies UI on language changes. - Use a full resource identifier for the cached source in version cache entries - Add localization support to the main window view model and replace hardcoded status messages and UI labels with localized strings. - Add localization support for mod item status labels and refresh them on language change - Add language selection support to settings with available locale options and persist the preferred language - Localize UI text and tooltips by replacing hardcoded strings with binding expressions and add a string localization converter resource. - Enable localization for mod detail panel text and button labels by converting hardcoded strings to localized bindings. - Localize ModListView UI labels, tooltips, search placeholder, and update badge text via localization converter. - Localize the profile dialog text and button labels by replacing hardcoded strings with resource-bound localization keys - Localize settings dialog labels, placeholders, tooltips, and buttons while adding a language selection combo box.
- Clarify GitHub token needs for mass mod downloads and note missing mods download when a repository is defined.
- Make dialogs size to content with a maximum height and wrap long message text in a scrollable container.
- Add failed downloads dialog with scrollable detail text and Nexus action handling. - Set HTTP timeouts for GitHub API and release asset requests and log download exceptions. - Add dialog method for showing failed downloads and handling open on Nexus confirmation - Set the mod download HTTP client timeout to 60 seconds - Add robust failure handling to missing mod download flow with timeout-backed update and download requests, collect failed and Nexus-only entries, and prompt the user to open failed mod homepages.
- Add multi-mod group assignment and bulk checked-mod activation/deactivation handling with status updates - Add observable boolean property for checked state in mod item view model - Adjust list item layout to add a right-edge checkbox for multi-select and extend padding to accommodate it - Refine list pointer handling to support group header clicks, deferred single-selection, multi-mod drag payloads, and batch group assignment on drop.
- Add localization entries for modpack import/export and refine install tooltip wording. - Add localized export option and modpack import confirmation dialogs to dialog service - Add export option enum and extend dialog service with export selection and modpack import confirmation methods. - Add InstallFromFolderAsync method to support folder-based mod installation in the install service interface - Add methods to export profiles as ZIP and generate unique profile names. - Add folder-based mod installation support with activation handling, existing version archiving, and error-aware logging - Add profile export to ZIP and unique profile naming support in profile service - Add JSON profile import and ZIP-based modpack detection to file installation workflow - Add localized export option handling for profile export with JSON and ZIP flows, confirmation, and game path support.
- Add documentation for multi-select mod operations and self-contained ZIP modpack import/export with redistribution and security guidance
Add multilingual UI localization, modpack import/export features and multi-select
- Fixed linux capitalization issue. - Fixed a dictionary duplicate-key crash when preserving pending-update state during refresh. - Added a shell.nix for Linux development.
Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Extend `ProfileDiff` record with `ToRedownload` field - Update profile diff computation to prefer re-downloading over rollback when repository URL is available - Implement redownload workflow in main window view model: - Update diff completion check to include redownload work This fixes #11 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Added `UpdatedTimeRaw` property to store the raw JSON element for `updated_time` - Implemented computed `UpdatedTime` property that converts JSON number or string to `long?` - Ensured backward compatibility by ignoring the raw property during serialization This fixes #6 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
This fixes #5 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Replace single `CollapsedGroupIds` with two independent sets: `CollapsedGroupIdsAvailable` and `CollapsedGroupIdsActive` This fixes #4 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Add `Panel` property to `ModGroup` model to specify which panel a group belongs to (`"available"`, `"active"`, or `null` for both) - Update group filtering logic in `MainWindowViewModel` to respect the `Panel` property - Pass panel parameter from `ModListView` to `AddGroupCommand` so new groups inherit the panel context - Add `Panel` styled property to `ModListView` control - Bind `Panel` attribute on `MainWindow` for available and active mod list views Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Clear `PendingUpdate` after single mod update succeeds - Clear `PendingUpdate` after successful update in batch process - Only reapply update badge if current version differs from pending version This fixes #3 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Add `StartGameAsync` command in `MainWindowViewModel` that launches the game using `steam://rungameid/588030` - Add "Start Game" button with tooltip to toolbar in `MainWindow.axaml` This closes #7 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Add `EnableVersionArchiving` property to `AppSettings` model (default: `true`) - Add localization strings for the new setting in `strings.csv` - Update `ModInstallService` to conditionally archive versions based on setting - Add `EnableVersionArchiving` property to `SettingsViewModel` - Add checkbox in `SettingsDialog` for the new option - Adjust grid layout to accommodate new setting UI This closes #8 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Changed `Helpers.PlatformHelper.Open` URL from `steam://rungameid/588030` to `steam://launch/588030/dialog` to include dialog in launch process. Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
Migrate dv-mod-profiles into this project
- Change `AutoActivateDependenciesAsync` to recursively activate transitive dependencies using BFS - Add `processed` HashSet to prevent duplicate dependency processing Thix fixes #13 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Use `StringComparer.OrdinalIgnoreCase` for hash set comparison in dependency validation - Simplify requirement matching by using full requirement ID instead of splitting This fixes #14 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Add strings.csv entries for companion mod UI states and actions - Add `InstallCompanionModCommand` and companion state management to `MainWindowViewModel` - Add `ShowCompanionButton` property to `ModListView` control - Add companion button to the active mods panel header in `ModListView.axaml` - Show companion button only in the active mods panel in `MainWindow.axaml` This closes #15 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- **Program.cs**: Set thread apartment state to STA on Windows for OLE drag & drop compatibility - **MainWindowViewModel.cs**: Add `InstallDroppedArchivesAsync` method to batch-install dropped archives with optional activation and dependency resolution - **MainWindow.axaml**: Register `DragDrop.AllowDrop` and drag/drop event handlers on the main window - **MainWindow.axaml.cs**: Implement external file drag & drop handling with target panel detection (`.zip` files only); drops on active panel auto-activate installed mods - **ModListView.axaml**: Add `DropHintOverlay` visual hint panel with drop arrow icon and localized text - **ModListView.axaml.cs**: Refactor drag/drop handler registration to use static `DragDrop` methods and scope `OnListDragOver` to internal mod-to-mod drag only This closes #16 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Add version to csproj - Add repository.json with version and release URL for update checking - Add localization strings for app version display - Implement update check logic in MainWindowViewModel with version comparison - Add UI elements to display current version and update availability - Add click handler to open release page when update available This closes #17 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
…at once - Added `OpenFilesAsync` method to `IDialogService` interface and `DialogService` implementation for multi-file selection - Updated `InstallModFromFileAsync` to handle multiple file selections - Added batch installation logic for multiple zip files with individual error handling - Improved status messages to show installation results for multiple mods This closes #18 Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
- Added 30+ new localization keys for dialogs, status messages, busy indicators, buttons, file filters, and tooltips Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
Signed-off-by: Fuggschen <fuggschen@krk-gaming.de>
Fuggschen
marked this pull request as ready for review
August 14, 2026 21:34
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.
I have finished all related work to push out v0.0.4
With that I want to have it as the stable version and have us working on the beta branch for new features. I'll draft this until all hardcoded beta links are also updated as well as the build pipeline