90 lines
2.5 KiB
Markdown
90 lines
2.5 KiB
Markdown
# Native Electron Goose Integration
|
|
|
|
## Problem Statement
|
|
The `/goose` command in GEN5 TUI doesn't work properly because:
|
|
1. It requires Rust/Cargo to build Goose from source
|
|
2. It needs a Goose web server running on a custom port
|
|
3. The prerequisite detection blocks the launch
|
|
|
|
## Proposed Solution
|
|
Create a **true native Electron chat app** that:
|
|
- Doesn't require the Goose Rust backend at all
|
|
- Uses the existing Qwen OAuth directly from `qwen-oauth.mjs`
|
|
- Provides a standalone desktop chat interface
|
|
- Works immediately without prerequisites
|
|
|
|
---
|
|
|
|
## Proposed Changes
|
|
|
|
### Component: Electron App (`bin/goose-electron-app/`)
|
|
|
|
#### [MODIFY] main.cjs
|
|
Transform from a simple URL wrapper into a full native chat application:
|
|
- Create BrowserWindow with embedded chat UI
|
|
- Load a local HTML file instead of external URL
|
|
- Set up IPC communication for Qwen API calls
|
|
|
|
#### [NEW] preload.js
|
|
Context bridge for secure communication between renderer and main process
|
|
|
|
#### [NEW] index.html
|
|
Native chat UI with:
|
|
- Modern dark theme matching OpenQode aesthetic
|
|
- Message input with streaming display
|
|
- Code block rendering with syntax highlighting
|
|
|
|
#### [NEW] renderer.js
|
|
Client-side logic for chat interface
|
|
|
|
#### [NEW] styles.css
|
|
Premium dark theme styling
|
|
|
|
---
|
|
|
|
### Component: TUI Integration (`bin/opencode-ink.mjs`)
|
|
|
|
#### [MODIFY] opencode-ink.mjs
|
|
Update `/goose` command handler (around line 4140) to:
|
|
- Launch native Electron app directly without prerequisite checks
|
|
- Skip the Goose web backend entirely
|
|
- Use the new native chat implementation
|
|
|
|
---
|
|
|
|
### Component: Qwen API Bridge
|
|
|
|
#### [NEW] qwen-bridge.cjs
|
|
Main process module that:
|
|
- Imports `qwen-oauth.mjs` for authentication
|
|
- Handles API calls to Qwen
|
|
- Streams responses back to renderer via IPC
|
|
|
|
---
|
|
|
|
## Verification Plan
|
|
|
|
### Automated Tests
|
|
1. Launch TUI: `node --experimental-require-module bin\opencode-ink.mjs`
|
|
2. Type `/goose` command
|
|
3. Verify Electron window opens
|
|
4. Send a test message
|
|
5. Verify response streams correctly
|
|
|
|
### Manual Verification
|
|
1. Start OpenQode launcher → Select GEN5 TUI (option #2)
|
|
2. Type `/goose` and press Enter
|
|
3. Confirm native Electron chat window appears
|
|
4. Test sending messages and receiving AI responses
|
|
5. Verify window closes properly
|
|
|
|
---
|
|
|
|
## Dependencies
|
|
- Electron (already in `goose-electron-app/package.json`)
|
|
- Existing `qwen-oauth.mjs` for authentication
|
|
|
|
## Risk Assessment
|
|
- **Low risk**: Changes are isolated to the Goose integration
|
|
- **Reversible**: Original web-based flow can be kept as `/goose web` fallback
|