Skip to content

Commit 1c13982

Browse files
authored
Merge branch 'onelauncher/main' into feat/account-select-context-menu
2 parents d070717 + 8e6ffdc commit 1c13982

34 files changed

+1348
-1189
lines changed

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,21 @@ body:
55
- type: markdown
66
attributes:
77
value: Before raising an issue, please search for existing issues to avoid creating duplicates.
8-
- type: textarea
8+
- type: input
99
attributes:
1010
label: Original reporter/ticket ID
1111
description: If you are rewording a ticket, put the original reporter(s) and ticket ID(s). If not, leave this blank.
1212
validations:
1313
required: false
14+
- type: dropdown
15+
attributes:
16+
label: Project
17+
description: Select the project this issue is related to.
18+
multiple: true
19+
options:
20+
- Core
21+
- OneClient
22+
- OneLauncher
1423
- type: textarea
1524
attributes:
1625
label: Describe the bug

.github/ISSUE_TEMPLATE/enhancement.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,23 @@ body:
55
- type: markdown
66
attributes:
77
value: Before raising an issue, please search for existing issues and [Discord](https://polyfrost.org/discord) suggestions to avoid creating duplicates.
8-
- type: textarea
8+
- type: input
99
attributes:
1010
label: Original reporter/ticket ID
1111
description: If you are rewording a ticket, put the original reporter(s) and ticket ID(s). If not, leave this blank.
1212
validations:
1313
required: false
14+
- type: dropdown
15+
attributes:
16+
label: Project
17+
description: Select the project this issue is related to.
18+
multiple: true
19+
default: General
20+
options:
21+
- General
22+
- Core
23+
- OneClient
24+
- OneLauncher
1425
- type: textarea
1526
attributes:
1627
label: Is your suggested enhancement related to a problem? Please describe, or link another Issue.

.github/media/RepoBanner.png

53.6 KB
Loading
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: OneClient Release Build
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
publish-tauri:
8+
permissions:
9+
contents: write
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
include:
14+
- platform: macos-latest # ARM
15+
args: --target aarch64-apple-darwin
16+
- platform: macos-latest # Intel
17+
args: --target x86_64-apple-darwin
18+
- platform: ubuntu-22.04
19+
args: ''
20+
- platform: windows-latest
21+
args: ''
22+
23+
runs-on: ${{ matrix.platform }}
24+
steps:
25+
- uses: actions/checkout@v4
26+
27+
- name: Setup Rust
28+
uses: ./.github/actions/setup-rust
29+
with:
30+
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
31+
target: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
32+
save-cache: true
33+
restore-cache: true
34+
35+
- name: Setup Packages
36+
uses: ./.github/actions/setup-packages
37+
38+
- uses: tauri-apps/tauri-action@v0
39+
env:
40+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
41+
with:
42+
tagName: oneclient-__VERSION__
43+
releaseName: OneClient __VERSION__
44+
releaseDraft: true
45+
prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }}
46+
tauriScript: pnpm oneclient:desktop
47+
args: ${{ matrix.args }}

.github/workflows/release.yml renamed to .github/workflows/onelauncher_release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Release Build
1+
name: OneLauncher Release Build
22

33
on:
44
workflow_dispatch:
@@ -43,5 +43,5 @@ jobs:
4343
releaseName: OneLauncher __VERSION__
4444
releaseDraft: true
4545
prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }}
46-
tauriScript: pnpm desktop
46+
tauriScript: pnpm onelauncher:desktop
4747
args: ${{ matrix.args }}

.vscode/extensions.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
"tauri-apps.tauri-vscode", // Provides Tauri framework support.
44
"rust-lang.rust-analyzer", // Provides Rust language support.
55
"vadimcn.vscode-lldb", // Provides Rust debugging support.
6-
"oscarbeaumont.rspc-vscode", // RSPC is a framework for Routers.
7-
"antfu.unocss", // Provides UnoCSS intellisense.
6+
"bradlc.vscode-tailwindcss", // Provides UnoCSS intellisense.
87
"EditorConfig.EditorConfig", // Maintains consistent coding styles.
98
"dbaeumer.vscode-eslint" // Code formatting using ESLint.
109
]

.vscode/settings.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@
2727
"rust-analyzer.diagnostics.disabled": [
2828
"macro-error" // TODO: Remove this once taurpc upgrades to latest specta
2929
],
30-
"rust-analyzer.procMacro.ignored": {
31-
"tauri-specta": ["command"]
32-
},
3330
"rust-analyzer.check.command": "check",
3431
"rust-analyzer.diagnostics.experimental.enable": false,
3532
"rust-analyzer.linkedProjects": [],

ATTRIBUTION.md

Lines changed: 25 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Attribution
22

3-
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.
3+
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.
44

55
## OneLauncher
66

@@ -16,6 +16,20 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
1616
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
1717
```
1818

19+
## OneClient
20+
21+
```txt
22+
OneClient - A Minecraft Launcher
23+
Copyright (C) 2023~CURRENT Polyfrost and Contributors
24+
25+
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.
26+
27+
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
28+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
29+
30+
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
31+
```
32+
1933
## Polyfrost branding
2034

2135
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:
3145

3246
## Additional Libraries
3347

34-
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)):
35-
36-
## [Prism Launcher]
37-
38-
```txt
39-
Prism Launcher - Minecraft Launcher
40-
Copyright (C) 2022-2024 Prism Launcher Contributors
41-
42-
This program is free software: you can redistribute it and/or modify
43-
it under the terms of the GNU General Public License as published by
44-
the Free Software Foundation, version 3.
45-
46-
This program is distributed in the hope that it will be useful,
47-
but WITHOUT ANY WARRANTY; without even the implied warranty of
48-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
49-
GNU General Public License for more details.
50-
51-
You should have received a copy of the GNU General Public License
52-
along with this program. If not, see <https://www.gnu.org/licenses/>.
53-
54-
This file incorporates work covered by the following copyright and
55-
permission notice:
56-
57-
Copyright 2013-2021 MultiMC Contributors
58-
59-
Licensed under the Apache License, Version 2.0 (the "License");
60-
you may not use this file except in compliance with the License.
61-
You may obtain a copy of the License at
62-
63-
http://www.apache.org/licenses/LICENSE-2.0
64-
65-
Unless required by applicable law or agreed to in writing, software
66-
distributed under the License is distributed on an "AS IS" BASIS,
67-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
68-
See the License for the specific language governing permissions and
69-
limitations under the License.
70-
```
71-
72-
## [Modrinth App]
73-
74-
```txt
75-
Modrinth App
76-
Copyright (C) 2022-2023 Modrinth
77-
78-
This program is free software: you can redistribute it and/or modify
79-
it under the terms of the GNU General Public License as published by
80-
the Free Software Foundation, version 3.
81-
82-
This program is distributed in the hope that it will be useful,
83-
but WITHOUT ANY WARRANTY; without even the implied warranty of
84-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
85-
GNU General Public License for more details.
86-
87-
You should have received a copy of the GNU General Public License
88-
along with this program. If not, see <https://www.gnu.org/licenses/>.
89-
```
48+
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)):
9049

9150
## [Gamemode]
9251

9352
```txt
94-
Copyright (c) 2017-2022, Feral Interactive
53+
Copyright (c) 2017-2025, Feral Interactive and the GameMode contributors
9554
All rights reserved.
9655
9756
Redistribution and use in source and binary forms, with or without
9857
modification, are permitted provided that the following conditions are met:
9958
100-
* Redistributions of source code must retain the above copyright notice,
101-
this list of conditions and the following disclaimer.
102-
* Redistributions in binary form must reproduce the above copyright
103-
notice, this list of conditions and the following disclaimer in the
104-
documentation and/or other materials provided with the distribution.
105-
* Neither the name of Feral Interactive nor the names of its contributors
106-
may be used to endorse or promote products derived from this software
107-
without specific prior written permission.
59+
* Redistributions of source code must retain the above copyright notice,
60+
this list of conditions and the following disclaimer.
61+
* Redistributions in binary form must reproduce the above copyright
62+
notice, this list of conditions and the following disclaimer in the
63+
documentation and/or other materials provided with the distribution.
64+
* Neither the name of Feral Interactive nor the names of its contributors
65+
may be used to endorse or promote products derived from this software
66+
without specific prior written permission.
10867
10968
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
11069
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
145104
SOFTWARE.
146105
```
147106

148-
[Prism Launcher]: https://github.com/PrismLauncher/PrismLauncher
149-
[Modrinth App]: https://github.com/modrinth/code
150107
[Gamemode]: https://github.com/FeralInteractive/gamemode
151108
[Rust Gamemode Internal Linking]: https://github.com/SophieSilver/linking-gamemode

CONTRIBUTING.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,14 @@ To make changes locally, follow these steps:
4747
4. Install dependencies: `pnpm i`
4848
5. Prepare your cargo installation: `pnpm prep`
4949

50-
To quickly run only the desktop app after `prep`, you can use:
50+
### Running
51+
The most common scripts you will use are:
5152

52-
- `pnpm desktop dev`
53+
- `pnpm onelauncher:desktop dev` - Runs the **OneLauncher** desktop application with watch mode enabled and starts up the frontend's vite dev server.
5354

54-
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.
55+
- `pnpm oneclient:desktop dev` - Runs the **OneClient** desktop application with watch mode enabled and starts up the frontend's vite dev server.
5556

56-
If you encounter any issues, ensure that you are using the following versions (or later) of Rust, Node and Pnpm:
57-
58-
- `rustc` version: **1.80**
59-
- `node` version: **20.15**
60-
- `pnpm` version: **9.6.0**
57+
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.
6158

6259
After cleaning out your build artifacts using `pnpm clean`, `git clean`, or `cargo clean`, it is necessary to re-run the `setup` script.
6360

README.md

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,45 @@
1-
# OneLauncher
1+
<div align="center">
22

3-
Rust-based Minecraft launcher utilizing Tauri, SolidJS, and Tailwind
3+
<img src=".github/media/RepoBanner.png" alt="Repository Banner" />
44

5-
## Project Structure
5+
# ` OneLauncher ` + ` OneClient `
6+
Here is the monorepo containing the code for OneLauncher and OneClient.
67

7-
* [`apps/desktop`](./apps/desktop/) - Rust-based Minecraft launcher utilizing Tauri, SolidJS, and Tailwind.
8-
* [`crates/core`](./crates/core/) - The core for our Minecraft launcher (platform agnostic), along with Rust-based utilities for other Polyfrost projects and interactions.
9-
* [`testing`](./crates/testing/) - Testing playground for our Rust core, independant of Tauri.
10-
* [`distribution`](./packages/distribution/) - Distribution utilties and meta files for the [`apps/desktop`](./apps/desktop/) app.
8+
</div>
9+
10+
## Technologies Used
11+
- [**Tauri**](https://tauri.app/)
12+
- [**Sea ORM**](https://www.sea-ql.org/SeaORM/)
13+
- [**SQLite**](https://www.sqlite.org/)
14+
- [**React**](https://react.dev/)
15+
- [**Tailwind CSS**](https://tailwindcss.com/)
16+
- [**Tanstack Query**](https://tanstack.com/query/latest)
17+
- [**Tanstack Router**](https://tanstack.com/router/latest)
18+
19+
## Contributing
20+
We welcome contributions! Please read our [contributing guidelines](CONTRIBUTING.md) before getting started.
21+
22+
### Requirements
23+
24+
If you encounter any issues, ensure that you are using the following versions (or later) of Rust, Node and Pnpm:
25+
26+
- `rustc` version: **1.89**
27+
- `node` version: **22.15**
28+
- `pnpm` version: **10.13**
29+
30+
### Project Structure
31+
- **`packages/`** - Shared libraries and utilities.
32+
- [**`core/`**](./packages/core/) - Launcher Core. This is the library that contains the entire launcher logic.
33+
- [**`entity/`**](./packages/entity/) - Contains entity definitions used in the launcher's database.
34+
- [**`macro/`**](./packages/macro/) - Contains macro definitions to simplify some code.
35+
- [**`scripts/`**](./packages/scripts/) - General scripts for CI/CD or development environments.
36+
- [**`web_common/`**](./packages/web_common/) - Contains common web code used by both OneLauncher and OneClient.
37+
- **`apps/`**
38+
- [**`onelauncher/`**](./apps/onelauncher/)
39+
- **`desktop/`** - Tauri desktop application.
40+
- **`frontend/`** - React SPA frontend.
41+
- **`distribution/`** - Files used for release builds.
42+
- [**`oneclient/`**](./apps/oneclient/)
43+
- **`desktop/`** - Tauri desktop application.
44+
- **`frontend/`** - React SPA frontend.
45+
- **`distribution/`** - Files used for release builds.

0 commit comments

Comments
 (0)