Skip to content

refactor(mod): 重构模组前置相关#3273

Open
SALTWOOD wants to merge 6 commits into
devfrom
refactor/mod-detail
Open

refactor(mod): 重构模组前置相关#3273
SALTWOOD wants to merge 6 commits into
devfrom
refactor/mod-detail

Conversation

@SALTWOOD

@SALTWOOD SALTWOOD commented Jun 28, 2026

Copy link
Copy Markdown
Member

This closes #3271

Summary by Sourcery

重新设计模组版本依赖的处理逻辑和界面,引入专门的依赖弹窗,以及针对单个版本的新安装/下载入口。

New Features:

  • 为单个模组版本新增依赖详情弹窗,提供安装到当前实例或保存到指定位置的操作。
  • 支持从依赖弹窗和版本列表条目中直接打开依赖项目的详情。
  • 允许在版本列表项上右键以触发“另存为”行为,并新增独立的下载按钮入口,为后续实现做准备。

Enhancements:

  • 将从点击发送者解析版本文件的逻辑重构为可复用的辅助方法,以简化事件处理。
  • 更新模组版本列表的渲染逻辑,为主点击、右键点击和下载按钮分别绑定独立的事件处理器,而不是使用单一的“另存为”操作。
  • 扩展 MyListItem,使其支持用于列表项上下文操作的独立右键事件。
  • 移除版本列表上方的聚合依赖条,改为在新弹窗中按版本展示依赖信息。
  • 将新的 ModDependency 消息框类型集成到现有的对话框/消息框基础设施中。
Original summary in English

Summary by Sourcery

Revamp mod version dependency handling and UI, introducing a dedicated dependency popup and new install/download entry points for individual versions.

New Features:

  • Add a mod dependency detail popup for individual mod versions with actions to install to current instance or save to a chosen location.
  • Support opening dependency project details directly from the dependency popup and version list entries.
  • Allow right-click on version list items to trigger save-as behavior and add a separate download button entry point for future implementation.

Enhancements:

  • Refactor version file resolution from click senders into a reusable helper to simplify event handling.
  • Update mod version list rendering to wire separate handlers for primary click, right-click, and download button interactions instead of a single save-as action.
  • Extend MyListItem to support a distinct right-click event for contextual actions on list items.
  • Remove the aggregated dependency bars above the version list in favor of per-version dependency display in the new popup.
  • Integrate the new ModDependency message box type into the existing dialog/message box infrastructure.

Summary by Sourcery

通过将汇总的依赖栏改为按版本的依赖弹窗,并新增安装和下载特定版本的入口,重新设计模组版本依赖处理方式。

新功能:

  • 为单个模组版本引入专用依赖弹窗,提供将该版本安装到当前实例或保存到指定位置的操作。
  • 添加按版本的快速下载入口,通过右侧下载按钮实现,并遵循现有快速下载行为设置。

改进:

  • 扩展列表项以支持独立的右键事件,从而启用诸如在版本条目上直接“另存为”等上下文操作。
  • 重构快速下载行为解析为可复用的辅助方法,并新增一个变体,用于下载特定版本,而不是自动选择最新的兼容文件。
  • 为模组版本列表项分别连接左键点击、右键点击和下载按钮的独立处理程序,而不再只有单一的“另存为”动作。
  • 将新的 ModDependency 消息框类型集成到现有对话框基础设施中,并实现其 UI,用于展示版本详情和依赖信息。
Original summary in English

Summary by Sourcery

Revamp mod version dependency handling by replacing the aggregated dependency bar with a per-version dependency popup and adding new entry points for installing and downloading specific versions.

New Features:

  • Introduce a dedicated dependency popup for individual mod versions with actions to install to the current instance or save to a chosen location.
  • Add a per-version quick download entry via a right-side download button that respects existing quick download behavior settings.

Enhancements:

  • Extend list items to support a separate right-click event, enabling context actions such as direct save-as on version entries.
  • Refactor quick download behavior resolution into a reusable helper and add a variant that downloads a specific version instead of auto-selecting the latest compatible file.
  • Wire distinct handlers for primary click, right-click, and download button on mod version list items instead of a single save-as action.
  • Integrate the new ModDependency message box type into the existing dialog infrastructure and implement its UI for showing version details and dependencies.

@pcl-ce-automation pcl-ce-automation Bot added 🚧 正在处理 开发人员正在对该内容进行开发、测试或修复,进展中 size: L PR 大小评估:大型 labels Jun 28, 2026
@sourcery-ai

sourcery-ai Bot commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

通过引入按版本的依赖弹窗、区分列表项的左键/右键/下载按钮行为,并新增针对特定版本的快速下载流程(集成到全局对话框/消息框系统),重构了 Mod 版本依赖处理和 UI。

针对特定版本依赖弹窗及操作的时序图

sequenceDiagram
    actor User
    participant PageDownloadCompDetail
    participant ModMain
    participant ModDependencyMsgBox

    User->>PageDownloadCompDetail: ShowVersionPopup_Click
    PageDownloadCompDetail->>PageDownloadCompDetail: ResolveFileFromSender(sender)
    PageDownloadCompDetail->>ModMain: ModDependencyMsgBox(file)
    ModMain->>ModDependencyMsgBox: create ModDependencyMsgBox(MyMsgBoxConverter)
    ModDependencyMsgBox-->>ModMain: Result (CompProject | 1 | 2 | null)
    ModMain-->>PageDownloadCompDetail: return Result

    alt Result is CompProject
        PageDownloadCompDetail->>ModMain: frmMain.PageChange(CompDetail)
    else Result == 1
        PageDownloadCompDetail->>PageDownloadCompDetail: InstallToInstance(file)
    else Result == 2
        PageDownloadCompDetail->>PageDownloadCompDetail: SaveCompFile(file)
    else Result == null
        PageDownloadCompDetail->>PageDownloadCompDetail: [close popup]
    end
Loading

File-Level Changes

Change Details Files
Extend mod version list items to support separate left-click, right-click, and download button behaviors.
  • 为 Mod 版本项的 ToListItem 工厂新增可选的右键点击处理器和下载按钮点击处理器。
  • 将 MyListItem.RightClick 绑定到 PreviewMouseRightButtonUp 事件,以支持上下文操作。
  • 当提供了相关处理器时,在版本项上渲染并挂载独立的“另存为”和“下载”图标按钮。
Plain Craft Launcher 2/Modules/Minecraft/ModComp.cs
Plain Craft Launcher 2/Controls/MyListItem.xaml.cs
Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.cs
Introduce a dedicated dependency details popup for a specific mod version and integrate it with the existing message-box infrastructure.
  • 新增 MyMsgBoxType.ModDependency 分支,并通过 ModMain.ModDependencyMsgBox 打通管线,用于显示模态依赖对话框并返回结果。
  • 实现 ModDependencyMsgBox(XAML + 代码后置),展示版本元数据、必需/可选依赖,以及用于安装 / 另存为 / 取消的按钮,并返回操作代码或选中的依赖项目。
  • 将弹窗接入 Mod 详情页:左键点击版本项打开依赖弹窗,点击弹窗中的依赖会导航到对应的详情页。
Plain Craft Launcher 2/Modules/ModMain.cs
Plain Craft Launcher 2/Controls/MyMsg/ModDependencyMsgBox.xaml
Plain Craft Launcher 2/Controls/MyMsg/ModDependencyMsgBox.xaml.cs
Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.cs
Refactor quick-download behavior resolution and add a variant that downloads a specific version rather than the latest compatible one.
  • 将快速下载行为解析(包括“总是询问”的单选对话框)抽取为可复用的 _ResolveQuickDownloadBehavior 帮助方法,返回 1/2/3 或 null。
  • 更新现有的 QuickDownload(CompProject),改用该帮助方法,并清晰分支到“下载到当前实例”“选择实例”“选择路径”三种流程,并加入错误处理。
  • 新增 QuickDownload(CompProject, CompFile),实现针对特定文件的快速下载,用于版本项上的下载按钮。
Plain Craft Launcher 2/Modules/Minecraft/ModComp.cs
Plain Craft Launcher 2/Modules/ModMain.cs
Replace the aggregated dependency bars above the version list with per-version dependency handling from the popup and align install/save behavior.
  • 移除此前用于为一组文件渲染“必需/可选依赖折叠条”的 CompFilesCardPreload 及其辅助方法 _AddDependencyBar。
  • 更新 Mod 详情页的筛选渲染逻辑,停止调用 CompFilesCardPreload,改为为版本列表项附加独立的左键/右键/下载按钮处理器。
  • 在详情页中新增 InstallToInstance 和 SaveCompFile 帮助方法,以处理按版本的“安装到当前实例”和“另存为”流程,并在合适的地方复用已有的“依赖感知保存”逻辑。
Plain Craft Launcher 2/Modules/Minecraft/ModComp.cs
Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.cs

Assessment against linked issues

Issue Objective Addressed Explanation
#3271 重构 Mod 详情页的依赖展示,使依赖按 Mod 版本展示(而不是跨所有版本聚合),从而修复 issue #3265 中描述的误导性行为。
#3271 将新的按版本依赖 UI 集成到现有的对话框/消息框系统中,在 Mod 详情页上提供合适的交互(查看依赖、安装到当前实例、保存/下载)。

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: 在 Pull Request 中评论 @sourcery-ai review 以触发新的代码审查。
  • Continue discussions: 直接回复 Sourcery 的审查评论以继续讨论。
  • Generate a GitHub issue from a review comment: 通过回复某条审查评论,要求 Sourcery 从该评论创建一个 issue。你也可以直接回复审查评论 @sourcery-ai issue 来创建对应 issue。
  • Generate a pull request title: 在 Pull Request 标题的任意位置写上 @sourcery-ai,即可随时生成标题。你也可以在 Pull Request 中评论 @sourcery-ai title 来(重新)生成标题。
  • Generate a pull request summary: 在 Pull Request 正文的任意位置写上 @sourcery-ai summary,即可在该位置生成 PR 摘要。你也可以在 Pull Request 中评论 @sourcery-ai summary 来(重新)生成摘要。
  • Generate reviewer's guide: 在 Pull Request 中评论 @sourcery-ai guide,即可随时(重新)生成审查指南。
  • Resolve all Sourcery comments: 在 Pull Request 中评论 @sourcery-ai resolve 来将所有 Sourcery 评论标记为已解决。适用于你已经处理所有评论且不再需要看到它们的情况。
  • Dismiss all Sourcery reviews: 在 Pull Request 中评论 @sourcery-ai dismiss 来撤销所有现有的 Sourcery 审查记录。如果你希望从头开始新的审查,这尤其有用——记得再评论 @sourcery-ai review 以触发新一轮审查!

Customizing Your Experience

访问你的 dashboard 以:

  • 启用或禁用审查功能,例如 Sourcery 自动生成的 Pull Request 摘要、审查指南等。
  • 修改审查语言。
  • 添加、移除或编辑自定义审查说明。
  • 调整其他审查设置。

Getting Help

Original review guide in English

Reviewer's Guide

Refactors mod version dependency handling and UI by introducing a per-version dependency popup, separating list item click behaviors (left/right/download), and adding a new quick-download flow for specific versions integrated with the global dialog/message-box system.

Sequence diagram for per-version dependency popup and actions

sequenceDiagram
    actor User
    participant PageDownloadCompDetail
    participant ModMain
    participant ModDependencyMsgBox

    User->>PageDownloadCompDetail: ShowVersionPopup_Click
    PageDownloadCompDetail->>PageDownloadCompDetail: ResolveFileFromSender(sender)
    PageDownloadCompDetail->>ModMain: ModDependencyMsgBox(file)
    ModMain->>ModDependencyMsgBox: create ModDependencyMsgBox(MyMsgBoxConverter)
    ModDependencyMsgBox-->>ModMain: Result (CompProject | 1 | 2 | null)
    ModMain-->>PageDownloadCompDetail: return Result

    alt Result is CompProject
        PageDownloadCompDetail->>ModMain: frmMain.PageChange(CompDetail)
    else Result == 1
        PageDownloadCompDetail->>PageDownloadCompDetail: InstallToInstance(file)
    else Result == 2
        PageDownloadCompDetail->>PageDownloadCompDetail: SaveCompFile(file)
    else Result == null
        PageDownloadCompDetail->>PageDownloadCompDetail: [close popup]
    end
Loading

File-Level Changes

Change Details Files
Extend mod version list items to support separate left-click, right-click, and download button behaviors.
  • Add optional right-click and download-click handlers to the ToListItem factory for mod version items.
  • Wire MyListItem.RightClick to a PreviewMouseRightButtonUp event to support contextual actions.
  • Render and attach separate Save-As and Download icon buttons on version items when handlers are provided.
Plain Craft Launcher 2/Modules/Minecraft/ModComp.cs
Plain Craft Launcher 2/Controls/MyListItem.xaml.cs
Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.cs
Introduce a dedicated dependency details popup for a specific mod version and integrate it with the existing message-box infrastructure.
  • Add a new MyMsgBoxType.ModDependency case and plumbing via ModMain.ModDependencyMsgBox to show a modal dependency dialog and return a result.
  • Implement ModDependencyMsgBox (XAML + code-behind) that displays version metadata, required/optional dependencies, and buttons for install/save-as/cancel, returning either an action code or a selected dependency project.
  • Hook the popup into the mod detail page: left-click on a version item opens the popup, and clicking a dependency navigates to its detail page.
Plain Craft Launcher 2/Modules/ModMain.cs
Plain Craft Launcher 2/Controls/MyMsg/ModDependencyMsgBox.xaml
Plain Craft Launcher 2/Controls/MyMsg/ModDependencyMsgBox.xaml.cs
Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.cs
Refactor quick-download behavior resolution and add a variant that downloads a specific version rather than the latest compatible one.
  • Extract quick-download behavior resolution (including the "always ask" radio selection dialog) into a reusable _ResolveQuickDownloadBehavior helper returning 1/2/3 or null.
  • Update existing QuickDownload(CompProject) to use the helper and cleanly branch into download-to-current-instance, choose-instance, or choose-path flows with error handling.
  • Add QuickDownload(CompProject, CompFile) to perform quick download of a specific file, used by the version-item download button.
Plain Craft Launcher 2/Modules/Minecraft/ModComp.cs
Plain Craft Launcher 2/Modules/ModMain.cs
Replace the aggregated dependency bars above the version list with per-version dependency handling from the popup and align install/save behavior.
  • Remove CompFilesCardPreload and its helper _AddDependencyBar that previously rendered required/optional dependency collapse bars for a group of files.
  • Update the mod detail page’s filter rendering to stop calling CompFilesCardPreload and instead attach version list items with dedicated click/right-click/download handlers.
  • Introduce InstallToInstance and SaveCompFile helpers on the detail page to handle per-version install to current instance and Save-As flows, reusing existing logic for dependency-aware saving where appropriate.
Plain Craft Launcher 2/Modules/Minecraft/ModComp.cs
Plain Craft Launcher 2/Pages/PageDownload/Comp/PageDownloadCompDetail.xaml.cs

Assessment against linked issues

Issue Objective Addressed Explanation
#3271 Refactor the mod detail page dependency display so that dependencies are shown per mod version (instead of aggregated across all versions), resolving the misleading behavior described in issue #3265.
#3271 Integrate the new per-version dependency UI into the existing dialog/message box system, providing appropriate interactions (view dependencies, install to current instance, save/download) from the mod detail page.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@pcl-ce-automation pcl-ce-automation Bot added size: XL PR 大小评估:超大型 and removed size: L PR 大小评估:大型 labels Jun 28, 2026
@SALTWOOD SALTWOOD marked this pull request as ready for review June 28, 2026 04:55
@pcl-ce-automation pcl-ce-automation Bot added 🛠️ 等待审查 Pull Request 已完善,等待维护者或负责人进行代码审查 and removed 🚧 正在处理 开发人员正在对该内容进行开发、测试或修复,进展中 labels Jun 28, 2026
@SALTWOOD SALTWOOD requested a review from a team June 28, 2026 04:55

@sourcery-ai sourcery-ai Bot 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.

Hey - 我在这里提供一些整体性的反馈:

  • 在 ModMain.ModDependencyMsgBox 和 ModDependencyMsgBox.Close 中,你都调用了 ComponentDispatcher.PopModal(),这可能导致模态栈不平衡;建议从 Close() 中移除 PopModal 调用,并依赖 ModDependencyMsgBox 中 finally 块来进行清理。
  • AppendUniqueNameSuffix 目前对每个元素都使用 ModBase.GetUuid(),而不是已有的 uuid 字段,因此每个控件都会得到不同的后缀;如果你的意图是为每个对话框使用单一的唯一分组 ID,那么应当统一使用 uuid 字段,而不是生成新的值。
  • FillDependencySection 不再像旧的 _AddDependencyBar 那样记录缺失的依赖项目 ID;如果在 compProjectCache 不完整时静默失败会带来问题,建议在无法解析依赖时重新加入一条调试日志。
面向 AI Agents 的提示
Please address the comments from this code review:

## Overall Comments
- 在 ModMain.ModDependencyMsgBox 和 ModDependencyMsgBox.Close 中,你都调用了 ComponentDispatcher.PopModal(),这可能导致模态栈不平衡;建议从 Close() 中移除 PopModal 调用,并依赖 ModDependencyMsgBox 中 finally 块来进行清理。
- AppendUniqueNameSuffix 目前对每个元素都使用 ModBase.GetUuid(),而不是已有的 uuid 字段,因此每个控件都会得到不同的后缀;如果你的意图是为每个对话框使用单一的唯一分组 ID,那么应当统一使用 uuid 字段,而不是生成新的值。
- FillDependencySection 不再像旧的 _AddDependencyBar 那样记录缺失的依赖项目 ID;如果在 compProjectCache 不完整时静默失败会带来问题,建议在无法解析依赖时重新加入一条调试日志。

Sourcery 对开源项目是免费的——如果你觉得我们的评审有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点击 👍 或 👎,我会根据这些反馈改进后续的评审。
Original comment in English

Hey - I've left some high level feedback:

  • In ModMain.ModDependencyMsgBox and ModDependencyMsgBox.Close you both call ComponentDispatcher.PopModal(), which can lead to an unbalanced modal stack; consider removing the PopModal call from Close() and rely on the finally block in ModDependencyMsgBox to clean up.
  • AppendUniqueNameSuffix currently uses ModBase.GetUuid() for each element instead of the existing uuid field, so each control gets a different suffix; if the intent is to have a single unique group ID per dialog, use the uuid field consistently instead of generating new values.
  • FillDependencySection no longer logs missing dependency project IDs like the old _AddDependencyBar did; if silent failures are problematic when compProjectCache is incomplete, consider reintroducing a debug log when a dependency cannot be resolved.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In ModMain.ModDependencyMsgBox and ModDependencyMsgBox.Close you both call ComponentDispatcher.PopModal(), which can lead to an unbalanced modal stack; consider removing the PopModal call from Close() and rely on the finally block in ModDependencyMsgBox to clean up.
- AppendUniqueNameSuffix currently uses ModBase.GetUuid() for each element instead of the existing uuid field, so each control gets a different suffix; if the intent is to have a single unique group ID per dialog, use the uuid field consistently instead of generating new values.
- FillDependencySection no longer logs missing dependency project IDs like the old _AddDependencyBar did; if silent failures are problematic when compProjectCache is incomplete, consider reintroducing a debug log when a dependency cannot be resolved.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f857531d71

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

return;
}
if (!instance.IsLoaded) instance.Load();
var modsFolder = instance.PathIndie + "mods\\";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Route instance installs by resource type

When this popup is opened from the default version-list branch (which also covers resource packs, shaders, and data packs), choosing “Install to current instance” always builds the target under <instance>/mods. For those non-mod resource pages this silently downloads the selected file into the wrong folder, so Minecraft will not load it; use the same type-to-subfolder mapping as the save/quick-download paths or restrict this action to mods.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a1e6908047

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +576 to +577
additional = (project, new List<string>(), "", ModComp.CompLoaderType.Any,
ModComp.CompType.Any, null)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve version context when opening dependencies

When this popup is opened from a detail page that already has a target Minecraft version/loader (for example, coming from an instance mod list or install flow), clicking a dependency now navigates with an empty target version and Any loader. The dependency detail page therefore loses the compatibility context and opens the full unfiltered version list instead of the matching version group, making it easy to install the wrong dependency version; the existing detail-card navigation preserves additional.TargetVersion and additional.TargetLoader for this scenario.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bb9e86609c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +613 to +614
new LoaderDownload(Lang.Text("Download.Comp.Detail.DownloadFile"),
new List<DownloadFile> { file.ToNetFile(target) })

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor dependency auto-install for popup installs

When AutoInstallDependencies is enabled and the selected mod version has required dependencies, this new install path queues only the selected file and never runs the dependency resolver used by SaveCompFile (ModCompDependency.BuildRequest / ConfirmDependencyInstall). Installing from the popup can therefore leave a missing-dependency mod in the current instance; route this action through the same dependency flow before starting the download.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size: XL PR 大小评估:超大型 🛠️ 等待审查 Pull Request 已完善,等待维护者或负责人进行代码审查

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[C#]: 对模组依赖关系展示进行重构

2 participants