Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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).
|
||||||
@@ -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 **don’t see a Controller tab** (common when the Steam entry is treated as an “application/tool”):
|
If you **don’t 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.
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -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()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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 non‑Steam 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 -->
|
||||||
|
|||||||
+13
-9
@@ -12,14 +12,18 @@
|
|||||||
--dark-blue: #0B1C2B;
|
--dark-blue: #0B1C2B;
|
||||||
--dark-purple: #1B1035;
|
--dark-purple: #1B1035;
|
||||||
--primary: #7B2EFF;
|
--primary: #7B2EFF;
|
||||||
|
--primary-rgb: 123, 46, 255;
|
||||||
--accent: #00C6FF;
|
--accent: #00C6FF;
|
||||||
|
--accent-rgb: 0, 198, 255;
|
||||||
--text: #E0E0E0;
|
--text: #E0E0E0;
|
||||||
--text-secondary: #A0A0A0;
|
--text-secondary: #A0A0A0;
|
||||||
--card-bg: rgba(255, 255, 255, 0.05);
|
--card-bg: rgba(255, 255, 255, 0.05);
|
||||||
--card-hover: rgba(255, 255, 255, 0.08);
|
--card-hover: rgba(255, 255, 255, 0.08);
|
||||||
--border: rgba(255, 255, 255, 0.1);
|
--border: rgba(255, 255, 255, 0.1);
|
||||||
--success: #4CAF50;
|
--success: #4CAF50;
|
||||||
|
--success-rgb: 76, 175, 80;
|
||||||
--warning: #FF9800;
|
--warning: #FF9800;
|
||||||
|
--warning-rgb: 255, 152, 0;
|
||||||
--gradient-primary: linear-gradient(135deg, var(--accent), var(--primary));
|
--gradient-primary: linear-gradient(135deg, var(--accent), var(--primary));
|
||||||
--gradient-bg: linear-gradient(145deg, var(--bg) 0%, var(--dark-purple) 100%);
|
--gradient-bg: linear-gradient(145deg, var(--bg) 0%, var(--dark-purple) 100%);
|
||||||
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.2);
|
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.2);
|
||||||
@@ -98,7 +102,7 @@ body, html {
|
|||||||
.progress-step.active .step-circle {
|
.progress-step.active .step-circle {
|
||||||
background: var(--primary);
|
background: var(--primary);
|
||||||
border-color: transparent;
|
border-color: transparent;
|
||||||
box-shadow: 0 4px 12px rgba(123, 46, 255, 0.4);
|
box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.4);
|
||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +194,7 @@ body, html {
|
|||||||
.setup-logo {
|
.setup-logo {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
filter: drop-shadow(0 8px 24px rgba(123, 46, 255, 0.3));
|
filter: drop-shadow(0 8px 24px rgba(var(--primary-rgb), 0.3));
|
||||||
animation: float 3s ease-in-out infinite;
|
animation: float 3s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,7 +277,7 @@ body, html {
|
|||||||
.theme-card.selected {
|
.theme-card.selected {
|
||||||
border-color: var(--primary);
|
border-color: var(--primary);
|
||||||
background: var(--card-hover);
|
background: var(--card-hover);
|
||||||
box-shadow: 0 0 0 3px rgba(123, 46, 255, 0.2);
|
box-shadow: 0 0 0 3px rgba(var(--primary-rgb), 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.theme-card.selected::after {
|
.theme-card.selected::after {
|
||||||
@@ -383,7 +387,7 @@ body, html {
|
|||||||
|
|
||||||
.default-browser-status.is-default {
|
.default-browser-status.is-default {
|
||||||
border-color: var(--success);
|
border-color: var(--success);
|
||||||
background: rgba(76, 175, 80, 0.1);
|
background: rgba(var(--success-rgb), 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.default-browser-status.is-default .status-icon {
|
.default-browser-status.is-default .status-icon {
|
||||||
@@ -396,7 +400,7 @@ body, html {
|
|||||||
|
|
||||||
.default-browser-status.not-default {
|
.default-browser-status.not-default {
|
||||||
border-color: var(--warning);
|
border-color: var(--warning);
|
||||||
background: rgba(255, 152, 0, 0.1);
|
background: rgba(var(--warning-rgb), 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
@@ -430,7 +434,7 @@ body, html {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 4rem;
|
font-size: 4rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
box-shadow: 0 8px 32px rgba(123, 46, 255, 0.4);
|
box-shadow: 0 8px 32px rgba(var(--primary-rgb), 0.4);
|
||||||
animation: scaleIn 0.5s ease;
|
animation: scaleIn 0.5s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -492,7 +496,7 @@ body, html {
|
|||||||
|
|
||||||
/* Future Feature Teaser */
|
/* Future Feature Teaser */
|
||||||
.future-feature-teaser {
|
.future-feature-teaser {
|
||||||
background: linear-gradient(135deg, rgba(123, 46, 255, 0.1), rgba(0, 198, 255, 0.1));
|
background: linear-gradient(135deg, rgba(var(--primary-rgb), 0.1), rgba(var(--accent-rgb), 0.1));
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
padding: 2rem;
|
padding: 2rem;
|
||||||
@@ -554,12 +558,12 @@ body, html {
|
|||||||
.btn-primary {
|
.btn-primary {
|
||||||
background: var(--primary);
|
background: var(--primary);
|
||||||
color: white;
|
color: white;
|
||||||
box-shadow: 0 4px 12px rgba(123, 46, 255, 0.3);
|
box-shadow: 0 4px 12px rgba(var(--primary-rgb), 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-primary:hover {
|
.btn-primary:hover {
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
box-shadow: 0 6px 20px rgba(123, 46, 255, 0.4);
|
box-shadow: 0 6px 20px rgba(var(--primary-rgb), 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-primary:active {
|
.btn-primary:active {
|
||||||
|
|||||||
+3
-8
@@ -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>
|
||||||
|
|||||||
+35
-7
@@ -121,6 +121,22 @@ function getThemeById(themeId) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hexToRgb(hex) {
|
||||||
|
if (!hex || typeof hex !== 'string') return null;
|
||||||
|
let normalized = hex.trim().replace(/^#/, '');
|
||||||
|
if (normalized.length === 3) {
|
||||||
|
normalized = normalized.split('').map(char => char + char).join('');
|
||||||
|
}
|
||||||
|
if (!/^[a-fA-F\d]{6}$/.test(normalized)) return null;
|
||||||
|
|
||||||
|
const intValue = parseInt(normalized, 16);
|
||||||
|
return {
|
||||||
|
r: (intValue >> 16) & 255,
|
||||||
|
g: (intValue >> 8) & 255,
|
||||||
|
b: intValue & 255
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply theme to the setup page UI and persist selection
|
* Apply theme to the setup page UI and persist selection
|
||||||
*/
|
*/
|
||||||
@@ -140,6 +156,25 @@ function applyThemeToSetupPage(theme, themeId = null) {
|
|||||||
setVar('--primary', colors.primary, '#7B2EFF');
|
setVar('--primary', colors.primary, '#7B2EFF');
|
||||||
setVar('--accent', colors.accent, '#00C6FF');
|
setVar('--accent', colors.accent, '#00C6FF');
|
||||||
setVar('--text', colors.text, '#E0E0E0');
|
setVar('--text', colors.text, '#E0E0E0');
|
||||||
|
setVar('--success', colors.accent, '#4CAF50');
|
||||||
|
setVar('--warning', colors.primary, '#FF9800');
|
||||||
|
|
||||||
|
const primaryRgb = hexToRgb(colors.primary || '#7B2EFF');
|
||||||
|
const accentRgb = hexToRgb(colors.accent || '#00C6FF');
|
||||||
|
const successRgb = hexToRgb(colors.accent || '#4CAF50');
|
||||||
|
const warningRgb = hexToRgb(colors.primary || '#FF9800');
|
||||||
|
if (primaryRgb) {
|
||||||
|
setVar('--primary-rgb', `${primaryRgb.r}, ${primaryRgb.g}, ${primaryRgb.b}`);
|
||||||
|
}
|
||||||
|
if (accentRgb) {
|
||||||
|
setVar('--accent-rgb', `${accentRgb.r}, ${accentRgb.g}, ${accentRgb.b}`);
|
||||||
|
}
|
||||||
|
if (successRgb) {
|
||||||
|
setVar('--success-rgb', `${successRgb.r}, ${successRgb.g}, ${successRgb.b}`);
|
||||||
|
}
|
||||||
|
if (warningRgb) {
|
||||||
|
setVar('--warning-rgb', `${warningRgb.r}, ${warningRgb.g}, ${warningRgb.b}`);
|
||||||
|
}
|
||||||
|
|
||||||
if (theme.gradient) {
|
if (theme.gradient) {
|
||||||
document.body.style.background = theme.gradient;
|
document.body.style.background = theme.gradient;
|
||||||
@@ -416,13 +451,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>
|
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user