# Memory · 2026-04-24

## WeChat Image Sending — Root Cause Findings

### 1. Gateway sendMedia is QQBot-only (Platform Bug)
- Gateway imports `sendMedia` from `outbound-CkazH4Wl.js` which is QQBot-exclusive
- WeChat plugin's `sendMedia` in `channel.ts:205` is **never called** by the gateway
- All outbound messages log `mediaUrl=none` — images are NOT sent via this path
- **Workaround**: Using `MEDIA:./assets/<filename>` directive in reply works — Tyrone received images this way
- The `image_generate` tool output IS sent correctly via MEDIA: path

### 2. Browserless Screenshot Blank Issue (mp.weixin.qq.com)
- Browserless returns 2685-byte solid-color PNG for mp.weixin.qq.com (anti-bot protection)
- GitHub and taobao.com/login also return blank/placeholder
- Normal pages (e.g., baidu.com) CAN be screenshot successfully (48071 bytes real PNG)
- The `browser` tool has intermittent "timed out" / "No connected browser-capable nodes" failures
- Browserless CDP is reachable at ws://browserless:3000

### 3. QR Code Generation — AI refuses scannable QR codes
- `image_generate` tool cannot produce scannable QR codes (MiniMax has anti-fraud training that blocks QR code generation)
- `api.qrserver.com` returns wrong content ("Happy Halloween!") for all URLs
- My hand-written QR encoder (gen-qr-png.cjs) produces technically valid QR but the resulting PNG from ImageMagick conversion has precision loss and won't scan
- **Solution options**: (a) install qrencode on群晖, (b) use browserless to screenshot a real login QR from a site that works (taobao login worked), (c) Tyrone logs in manually at mp.weixin.qq.com

### 4. WeChat QR Login URL
- URL: `https://mp.weixin.qq.com/cgi-bin/scanloginqrcode?action=getqrcode&random=<epoch>&login_appid=` — session-based, expires
- Cannot be fetched via curl (requires browser session cookies)
- Must use browser with WeChat logged-in session to access

### 5. Valid Reference Images
- `wechat-open-qr.png` (105378 bytes) — valid QR from earlier session, stored at workspace/assets/screenshot-test/
- Test circle PNG sent successfully — confirmed WeChat CAN receive images via MEDIA: directive

### 6. Successful Screenshot Targets
- baidu.com → 48071 bytes real PNG via browserless
- taobao.com/login → real login QR code screenshot works

## Key Decisions This Session
- Using `MEDIA:./assets/<filename>` for image delivery (not gateway sendMedia)
- WeChat channel `sendText` works fine; only images have routing issues
- Browserless HTTP API (POST /screenshot) more reliable than browser tool for some targets
