cleanup docs
This commit is contained in:
@@ -1,312 +0,0 @@
|
||||
# Auto Claude Update System Analysis
|
||||
|
||||
## Current State
|
||||
|
||||
The app has **TWO separate update systems** for different components:
|
||||
|
||||
### 1. ✅ Auto Claude Framework Updates (WORKING)
|
||||
|
||||
**What it updates:** The Python framework source code (`auto-claude/` directory)
|
||||
|
||||
**How it works:**
|
||||
- Checks GitHub Releases API for new versions
|
||||
- Downloads release tarball
|
||||
- Extracts and applies update to the bundled source
|
||||
- Preserves user configuration files (.env, etc.)
|
||||
|
||||
**User Experience:**
|
||||
- **Settings > Advanced > Updates** section
|
||||
- Visual update checker with version display
|
||||
- Release notes rendered in UI
|
||||
- Progress bar during download
|
||||
- One-click update button
|
||||
- Works across all platforms (macOS, Windows, Linux)
|
||||
|
||||
**Files:**
|
||||
- `auto-claude-ui/src/main/auto-claude-updater.ts` - Main updater module
|
||||
- `auto-claude-ui/src/main/updater/update-checker.ts` - Update checking
|
||||
- `auto-claude-ui/src/main/updater/update-installer.ts` - Download & install
|
||||
- `auto-claude-ui/src/main/ipc-handlers/autobuild-source-handlers.ts` - IPC handlers
|
||||
- `auto-claude-ui/src/renderer/components/settings/AdvancedSettings.tsx` - UI
|
||||
|
||||
**Status:** ✅ **FULLY FUNCTIONAL** - Non-technical users can update the framework with one click!
|
||||
|
||||
---
|
||||
|
||||
### 2. ❌ Electron App Updates (NOT IMPLEMENTED)
|
||||
|
||||
**What it updates:** The Electron application itself (Auto Claude UI)
|
||||
|
||||
**Current State:**
|
||||
- ❌ No `electron-updater` dependency installed
|
||||
- ❌ No auto-update configuration in electron-builder
|
||||
- ❌ No update checking in main process
|
||||
- ❌ No UI for app update notifications
|
||||
- ❌ Users must manually download new releases from GitHub
|
||||
|
||||
**What users currently need to do:**
|
||||
1. Go to GitHub Releases page
|
||||
2. Download the appropriate installer (.dmg, .exe, .AppImage, etc.)
|
||||
3. Run the installer
|
||||
4. Manually replace the old app
|
||||
|
||||
---
|
||||
|
||||
## What Needs to Be Implemented
|
||||
|
||||
To enable automatic Electron app updates for non-technical users, we need to add:
|
||||
|
||||
### 1. Install electron-updater
|
||||
|
||||
```bash
|
||||
npm install electron-updater
|
||||
```
|
||||
|
||||
### 2. Configure electron-builder for Publishing
|
||||
|
||||
Add to `package.json` build config:
|
||||
|
||||
```json
|
||||
{
|
||||
"build": {
|
||||
"publish": [
|
||||
{
|
||||
"provider": "github",
|
||||
"owner": "AndyMik90",
|
||||
"repo": "Auto-Claude"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Implement Auto-Update Logic in Main Process
|
||||
|
||||
Create `auto-claude-ui/src/main/app-updater.ts`:
|
||||
|
||||
```typescript
|
||||
import { autoUpdater } from 'electron-updater';
|
||||
import { app, BrowserWindow } from 'electron';
|
||||
|
||||
export function initializeAppUpdater(mainWindow: BrowserWindow) {
|
||||
// Configure update checking
|
||||
autoUpdater.autoDownload = false; // Let user decide
|
||||
autoUpdater.autoInstallOnAppQuit = true;
|
||||
|
||||
// Check for updates on launch (after 3 seconds)
|
||||
setTimeout(() => {
|
||||
autoUpdater.checkForUpdates();
|
||||
}, 3000);
|
||||
|
||||
// Check periodically (every 4 hours)
|
||||
setInterval(() => {
|
||||
autoUpdater.checkForUpdates();
|
||||
}, 4 * 60 * 60 * 1000);
|
||||
|
||||
// Event handlers
|
||||
autoUpdater.on('update-available', (info) => {
|
||||
mainWindow.webContents.send('app-update-available', {
|
||||
version: info.version,
|
||||
releaseNotes: info.releaseNotes,
|
||||
releaseDate: info.releaseDate
|
||||
});
|
||||
});
|
||||
|
||||
autoUpdater.on('update-downloaded', (info) => {
|
||||
mainWindow.webContents.send('app-update-downloaded', {
|
||||
version: info.version
|
||||
});
|
||||
});
|
||||
|
||||
autoUpdater.on('error', (error) => {
|
||||
console.error('App update error:', error);
|
||||
});
|
||||
|
||||
autoUpdater.on('download-progress', (progress) => {
|
||||
mainWindow.webContents.send('app-update-progress', {
|
||||
percent: progress.percent,
|
||||
transferred: progress.transferred,
|
||||
total: progress.total
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// IPC handlers
|
||||
export function registerAppUpdateHandlers() {
|
||||
ipcMain.handle('app-update-download', async () => {
|
||||
await autoUpdater.downloadUpdate();
|
||||
});
|
||||
|
||||
ipcMain.handle('app-update-install', () => {
|
||||
autoUpdater.quitAndInstall();
|
||||
});
|
||||
|
||||
ipcMain.handle('app-update-check', async () => {
|
||||
return await autoUpdater.checkForUpdates();
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Add UI Notification Component
|
||||
|
||||
Create an update banner or modal in the renderer that:
|
||||
- Shows when app update is available
|
||||
- Displays version and release notes
|
||||
- Has "Download Update" button
|
||||
- Shows download progress
|
||||
- Has "Install and Restart" button after download
|
||||
|
||||
### 5. Update GitHub Release Workflow
|
||||
|
||||
Ensure GitHub releases are created with proper assets:
|
||||
- macOS: `.dmg` and `.zip` files + `latest-mac.yml`
|
||||
- Windows: `.exe` installer + `latest.yml`
|
||||
- Linux: `.AppImage` and `.deb` + `latest-linux.yml`
|
||||
|
||||
The `latest-*.yml` files are auto-generated by electron-builder and contain update metadata.
|
||||
|
||||
---
|
||||
|
||||
## Implementation Strategy
|
||||
|
||||
### Option A: Full Auto-Update (Recommended)
|
||||
|
||||
**Pros:**
|
||||
- Best user experience
|
||||
- Automatic background downloads
|
||||
- One-click install
|
||||
- Industry standard
|
||||
|
||||
**Cons:**
|
||||
- Requires code signing certificates for production (macOS, Windows)
|
||||
- Without signing, users get security warnings
|
||||
|
||||
### Option B: Update Notification Only
|
||||
|
||||
**Pros:**
|
||||
- Simpler implementation
|
||||
- No code signing required
|
||||
- User downloads from GitHub (trusted source)
|
||||
|
||||
**Cons:**
|
||||
- Users still need to manually download and install
|
||||
- Less convenient than auto-update
|
||||
|
||||
**Implementation:**
|
||||
```typescript
|
||||
// Just notify, don't auto-download
|
||||
autoUpdater.autoDownload = false;
|
||||
|
||||
autoUpdater.on('update-available', (info) => {
|
||||
// Show notification with link to GitHub Releases
|
||||
mainWindow.webContents.send('app-update-available', {
|
||||
version: info.version,
|
||||
downloadUrl: `https://github.com/AndyMik90/Auto-Claude/releases/tag/v${info.version}`
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Development vs Production
|
||||
|
||||
**Important:** `electron-updater` only works in **packaged apps**, not in development mode.
|
||||
|
||||
During development:
|
||||
```typescript
|
||||
if (app.isPackaged) {
|
||||
initializeAppUpdater(mainWindow);
|
||||
} else {
|
||||
console.log('[Dev] Auto-updater disabled in development mode');
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Code Signing Requirements
|
||||
|
||||
For production auto-updates without security warnings:
|
||||
|
||||
### macOS
|
||||
- Requires Apple Developer account ($99/year)
|
||||
- Code signing certificate
|
||||
- Notarization with Apple
|
||||
|
||||
### Windows
|
||||
- Requires code signing certificate (~$200-400/year)
|
||||
- Without: Windows SmartScreen warnings
|
||||
|
||||
### Linux
|
||||
- No code signing required
|
||||
- Users may need to mark `.AppImage` as executable
|
||||
|
||||
---
|
||||
|
||||
## Testing Auto-Updates
|
||||
|
||||
1. **Local Testing:**
|
||||
- Build and package: `npm run package`
|
||||
- Create local update server or use GitHub Releases
|
||||
- Test with different versions
|
||||
|
||||
2. **GitHub Releases Testing:**
|
||||
- Create a draft release on GitHub
|
||||
- Publish with version tag (e.g., `v2.4.0`)
|
||||
- electron-builder automatically uploads assets
|
||||
- Test with previous version installed
|
||||
|
||||
---
|
||||
|
||||
## Recommended Next Steps
|
||||
|
||||
1. **Phase 1: Add Update Notification** (Quick win)
|
||||
- Install `electron-updater`
|
||||
- Add basic update checking
|
||||
- Show notification with link to GitHub Releases
|
||||
- No auto-download, users download manually
|
||||
|
||||
2. **Phase 2: Enable Auto-Download** (Better UX)
|
||||
- Add download progress UI
|
||||
- Enable auto-download of updates
|
||||
- Add "Install and Restart" button
|
||||
|
||||
3. **Phase 3: Code Signing** (Production ready)
|
||||
- Acquire code signing certificates
|
||||
- Configure signing in electron-builder
|
||||
- Notarize macOS builds
|
||||
- Sign Windows builds
|
||||
|
||||
---
|
||||
|
||||
## Current Framework Update Flow (Already Working!)
|
||||
|
||||
For reference, here's how the existing Auto Claude framework updater works:
|
||||
|
||||
1. User opens **Settings > Advanced > Updates**
|
||||
2. App checks GitHub Releases API
|
||||
3. If update available, shows version + release notes
|
||||
4. User clicks "Download Update"
|
||||
5. Progress bar shows download status
|
||||
6. Update is extracted and applied to bundled source
|
||||
7. User configuration (.env) is preserved
|
||||
8. Done - no restart needed!
|
||||
|
||||
**This same UX could be replicated for app updates!**
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
| Component | Status | User Experience |
|
||||
|-----------|--------|-----------------|
|
||||
| Auto Claude Framework | ✅ Working | One-click update in Settings |
|
||||
| Electron App (UI) | ❌ Missing | Must download from GitHub manually |
|
||||
|
||||
**Recommendation:** Implement electron-updater with update notifications (Phase 1) as a quick win. This will enable non-technical users to update the app without using git or terminal commands.
|
||||
|
||||
**Estimated effort:**
|
||||
- Phase 1 (Notifications): 2-4 hours
|
||||
- Phase 2 (Auto-download): 2-3 hours
|
||||
- Phase 3 (Code signing): Varies by platform
|
||||
|
||||
The existing framework updater code provides an excellent reference for the UI implementation!
|
||||
@@ -1,139 +0,0 @@
|
||||
# Windows/Linux Source Path Detection Fix
|
||||
|
||||
## Problem
|
||||
|
||||
On Windows and Linux, when initializing a project, users were getting a "Source path not configured" error even though the `auto-claude` source directory exists. This error did not occur on macOS.
|
||||
|
||||
## Root Cause
|
||||
|
||||
The `detectAutoBuildSourcePath()` function in two files was using path resolution logic that worked on macOS in development mode but failed on Windows/Linux, especially in production/packaged builds. The function was trying to auto-detect where the Auto Claude framework source code (`auto-claude/` directory) is located, but the paths resolved differently across platforms.
|
||||
|
||||
## Changes Made
|
||||
|
||||
### 1. Enhanced Path Detection Logic
|
||||
|
||||
Updated `detectAutoBuildSourcePath()` in two files:
|
||||
- `auto-claude-ui/src/main/ipc-handlers/settings-handlers.ts`
|
||||
- `auto-claude-ui/src/main/ipc-handlers/project-handlers.ts`
|
||||
|
||||
**Key improvements:**
|
||||
|
||||
1. **Platform-aware path detection**: Separates development vs production mode using `is.dev` from `@electron-toolkit/utils`
|
||||
|
||||
2. **More comprehensive path checking**:
|
||||
- **Development mode**: Checks multiple relative paths from `__dirname`, `process.cwd()`, and parent directories
|
||||
- **Production mode**: Checks paths relative to `app.getAppPath()`, `process.resourcesPath`, and multiple levels up
|
||||
|
||||
3. **Debug logging**: Added detailed logging that can be enabled with `AUTO_CLAUDE_DEBUG=1` environment variable
|
||||
|
||||
4. **Better error messages**: Console warnings now guide users to enable debug mode if auto-detection fails
|
||||
|
||||
## Testing on Windows/Linux
|
||||
|
||||
### 1. Run with Debug Logging
|
||||
|
||||
Set the environment variable to see detailed path checking:
|
||||
|
||||
**Windows (PowerShell):**
|
||||
```powershell
|
||||
$env:AUTO_CLAUDE_DEBUG="1"
|
||||
.\Auto-Claude.exe
|
||||
```
|
||||
|
||||
**Windows (Command Prompt):**
|
||||
```cmd
|
||||
set AUTO_CLAUDE_DEBUG=1
|
||||
Auto-Claude.exe
|
||||
```
|
||||
|
||||
**Linux:**
|
||||
```bash
|
||||
AUTO_CLAUDE_DEBUG=1 ./Auto-Claude
|
||||
```
|
||||
|
||||
### 2. Check Console Output
|
||||
|
||||
The debug output will show:
|
||||
- Current platform (win32/linux/darwin)
|
||||
- Whether running in dev or production mode
|
||||
- All paths being checked
|
||||
- Which paths exist and which don't
|
||||
- Whether auto-detection succeeded
|
||||
|
||||
Example debug output:
|
||||
```
|
||||
[detectAutoBuildSourcePath] Platform: win32
|
||||
[detectAutoBuildSourcePath] Is dev: false
|
||||
[detectAutoBuildSourcePath] __dirname: C:\Program Files\Auto-Claude\resources\app.asar\out\main
|
||||
[detectAutoBuildSourcePath] app.getAppPath(): C:\Program Files\Auto-Claude\resources\app.asar
|
||||
[detectAutoBuildSourcePath] process.cwd(): C:\Program Files\Auto-Claude
|
||||
[detectAutoBuildSourcePath] Checking paths: [...]
|
||||
[detectAutoBuildSourcePath] Checking C:\Program Files\auto-claude: ✗ not found
|
||||
[detectAutoBuildSourcePath] Checking C:\auto-claude: ✓ FOUND
|
||||
[detectAutoBuildSourcePath] Auto-detected source path: C:\auto-claude
|
||||
```
|
||||
|
||||
### 3. Manual Configuration (Fallback)
|
||||
|
||||
If auto-detection still fails, users can manually configure the path:
|
||||
|
||||
1. Open **App Settings** in Auto Claude UI
|
||||
2. Go to the **General** tab
|
||||
3. Set **Auto Claude Source Path** to the location of your `auto-claude` directory
|
||||
4. Click **Save**
|
||||
|
||||
Example paths:
|
||||
- Windows: `C:\Users\YourName\Projects\autonomous-coding\auto-claude`
|
||||
- Linux: `/home/yourname/projects/autonomous-coding/auto-claude`
|
||||
|
||||
## What Gets Checked
|
||||
|
||||
The function now checks these paths in order:
|
||||
|
||||
### Development Mode (`is.dev = true`):
|
||||
1. `__dirname/../../../auto-claude` - From out/main up 3 levels
|
||||
2. `__dirname/../../auto-claude` - From out/main up 2 levels
|
||||
3. `process.cwd()/auto-claude` - From current working directory
|
||||
4. `process.cwd()/../auto-claude` - From parent of cwd
|
||||
|
||||
### Production Mode (`is.dev = false`):
|
||||
1. `app.getAppPath()/../auto-claude` - Sibling to app
|
||||
2. `app.getAppPath()/../../auto-claude` - Up 2 from app
|
||||
3. `app.getAppPath()/../../../auto-claude` - Up 3 from app
|
||||
4. `process.resourcesPath/../auto-claude` - Relative to resources
|
||||
5. `process.resourcesPath/../../auto-claude` - Up 2 from resources
|
||||
|
||||
### All Modes:
|
||||
- `process.cwd()/auto-claude` - Last resort fallback
|
||||
|
||||
## Verification
|
||||
|
||||
For each path, the function checks:
|
||||
1. Does the directory exist?
|
||||
2. Does `VERSION` file exist inside it?
|
||||
|
||||
Both must be true for a path to be considered valid.
|
||||
|
||||
## Build Verification
|
||||
|
||||
The changes have been compiled and tested:
|
||||
```
|
||||
✓ Built successfully with no errors
|
||||
✓ All TypeScript files compiled
|
||||
✓ Electron app bundle created
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Test on Windows**: Have Windows users test the updated build with `AUTO_CLAUDE_DEBUG=1`
|
||||
2. **Test on Linux**: Have Linux users test the updated build with `AUTO_CLAUDE_DEBUG=1`
|
||||
3. **Collect feedback**: If issues persist, the debug output will help identify the correct path patterns
|
||||
4. **Update documentation**: Add troubleshooting section to main README if needed
|
||||
|
||||
## Related Files
|
||||
|
||||
- `auto-claude-ui/src/main/ipc-handlers/settings-handlers.ts`
|
||||
- `auto-claude-ui/src/main/ipc-handlers/project-handlers.ts`
|
||||
- `auto-claude-ui/src/main/project-initializer.ts`
|
||||
- `auto-claude-ui/src/renderer/App.tsx` (shows the error dialog)
|
||||
- `auto-claude-ui/src/renderer/components/Sidebar.tsx` (shows the error dialog)
|
||||
Reference in New Issue
Block a user