Archive Steam docs; add itch.io upload guide

Move legacy Steam-related docs into documentation/archived and add a new UPLOAD-ITCH.md describing how to publish builds to itch.io with Butler. Update top-level README to state official releases will be on itch.io. Remove Steam-specific UI/features: drop steamCloudOptIn from first-run preferences, remove the Steam Cloud teaser and summary from the setup flow, and adjust settings/setup copy to reference handheld devices and non‑Steam distribution. Also make a small wording tweak in the plugins doc about rendererPreload.
This commit is contained in:
2026-02-24 20:50:00 +13:00
parent 618ea7d12d
commit 0b51d133a4
13 changed files with 136 additions and 22 deletions
View File
+3
View File
@@ -68,6 +68,9 @@ Nebula may be distributed outside of Steam through platforms such as:
Availability and packaging may change over time and are not guaranteed. Availability and packaging may change over time and are not guaranteed.
Official releases for Nebula will be published on itch.io; Steam distribution
is not available due to the Steam review outcome described above.
--- ---
## Licensing ## Licensing
+113
View File
@@ -0,0 +1,113 @@
# Uploading releases to itch.io using Butler
This document explains how to prepare and upload Nebula releases to itch.io using Butler, covering macOS, Windows, and Linux.
## Overview
Butler (itch.io) is the recommended channel for distributing Nebula releases. The process is:
1. Build your platform-specific artifact.
2. Install and authenticate `butler`.
3. Push the build to your `username/game:channel` with `butler push`.
## Install Butler
- macOS / Linux / Windows: Download the appropriate Butler binary from the official itch.io Butler releases (follow the official docs). Unpack, make executable, and place it on your `PATH`.
Example (Linux/macOS):
```bash
# after downloading 'butler' binary
chmod +x butler
sudo mv butler /usr/local/bin/
```
On Windows, place `butler.exe` in a folder on `PATH` or use it directly from the build folder.
## Authenticate
Run:
```bash
butler login
```
This opens a browser-based authentication flow. Verify with:
```bash
butler whoami
```
If automation is required, consult the official Butler docs for API-key/token login options.
## Prepare platform artifacts
macOS
- Create a zip of your `.app` bundle (keep the `.app` as a top-level item inside the zip):
```bash
ditto -c -k --sequesterRsrc --keepParent MyApp.app MyApp-mac.zip
```
Windows
- Zip the folder containing your `.exe` and runtime files, or create an installer and zip the installer.
```powershell
Compress-Archive -Path .\build\MyApp\* -DestinationPath MyApp-windows.zip
```
Linux
- Create a tarball (or zip) of the Linux runtime files:
```bash
tar -czf MyApp-linux.tar.gz -C build/linux .
```
Note: ensure the main binary has executable permissions before archiving.
## Push to itch.io
Basic command:
```bash
butler push <path> <username>/<game>:<channel>
```
Examples:
```bash
# macOS build
butler push MyApp-mac.zip myuser/nebulabrowser:mac
# Windows build
butler push MyApp-windows.zip myuser/nebulabrowser:windows
# Linux build
butler push MyApp-linux.tar.gz myuser/nebulabrowser:linux
```
Set a release version for itch.io using `--userversion`:
```bash
butler push MyApp-mac.zip myuser/nebulabrowser:mac --userversion 1.2.3
```
## Recommended channel strategy
- `stable` or `default` — production releases
- `beta` — pre-release testing
- Use platform-specific channels (e.g., `mac`, `windows`, `linux`) if you want separate channels per OS
## Tips
- Keep artifacts small and platform-specific to reduce download size.
- Verify the upload with `butler whoami` and by visiting your game page on itch.io.
- When testing on macOS, notarization and Gatekeeper may affect distribution; provide clear install instructions on your itch page.
## Rollback
Butler supports pushing to a channel multiple times; the latest pushed build becomes the current for that channel. To revert, push a previous artifact or use the itch.io web UI to select a previous build.
## References
Consult the official Butler documentation for advanced usage (credentials, automated CI uploads, delta uploads, and platform-specific packaging recommendations).
+3
View File
@@ -0,0 +1,3 @@
# GPU-FIX-README (archived)
This file was present at repository root and has been archived here for reference. The canonical GPU fix documentation lives under `documentation/`.
@@ -31,7 +31,7 @@ Example:
Fields: Fields:
- id: Unique id. Defaults to folder name if omitted. - id: Unique id. Defaults to folder name if omitted.
- main: Optional entry for main process integration. - main: Optional entry for main process integration.
- rendererPreload: Optional file injected into the preload. Use it to expose limited APIs. - rendererPreload: Optional file injected into the preload. Use it to expose a safe surface to the page.
- categories: Optional string or array of strings used for organizing/filtering plugins in UI and APIs. Example: ["AI", "Utilities"]. - categories: Optional string or array of strings used for organizing/filtering plugins in UI and APIs. Example: ["AI", "Utilities"].
- authors: Optional string or array of strings/objects describing authors. Objects support { name, email, url }. In APIs/UI, names are displayed. - authors: Optional string or array of strings/objects describing authors. Objects support { name, email, url }. In APIs/UI, names are displayed.
- enabled: Defaults to true. - enabled: Defaults to true.
@@ -1,5 +1,10 @@
Converting extracted AppImage (`squashfs-root`) into a distributable AppDir for Steam Converting extracted AppImage (`squashfs-root`) into a distributable AppDir for Steam
> Note: Nebula will not be distributed on the Steam Store. This document is
> kept for reference and for users who run Nebula via Steam as a non-Steam
> shortcut. Official distribution will be handled via itch.io and other
> non-Steam channels.
If your environment lacks `rsync`, use `cp -a` to copy the extracted AppImage into a clean AppDir and prepare it for upload to Steam. If your environment lacks `rsync`, use `cp -a` to copy the extracted AppImage into a clean AppDir and prepare it for upload to Steam.
1) Copy the extracted AppImage to an AppDir folder 1) Copy the extracted AppImage to an AppDir folder
@@ -77,7 +82,7 @@ Nebula solves this by:
### Gamepad API (for Developers) ### Gamepad API (for Developers)
The gamepad handler exposes an API via `window.gamepadAPI`: The gamepad handler exposes an API via `window.gamepadAPI`.
```javascript ```javascript
// Check if gamepad handler is initialized // Check if gamepad handler is initialized
@@ -142,7 +147,6 @@ If Steam is still applying mouse emulation:
- **Steam Deck / SteamOS Gaming Mode**: - **Steam Deck / SteamOS Gaming Mode**:
- Open Nebula → press the Steam button → **Controller Settings** (or the controller icon) - Open Nebula → press the Steam button → **Controller Settings** (or the controller icon)
- Set the layout to a **Gamepad** template (not “Keyboard/Mouse”), or disable Steam Input if the toggle is available - Set the layout to a **Gamepad** template (not “Keyboard/Mouse”), or disable Steam Input if the toggle is available
- This stops Steam from translating controller input into keyboard/mouse events (“Desktop Layout” behavior).
If you **dont see a Controller tab** (common when the Steam entry is treated as an “application/tool”): If you **dont see a Controller tab** (common when the Steam entry is treated as an “application/tool”):
- Use **Big Picture / Gaming Mode** and edit the **Controller Layout** for that specific entry. - Use **Big Picture / Gaming Mode** and edit the **Controller Layout** for that specific entry.
@@ -160,7 +164,7 @@ If Steam is still applying mouse emulation:
The `VAR=value %command%` syntax does **not** work on Windows. Use the Steam UI instead: The `VAR=value %command%` syntax does **not** work on Windows. Use the Steam UI instead:
1. **Library** → right-click Nebula → **Properties****Controller** → set to **"Disable Steam Input"** 1. **Library** → right-click Nebula → **Properties****Controller** → set to **"Disable Steam Input"**
2. If no Controller tab exists, open Steam in **Big Picture Mode** → Nebula → **Manage Game** (gear) → **Controller Options** → **Disable Steam Input** 2. If no Controller tab exists, open Steam in **Big Picture Mode** → Nebula → **Manage Game** (gear) → **Controller Options** → **Disable Steam Input**
If you must use launch options on Windows, use this wrapper syntax: If you must use launch options on Windows, use this wrapper syntax:
@@ -1,5 +1,9 @@
# Linux / SteamOS Build Upload Guide (SteamCMD) # Linux / SteamOS Build Upload Guide (SteamCMD)
> Note: Nebula will not be distributed on the Steam Store. This Steam upload
> guide is retained for historical/reference purposes only. Official releases
> will be published on itch.io and other non-Steam channels.
This guide explains how to upload the **Linux / SteamOS** build of Nebula Browser to Steam using **SteamCMD**. It is tailored to the current project layout on Steam Deck / Linux. This guide explains how to upload the **Linux / SteamOS** build of Nebula Browser to Steam using **SteamCMD**. It is tailored to the current project layout on Steam Deck / Linux.
--- ---
-1
View File
@@ -612,7 +612,6 @@ async function completeFirstRun(preferences = {}) {
selectedThemeId: preferences.selectedTheme || 'default', selectedThemeId: preferences.selectedTheme || 'default',
defaultBrowserAttempted: preferences.defaultBrowserSet || false, defaultBrowserAttempted: preferences.defaultBrowserSet || false,
defaultBrowserSet: preferences.defaultBrowserSet || false, defaultBrowserSet: preferences.defaultBrowserSet || false,
steamCloudOptIn: preferences.steamCloudOptIn || false,
completedAt: new Date().toISOString() completedAt: new Date().toISOString()
}; };
+2 -2
View File
@@ -36,7 +36,7 @@
<!-- Big Picture Mode --> <!-- Big Picture Mode -->
<div class="setting-group"> <div class="setting-group">
<h3>Big Picture Mode</h3> <h3>Big Picture Mode</h3>
<p class="note">A controller-friendly UI designed for Steam Deck and handheld devices.</p> <p class="note">A controller-friendly UI designed for handheld devices (e.g., Steam Deck).</p>
<div class="setting-row"> <div class="setting-row">
<button id="launch-bigpicture-btn" class="primary-btn"> <button id="launch-bigpicture-btn" class="primary-btn">
<span style="font-size: 18px;"></span> Launch Big Picture Mode <span style="font-size: 18px;"></span> Launch Big Picture Mode
@@ -287,7 +287,7 @@
<div class="customization-group"> <div class="customization-group">
<h3>Security Updates</h3> <h3>Security Updates</h3>
<p class="note" style="margin-bottom: 12px;">Nebula Browser is distributed via Steam, but the Electron runtime can be updated separately for security patches and performance improvements.</p> <p class="note" style="margin-bottom: 12px;">Nebula Browser is distributed via itch.io and other nonSteam channels; the Electron runtime can be updated separately for security patches and performance improvements.</p>
<div class="stack"> <div class="stack">
<!-- Update Status Banner --> <!-- Update Status Banner -->
+3 -8
View File
@@ -111,7 +111,7 @@
</div> </div>
</div> </div>
<!-- Step 4: Complete (Future: Steam Cloud) --> <!-- Step 4: Complete -->
<div class="setup-step" data-step="4"> <div class="setup-step" data-step="4">
<div class="step-content"> <div class="step-content">
<div class="success-icon"></div> <div class="success-icon"></div>
@@ -120,13 +120,8 @@
<div class="completion-summary" id="completion-summary"> <div class="completion-summary" id="completion-summary">
<!-- Summary will be populated dynamically --> <!-- Summary will be populated dynamically -->
</div> </div>
<div class="future-feature-teaser">
<h3>Coming Soon: Steam Cloud Sync</h3>
<p class="teaser-text">
<span class="teaser-icon">☁️</span>
In Phase 2, you'll be able to sync your bookmarks, settings, and themes across devices using Steam Cloud.
</p>
</div>
</div> </div>
<div class="step-actions"> <div class="step-actions">
<button class="btn btn-primary btn-large" id="btn-finish">Start Browsing</button> <button class="btn btn-primary btn-large" id="btn-finish">Start Browsing</button>
-7
View File
@@ -416,13 +416,6 @@ function renderCompletionSummary() {
<div class="summary-value">${setupState.defaultBrowserSet ? 'Set as Default' : 'Not Set'}</div> <div class="summary-value">${setupState.defaultBrowserSet ? 'Set as Default' : 'Not Set'}</div>
</div> </div>
</div> </div>
<div class="summary-item">
<div class="summary-icon">☁️</div>
<div class="summary-content">
<div class="summary-label">Steam Cloud Sync</div>
<div class="summary-value">Coming in Phase 2</div>
</div>
</div>
`; `;
} }