Skip to content

Fix/issue 130 macos run path picker - #142

Merged
1lck merged 3 commits into
1lck:preview/0.3.0from
Yager-42:fix/issue-130-macos-run-path-picker
Aug 18, 2026
Merged

Fix/issue 130 macos run path picker#142
1lck merged 3 commits into
1lck:preview/0.3.0from
Yager-42:fix/issue-130-macos-run-path-picker

Conversation

@Yager-42

Copy link
Copy Markdown
Contributor

Fixes #130

问题与根本原因

报告现象:macOS 运行配置编辑器中的 JDK、Maven 和工作目录路径只能手动粘贴,点击路径按钮无法正常选择。 同时,项目级(Project)配置下的工具链路径原先被 UI 禁用,并且在保存流程中会被清空,因此无法将项目内的 JDK/Maven 配置持久化到项目配置中。

根因:

  1. 路径按钮直接调用同步的 NSOpenPanel.runModal(),没有接入 SwiftUI 的文件导入流程。
  2. Project scope 下的 Java/Maven 路径在编辑器、RunServiceRustCoreBridge 中被禁用或过滤。
  3. Rust Core 没有对项目级工具链路径进行项目根目录校验和相对路径规范化。

改动内容

  • 将路径选择改为 SwiftUI .fileImporter
    • Java Home、Maven JDK 和工作目录选择文件夹。
    • Maven executable 支持选择可执行文件或目录。
    • 增加取消处理、错误提示和对应的操作说明。
  • 支持 Project scope 下配置:
    • Java Home
    • Maven executable
    • Maven JDK Home
    • Working directory
  • 项目级路径保存为相对于项目根目录的路径,并统一使用 / 分隔符。
  • project-scoped 路径必须位于当前项目目录内,越界路径会被拒绝。
  • local-scoped 配置继续支持主机绝对路径。
  • 运行时解析项目级相对 Java 路径时,会自动基于当前项目根目录解析。
  • 不再在 RunServiceRustCoreBridge 中丢弃项目级 Java/Maven 工具链路径。
  • 补充 Rust Core、Maven runtime 和运行配置集成测试,并更新 Rust Core API contract。

边界

  • 本 PR 只涉及 macOS 参考产品的运行配置路径选择和项目级路径持久化。
  • Windows 实现不在本 PR 范围内。
  • 项目级路径仍然只能指向当前项目目录内部。
  • Maven executable 仍按整条路径保存,不引入多选或额外的工具链发现流程。

验证

  • git diff --check HEAD~2 HEAD
  • ./scripts/test-macos.sh
  • ./scripts/build-macos.sh
  • ./scripts/verify-rust-core.sh
  • ./scripts/verify-core.sh
  • ./scripts/verify-service-boundaries.sh
  • ./scripts/verify-shared-contracts.sh

Result

image image

@1lck
1lck merged commit 3307a38 into 1lck:preview/0.3.0 Aug 18, 2026
2 checks passed
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.

2 participants