diff --git a/.env.example b/.env.example index 74a9f94..914d2b5 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -# Dostalgia — Environment Configuration +# DOStalgia — Environment Configuration # Copy this file to .env and fill in your values: # cp .env.example .env diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 6ec8110..2394051 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -1,4 +1,4 @@ -# This workflow builds and deploys Dostalgia whenever code is pushed to main. +# This workflow builds and deploys DOStalgia whenever code is pushed to main. # The runner has Docker socket access so it can manage containers on the host. # Parameters match the docker-compose at: # /appdata/dockhand/stacks/unraid/dostalgia/compose.yaml @@ -48,10 +48,10 @@ jobs: sleep 5 STATUS=$(docker inspect -f '{{.State.Status}}' ${{ env.CONTAINER_NAME }}) if [ "$STATUS" = "running" ]; then - echo "✅ Dostalgia container is running" + echo "✅ DOStalgia container is running" echo "--- last logs ---" docker logs ${{ env.CONTAINER_NAME }} --tail 5 - echo "✅ Dostalgia deployed!" + echo "✅ DOStalgia deployed!" else echo "❌ Container status: $STATUS" docker logs ${{ env.CONTAINER_NAME }} --tail 30 diff --git a/Dockerfile b/Dockerfile index 642f2f3..347d6cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# Dostalgia — Quarkus multi-stage build +# DOStalgia — Quarkus multi-stage build # ─── 1. Build frontend ─────────────────────────── FROM node:20-alpine AS frontend diff --git a/README.md b/README.md index a45eb23..6bcd217 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# DOSTALGIA 🕹️ +# DOStalgia 🕹️ A nostalgic DOS game hub. Upload your old DOS games, auto-scrape artwork and metadata from IGDB, and play them directly in your browser via js-dos (DOSBox compiled to WebAssembly). @@ -10,18 +10,18 @@ Every uploaded game is packaged into a `.jsdos` bundle — a standard ZIP with e **Save states are automatic** — js-dos persists your game progress to the browser's storage. Come back anytime and pick up where you left off. ### 📦 Handles any file structure -DOS games come in all shapes. Dostalgia handles them transparently: +DOS games come in all shapes. DOStalgia handles them transparently: - **Flattening** — If your ZIP has a single root directory (e.g. `doom/` with all files inside), the extractor flattens it so the game files sit at the bundle root. No extra nesting. - **Subdirectory games** — If files are deeper, the autoexec automatically `cd`s to the right directory before launching the executable. -- **CD images** — Games shipped on CD-ROM often need the disc mounted. Dostalgia detects `.iso`, `.cue`, `.img`, `.ccd`, and `.bin` files, fixes broken CloneCD `.cue` references (where the referenced `.bin` is actually `.img`), and mounts them in both `dosbox.conf` and `jsdos.json`. +- **CD images** — Games shipped on CD-ROM often need the disc mounted. DOStalgia detects `.iso`, `.cue`, `.img`, `.ccd`, and `.bin` files, fixes broken CloneCD `.cue` references (where the referenced `.bin` is actually `.img`), and mounts them in both `dosbox.conf` and `jsdos.json`. - **CD-only games** — If the archive contains only CD images with no executable, a CD-only bundle is created that mounts the disc and drops you at the DOS prompt. - **Hardcoded paths** — `ConfigPatcher` scans game config files for hardcoded absolute paths (e.g. `C:\FALLOUT1\MASTER.DAT`) that broke after flattening, and rewrites them to relative paths. -Other solutions such as [RomM](https://www.romm.app/) generate raw ZIP bundles and require you to write your own `dosbox.conf` with manual `mount` and `imgmount` commands. Dostalgia automates all of this for you. +Other solutions such as [RomM](https://www.romm.app/) generate raw ZIP bundles and require you to write your own `dosbox.conf` with manual `mount` and `imgmount` commands. DOStalgia automates all of this for you. ### 🔍 Smart executable detection -On upload, Dostalgia scans every `.exe`, `.com`, and `.bat` file and picks the best candidate as the main executable using a scoring system: +On upload, DOStalgia scans every `.exe`, `.com`, and `.bat` file and picks the best candidate as the main executable using a scoring system: 1. **Not an installer** — INSTALL/SETUP/CONFIG executables are deprioritised 2. **DOS executables** — Pure DOS apps are preferred over Windows ones @@ -31,12 +31,12 @@ On upload, Dostalgia scans every `.exe`, `.com`, and `.bat` file and picks the b All discovered executables are stored and available in the **Edit** page, where you can pick a different one via radio buttons. -Again, RomM requires you to manually specify the executable in a custom `dosbox.conf`, while Dostalgia detects and configures it for you. +Again, RomM requires you to manually specify the executable in a custom `dosbox.conf`, while DOStalgia detects and configures it for you. > **⚠️ Cache note:** If you change the executable, the `.jsdos` bundle is patched in-place. Your browser may serve a cached version of the old bundle — if the game doesn't launch with the new executable, **hard-refresh** the play page (Ctrl+Shift+R / Cmd+Shift+R). ### 🛠 One-click Setup launcher -Many DOS games include a `SETUP.EXE`, `INSTALL.EXE`, or `CONFIG.EXE` used to configure sound, controls, and graphics. When Dostalgia detects one: +Many DOS games include a `SETUP.EXE`, `INSTALL.EXE`, or `CONFIG.EXE` used to configure sound, controls, and graphics. When DOStalgia detects one: - A **🛠 Setup** button appears on the game detail page - Clicking it launches the setup executable *without modifying the main game bundle* @@ -45,7 +45,7 @@ Many DOS games include a `SETUP.EXE`, `INSTALL.EXE`, or `CONFIG.EXE` used to con This is not supported in RomM, where you would have to run the setup manually from the DOS prompt every time. ### 🪟 Windows game detection -DOSBox can't run Windows executables. Dostalgia's `PlatformDetector` reads MZ/PE/NE headers to detect Windows executables: +DOSBox can't run Windows executables. DOStalgia's `PlatformDetector` reads MZ/PE/NE headers to detect Windows executables: - The game detail page shows a **🪟 Requires Windows 3.1** badge - The **Play** button is disabled with "Unplayable" text @@ -53,16 +53,16 @@ DOSBox can't run Windows executables. Dostalgia's `PlatformDetector` reads MZ/PE - Setup executables that are Windows-native are also filtered out from the Setup button ### 📡 IGDB metadata & media -Dostalgia integrates with [IGDB](https://www.igdb.com/) (via Twitch OAuth2) to auto-populate game info: +DOStalgia integrates with [IGDB](https://www.igdb.com/) (via Twitch OAuth2) to auto-populate game info: -- **Auto Scrape** — On upload, Dostalgia searches IGDB by title and fills in year, genre, developer, publisher, description, and cover art. If IGDB finds a DOS result, it prioritises it. +- **Auto Scrape** — On upload, DOStalgia searches IGDB by title and fills in year, genre, developer, publisher, description, and cover art. If IGDB finds a DOS result, it prioritises it. - **Manual Search** — From the game detail page you can search IGDB by any query, browse results with cover thumbnails and DOS badges, and apply the one you want. - **Media** — Videos (YouTube embeds) and screenshots (1080p) are fetched and displayed in a scrollable media gallery with a preview player. **Setup:** 1. Go to https://dev.twitch.tv/console/apps → **Register Your Application** -2. Name: `Dostalgia` (or anything), OAuth Redirect URL: `http://localhost`, Category: **Other** +2. Name: `dostalgia` (or anything), OAuth Redirect URL: `http://localhost`, Category: **Other** 3. Copy the **Client ID** and generate a **Client Secret** 4. Provide them via environment variables: diff --git a/frontend/index.html b/frontend/index.html index 9093ce6..1116143 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,7 @@ - Dostalgia + DOStalgia diff --git a/frontend/src/lib/api.js b/frontend/src/lib/api.js index 447b596..34a1c41 100644 --- a/frontend/src/lib/api.js +++ b/frontend/src/lib/api.js @@ -1,4 +1,4 @@ -/** API client for Dostalgia backend. */ +/** API client for DOStalgia backend. */ const BASE = import.meta.env.PROD ? "" : ""; // Proxy handles it in dev