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:
@@ -0,0 +1,94 @@
|
||||
# Electron Upgrade Feature - Bug Fixes
|
||||
|
||||
## Problem Identified
|
||||
The upgrade feature was downloading and installing new Electron versions successfully, but the app always showed the old version (1.0.0) after restart because:
|
||||
|
||||
1. **Version Source Issue**: The app was reading `app.getVersion()` which gets the version from `package.json` at startup time
|
||||
2. **Package.json Not Re-read**: Even after npm installed a new Electron version, the app didn't re-read the updated `package.json`
|
||||
3. **Runtime Display**: The About tab showed the bundled Electron version (37.x) which is baked into the binary at build time
|
||||
|
||||
## Solutions Implemented
|
||||
|
||||
### 1. **New Helper Function: `getInstalledElectronVersion()`**
|
||||
- Reads `package.json` directly every time it's called (not cached)
|
||||
- Extracts the actual installed Electron version from `devDependencies`
|
||||
- Handles both stable (`electron`) and nightly (`electron-nightly`) packages
|
||||
- Strips version specifiers (^, ~, etc.) to get the clean version number
|
||||
- Falls back to `app.getVersion()` if reading fails
|
||||
|
||||
```javascript
|
||||
function getInstalledElectronVersion() {
|
||||
try {
|
||||
const packageJsonPath = path.join(__dirname, 'package.json');
|
||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
||||
|
||||
const electronDep = packageJson.devDependencies?.electron;
|
||||
const electronNightlyDep = packageJson.devDependencies?.['electron-nightly'];
|
||||
|
||||
if (electronDep) {
|
||||
return electronDep.replace(/^\D+/, '');
|
||||
}
|
||||
if (electronNightlyDep) {
|
||||
return electronNightlyDep.replace(/^\D+/, '');
|
||||
}
|
||||
return app.getVersion();
|
||||
} catch (err) {
|
||||
return app.getVersion();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. **Updated `get-electron-versions` Handler**
|
||||
- Now uses `getInstalledElectronVersion()` instead of `app.getVersion()`
|
||||
- Returns the actual installed version that was modified by npm
|
||||
- Performs fresh version checks each time (no caching)
|
||||
|
||||
### 3. **Improved `upgrade-electron` Handler**
|
||||
- Increased `maxBuffer` to handle large npm output
|
||||
- Added cleanup logic to remove the old Electron variant when switching types
|
||||
- Removes `electron` when upgrading to `nightly`
|
||||
- Removes `electron-nightly` when upgrading to `stable`
|
||||
- Better error logging to debug npm failures
|
||||
- Returns clearer messages about installation status
|
||||
|
||||
### 4. **Enhanced UI/UX in settings.js**
|
||||
- Added more descriptive status text ("Downloading and installing..." instead of just "Upgrading...")
|
||||
- Disables all controls during upgrade to prevent multiple clicks
|
||||
- Reduced restart delay from 2000ms to 1500ms for faster feedback
|
||||
- Better error handling with proper cleanup of disabled states
|
||||
|
||||
## How It Works Now
|
||||
|
||||
1. **User clicks "Check for Updates"**
|
||||
- Queries npm registry for latest version
|
||||
- Uses `getInstalledElectronVersion()` to read current version from `package.json`
|
||||
- Compares versions and shows if update is available
|
||||
|
||||
2. **User clicks "Upgrade Electron"**
|
||||
- Confirms action
|
||||
- Runs `npm install --save-dev electron@latest` (or `electron-nightly@latest`)
|
||||
- npm downloads and installs new version
|
||||
- Handler removes the other Electron variant from `package.json` if needed
|
||||
- Shows success message
|
||||
|
||||
3. **App Restarts**
|
||||
- Uses `app.relaunch()` and `app.quit()`
|
||||
- When app relaunches, it:
|
||||
- Loads new Electron binary from `node_modules`
|
||||
- Runs new Electron version
|
||||
- Settings page shows correct new version on next check
|
||||
|
||||
## Testing Recommendations
|
||||
|
||||
1. Test upgrading from stable to nightly version
|
||||
2. Test upgrading from nightly back to stable
|
||||
3. Verify version display updates after restart
|
||||
4. Check that old variant is removed from `package.json`
|
||||
5. Verify app runs stably with new Electron version
|
||||
|
||||
## Notes for Future Development
|
||||
|
||||
- The About tab displays `process.versions.electron` which is the bundled Chromium version, not the Electron framework version
|
||||
- The Electron version we display in the upgrade section comes from `package.json` which is the actual framework version
|
||||
- When building with electron-builder, the bundled version becomes fixed until next rebuild
|
||||
- For development/testing, the upgrade feature reads live from `package.json`
|
||||
Reference in New Issue
Block a user