From d69a328ce95994beeff6fc0c51e57319d6e3ec38 Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Sun, 20 Jul 2025 16:16:43 +0200 Subject: [PATCH] chore: cleanup + prepare things for open source --- .github/ISSUE_TEMPLATE/bug_report.yml | 11 ++- .github/ISSUE_TEMPLATE/enhancement.yml | 13 ++- .github/media/RepoBanner.png | Bin 0 -> 54906 bytes .github/workflows/oneclient_release.yml | 47 +++++++++ .../{release.yml => onelauncher_release.yml} | 4 +- .vscode/extensions.json | 3 +- .vscode/settings.json | 3 - ATTRIBUTION.md | 93 +++++------------- CONTRIBUTING.md | 13 +-- README.md | 49 +++++++-- changelog.config.ts | 17 ---- test.rs | 0 tsconfig.base.json | 2 +- uno.config.ts | 1 - vitest.workspace.json | 4 - 15 files changed, 145 insertions(+), 115 deletions(-) create mode 100644 .github/media/RepoBanner.png create mode 100644 .github/workflows/oneclient_release.yml rename .github/workflows/{release.yml => onelauncher_release.yml} (94%) delete mode 100644 changelog.config.ts delete mode 100644 test.rs delete mode 100644 uno.config.ts delete mode 100644 vitest.workspace.json 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 0000000000000000000000000000000000000000..db9ec1e4a39afbdfb6de8fde570d856be7919d08 GIT binary patch literal 54906 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 KRk)tx)Bgjp-7D?@ literal 0 HcmV?d00001 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 +Repository Banner -## 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" -]