e356885130
test(lua): add opencode role normalization test
2026-08-16 17:51:43 +08:00
47f3b44d92
feat(gui): Electron desktop with embedded core, tray, autostart, win/linux packaging
...
- cmd/gui: Electron shell (Clash-Verge style) embedding the full WebUI 1:1
- embedded llmsproxy core (luajit) with auto-generated profile
- key stored in keys[] (non-seed) so no replace-the-key warning
- gw_key cookie injection: web UI works without login
- side-rail toggles for autostart / silent start
- system tray with status + controls, silent start (--silent)
- win cross-build (mingw luajit exe + dll) / deb / AppImage via electron-builder
- Makefile: build / gui / gui-dist / gui-deb / gui-win targets
- README: desktop GUI section
- lua(adapter): opencode normalizes non-whitelisted roles to system
2026-08-16 09:53:05 +08:00
40e08b14d2
fix: zen adapter strips multimodal parts (upstream is text-only)
2026-08-13 22:08:15 +08:00
2bc1d0e67a
feat: opencode zen adapter + first-run config generation, fix stats/stream bugs
...
- adapters/opencode.lua: opencode.ai zen free pool adapter — sends the
opencode client User-Agent (zen fingerprints clients by UA; non-official
clients hit FreeUsageLimitError); pairs with api_key: public
- config: no config file ships in the repo; first run generates a default
config at the -config path with a random admin key, loopback listen and a
keyless zen source (config.EnsureDefault); remove config.example.yaml
- lua: seed bundled adapters from the embedded FS instead of a hardcoded
name list
- ui: widen model kind select (chat was clipped to 'cha')
- phase 5 bugfixes: stats ms/s bucket mixing, cleanScopes nil, ctx.Err
guards, direct-path ModelAvailable, empty stream body failure,
bestImageModel rewrite, transform failure recording, Core.mu, timer,
effective model for tool-calls
2026-08-13 12:25:07 +08:00
41c9b0e14a
feat: source-model routing disambiguation (source-model/:/ prefix); same-tier round-robin load balancing; public_base_url for copy config; fmtTok(B/M/K) unit scaling; status column reorder (reachability first); drop emoji from seed-warn modal; fix tests for first-run adapter seeding; install lua5.1 dev lib
2026-08-10 12:55:22 +08:00
f46b02089c
feat(delete): real deletes — adapters seeded once into adapter_dir (existing dir is authoritative), sources removed from config.yaml on delete; drop tombstone mechanism for both. Docs: multi-key architecture, gateway_keys as seed
2026-08-10 11:52:51 +08:00
5d50b69153
fix: tool call anchor & wire format, streaming chunk passthrough, WebUI narrow-screen, docs bilingual
2026-08-08 11:26:58 +08:00
ccbcede581
feat: LuaJIT worker-pool VM, multimodal/disable-thinking passthrough, WebUI redesign, DeepSeek V4
2026-08-07 13:34:16 +08:00
f7f76e097d
feat: ModelRouter — unified OpenAI-compatible multi-source LLM gateway
...
- Lua adapters per upstream (transform_request/response/stream_chunk, build_headers signing hooks)
- AUTO priority routing with per-model kind (chat/image), explicit source/model routing
- Per-source concurrency caps with queueing, exponential backoff, AUTO failover
- OpenAI-compatible API: chat completions, SSE streaming, image generations, models
- Gateway key auth, web UI for adapter/source management, runtime persistence
- e2e test running the real binary against mocked upstreams
2026-08-05 15:25:47 +08:00