aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2026-01-15 15:03:51 +0800
committerHsiangNianian <i@jyunko.cn>2026-01-15 15:03:51 +0800
commit10e6048cfbbc5c2b69c9c7bdbd0ab062724fd34d (patch)
tree5084a888f01eda13437554644b8124a7cec451af
parentfd61cbe823c51c300de7cb6a634c8960a4ee2207 (diff)
downloadDropOut-10e6048cfbbc5c2b69c9c7bdbd0ab062724fd34d.tar.gz
DropOut-10e6048cfbbc5c2b69c9c7bdbd0ab062724fd34d.zip
docs: Update README.md with enhanced feature descriptions, improved UI terminology, and added installation instructions; update image alt text for accessibility
-rw-r--r--README.md60
-rw-r--r--assets/image.pngbin161028 -> 163436 bytes
-rw-r--r--ui/src/components/HomeView.svelte14
3 files changed, 46 insertions, 28 deletions
diff --git a/README.md b/README.md
index 075ef8d..945e530 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,42 @@
# DropOut
-DropOut is a modern, fast, and efficient Minecraft launcher built with the latest web and system technologies. It leverages **Tauri v2** to deliver a lightweight application with a robust **Rust** backend and a reactive **Svelte 5** frontend.
+DropOut is a modern, minimalist, and efficient Minecraft launcher built with the latest web and system technologies. It leverages **Tauri v2** to deliver a lightweight application with a robust **Rust** backend and a reactive **Svelte 5** frontend.
<div align="center">
- <img width="700" src="assets/image.png" />
+ <img width="700" src="assets/image.png" alt="DropOut Launcher Interface" />
</div>
## Features
-- **High Performance**: Built with Rust and Tauri for minimal resource usage.
-- **Microsoft Authentication**: Secure login support via official Xbox Live & Microsoft OAuth flows.
-- **Cross-Platform**: Native support for **Windows**, **Linux**, and **macOS**.
-- **Modern UI**: Clean and responsive interface built with Svelte 5 and Tailwind CSS 4.
+- **High Performance**: Built with Rust and Tauri for minimal resource usage and fast startup times.
+- **Modern Industrial UI**: A clean, distraction-free interface designed with **Svelte 5** and **Tailwind CSS 4**.
+- **Microsoft Authentication**: Secure login support via official Xbox Live & Microsoft OAuth flows (Device Code Flow).
+- **Mod Loader Support**:
+ - **Fabric**: Built-in installer and version management.
+ - **Forge**: Support for installing and launching Forge versions.
+- **Java Management**:
+ - Automatic detection of installed Java versions.
+ - Built-in downloader for Adoptium JDK/JRE.
+- **GitHub Integration**: View the latest project updates and changelogs directly from the launcher home screen.
- **Game Management**:
-
- - Version isolation and management
- - Efficient asset and library downloading
- - Custom Java arguments support
+ - Complete version isolation.
+ - Efficient concurrent asset and library downloading.
+ - Customizable memory allocation and resolution settings.
## Roadmap
-- [X] **Account Persistence** — Save login state between sessions
-- [X] **Token Refresh** — Auto-refresh expired Microsoft tokens
-- [X] **JVM Arguments Parsing** — Parse `arguments.jvm` from version.json for Mac M1/ARM support
-- [X] **Java Auto-detection** — Scan common paths for Java installations
-- [X] **Fabric Loader Support** — Install and launch with Fabric
-- [X] **Forge Loader Support** — Install and launch with Forge (basic support)
-- [X] **Version Filtering** — Filter by release/snapshot/modded in UI
+- [x] **Account Persistence** — Save login state between sessions
+- [x] **Token Refresh** — Auto-refresh expired Microsoft tokens
+- [x] **JVM Arguments Parsing** — Full support for `arguments.jvm` and `arguments.game` parsing
+- [x] **Java Auto-detection & Download** — Scan system and download Java runtimes
+- [x] **Fabric Loader Support** — Install and launch with Fabric
+- [x] **Forge Loader Support** — Install and launch with Forge
+- [x] **GitHub Releases Integration** — View changelogs in-app
- [ ] **Instance/Profile System** — Multiple isolated game directories with different versions/mods
-- [ ] **Multi-account Support** — Switch between multiple accounts
+- [ ] **Multi-account Support** — Switch between multiple accounts seamlessly
- [ ] **Custom Game Directory** — Allow users to choose game files location
- [ ] **Launcher Auto-updater** — Self-update mechanism via Tauri updater plugin
-- [ ] **Mods Manager** — Enable/disable mods without deletion
-- [ ] **Resource Packs Manager** — Browse and manage resource packs
-- [ ] **Quilt Loader Support** — Install and launch with Quilt
+- [ ] **Mods Manager** — Enable/disable mods directly in the launcher
- [ ] **Import from Other Launchers** — Migration tool for MultiMC/Prism profiles
## Installation
@@ -42,18 +45,18 @@ Download the latest release for your platform from the [Releases](https://github
| Platform | Files |
| -------------- | ----------------------- |
-| Linux x86_64 | `.deb`, `.AppImage` |
-| Linux ARM64 | `.deb`, `.AppImage` |
-| macOS ARM64 | `.dmg` |
-| Windows x86_64 | `.msi`, `.exe` |
-| Windows ARM64 | `.msi`, `.exe` |
+| Linux x86_64 | `.deb`, `.AppImage` |
+| Linux ARM64 | `.deb`, `.AppImage` |
+| macOS ARM64 | `.dmg` |
+| Windows x86_64 | `.msi`, `.exe` |
+| Windows ARM64 | `.msi`, `.exe` |
## Building from Source
### Prerequisites
1. **Rust**: Install from [rustup.rs](https://rustup.rs/).
-2. **Node.js** & **pnpm**: Used for the frontend.
+2. **Node.js** & **pnpm**: Used for the frontend dependencies.
3. **System Dependencies**: Follow the [Tauri Prerequisites](https://v2.tauri.app/start/prerequisites/) for your OS.
### Steps
@@ -64,6 +67,7 @@ Download the latest release for your platform from the [Releases](https://github
git clone https://github.com/HsiangNianian/DropOut.git
cd DropOut
```
+
2. **Install Frontend Dependencies**
```bash
@@ -71,12 +75,14 @@ Download the latest release for your platform from the [Releases](https://github
pnpm install
cd ..
```
+
3. **Run in Development Mode**
```bash
# This will start the frontend server and the Tauri app window
cargo tauri dev
```
+
4. **Build Release Version**
```bash
diff --git a/assets/image.png b/assets/image.png
index ddda96f..db6ada3 100644
--- a/assets/image.png
+++ b/assets/image.png
Binary files differ
diff --git a/ui/src/components/HomeView.svelte b/ui/src/components/HomeView.svelte
index 2794712..732545f 100644
--- a/ui/src/components/HomeView.svelte
+++ b/ui/src/components/HomeView.svelte
@@ -22,10 +22,22 @@
});
}
+ function escapeHtml(unsafe: string) {
+ return unsafe
+ .replace(/&/g, "&amp;")
+ .replace(/</g, "&lt;")
+ .replace(/>/g, "&gt;")
+ .replace(/"/g, "&quot;")
+ .replace(/'/g, "&#039;");
+ }
+
// Enhanced markdown parser with Emoji and GitHub specific features
function formatBody(body: string) {
if (!body) return '';
+ // Escape HTML first to prevent XSS
+ let processed = escapeHtml(body);
+
// Emoji map (common GitHub emojis)
const emojiMap: Record<string, string> = {
':tada:': '🎉', ':sparkles:': '✨', ':bug:': '🐛', ':memo:': '📝',
@@ -89,7 +101,7 @@
</div>
<!-- Scrollable Container -->
-<div class="relative z-10 h-full {releasesState.isLoading || releasesState.releases.length === 0 ? 'overflow-hidden' : 'overflow-y-auto custom-scrollbar scroll-smooth'}">
+<div class="relative z-10 h-full {releasesState.isLoading ? 'overflow-hidden' : 'overflow-y-auto custom-scrollbar scroll-smooth'}">
<!-- Hero Section (Full Height) -->
<div class="min-h-full flex flex-col justify-end p-12 pb-32">