Repository navigation
Releases: lqdflying/chathub
Release list
v2.0.15 — iOS file save and settings scroll
v2.0.15 saves chat files from the installed iOS app and keeps phone provider navigation on the list. Pull lqdflying/chathub:2.0.15 (also :latest). No new migration.
Highlights
- In the installed iOS app, a chat file link or a public storage reply link opens the share sheet instead of a blank browser sheet.
- On a phone, Settings → AI Service Provider returns to the provider list on back, and a second tap does not stack another detail page.
- The desktop Settings category list scrolls when the window is shorter than the menu.
Upgrade
- Image:
lqdflying/chathub:2.0.15. This tag updates:latest. - No new migration.
- Code Interpreter with OpenSandbox · Model Providers · Docker Deployment and Upgrades
Fixed
- The installed iOS app fetches a chat file and hands it to the share sheet.
- A public storage reply link is matched to its file id and downloaded through the authenticated proxy.
- A sandbox tool result with a null or non-array files payload no longer replaces the conversation with an error screen.
- The phone provider back swipe stays on the provider list, and the detail page is closed only after its history entry exists.
- Tapping a provider row twice keeps a single detail entry.
- The RAG Provider page is inset on phone settings.
- The desktop Settings category menu scrolls inside the window.
Docs
Full diff: v2.0.14...v2.0.15
v2.0.14 — quieter resume, assistant list scroll
v2.0.14 keeps a dropped background read quiet and a failed save visible. Pull lqdflying/chathub:2.0.14 (also :latest). No new migration.
Highlights
- Locking the screen, switching apps, or a short network drop no longer stacks Request failed cards for data reads. Those reads retry.
- A failed save still shows one Request failed card. HTTP 401 still opens sign-in. Other HTTP 400 and higher responses still show one card.
- The desktop assistant list scrolls with the mouse wheel.
Upgrade
- Image:
lqdflying/chathub:2.0.14. This tag updates:latest. - No new migration. The 2.0.13 OpenSandbox upgrade still applies when coming from an older image.
- Authentication · Docker Deployment and Upgrades
Fixed
- Background data reads that finish below HTTP 400, or with no HTTP status, no longer open a stack of Request failed cards.
- A settings save that fails, and an HTTP 403 or 502 whose body cannot be read, still notify.
- The desktop assistant list scrolls with the mouse wheel.
@codemirror/languagestays at 6.12.4 so the image build does not pick a broken release.
Docs
Full diff: v2.0.13...v2.0.14
v2.0.13 — Sandbox on OpenSandbox only
v2.0.13 removes the Dify Code Interpreter sidecar. The Sandbox tool runs only on an OpenSandbox server beside ChatHub. Pull lqdflying/chathub:2.0.13 (also :latest).
Highlights
- The Sandbox builtin (
lobe-sandbox) replaces Code Interpreter: shell, git, Node.js, Python, files, and background commands, one container per conversation. - DifySandbox is gone. Set
OPENSANDBOX_SERVER_URL,OPENSANDBOX_API_KEY, andOPENSANDBOX_IMAGE, or leave them unset to disable the tool. - Stop during a sandbox call discards the result instead of saving it and continuing the turn.
Upgrade
- Image:
lqdflying/chathub:2.0.13. This tag updates:latest. - Startup applies migration
0062_sandbox_tool_identifier. It rewrites enabledlobe-code-interpreterplugins tolobe-sandbox. No manual SQL. - Remove the
code-interpreterCompose service,code-interpreter.env, and thecode_interpreter_dependenciesvolume.SANDBOX_PROVIDERandCODE_INTERPRETER_SANDBOX_URL/_API_KEYare no longer read. - Build
docker/opensandboxon the OpenSandbox host and setOPENSANDBOX_IMAGE(the recipe tag ischathub-sandbox:1). CODE_INTERPRETER_TIMEOUT,CODE_INTERPRETER_MAX_FILE_BYTES,CODE_INTERPRETER_MAX_FILE_COUNT, andCODE_INTERPRETER_MAX_STDOUT_CHARSstill apply when the matchingSANDBOX_*name is unset.- Code Interpreter with OpenSandbox · Docker Deployment and Upgrades
Added
- Sandbox tool: foreground and background commands, Python, file read/write/edit, listing, and export.
- General sandbox image under
docker/opensandbox.
Changed
- One OpenSandbox container per conversation. Extra running containers for the same session are removed on reuse.
- Old tool messages keep
lobe-code-interpreter; the app still renders them.
Removed
- DifySandbox provider and the Code Interpreter sidecar contract.
Fixed
- Stop during sandbox output collection no longer persists a tool result or starts the next assistant turn.
Docs
Full diff: v2.0.12...v2.0.13
v2.0.12 — OpenSandbox Code Interpreter and GPT-6.1 Sol
v2.0.12 adds an optional OpenSandbox backend for Code Interpreter and GPT-6.1 Sol. Pull lqdflying/chathub:2.0.12 (also :latest). DifySandbox stays the default, so an existing Compose file keeps working.
Highlights
- Code Interpreter can run on OpenSandbox, with one container per conversation so installs and files carry over.
- GPT-6.1 Sol is in the model bank, with
xhighas the default reasoning effort. - A multi-step tool job can finish in one send, up to 32 rounds.
Upgrade
- Image:
lqdflying/chathub:2.0.12. This tag updates:latest. - Startup applies migration
0061_token_estimation_profiles. No manual SQL. - OpenSandbox is opt-in (
SANDBOX_PROVIDER=opensandbox). Leave it unset to stay on Dify. - Code Interpreter Sandbox · Code Interpreter with OpenSandbox
Added
- OpenSandbox provider, sandbox image recipe, and per-conversation reuse (
OPENSANDBOX_SESSION_IDLE_TIMEOUT, default 30 minutes). - GPT-6.1 Sol on native OpenAI, with the compatible route staying on Chat Completions.
Changed
- The Code Interpreter prompt uses the operator timeout (default 60 seconds), returns only new top-level files, and treats
pipas best-effort. Thepackagesargument still does not install anything.
Fixed
- Code Interpreter: PDF and Office files are stored and linked; foreign URLs stay untouched; OpenSandbox returns the newest same-name file and does not republish unchanged bytes.
- Chat: auto-compact and token calibration stay on the input budget; tool pause survives retries; skill lookup no longer stalls send.
- xAI: SuperGrok CLI client pinned to 1.0.46.
Docs
Full diff: v2.0.11...v2.0.12
v2.0.11 — MiMo V2.6, Grok 4.7, and send Stop
Patch after v2.0.10. MiMo V2.6 and Grok 4.7 are in the model list, and the composer Stop control stays on the lane that is actually generating. Upgrade by pulling 2.0.11 or :latest and restarting. No new migrations.
Highlights
- MiMo V2.6 Pro, Flash, and Pro UltraSpeed; V2.5 stays until 2026-10-21 10:00 UTC+8
- Grok 4.7 and Grok 4.7 Build Fast, with the same reasoning-effort gear as Grok 4.6
- Send stays Stop for the whole reply, and only for the lane on screen
- A second Regenerate keeps streaming the latest turn
Upgrade
- Image:
docker.io/lqdflying/chathub:2.0.11or:latest - No new migrations
- Xiaomi removes
mimo-v2.5-proandmimo-v2.5at 2026-10-21 10:00 UTC+8 - Docker Deployment and Upgrades
Added
Models
mimo-v2.6-pro,mimo-v2.6-flash, andmimo-v2.6-pro-ultraspeed(full-modal, 1M context). UltraSpeed is the same Pro capability at up to 20× speed and 10× the Pro pricegrok-4.7and fetchedgrok-4.7-build-fast
Fixed
Chat
- Stop stays up for the full turn, including the gap between model chunks and tool calls
- The spinner follows the visible composer, not a sibling portal or thread
- Stop remains during a thread's create request
- Workspace Stop follows the selected inline thread, or the main topic when none is selected
Generation
- Overlapping Regenerate cancels the earlier job and keeps the latest turn attached
- A dropped terminal event is acknowledged so the SSE cursor can advance
Docs
Full diff: v2.0.10...v2.0.11
v2.0.10 — GitHub OAuth, SuperGrok meter, Settings help
Patch after v2.0.9: GitHub sign-in completes when the callback iss is https://github.com/login/oauth, SuperGrok still shows its weekly bar when billing omits a percent, and Settings provider help opens the vendor site. Upgrade like any patch — pull 2.0.10 or :latest, restart, let migrations run.
Highlights
- GitHub OAuth no longer fails with unexpected
iss/ expectedauthjs.dev - SuperGrok weekly bar still shows when billing omits
creditUsagePercent - Settings provider
?opens the vendor official site (compatible shims have no icon) - Footer usage panel opens from a click on the right-side time and token figures
Upgrade
- Image:
docker.io/lqdflying/chathub:2.0.10or:latest - No new migrations
- Docker Deployment and Upgrades
Fixed
Auth
- GitHub OAuth issuer is pinned to
https://github.com/login/oauthso RFC 9207issmatches the callback
xAI
- SuperGrok meter still renders when weekly remaining is derived from the on-demand ratio
- SuperGrok status stays visible if a later token reread fails
Settings
- Builtin provider-title
?links to the official homepage; OpenAI Compatible and Anthropic Compatible have no icon
Chat
- Usage panel no longer opens on hover of the whole footer; click the time and token figures on the right
Docs
Full diff: v2.0.9...v2.0.10
v2.0.9 — First-send attach and generation timings
Patch after v2.0.8: first send on a new topic stays attached, SSE live-tails instead of replaying the full event log, and the message footer shows generation timings for every model. Upgrade like any patch — pull 2.0.9 or :latest, restart, let migrations run.
Highlights
- First reply on a new topic stays attached through remount
- SSE live-tails from the latest cursor after recreate (no leftover “Still working”)
- Message footer timings — total time, model time, TTFT, tokens/sec — on every provider
Upgrade
- Image:
docker.io/lqdflying/chathub:2.0.9or:latest - No new migrations
- Docker Deployment and Upgrades
- Background Conversation Generation
Added
Chat
- Footer time chip and popover (latency, duration, TTFT, tokens/sec) for every model
Fixed
Chat
- First send on a new topic no longer loses attach (remount, pending topic id, compaction/retry/bubbles)
- Remount sync no longer detaches an in-flight job
- SSE no longer replays tens of thousands of events after container recreate
- Transient generation-status errors no longer detach; only a true missing operation does
- A stale topic sync cannot attach an already-finished job after a newer empty lookup
Docs
Full diff: v2.0.8...v2.0.9
v2.0.8 — Native xAI Grok and SuperGrok login
Patch after v2.0.7: Settings → xAI is a native Grok provider (Console API key plus optional SuperGrok device login). Upgrade like any patch — pull 2.0.8 or :latest, restart, let migrations run.
Highlights
- Native xAI / Grok provider (
xai,grok-*) with Console API keys - Settings-only SuperGrok device login with weekly remaining (and a 5-hour bar when SuperGrok reports one)
- Grok Responses sends
max_output_tokensinstead ofmax_tokens - Connectivity Check keeps the model dropdown and Check on one row, including long translations at 768px
Upgrade
- Image:
docker.io/lqdflying/chathub:2.0.8or:latest - Migration
0060addsxai_oauth_tokens(plus an idempotentensureXaiOAuthTokenshelper) - Optional:
XAI_API_KEY/XAI_PROXY_URL - Docker Deployment and Upgrades
- xAI / Grok
Note
SuperGrok login is an unofficial client path. Tokens stay on the server. Confirmed dead refresh signs out; temporary refresh failures do not fall back to Console chat.
Added
xAI
- First-class provider: Chat Completions by default, opt-in Responses
- SuperGrok device-code login (Settings only; no chat-input or instance-wide shared login)
- Weekly / optional 5-hour remaining on the Settings card
- Gear: documented reasoning effort,
reasoning_split, and native search
Changed
Settings
- Connectivity Check model select and Check share one row; long Check labels compact instead of hiding the picker
Fixed
xAI
- SuperGrok poll ownership until release or handoff expiry
- Cross-worker claim, timeout backoff, and explicit Search-off
- Grok 4.3 explicit
noneeffort - Responses 400 from
max_tokens
Settings
- Check wrapping under a full-width dropdown
- Russian / long Check labels collapsing the model select at 768px
Docs
Full diff: v2.0.7...v2.0.8
v2.0.7 — ChatGPT Codex subscription and Settings layout
Patch after v2.0.6: Settings → OpenAI can sign in with ChatGPT and use that Plus/Pro Codex quota for chat, and the provider form stays inside the pane. Upgrade like any patch — pull 2.0.7 or :latest, restart, let migrations run.
Highlights
- Sign in with ChatGPT on Settings → OpenAI; chat uses Codex quota while images, speech, and embeddings stay on the API key
- Connected accounts show plan plus 5-hour and weekly remaining
- OpenAI and OpenAI Compatible Settings keep the API-route toggle, Check, and enable switch inside the pane
- Chat bubbles no longer shiver on hover or light-scroll
Upgrade
- Image:
docker.io/lqdflying/chathub:2.0.7or:latest - New migrations
0058/0059addopenai_codex_oauth_tokens(plus an idempotent ensure helper) - ChatGPT must allow device-code login (Security settings or workspace admin)
- Optional:
CHATHUB_OPENAI_CODEX_DEBUG=1for subscription-chat diagnostics (not PlatformDEBUG_OPENAI_*) - Docker Deployment and Upgrades
Note
Codex login is an unofficial client path. Tokens stay on the server. Confirmed dead refresh signs out; temporary refresh failures do not fall back to Platform chat.
Added
OpenAI
- Per-user ChatGPT / Codex subscription auth (device-code only, no env/CLI login)
- 5-hour and weekly remaining on the Settings card
CHATHUB_OPENAI_CODEX_DEBUGprefixed JSON for Codex resolve/stream
Changed
Settings
- Provider fields stack full-width with an owned two-pill API-route toggle
- Codex billing, device-code, and unofficial-client notes live on the title help icon
Fixed
Settings
- Route pills collapsing to one full-width bar after refresh
- Enable switch clipped at 768–800px
- Help icon first-tap close on touch; quota labels and 320px tooltip overflow
OpenAI / Codex
- Refresh lease, 8s per-exchange timeout, queued-refresh cooldown
- Settings no longer stays “connected” after a confirmed dead refresh
- Stream debug follows the Responses lifecycle instead of a false
ok
Chat
- Hover shiver from the light-scroll height loop
Docs
Full diff: v2.0.6...v2.0.7
v2.0.6 — Long-topic speed, overflow retry, full tool results
Patch after v2.0.5: long topics stay usable, overflow compact-and-retries once, and tool/MCP bodies go to the model in full. Upgrade like any patch — pull 2.0.6 or :latest, restart.
Highlights
- Long topics stay responsive while typing and scrolling; highlight and diagrams fill in when scroll stops
- A context-window reject compact-and-retries the send once, even when routine compaction switches are off
- Tool and MCP results are sent in full — no 8k wire rewrite
- The assistant shows Planning next step while the next model call runs after tools
- Memory can search/read large entries, marks tool-tainted cards untrusted, and dreams from recent-message excerpts
Upgrade
- Image:
docker.io/lqdflying/chathub:2.0.6or:latest - No new database migrations in this tag
- Optional sidecars unchanged (Code Interpreter, MarkItDown)
- Docker Deployment and Upgrades
Note
Full tool bodies raise token use. Token auto-compact and that one overflow retry are the capacity path.
Added
Chat
- Planning-next-step status after tools, with an elapsed clock that survives heartbeat sync
Memory
searchMemory/readMemoryfor budgeted recall- Provenance tags and an untrusted section when a memory write follows external tool output
- Memory dream from a recent-message excerpt when a topic has no summary
- Near-duplicate dream cards are skipped
Context
- Usage-anchored next-request estimate (reload-safe; dispatch-time witnesses)
- Shared overflow classifier and one compact-and-retry per send
Changed
Chat
- Large-topic token estimate runs once; AutoScroll/minimap no longer clone the topic on each keystroke
- Fast scroll keeps bubble chrome and text; mobile overscan uses
visualViewport - Installed PWA: topic sheet unmounts while closed; session rows are not subscribed while you are in a topic (Back stays instant)
- V1Mobile buffers IME composition until
compositionend
Tools
- MCP client cache, circuit breaker, abort, and stale-session retry
- MCP descriptions scrubbed;
_metastripped; tool order deterministic
Fixed
Context
- Reloading no longer shrinks the badge onto a stale provider report
- History-limit raise (including from 0) and input-template edits recount the full window
- Prompt-cache rate stays on the active main/portal branch
Chat
- Planning elapsed time no longer resets after sync
- Scroll-mode mermaid no longer mounts the SVG renderer
Docs
Full diff: v2.0.5...v2.0.6