Skip to content

Commit 69dcf5e

Browse files
committed
fix: CI pnpm version conflict, add README
1 parent b52e3a4 commit 69dcf5e

2 files changed

Lines changed: 160 additions & 2 deletions

File tree

.github/workflows/build.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ jobs:
2828

2929
- name: Install pnpm
3030
uses: pnpm/action-setup@v4
31-
with:
32-
version: latest
3331

3432
- name: Install frontend dependencies
3533
run: pnpm install

README.md

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
# AutoCreamAPI
2+
3+
[![Build](https://github.com/Mooshieblob1/AutoCreamAPI/actions/workflows/build.yml/badge.svg)](https://github.com/Mooshieblob1/AutoCreamAPI/actions/workflows/build.yml)
4+
5+
A desktop application that automatically sets up [CreamAPI](https://cs.rin.ru/forum/viewtopic.php?f=29&t=70576) for Steam games. Built with **Rust/Tauri 2** and **Svelte 5**, replacing the original .NET-based AutoCreamAPI.
6+
7+
## Features
8+
9+
- **Automatic Game Discovery** — Scans all Steam library folders by parsing local ACF manifest files. No API key required.
10+
- **Dual-Source DLC Fetching** — Retrieves DLC lists from both the Steam Store API and steamcmd.net, including hidden/unlisted DLCs.
11+
- **One-Click Apply/Remove** — Backs up original Steam API DLLs, installs CreamAPI replacements, and generates `cream_api.ini` configuration automatically.
12+
- **x86 & x64 Support** — Detects and handles both 32-bit and 64-bit Steam API DLLs per game.
13+
- **Offline Mode** — Optional setting to force CreamAPI into offline mode.
14+
- **Extra Protection** — Optional flag for games with additional DRM checks.
15+
- **Applied Status Detection** — Shows which games already have CreamAPI installed by detecting backup DLLs.
16+
- **Hidden DLC Badges** — DLCs sourced from steamcmd.net (not visible on the Steam Store) are tagged as "Hidden".
17+
- **Search & Filter** — Quickly find games in large libraries.
18+
19+
## Screenshots
20+
21+
*Coming soon*
22+
23+
## Requirements
24+
25+
- **Windows 10/11** (64-bit)
26+
- **Steam** installed with at least one game library
27+
- **CreamAPI DLLs** — The app ships with bundled CreamAPI DLLs (`steam_api.dll` and `steam_api64.dll`) in its resources
28+
29+
## Installation
30+
31+
### Pre-built Installers
32+
33+
Download the latest installer from the [Actions](https://github.com/Mooshieblob1/AutoCreamAPI/actions) artifacts or [Releases](https://github.com/Mooshieblob1/AutoCreamAPI/releases):
34+
35+
- **`AutoCreamAPI_x.x.x_x64-setup.exe`** — NSIS installer (recommended)
36+
- **`AutoCreamAPI_x.x.x_x64_en-US.msi`** — MSI installer
37+
38+
### Build from Source
39+
40+
#### Prerequisites
41+
42+
- [Rust](https://rustup.rs/) (stable, ≥1.77.2)
43+
- [Node.js](https://nodejs.org/) (≥22)
44+
- [pnpm](https://pnpm.io/) (≥10)
45+
46+
#### Steps
47+
48+
```bash
49+
git clone https://github.com/Mooshieblob1/AutoCreamAPI.git
50+
cd AutoCreamAPI
51+
pnpm install
52+
pnpm tauri build
53+
```
54+
55+
The built executable and installers will be in `src-tauri/target/release/` and `src-tauri/target/release/bundle/`.
56+
57+
For development with hot-reload:
58+
59+
```bash
60+
pnpm tauri dev
61+
```
62+
63+
## Usage
64+
65+
1. **Launch AutoCreamAPI** — The app automatically scans your Steam libraries for installed games.
66+
2. **Select a game** from the left panel.
67+
3. **Review the DLC list** — All available DLCs are fetched and pre-selected. Deselect any you don't want.
68+
4. **Configure settings** (optional):
69+
- **Offline Mode** — Forces CreamAPI to work without a network connection.
70+
- **Extra Protection** — Enables additional compatibility for certain games.
71+
5. **Click "Apply CreamAPI"** — The app will:
72+
- Back up the original `steam_api.dll` / `steam_api64.dll`
73+
- Rename originals to `steam_api_o.dll` / `steam_api64_o.dll`
74+
- Write the CreamAPI DLLs in their place
75+
- Generate a `cream_api.ini` with your selected DLCs
76+
6. **To revert**, select the game and click **"Remove CreamAPI"** — originals are restored from backups.
77+
78+
## How It Works
79+
80+
### Game Discovery
81+
82+
The app reads the Windows registry (`HKCU\Software\Valve\Steam`) to find Steam's installation path, then parses `libraryfolders.vdf` to locate all library folders. Each library's `steamapps/` directory is scanned for `.acf` manifest files which contain game metadata (app ID, name, install directory). Games are checked for the presence of `steam_api.dll` and/or `steam_api64.dll` to confirm they use the Steam API.
83+
84+
### DLC Fetching
85+
86+
Two sources are queried concurrently:
87+
88+
| Source | Endpoint | What it provides |
89+
|--------|----------|-----------------|
90+
| **Steam Store API** | `store.steampowered.com/api/appdetails` | Official DLC list with names |
91+
| **SteamCMD Web API** | `api.steamcmd.net/v1/info` | Hidden/unlisted DLCs via `extended.listofdlc` and depot metadata |
92+
93+
Results are merged and deduplicated. DLCs only found via SteamCMD are marked as "Hidden" in the UI. Placeholder names are resolved with follow-up Store API calls.
94+
95+
### CreamAPI Application
96+
97+
When applied, the app:
98+
99+
1. Reads the bundled CreamAPI DLLs from Tauri's resource directory
100+
2. Creates a `.backup` copy of the original Steam API DLL
101+
3. Renames the original to `*_o.dll` (required by CreamAPI as the "original API" reference)
102+
4. Writes the CreamAPI DLL in place of the original
103+
5. Generates `cream_api.ini` with app ID, DLC list, and settings
104+
105+
## Tech Stack
106+
107+
| Layer | Technology |
108+
|-------|-----------|
109+
| **Framework** | [Tauri 2](https://tauri.app/) |
110+
| **Backend** | Rust (edition 2021) |
111+
| **Frontend** | [Svelte 5](https://svelte.dev/) + TypeScript |
112+
| **Build Tool** | [Vite 8](https://vite.dev/) |
113+
| **HTTP Client** | reqwest 0.12 |
114+
| **VDF Parsing** | keyvalues-serde 0.2 |
115+
| **Registry** | winreg 0.55 |
116+
| **CI/CD** | GitHub Actions (Windows) |
117+
| **Package Manager** | pnpm |
118+
119+
## Project Structure
120+
121+
```
122+
AutoCreamAPI/
123+
├── src/ # Frontend (Svelte)
124+
│ ├── App.svelte # Main UI component
125+
│ ├── main.ts # Entry point
126+
│ └── styles.css # Dark theme styles
127+
├── src-tauri/ # Backend (Rust/Tauri)
128+
│ ├── src/
129+
│ │ ├── lib.rs # Tauri command handlers
130+
│ │ ├── steam.rs # Steam game discovery
131+
│ │ ├── dlc.rs # DLC fetching (dual-source)
132+
│ │ └── creamapi.rs # DLL management & config generation
133+
│ ├── resources/ # Bundled CreamAPI DLLs
134+
│ │ ├── steam_api.dll
135+
│ │ └── steam_api64.dll
136+
│ ├── Cargo.toml
137+
│ └── tauri.conf.json
138+
├── .github/workflows/
139+
│ └── build.yml # CI: Windows build + artifact upload
140+
├── package.json
141+
└── vite.config.ts
142+
```
143+
144+
## Background
145+
146+
This project is a ground-up rewrite of the original [AutoCreamAPI](https://github.com/MoebiusZero/AutoCreamAPI), which was a .NET Core 3.1 WPF application. The original stopped working due to:
147+
148+
1. **.NET Core 3.1 reaching end-of-life** — The compiled binary would no longer launch on systems without the deprecated runtime.
149+
2. **Steam API deprecation** — The `ISteamApps/GetAppList/v2` endpoint used for game discovery was shut down (returns 404).
150+
3. **Stale CreamAPI DLLs** — The bundled DLLs were outdated and incompatible with newer Steam client updates.
151+
152+
This rewrite addresses all three issues by using Rust (no runtime dependency), local file-based game discovery (no Steam web API needed), and bundling current CreamAPI DLLs as Tauri resources.
153+
154+
## License
155+
156+
GPL-3.0 — see [LICENSE](LICENSE) for details.
157+
158+
## Disclaimer
159+
160+
This software is provided for educational and personal use. The authors are not responsible for any misuse. Use at your own risk and in accordance with applicable terms of service.

0 commit comments

Comments
 (0)