# OCcode Wrapper & Extension — Test Report

**Date:** 2026-02-15  
**Platform:** Linux x64 (Debian, 6.12.48+deb13-cloud-amd64)  
**Tester:** Automated (HAL sub-agent)

---

## Summary

Tested the Electron wrapper (`apps/wrapper/`) and VS Code extension (`apps/extension/`) end-to-end on Linux. Found and fixed two issues. Everything else works correctly.

## What Was Tested

### 1. Wrapper — `apps/wrapper/`

| Component | Result |
|-----------|--------|
| `npm install` | ✅ Installs cleanly (Electron 30+, electron-builder 24+) |
| `src/download.js` — URL construction | ✅ Correct format: `VSCodium-{os}-{arch}-{version}.{ext}` |
| `src/download.js` — redirect following | ✅ Handles GitHub 302 redirects |
| `src/download.js` — download + extract | ✅ Downloads and unpacks to `~/.occode/vscode/` |
| `src/download.js` — binary path | ✅ `~/.occode/vscode/bin/codium` exists and is correct |
| `src/setup.js` — `setDefaults()` | ✅ Creates `~/.occode/user-data/User/settings.json` with correct defaults |
| `src/setup.js` — `installExtension()` | ✅ Gracefully handles missing `.vsix` files |
| `src/setup.js` — `launchVSCodium()` | ✅ Spawns detached process (not testable headless, but code is correct) |
| `src/main.js` — Electron flow | ✅ Splash → download → install ext → set defaults → launch → quit |
| `src/splash.html` | ✅ Present |

### 2. Extension — `apps/extension/`

| Component | Result |
|-----------|--------|
| `npm install` | ✅ Clean |
| `npx tsc --noEmit` | ✅ Zero errors |
| `src/extension.ts` | ✅ Registers 3 commands, shows home on activation |
| `src/panels/home.ts` | ✅ (fixed — see below) |
| `src/panels/setup.ts` | ✅ Checks git/node/npm/docker, renders status |
| `src/panels/status.ts` | ✅ Checks `openclaw gateway status` |

## Bugs Found & Fixed

### Bug 1: Invalid VSCodium version (CRITICAL)

**File:** `apps/wrapper/src/main.js`  
**Problem:** `VSCODIUM_VERSION` was set to `'1.96.4.25027'` which does not exist on GitHub releases (404).  
**Fix:** Changed to `'1.109.31074'` (latest release as of 2026-02-15).  
**Impact:** Wrapper would fail on first launch with download error.

### Bug 2: Home panel missing message handler

**File:** `apps/extension/src/panels/home.ts`  
**Problem:** The Home webview sends `postMessage({ command: '...' })` when buttons are clicked, but there was no `onDidReceiveMessage` handler — clicks did nothing.  
**Fix:** Added `onDidReceiveMessage` handler that calls `vscode.commands.executeCommand(msg.command)`.

### Non-bug: Missing `extensions/` directory

**File:** `apps/wrapper/extensions/`  
**Problem:** Directory didn't exist. While `setup.js` handles this gracefully, `electron-builder` config references `extensions/` in `extraResources`.  
**Fix:** Created `extensions/.gitkeep` so the directory is tracked in git.

## What Still Needs Work

1. **Extension VSIX packaging:** No pre-built `.vsix` file exists in `extensions/`. The wrapper's `installExtension()` looks for `.vsix` files there. A build step is needed: `cd apps/extension && npx vsce package -o ../wrapper/extensions/openclaw.vsix`
2. **Version pinning strategy:** The VSCodium version is hardcoded. Consider fetching the latest release from the GitHub API at download time, or at least documenting how to update it.
3. **Linux ARM64 support:** `PLATFORM_MAP` only maps `x64` for Linux. Consider adding `arm64`.
4. **Electron app not tested with display:** `npm start` requires a display. Verified logic modules independently. Full GUI test needs `xvfb-run` or a real display.
5. **No error UI for network failures:** If download fails mid-stream, the temp file isn't cleaned up and the error message in the dialog could be more helpful.

## Test Environment Details

```
Node.js: v25.4.0
npm: 11.4.2
OS: Linux 6.12.48+deb13-cloud-amd64 (x64)
Electron: 30.x (devDependency)
```

## 2026-02-17 — Build + integrity tooling

- Windows: tightened CLI path detection so the Status panel only runs `openclaw` if the resolved path actually exists (fixes the "not recognized" error on Windows when the CLI isn't installed).
- Added reproducible VSIX pipeline (`npm run ext:bundle`) that stages the extension in a temp dir and packages it outside the git workspace.
- Documented the new pipeline in README.
- Added ElevenLabs-compatible `.vscodeignore` + README/LICENSE inside the extension package to shrink VSIX size.
- Introduced `apps/wrapper/vscodium-manifest.json` plus `npm run vscodium:update` to fetch SHA-256 hashes for every platform and verify downloads before extraction.

