Release v1.01 Enhanced: Vi Control, TUI Gen5, Core Stability
This commit is contained in:
89
Documentation/implementation_plan_goose_native.md
Normal file
89
Documentation/implementation_plan_goose_native.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user