Skip to content

feat(magos-modificus): Phase 3 Track B mod-list, import, source model - #29

Merged
ModifAmorphic merged 1 commit into
mainfrom
feat/phase3-trackb
Jul 4, 2026
Merged

feat(magos-modificus): Phase 3 Track B mod-list, import, source model#29
ModifAmorphic merged 1 commit into
mainfrom
feat/phase3-trackb

Conversation

@ModifAmorphic

Copy link
Copy Markdown
Owner

Fills the shell content area (Track A's empty placeholder) with the mod-list for the active profile, plus the mod source/version model that backs it.

Backend model

  • ModSource (None / Nexus / GitHub) recorded on the shared entry; versions are raw strings everywhere (GitHub release tags and Nexus file versions are not SemVer).
  • Allocation is plain string equality, which removes the // TODO(phase4) version-equality wart.
  • IModImportService (folder or .zip import into the shared store).
  • IModOrderResolver + identity stub (the auto-sort seam; real dependency algorithm deferred).

Mod-list UI

  • View / enable-disable / remove (confirmed) / reorder (up-down) / per-mod policy (Latest or Pinned to a version string), with a read-only source badge per row.
  • Auto-sort toggle (identity stub, no-op).

Import flow

  • Split-button "Add Mod" (zip default, folder via the flyout) plus drag-and-drop; both feed a sequential per-mod modal collecting Source + Version + URL.
  • Drag-and-drop is wired but messaged as Windows-only (Avalonia 12.0.x lacks Linux XDND, wont-backport; PR Implement XDND: drag-and-drop support for Linux AvaloniaUI/Avalonia#20926 lands it in 12.1). Folder import is reachable via the picker on all platforms.

Tests + docs

  • 426 tests (backend model + services + VM logic against hand-rolled fakes; view mechanics are live-verified).
  • Reference, architecture, and AGENTS.md docs updated in place.

Build the mod-list UI for the active profile plus the mod source/version
model that backs it. The shell content area now shows view / enable-disable /
remove (confirmed) / reorder (up-down) / per-mod policy (Latest or Pinned to
a raw version string) + a read-only source badge, with an auto-sort toggle
(identity stub).

Mod source provenance (None / Nexus / GitHub) is recorded on the shared entry.
Versions are raw strings everywhere (GitHub tags and Nexus file versions are
not SemVer), so allocation is plain string equality, which also removes the
phase-4 version-equality TODO.

Local import (folder or .zip) via a split button (zip default, folder via the
flyout) plus a sequential per-mod modal collecting source + version. Adds
IModImportService (folder/zip) and IModOrderResolver (identity auto-sort stub).
Drag-and-drop is wired but Windows-only on Avalonia 12.0.x: XDND for Linux
lands in 12.1 (wont-backport; PR AvaloniaUI/Avalonia#20926), so it is messaged
as a Windows-only feature and folder import is reachable via the picker.

Backend + VM logic unit-tested with hand-rolled fakes (426 tests). Reference,
architecture, and AGENTS.md docs updated in place.
@ModifAmorphic
ModifAmorphic merged commit 5075cee into main Jul 4, 2026
2 checks passed
@ModifAmorphic
ModifAmorphic deleted the feat/phase3-trackb branch July 4, 2026 17:43
ModifAmorphic added a commit that referenced this pull request Jul 8, 2026
🤖 I have created a release *beep* *boop*
---


## 0.1.0 (2026-07-08)


### Features

* **component-a:** Hybrid Rust+C discovery + shell + launcher
([#1](#1))
([491e5d1](491e5d1))
* **magos-modificus:** implement Phase 1 Enginseer-client launch façade
([#20](#20))
([7950ed1](7950ed1))
* **magos-modificus:** implement Phase 1 Integrations (GitHub Releases
client)
([#19](#19))
([781d65c](781d65c))
* **magos-modificus:** implement Phase 1 Profiles library
([#17](#17))
([f355ceb](f355ceb))
* **magos-modificus:** implement Phase 1 Steam discovery library
([#18](#18))
([8f6ec00](8f6ec00))
* **magos-modificus:** implement Phase 2 shared-first mod storage
([#22](#22))
([cf2af80](cf2af80))
* **magos-modificus:** Phase 3 Track B mod-list, import, source model
([#29](#29))
([5075cee](5075cee))
* **magos-modificus:** Phase 3 Track C launch + Settings + escape-hatch
+ base-folder mod loading
([#32](#32))
([c595700](c595700))
* **magos-modificus:** Phase 4 Stage 1 nxm scheme handler + IPC
([#34](#34))
([0017529](0017529))
* **magos-modificus:** Phase 4 Stage 2 Nexus auth + Integrations dialog
([#35](#35))
([0790a8e](0790a8e))
* **magos-modificus:** Phase 4 Stage 3 Nexus mod acquisition
([#36](#36))
([d01105f](d01105f))
* **magos-modificus:** Phase 4 Stage 4 Nexus update-check service
([#39](#39))
([1749e76](1749e76))
* **magos-modificus:** Phase 4 Stage 5 mod-list update badges + per-mod
update
([#43](#43))
([423e146](423e146))
* **magos-modificus:** Phase 4 Stage 6 DMF new-profile/auth prompt
([#44](#44))
([994b4f8](994b4f8))
* **magos-modificus:** scaffold .NET 10 + Avalonia 12 app + libraries
([#16](#16))
([d1fac91](d1fac91))
* **mod-loader:** own the load-order contract (mods.lst), drop DMF
prepend
([#14](#14))
([1ccb891](1ccb891))
* **release:** add Curator release pipeline
([#49](#49))
([01517e4](01517e4))
* **runtime:** engine-context proven — trampoline, Enginseer v1,
launcher fail-fast
([#4](#4))
([4565ba8](4565ba8))
* **runtime:** Enginseer v2 — mod loader + launcher config + logging
([#5](#5))
([1e65b3f](1e65b3f))
* **runtime:** package Enginseer with the runtime; relocate build files
to runtime/
([#6](#6))
([7221bdb](7221bdb))
* **ui:** Phase 3 Track A — app shell + profile management
([#27](#27))
([f7f8250](f7f8250))
* **ui:** Phase 3 Track D — Preferences + i18n + custom title bars +
icon
([#28](#28))
([c921650](c921650))


### Bug Fixes

* **enginseer:** DMF integration fixes — IO re-root, load timing,
destroy
([#7](#7))
([401759c](401759c))
* **magos-modificus:** multi-format archive import (zip + 7z + rar)
([#41](#41))
([ee4f5c6](ee4f5c6))
* **magos-modificus:** search all Steam libraries for the compatdata
prefix
([#21](#21))
([895fa2b](895fa2b))
* **steam:** detect running Darktide via /proc argv[0] under Proton
([#23](#23))
([c5f38c4](c5f38c4))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: ModifAmorphic <86930443+ModifAmorphic@users.noreply.github.com>
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