Conversation
Added a link to the full roadmap for the project.
## Summary by Sourcery Add a new documentation site package and a Chinese README to improve project documentation and accessibility. New Features: - Introduce a dedicated @dropout/docs React Router application powered by Fumadocs for hosting the project documentation. Documentation: - Add a Chinese README file providing an overview, installation, build instructions, and contribution guidelines for Chinese-speaking users. - Set up initial docs content, navigation, and metadata within the new docs site, including example pages and search endpoint configuration.
Co-authored-by: HsiangNianian <44714368+HsiangNianian@users.noreply.github.com>
- Add development.mdx (开发指南) - Add troubleshooting.mdx (故障排除) - Add features/index.mdx (功能概览) - Add features/authentication.mdx (身份验证) - Add features/java.mdx (Java 管理) - Add features/mod-loaders.mdx (模组加载器) All translations maintain technical terms in English while translating content to simplified Chinese Co-authored-by: HsiangNianian <44714368+HsiangNianian@users.noreply.github.com>
Co-authored-by: HsiangNianian <44714368+HsiangNianian@users.noreply.github.com>
Co-authored-by: HsiangNianian <44714368+HsiangNianian@users.noreply.github.com>
Co-authored-by: HsiangNianian <44714368+HsiangNianian@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: HsiangNianian <44714368+HsiangNianian@users.noreply.github.com>
## Summary by Sourcery Improve bilingual README structure and formatting for clarity and consistency. Documentation: - Add cross-links between English and Chinese READMEs for easier language switching. - Normalize README formatting including roadmap link styling, spacing, and license section presentation in both languages.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Reviewer's GuideAdds a full multi-language documentation site under packages/docs (with English and Simplified Chinese content) using Fumadocs + React Router, wires it into the project, and updates top-level README files and roadmap links accordingly. Class diagram for new docs i18n and source structureclassDiagram
class I18nConfig {
+string defaultLanguage
+string[] languages
+string hideLocale
+string parser
}
class SourceLoader {
+getPage(slugs, lang)
+serializePageTree(tree)
}
class LayoutShared {
+baseOptions(locale)
}
class HomeRoute {
+meta(args)
+Component(props)
}
class DocsPageRoute {
+loader(args)
+Component(props)
}
class RootLayout {
+Layout(children)
+App()
+ErrorBoundary(errorProps)
}
class DocsSearchApi {
+loader(args)
}
class DocsCollections {
+toFumadocsSource()
}
I18nConfig <.. RootLayout
I18nConfig <.. HomeRoute
I18nConfig <.. DocsPageRoute
DocsCollections <.. SourceLoader
SourceLoader <.. DocsPageRoute
SourceLoader <.. DocsSearchApi
LayoutShared <.. HomeRoute
LayoutShared <.. DocsPageRoute
RootLayout <.. HomeRoute
RootLayout <.. DocsPageRoute
Flow diagram for docs routing and i18n handlingflowchart TD
A["HTTP request"] --> B{Path pattern}
B -->|"/ or /:lang"| H["home.tsx (Home route)"]
B -->|"/:lang?/docs"| C["Redirect to getting-started"]
B -->|"/:lang?/docs/*"| D["docs/page.tsx (Docs route)"]
B -->|"/api/search"| E["docs/search.ts (Search API)"]
B -->|"* (fallback)"| F["not-found.tsx"]
subgraph I18nHandling["i18n handling"]
I18nDef["i18n definition (i18n.ts)"]
RootLayout["root.tsx Layout"]
BaseOpts["baseOptions(locale)"]
end
H --> RootLayout
D --> RootLayout
F --> RootLayout
RootLayout --> I18nDef
RootLayout --> BaseOpts
subgraph DocsResolution["Docs page resolution"]
D --> L["loader: determine lang (params.lang or default zh)"]
L --> M["compute slugs from wildcard segment"]
M --> N["source.getPage(slugs, lang)"]
N -->|found| O["serialize page tree for lang"]
N -->|not found| P["404 response"]
end
C --> Q{Has lang and not default zh?}
Q -->|no| R["redirect to /docs/getting-started"]
Q -->|yes| S["redirect to /:lang/docs/getting-started"]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've found 2 issues, and left some high level feedback:
- In the English and Chinese MDX files you’re hard-coding links like
/docs/..., which will always resolve to the default locale and ignore the current language; consider using relative links (e.g.getting-started,../features/...) or an i18n-aware helper so navigation stays in the active locale. - Repository URLs are inconsistent between
HsiangNianian/DropOutandHydroRoll-Team/DropOutacross README and docs (e.g., release links, issues links, repo links); aligning these to a single canonical GitHub org/repo will avoid broken or confusing links.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- In the English and Chinese MDX files you’re hard-coding links like `/docs/...`, which will always resolve to the default locale and ignore the current language; consider using relative links (e.g. `getting-started`, `../features/...`) or an i18n-aware helper so navigation stays in the active locale.
- Repository URLs are inconsistent between `HsiangNianian/DropOut` and `HydroRoll-Team/DropOut` across README and docs (e.g., release links, issues links, repo links); aligning these to a single canonical GitHub org/repo will avoid broken or confusing links.
## Individual Comments
### Comment 1
<location> `packages/docs/content/zh/troubleshooting.mdx:427-436` </location>
<code_context>
+
+**解决方案:**
+
+**1. 检查权限:**
+```bash
+# Linux
+chmod -R 700 ~/.local/share/com.dropout.launcher
+
+# macOS
+chmod -R 700 ~/Library/Application\ Support/com.dropout.launcher
+```
+
</code_context>
<issue_to_address>
**🚨 suggestion (security):** File-permission guidance diverges from the English version and omits ownership correction
The Chinese docs only suggest `chmod -R 700`, while the English version also uses `chown` and `chmod -R u+rwX,go-rwx`. If the directories are owned by root (e.g. after using sudo), changing only the mode may not resolve access or ownership problems. Please align this snippet with the English version (including `chown` and explicit `go-rwx`), or clarify when `chmod -R 700` alone is appropriate.
```suggestion
**解决方案:**
**1. 检查目录所有者和权限:**
如果你曾使用 `sudo` 运行过 DropOut 启动器,游戏目录可能被 `root` 拥有,需要先将所有者改回当前用户,然后再收紧权限:
```bash
# Linux
sudo chown -R "$USER":"$USER" ~/.local/share/com.dropout.launcher
chmod -R u+rwX,go-rwx ~/.local/share/com.dropout.launcher
# macOS
sudo chown -R "$USER":"$USER" ~/Library/Application\ Support/com.dropout.launcher
chmod -R u+rwX,go-rwx ~/Library/Application\ Support/com.dropout.launcher
```
如果确认目录已经属于当前用户,只需要执行上面的 `chmod` 命令即可。
```
</issue_to_address>
### Comment 2
<location> `README.CN.md:77` </location>
<code_context>
+
+## 安装
+
+从 [Releases](https://github.com/HsiangNianian/DropOut/releases) 页面下载适用于您平台的最新版本。
+
+| 平台 | 文件 |
</code_context>
<issue_to_address>
**suggestion (typo):** Slight grammatical adjustment: "您平台" → "您的平台".
可以改为:“从 [Releases] 页面下载适用于您的平台的最新版本。” 或更通用地写成“下载适用于各个平台的最新版本”。
```suggestion
从 [Releases](https://github.com/HsiangNianian/DropOut/releases) 页面下载适用于您的平台的最新版本。
```
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| **解决方案:** | ||
|
|
||
| **1. 检查权限:** | ||
| ```bash | ||
| # Linux | ||
| chmod -R 700 ~/.local/share/com.dropout.launcher | ||
|
|
||
| # macOS | ||
| chmod -R 700 ~/Library/Application\ Support/com.dropout.launcher | ||
| ``` |
There was a problem hiding this comment.
🚨 suggestion (security): File-permission guidance diverges from the English version and omits ownership correction
The Chinese docs only suggest chmod -R 700, while the English version also uses chown and chmod -R u+rwX,go-rwx. If the directories are owned by root (e.g. after using sudo), changing only the mode may not resolve access or ownership problems. Please align this snippet with the English version (including chown and explicit go-rwx), or clarify when chmod -R 700 alone is appropriate.
| **解决方案:** | |
| **1. 检查权限:** | |
| ```bash | |
| # Linux | |
| chmod -R 700 ~/.local/share/com.dropout.launcher | |
| # macOS | |
| chmod -R 700 ~/Library/Application\ Support/com.dropout.launcher | |
| ``` | |
| **解决方案:** | |
| **1. 检查目录所有者和权限:** | |
| 如果你曾使用 `sudo` 运行过 DropOut 启动器,游戏目录可能被 `root` 拥有,需要先将所有者改回当前用户,然后再收紧权限: | |
| ```bash | |
| # Linux | |
| sudo chown -R "$USER":"$USER" ~/.local/share/com.dropout.launcher | |
| chmod -R u+rwX,go-rwx ~/.local/share/com.dropout.launcher | |
| # macOS | |
| sudo chown -R "$USER":"$USER" ~/Library/Application\ Support/com.dropout.launcher | |
| chmod -R u+rwX,go-rwx ~/Library/Application\ Support/com.dropout.launcher |
如果确认目录已经属于当前用户,只需要执行上面的 chmod 命令即可。
|
|
||
| ## 安装 | ||
|
|
||
| 从 [Releases](https://github.com/HsiangNianian/DropOut/releases) 页面下载适用于您平台的最新版本。 |
There was a problem hiding this comment.
suggestion (typo): Slight grammatical adjustment: "您平台" → "您的平台".
可以改为:“从 [Releases] 页面下载适用于您的平台的最新版本。” 或更通用地写成“下载适用于各个平台的最新版本”。
| 从 [Releases](https://github.com/HsiangNianian/DropOut/releases) 页面下载适用于您平台的最新版本。 | |
| 从 [Releases](https://github.com/HsiangNianian/DropOut/releases) 页面下载适用于您的平台的最新版本。 |
There was a problem hiding this comment.
Pull request overview
Adds a new packages/docs documentation site (Fumadocs + React Router) with bilingual (zh/en) content and updates repository-level README/docs tooling to support it.
Changes:
- Introduce a full docs app under
packages/docs(React Router routes, Fumadocs source/search, Tailwind, Biome config). - Add EN/ZH documentation content structure and navigation metadata.
- Update root readmes and markdown lint configuration; remove
CNAME.
Reviewed changes
Copilot reviewed 45 out of 48 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/docs/vite.config.ts | Vite plugins for docs build |
| packages/docs/tsconfig.json | TypeScript config for docs package |
| packages/docs/source.config.ts | Fumadocs MDX source config |
| packages/docs/react-router.config.ts | React Router SSR config |
| packages/docs/public/favicon.ico | Add docs favicon asset |
| packages/docs/package.json | Docs package deps + scripts |
| packages/docs/content/zh/troubleshooting.mdx | ZH troubleshooting page |
| packages/docs/content/zh/meta.json | ZH docs nav metadata |
| packages/docs/content/zh/index.mdx | ZH docs landing page |
| packages/docs/content/zh/getting-started.mdx | ZH getting started page |
| packages/docs/content/zh/features/mod-loaders.mdx | ZH mod loaders doc |
| packages/docs/content/zh/features/meta.json | ZH features nav metadata |
| packages/docs/content/zh/features/java.mdx | ZH Java management doc |
| packages/docs/content/zh/features/index.mdx | ZH features overview doc |
| packages/docs/content/zh/features/authentication.mdx | ZH authentication doc |
| packages/docs/content/zh/development.mdx | ZH development guide |
| packages/docs/content/zh/architecture.mdx | ZH architecture doc |
| packages/docs/content/en/troubleshooting.mdx | EN troubleshooting page |
| packages/docs/content/en/meta.json | EN docs nav metadata |
| packages/docs/content/en/index.mdx | EN docs landing page |
| packages/docs/content/en/getting-started.mdx | EN getting started page |
| packages/docs/content/en/features/mod-loaders.mdx | EN mod loaders doc |
| packages/docs/content/en/features/meta.json | EN features nav metadata |
| packages/docs/content/en/features/java.mdx | EN Java management doc |
| packages/docs/content/en/features/index.mdx | EN features overview doc |
| packages/docs/content/en/features/authentication.mdx | EN authentication doc |
| packages/docs/content/en/development.mdx | EN development guide |
| packages/docs/content/en/architecture.mdx | EN architecture doc |
| packages/docs/biome.json | Biome config for docs package |
| packages/docs/app/routes/not-found.tsx | 404 route handler |
| packages/docs/app/routes/home.tsx | Localized marketing home route |
| packages/docs/app/routes/docs.tsx | Docs index redirect logic |
| packages/docs/app/routes.ts | Route table (home/docs/api/404) |
| packages/docs/app/root.tsx | Root layout + error boundary |
| packages/docs/app/lib/source.ts | Fumadocs source loader wiring |
| packages/docs/app/lib/layout.shared.tsx | Shared layout options + links |
| packages/docs/app/lib/i18n.ts | Fumadocs i18n config |
| packages/docs/app/docs/search.ts | Server search endpoint |
| packages/docs/app/docs/page.tsx | Docs page renderer + loader |
| packages/docs/app/app.css | Tailwind + fumadocs styles |
| packages/docs/README.md | Docs package README |
| packages/docs/.gitignore | Ignore build + generated dirs |
| README.md | Add CN link + roadmap URL |
| README.CN.md | Add Chinese root README |
| CNAME | Remove custom pages domain |
| .markdownlint.json | Add markdownlint configuration |
| tsconfigPaths({ | ||
| root: __dirname, | ||
| }), |
There was a problem hiding this comment.
This Vite config runs as ESM because packages/docs/package.json sets "type": "module", so __dirname is not defined at runtime. Compute the directory from import.meta.url (or remove the root option) to avoid config startup failures.
| const server = createFromSource(source, { | ||
| localeMap: { | ||
| zh: { | ||
| language: 'english', | ||
| }, | ||
| }, | ||
| }); |
There was a problem hiding this comment.
The search locale map sets zh.language to 'english', which will likely produce incorrect tokenization/stemming for Chinese content. Use the correct language configuration for Chinese (or omit the override if the library auto-detects).
| const server = createFromSource(source, { | |
| localeMap: { | |
| zh: { | |
| language: 'english', | |
| }, | |
| }, | |
| }); | |
| const server = createFromSource(source); |
| The documentation is available in: | ||
|
|
||
| - **English** (default) - `content/docs/en/` | ||
| - **简体中文** (Simplified Chinese) - `content/docs/zh/` | ||
|
|
There was a problem hiding this comment.
This README describes docs content under content/docs/{en,zh}, but the repository structure is content/{en,zh} (no docs/ level) and app/lib/i18n.ts sets the default language to zh (not English). Please update these paths/default language statements so contributors follow the actual layout.
| <Cards> | ||
| <Card | ||
| title="功能特性" | ||
| href="/docs/features" | ||
| description="了解 DropOut 提供的所有功能" | ||
| /> | ||
| <Card | ||
| title="实例管理" | ||
| href="/docs/features/instances" | ||
| description="创建隔离的游戏环境" | ||
| /> | ||
| <Card | ||
| title="模组加载器" | ||
| href="/docs/features/mod-loaders" | ||
| description="安装和管理 Fabric 和 Forge" | ||
| /> | ||
| <Card | ||
| title="故障排除" | ||
| href="/docs/troubleshooting" | ||
| description="常见问题和解决方案" | ||
| /> |
There was a problem hiding this comment.
The "Next Steps" card links are absolute (/docs/...), so when browsing English pages under /en/... these will route back to the default-locale docs. Prefer relative links (e.g. features, features/mod-loaders, troubleshooting) or otherwise make them locale-aware.
| <Card | ||
| title="实例" | ||
| href="instances" | ||
| description="具有独立配置的隔离游戏环境" | ||
| /> | ||
| <Card | ||
| title="下载" | ||
| href="downloads" | ||
| description="快速并发下载,支持断点续传" | ||
| /> | ||
| <Card | ||
| title="AI 助手" | ||
| href="assistant" | ||
| description="内置 AI 助手用于故障排除和指导" | ||
| /> |
There was a problem hiding this comment.
这些卡片链接到 instances / downloads / assistant,但 content/zh/features/ 下并没有对应页面(当前只有 authentication/java/mod-loaders)。这会导致导航出现 404;建议补齐页面或移除/调整这些卡片。
| <Card | ||
| title="Instances" | ||
| href="instances" | ||
| description="Isolated game environments with independent configs" | ||
| /> | ||
| <Card | ||
| title="Downloads" | ||
| href="downloads" | ||
| description="Fast concurrent downloads with resume support" | ||
| /> | ||
| <Card | ||
| title="AI Assistant" | ||
| href="assistant" | ||
| description="Built-in AI helper for troubleshooting and guidance" | ||
| /> |
There was a problem hiding this comment.
These cards link to instances, downloads, and assistant, but those pages don't exist under content/en/features/ (only authentication/java/mod-loaders are present). This will create broken navigation links; either add the missing pages or remove/update these cards.
| <Card | |
| title="Instances" | |
| href="instances" | |
| description="Isolated game environments with independent configs" | |
| /> | |
| <Card | |
| title="Downloads" | |
| href="downloads" | |
| description="Fast concurrent downloads with resume support" | |
| /> | |
| <Card | |
| title="AI Assistant" | |
| href="assistant" | |
| description="Built-in AI helper for troubleshooting and guidance" | |
| /> |
| <Cards> | ||
| <Card | ||
| title="Features" | ||
| href="/docs/features" | ||
| description="Learn about all the features DropOut offers" | ||
| /> | ||
| <Card | ||
| title="Instances" | ||
| href="/docs/features/instances" | ||
| description="Create isolated game environments" | ||
| /> | ||
| <Card | ||
| title="Mod Loaders" | ||
| href="/docs/features/mod-loaders" | ||
| description="Install and manage Fabric and Forge" | ||
| /> | ||
| <Card | ||
| title="Troubleshooting" | ||
| href="/docs/troubleshooting" | ||
| description="Common issues and solutions" | ||
| /> |
There was a problem hiding this comment.
The "Next Steps" card links are absolute (/docs/...), which will send users to the default-locale (zh) pages even when browsing under /en/.... Prefer relative links (e.g. features, features/mod-loaders, troubleshooting) or generate locale-aware URLs to keep navigation in the current language.
| 2. **安装前端依赖** | ||
|
|
||
| ```bash | ||
| cd ui |
There was a problem hiding this comment.
构建步骤里写的是 cd ui,但仓库实际前端目录是 packages/ui(同一仓库其他文档也使用 packages/ui)。建议修正文档以免新人按步骤执行时找不到目录。
| cd ui | |
| cd packages/ui |
| export function meta({ params }: Route.MetaArgs) { | ||
| return [ | ||
| { title: 'DropOut - Modern Minecraft Launcher' }, | ||
| { name: 'description', content: 'A modern, reproducible, and developer-grade Minecraft launcher built with Tauri v2 and Rust.' }, | ||
| ]; |
There was a problem hiding this comment.
meta destructures { params } but doesn't use it, which will be flagged by the linter (unused variable). Either remove the destructuring or use _params to make the intent explicit.
| }, | ||
| }); | ||
|
|
||
| export default function Page({ loaderData, params }: Route.ComponentProps) { |
There was a problem hiding this comment.
Page destructures params but never uses it, which can trigger unused-variable lint failures. Consider removing it from the function signature.
| export default function Page({ loaderData, params }: Route.ComponentProps) { | |
| export default function Page({ loaderData }: Route.ComponentProps) { |
Summary by Sourcery
Add a new bilingual documentation site for DropOut and link it from the project README while improving roadmap and license information.
Enhancements:
Documentation:
Chores: