Skip to content

Releases: lqdflying/chathub

v2.0.15 — iOS file save and settings scroll

Choose a tag to compare

@lqdflying lqdflying released this 17 Oct 08:28

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

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

Choose a tag to compare

@lqdflying lqdflying released this 08 Oct 14:06

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

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/language stays 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

Choose a tag to compare

@lqdflying lqdflying released this 06 Oct 10:31

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, and OPENSANDBOX_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 enabled lobe-code-interpreter plugins to lobe-sandbox. No manual SQL.
  • Remove the code-interpreter Compose service, code-interpreter.env, and the code_interpreter_dependencies volume. SANDBOX_PROVIDER and CODE_INTERPRETER_SANDBOX_URL / _API_KEY are no longer read.
  • Build docker/opensandbox on the OpenSandbox host and set OPENSANDBOX_IMAGE (the recipe tag is chathub-sandbox:1).
  • CODE_INTERPRETER_TIMEOUT, CODE_INTERPRETER_MAX_FILE_BYTES, CODE_INTERPRETER_MAX_FILE_COUNT, and CODE_INTERPRETER_MAX_STDOUT_CHARS still apply when the matching SANDBOX_* 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

Choose a tag to compare

@lqdflying lqdflying released this 04 Oct 09:20

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 xhigh as the default reasoning effort.
  • A multi-step tool job can finish in one send, up to 32 rounds.

Upgrade

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 pip as best-effort. The packages argument 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

Choose a tag to compare

@lqdflying lqdflying released this 23 Sep 09:46

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.11 or :latest
  • No new migrations
  • Xiaomi removes mimo-v2.5-pro and mimo-v2.5 at 2026-10-21 10:00 UTC+8
  • Docker Deployment and Upgrades

Added

Models

  • mimo-v2.6-pro, mimo-v2.6-flash, and mimo-v2.6-pro-ultraspeed (full-modal, 1M context). UltraSpeed is the same Pro capability at up to 20× speed and 10× the Pro price
  • grok-4.7 and fetched grok-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

Choose a tag to compare

@lqdflying lqdflying released this 21 Sep 02:24

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 / expected authjs.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

Fixed

Auth

  • GitHub OAuth issuer is pinned to https://github.com/login/oauth so RFC 9207 iss matches 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

Choose a tag to compare

@lqdflying lqdflying released this 20 Sep 07:01

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

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

Choose a tag to compare

@lqdflying lqdflying released this 19 Sep 17:01

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_tokens instead of max_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.8 or :latest
  • Migration 0060 adds xai_oauth_tokens (plus an idempotent ensureXaiOAuthTokens helper)
  • 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 none effort
  • 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

Choose a tag to compare

@lqdflying lqdflying released this 19 Sep 10:30

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.7 or :latest
  • New migrations 0058 / 0059 add openai_codex_oauth_tokens (plus an idempotent ensure helper)
  • ChatGPT must allow device-code login (Security settings or workspace admin)
  • Optional: CHATHUB_OPENAI_CODEX_DEBUG=1 for subscription-chat diagnostics (not Platform DEBUG_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_DEBUG prefixed 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

Choose a tag to compare

@lqdflying lqdflying released this 18 Sep 13:13

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.6 or :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 / readMemory for 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; _meta stripped; 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