Skip to content

refactor(java): add java catalog cache and reorganize providers#86

Open
BegoniaHe wants to merge 3 commits intoHydroRoll-Team:refactor/migrate-to-reactfrom
BegoniaHe:refactor/java-provider
Open

refactor(java): add java catalog cache and reorganize providers#86
BegoniaHe wants to merge 3 commits intoHydroRoll-Team:refactor/migrate-to-reactfrom
BegoniaHe:refactor/java-provider

Conversation

@BegoniaHe
Copy link
Contributor

@BegoniaHe BegoniaHe commented Feb 5, 2026

描述

  • 本 PR 基于 Export Rust core types to TypeScript with ts-rs and update CI #77 ,为 Java 子模块引入缓存与结构重构,改善提供者(provider)职责划分并为后续扩展(更多 provider)做准备。
  • 新增 cache.rs 实现 Java catalog 的本地缓存(24 小时有效期)。
  • 将原来的 detection.rs 拆分为平台子模块(detection/{linux,macos,windows,unix,common}.rs),并新增 install.rs 以整理安装流程。
  • 调整 persistence.rsproviders/adoptium.rsvalidation.rs 以配合重构。

更改类型

  • Bug 修复
  • 新功能
  • 代码重构
  • 性能优化
  • 文档更新
  • 其他

LLM 生成代码声明

  • 此 PR 包含 LLM 生成的代码

相关 Issue


更改内容

后端 (Rust)

  • 新增:cache.rs(JavaCatalog 缓存)。
  • 重构:拆分 java::detection 到平台实现,新增 install.rs
  • 更新:persistence.rsproviders/adoptium.rsvalidation.rs 等,整理 provider 接口与实现。

前端 (Svelte)

配置


测试

测试环境

  • 操作系统:Windows 11(本地开发机)
  • DropOut 版本:0.1.24
  • Minecraft 版本:N/A
  • Mod 加载器:N/A

测试结果摘要

  • 本地运行 cargo test

running 81 tests
test result: ok. 81 passed; 0 failed; 0 ignored; finished in 0.25s

测试用例

  • 已在 Windows 上测试(单元测试通过)
  • 已在 macOS 上测试
  • 已在 Linux 上测试
  • 已测试原版 Minecraft
  • 已测试 Fabric
  • 已测试 Forge
  • 已测试游戏启动
  • 已测试登录流程
  • 已测试 Java 检测/下载(待前端完成后人工集成测试)

测试步骤

  1. 在项目根目录运行:cargo test
  2. 确认所有单元测试通过(81 / 81)

检查清单

代码质量

  • 我的代码遵循项目的代码风格指南
  • 我已对自己的代码进行了自审
  • 我已对难以理解的区域添加了注释(必要处)
  • 我的更改没有产生新的警告或错误(已运行 clippy/fmt)

测试验证

  • 我已在本地测试了我的更改
  • 我已添加测试来证明我的修复有效或功能正常工作(目前未新增测试)
  • 新的和现有的单元测试在本地通过
  • 我至少在一个目标平台上进行了更多手动测试(待补充)

文档更新

  • 我已相应地更新了文档(若需要将在后续 PR 补充)

依赖项

  • 我已检查没有添加不必要的依赖项

附加说明

  • 这是一次偏向内部架构的重构与性能改进,不含破坏性变更。后续可基于新的 provider 接口添加更多 Java 源(例如 Amazon Corretto, Liberica 等)。
  • 若需要我可以补充集成测试或在 macOS / Linux 上做额外验证。

维护者专用

  • 代码审查已完成
  • CI 检查通过
  • 准备合并

add src-tauri/src/core/java/cache.rs for Java catalog caching
reorganize provider interfaces and move detection/install changes
update persistence, adoptium provider and validation

Reviewed-by: Raptor mini (Preview)
Copilot AI review requested due to automatic review settings February 5, 2026 19:45
@vercel
Copy link

vercel bot commented Feb 5, 2026

@BegoniaHe is attempting to deploy a commit to the retrofor Team on Vercel.

A member of the Team first needs to authorize it.

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Sorry @BegoniaHe, your pull request is larger than the review limit of 150000 diff characters

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR refactors the Java subsystem for the DropOut Minecraft launcher by introducing catalog caching, reorganizing provider architecture, and adding TypeScript bindings via ts-rs. Based on PR #77, it includes a new React-based UI (ui-new) alongside backend refactoring.

Changes:

  • Adds Java catalog caching with 24-hour validity (cache.rs)
  • Introduces provider trait pattern for extensible Java distribution support
  • Splits detection logic into platform-specific modules
  • Adds priority-based Java resolution for game launches
  • Generates TypeScript bindings for all core data structures
  • Introduces new React UI with Zustand state management

Reviewed changes

Copilot reviewed 101 out of 103 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src-tauri/src/core/java/cache.rs New 24-hour catalog caching with atomic file writes
src-tauri/src/core/java/provider.rs Provider trait for Java distributions
src-tauri/src/core/java/providers/adoptium.rs Adoptium provider implementation with parallel fetching
src-tauri/src/core/java/validation.rs Extracted validation logic with async support
src-tauri/src/core/java/persistence.rs User configuration persistence
src-tauri/src/core/java/priority.rs Priority-based Java resolution for launches
src-tauri/src/core/java/install.rs Extracted installation logic
src-tauri/src/core/java/detection/* Platform-specific detection modules
src-tauri/src/main.rs Updated to use new Java resolution and provider APIs
src-tauri/src/core/auth.rs Changed CLIENT_ID back to DropOut's own Azure app
packages/ui-new/* Complete new React-based UI implementation

setNewInstanceName("");
};

const confirmEdit = async () => {
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

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

Unused variable confirmEdit.

Copilot uses AI. Check for mistakes.
@HsiangNianian HsiangNianian changed the base branch from main to refactor/migrate-to-react February 5, 2026 23:19
BegoniaHe and others added 2 commits February 6, 2026 02:59
- Update .github/copilot-instructions.md

Reviewed-by: GitHub Copilot CLI
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