diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 78222842..6d74574a 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -5,12 +5,21 @@ body:
- type: markdown
attributes:
value: Before raising an issue, please search for existing issues to avoid creating duplicates.
- - type: textarea
+ - type: input
attributes:
label: Original reporter/ticket ID
description: If you are rewording a ticket, put the original reporter(s) and ticket ID(s). If not, leave this blank.
validations:
required: false
+ - type: dropdown
+ attributes:
+ label: Project
+ description: Select the project this issue is related to.
+ multiple: true
+ options:
+ - Core
+ - OneClient
+ - OneLauncher
- type: textarea
attributes:
label: Describe the bug
diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml
index 374d53bb..0b15e1a2 100644
--- a/.github/ISSUE_TEMPLATE/enhancement.yml
+++ b/.github/ISSUE_TEMPLATE/enhancement.yml
@@ -5,12 +5,23 @@ body:
- type: markdown
attributes:
value: Before raising an issue, please search for existing issues and [Discord](https://polyfrost.org/discord) suggestions to avoid creating duplicates.
- - type: textarea
+ - type: input
attributes:
label: Original reporter/ticket ID
description: If you are rewording a ticket, put the original reporter(s) and ticket ID(s). If not, leave this blank.
validations:
required: false
+ - type: dropdown
+ attributes:
+ label: Project
+ description: Select the project this issue is related to.
+ multiple: true
+ default: General
+ options:
+ - General
+ - Core
+ - OneClient
+ - OneLauncher
- type: textarea
attributes:
label: Is your suggested enhancement related to a problem? Please describe, or link another Issue.
diff --git a/.github/media/RepoBanner.png b/.github/media/RepoBanner.png
new file mode 100644
index 00000000..db9ec1e4
Binary files /dev/null and b/.github/media/RepoBanner.png differ
diff --git a/.github/workflows/oneclient_release.yml b/.github/workflows/oneclient_release.yml
new file mode 100644
index 00000000..15f36428
--- /dev/null
+++ b/.github/workflows/oneclient_release.yml
@@ -0,0 +1,47 @@
+name: OneClient Release Build
+
+on:
+ workflow_dispatch:
+
+jobs:
+ publish-tauri:
+ permissions:
+ contents: write
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - platform: macos-latest # ARM
+ args: --target aarch64-apple-darwin
+ - platform: macos-latest # Intel
+ args: --target x86_64-apple-darwin
+ - platform: ubuntu-22.04
+ args: ''
+ - platform: windows-latest
+ args: ''
+
+ runs-on: ${{ matrix.platform }}
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Setup Rust
+ uses: ./.github/actions/setup-rust
+ with:
+ # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
+ target: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
+ save-cache: true
+ restore-cache: true
+
+ - name: Setup Packages
+ uses: ./.github/actions/setup-packages
+
+ - uses: tauri-apps/tauri-action@v0
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tagName: oneclient-__VERSION__
+ releaseName: OneClient __VERSION__
+ releaseDraft: true
+ prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }}
+ tauriScript: pnpm oneclient:desktop
+ args: ${{ matrix.args }}
diff --git a/.github/workflows/release.yml b/.github/workflows/onelauncher_release.yml
similarity index 94%
rename from .github/workflows/release.yml
rename to .github/workflows/onelauncher_release.yml
index ab90fbc8..0b2e4a14 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/onelauncher_release.yml
@@ -1,4 +1,4 @@
-name: Release Build
+name: OneLauncher Release Build
on:
workflow_dispatch:
@@ -43,5 +43,5 @@ jobs:
releaseName: OneLauncher __VERSION__
releaseDraft: true
prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }}
- tauriScript: pnpm desktop
+ tauriScript: pnpm onelauncher:desktop
args: ${{ matrix.args }}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 20cdd5ec..bd082fa3 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -3,8 +3,7 @@
"tauri-apps.tauri-vscode", // Provides Tauri framework support.
"rust-lang.rust-analyzer", // Provides Rust language support.
"vadimcn.vscode-lldb", // Provides Rust debugging support.
- "oscarbeaumont.rspc-vscode", // RSPC is a framework for Routers.
- "antfu.unocss", // Provides UnoCSS intellisense.
+ "bradlc.vscode-tailwindcss", // Provides UnoCSS intellisense.
"EditorConfig.EditorConfig", // Maintains consistent coding styles.
"dbaeumer.vscode-eslint" // Code formatting using ESLint.
]
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 1c108fed..d76bd693 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -27,9 +27,6 @@
"rust-analyzer.diagnostics.disabled": [
"macro-error" // TODO: Remove this once taurpc upgrades to latest specta
],
- "rust-analyzer.procMacro.ignored": {
- "tauri-specta": ["command"]
- },
"rust-analyzer.check.command": "check",
"rust-analyzer.diagnostics.experimental.enable": false,
"rust-analyzer.linkedProjects": [],
diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md
index b1201280..1c162ee9 100644
--- a/ATTRIBUTION.md
+++ b/ATTRIBUTION.md
@@ -1,6 +1,6 @@
# Attribution
-The source code of this repository is licensed under the GNU General Public License, Version 3 only, which is provided in the file [LICENSE](./LICENSE), with a header provided below. [Certain files in our library wrappers](./core/wrapper/) may be under a different license or [require credit](#additional-libraries), with their specific headers outlined in the below non-exhaustive list.
+The source code of this repository is licensed under the GNU General Public License, Version 3 only, which is provided in the file [LICENSE](./LICENSE), with a header provided below. Certain files in our library wrappers may be under a different license or [require credit](#additional-libraries), with their specific headers outlined in the below non-exhaustive list.
## OneLauncher
@@ -16,6 +16,20 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
You should have received a copy of the GNU General Public License along with this program. If not, see .
```
+## OneClient
+
+```txt
+OneClient - A Minecraft Launcher
+Copyright (C) 2023~CURRENT Polyfrost and Contributors
+
+This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program. If not, see .
+```
+
## Polyfrost branding
Any files depicting [Polyfrost branding](https://polyfrost.org/legal/branding), including the Polyfrost logo, any landing and background images, the OneConfig logo, the OneLauncher logo, and variations thereof, are licensed under the following:
@@ -31,80 +45,25 @@ This includes, but may not be limited to, the following files:
## Additional Libraries
-The following are libraries, projects, and codebases which we (Polyfrost and Contributors) copied or modified, with additional attribution inline (THIS IS A NON-EXHAUSTIVE LIST, IF WE ARE MISSING A LICENSE, PLEASE CHECK OUR [attributions page](https://polyfrost.org/attributions), OR LEAVE A TICKET IN [our Discord server](https://polyfrost.org/discord)):
-
-## [Prism Launcher]
-
-```txt
-Prism Launcher - Minecraft Launcher
-Copyright (C) 2022-2024 Prism Launcher Contributors
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, version 3.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-
-This file incorporates work covered by the following copyright and
-permission notice:
-
- Copyright 2013-2021 MultiMC Contributors
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-```
-
-## [Modrinth App]
-
-```txt
-Modrinth App
-Copyright (C) 2022-2023 Modrinth
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, version 3.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-```
+The following are libraries, projects, and codebases which we (Polyfrost and Contributors) copied or modified, with additional attribution inline (THIS IS A NON-EXHAUSTIVE LIST, IF WE ARE MISSING A LICENSE, PLEASE LEAVE A TICKET IN [our Discord server](https://polyfrost.org/discord)):
## [Gamemode]
```txt
-Copyright (c) 2017-2022, Feral Interactive
+Copyright (c) 2017-2025, Feral Interactive and the GameMode contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
-* Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-* Neither the name of Feral Interactive nor the names of its contributors
-may be used to endorse or promote products derived from this software
-without specific prior written permission.
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of Feral Interactive nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -145,7 +104,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
-[Prism Launcher]: https://github.com/PrismLauncher/PrismLauncher
-[Modrinth App]: https://github.com/modrinth/code
[Gamemode]: https://github.com/FeralInteractive/gamemode
[Rust Gamemode Internal Linking]: https://github.com/SophieSilver/linking-gamemode
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0482336f..d2d4c777 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -47,17 +47,14 @@ To make changes locally, follow these steps:
4. Install dependencies: `pnpm i`
5. Prepare your cargo installation: `pnpm prep`
-To quickly run only the desktop app after `prep`, you can use:
+### Running
+The most common scripts you will use are:
-- `pnpm desktop dev`
+- `pnpm onelauncher:desktop dev` - Runs the **OneLauncher** desktop application with watch mode enabled and starts up the frontend's vite dev server.
- If necessary, the webview devtools can be opened by pressing `Ctrl + Shift + I` (Linux and Windows) or `Command + Option + I` (macOS) in the desktop app.
+- `pnpm oneclient:desktop dev` - Runs the **OneClient** desktop application with watch mode enabled and starts up the frontend's vite dev server.
-If you encounter any issues, ensure that you are using the following versions (or later) of Rust, Node and Pnpm:
-
-- `rustc` version: **1.80**
-- `node` version: **20.15**
-- `pnpm` version: **9.6.0**
+If necessary, the webview devtools can be opened by pressing `Ctrl + Shift + I` (Linux and Windows) or `Command + Option + I` (macOS) in the desktop app.
After cleaning out your build artifacts using `pnpm clean`, `git clean`, or `cargo clean`, it is necessary to re-run the `setup` script.
diff --git a/README.md b/README.md
index e90e94af..99041200 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,45 @@
-# OneLauncher
+
-Rust-based Minecraft launcher utilizing Tauri, SolidJS, and Tailwind
+

-## Project Structure
+# ` OneLauncher ` + ` OneClient `
+Here is the monorepo containing the code for OneLauncher and OneClient.
-* [`apps/desktop`](./apps/desktop/) - Rust-based Minecraft launcher utilizing Tauri, SolidJS, and Tailwind.
-* [`crates/core`](./crates/core/) - The core for our Minecraft launcher (platform agnostic), along with Rust-based utilities for other Polyfrost projects and interactions.
-* [`testing`](./crates/testing/) - Testing playground for our Rust core, independant of Tauri.
-* [`distribution`](./packages/distribution/) - Distribution utilties and meta files for the [`apps/desktop`](./apps/desktop/) app.
+
+
+## Technologies Used
+- [**Tauri**](https://tauri.app/)
+- [**Sea ORM**](https://www.sea-ql.org/SeaORM/)
+- [**SQLite**](https://www.sqlite.org/)
+- [**React**](https://react.dev/)
+- [**Tailwind CSS**](https://tailwindcss.com/)
+- [**Tanstack Query**](https://tanstack.com/query/latest)
+- [**Tanstack Router**](https://tanstack.com/router/latest)
+
+## Contributing
+We welcome contributions! Please read our [contributing guidelines](CONTRIBUTING.md) before getting started.
+
+### Requirements
+
+If you encounter any issues, ensure that you are using the following versions (or later) of Rust, Node and Pnpm:
+
+- `rustc` version: **1.89**
+- `node` version: **22.15**
+- `pnpm` version: **10.13**
+
+### Project Structure
+- **`packages/`** - Shared libraries and utilities.
+ - [**`core/`**](./packages/core/) - Launcher Core. This is the library that contains the entire launcher logic.
+ - [**`entity/`**](./packages/entity/) - Contains entity definitions used in the launcher's database.
+ - [**`macro/`**](./packages/macro/) - Contains macro definitions to simplify some code.
+ - [**`scripts/`**](./packages/scripts/) - General scripts for CI/CD or development environments.
+ - [**`web_common/`**](./packages/web_common/) - Contains common web code used by both OneLauncher and OneClient.
+- **`apps/`**
+ - [**`onelauncher/`**](./apps/onelauncher/)
+ - **`desktop/`** - Tauri desktop application.
+ - **`frontend/`** - React SPA frontend.
+ - **`distribution/`** - Files used for release builds.
+ - [**`oneclient/`**](./apps/oneclient/)
+ - **`desktop/`** - Tauri desktop application.
+ - **`frontend/`** - React SPA frontend.
+ - **`distribution/`** - Files used for release builds.
diff --git a/changelog.config.ts b/changelog.config.ts
deleted file mode 100644
index c3303233..00000000
--- a/changelog.config.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-const config = {
- types: {
- chore: { title: '🔨 Chores' },
- feature: { title: '✨ Features' },
- fix: { title: '🐞 Bug Fixes' },
- perf: { title: '🏎 Performance' },
- refactor: { title: '♻️ Refactors' },
- test: { title: '✅ Tests' },
- style: { title: '🎨 Stylistic' },
- doc: { title: '📝 Docs' },
- deps: { title: '📦 Dependencies' },
- deploy: { title: '🚀 Deployments' },
- wip: { title: '🚧 Experiments' },
- },
-};
-
-export default config;
diff --git a/test.rs b/test.rs
deleted file mode 100644
index e69de29b..00000000
diff --git a/tsconfig.base.json b/tsconfig.base.json
index 231ebc56..3491112c 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -2,7 +2,7 @@
"compilerOptions": {
"target": "ESNext",
"jsx": "preserve",
- "jsxImportSource": "solid-js",
+ "jsxImportSource": "react",
"lib": ["ESNext", "DOM", "DOM.Iterable"],
"useDefineForClassFields": true,
"module": "ESNext",
diff --git a/uno.config.ts b/uno.config.ts
deleted file mode 100644
index f6976c0d..00000000
--- a/uno.config.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from './apps/onelauncher/old_frontend/uno.config';
diff --git a/vitest.workspace.json b/vitest.workspace.json
deleted file mode 100644
index 143f4f59..00000000
--- a/vitest.workspace.json
+++ /dev/null
@@ -1,4 +0,0 @@
-[
- "packages/client/vitest.config.ts",
- "apps/frontend/vitest.config.ts"
-]