Skip to content

Releases: nekohacker591/LibreChat

v1.3.0

Choose a tag to compare

@nekohacker591 nekohacker591 released this 17 Sep 19:00

LibreChat 1.3.0 - Phoenix Grove, with a self-describing model catalog

New provider: Phoenix Grove (api.pgsgrove.com)

  • OpenAI-compatible endpoint (/v1), available on Desktop and Android with the in-app key dialog.
  • The model menu populates itself from the provider's public GET /v1/models - no hard-coded list. Chat models only: voices, embeddings and other non-chat kinds stay out.
  • The metadata is ingested, not guessed. Each chat model's context_window, max_output_tokens and modalities feed the endpoint token config, so the context tracker shows real windows (e.g. glm-5.3 = 1,048,576) and the agent's context budget reserves the real output ceiling (32,768) instead of zero.
  • Text-only models no longer offer image attachments. When the catalog declares text-only input, the attach picker drops images for that model and the upload path refuses to model-bind them - the same class of failure as a provider answering 500 to a request carrying an image.

Fixed

  • getModelTokenValue answered every exact-match lookup with the context window: an output-ceiling lookup on a model with a known window returned the window. The entry now answers only the dimension asked for and otherwise falls through to pattern matching.

Under the hood

  • processModelData accepts both catalog dialects (OpenRouter's context_length plus per-token price strings, and the OpenAI-compatible context_window / max_output_tokens plus per-million prices), with tests for each.
  • fetchModels treats pgsgrove.com as a public catalog and filters non-chat kinds from the menu.
  • Android: Phoenix Grove endpoint registration, public catalog fetch with cached metadata, metadata-driven token config.

Android

  • versionCode 15 / versionName 1.3.0, signed with the same release key.

Desktop

  • Same changes; the auto-update manifest points at 1.3.0.

v1.2.0

Choose a tag to compare

@nekohacker591 nekohacker591 released this 16 Sep 18:42

LibreChat 1.2.0 - upstream sync (last 48h) + desktop fixes

Upstream, merged (50 commits)

  • Failed turns keep their streamed content and render actionable guidance with a retry.
  • Artifact triggers render as tool rows; downloadable artifacts unify under one card.
  • The sidebar scrolls as one surface instead of nested scroll containers.
  • Code approval mode is remembered and stays selectable mid-run.
  • Ask-user answers survive compaction; queued follow-ups survive handoff.
  • Files no tool can read get an opt-in text fallback; extracted upload text previews.
  • Opted-in custom-endpoint media is delivered safely (audio/video encoding).
  • MCP credentials can renew for schedules; OpenID discovery retries after startup.
  • Content, tool and agent types split out of the assistants module; @librechat/agents 3.8.7.

Fixed in this fork

  • The server now runs on Node 26. Node 26 removed buffer.SlowBuffer, and the jsonwebtoken chain reads it at module scope, so the desktop app's own backend died on startup. A first-require shim restores the constructor before that chain loads.
  • Provider failures are diagnosable. The console transport was dropping the safe failure metadata (status, error code, origin, type); it now renders, and an upstream 5xx shows a retry/attachment hint instead of only the status sentence.
  • The client build is reproducible again. A fresh install resolved react-vtree's unbounded react-window peer to the v2 major, which removed FixedSizeList/VariableSizeList; react-window is pinned to 1.8.11.

Android

  • versionCode 14 / versionName 1.2.0, signed with the same release key.

Desktop

  • Same merge; the auto-update manifest points at 1.2.0.

v1.1.2

Choose a tag to compare

@nekohacker591 nekohacker591 released this 16 Sep 01:04

LibreChat 1.1.2 - new chats keep your composer settings

Fixed

  • Chat settings no longer reset when you start a new chat. With no preset or model spec configured, every New Chat rebuilt the composer from the endpoint schema, so the reasoning level, temperature, max tokens and the rest of the params were dropped; only the model and the tools survived through their own storage.
  • The stored conversation setup (LAST_CONVO_SETUP) is now consulted when no preset applies, and only when it belongs to the endpoint the new chat is built for, so an endpoint switch still cannot bleed one endpoint's settings into another. Spec, icon, project and agent/assistant identity fields are dropped, and agent or assistant chats keep their own selection paths.
  • Composer tool toggles (web search, code, file search, artifacts, skills, memory, MCP servers) now carry over to a new chat. New chats read their toggles back from "new"-suffixed storage, which a conversation you were in never wrote; the conversation being left now hands its values over, skipping expired ones. Deployments with model specs are untouched (their new chats read the admin defaults key).

Android

  • versionCode 13 / versionName 1.1.2, signed with the same release key.

Desktop

  • Same composer fix through the shared client; no other functional changes from 1.1.1.

v1.1.1

Choose a tag to compare

@nekohacker591 nekohacker591 released this 15 Sep 01:50

LibreChat 1.1.1 - correct context windows for OpenCode models

Fixed

  • The context tracker no longer reports a 32K window for 1M-token models. The OpenCode Go/Zen catalogs expose model families the context catalog never listed (mimo, longcat, hunyuan/hy3/hy4, ling, nemotron, omen-alpha, big-pickle), so every lookup fell through to the 32K system default - minus an output reserve that is exactly the 28.9K budget the tracker showed for a 1,048,576-token model.
  • Their windows and output ceilings are now in the catalog, sourced from the OpenCode provider entries in models.dev (the catalog OpenCode itself uses): mimo-v2.5-pro 1,048,576, mimo-v2.5 1,000,000, mimo-v2-omni 262,144, longcat-2.0 1,000,000, hy4-preview 1,024,000, hy3 256,000, omen-alpha 500,000, big-pickle 200,000, ling-3.0-flash-fin 262,144, nemotron-3-ultra 1,000,000, nemotron-3.5-lightning 262,144.
  • The Android on-device server mirrors the same families instead of answering a flat 131,072 for every model.

Verified against the live gateway: all 107 Go/Zen models resolve, none with an output ceiling at or above its window.

Android

  • versionCode 12 / versionName 1.1.1, signed with the same release key.

Desktop

  • Same catalog fix through the shared API package; no other functional changes from 1.1.0.

v1.1.0

Choose a tag to compare

@nekohacker591 nekohacker591 released this 15 Sep 01:13

LibreChat 1.1.0 - sidebar overhaul

Chat history

  • A full-width New Chat button now sits at the top of the chat-history panel, above search, Projects and the list - the action finally matches the history it creates. The icon rail keeps its compact pencil for the collapsed state, and true small screens keep their thumb-reachable footer button instead of showing both.
  • The Chats header shows a quiet count of the conversations currently listed.

Fixes

  • The mobile drawer scrim ignored its own sliding state: as soon as the drawer started closing it dropped the pointer target, so a tap during the animation could land on a control sliding underneath. It now stays the target until the surfaces settle.

Android

  • versionCode 11 / versionName 1.1.0, signed with the same release key, with the refreshed client bundle.

Desktop

  • Same sidebar changes through the shared client; no other functional changes from 1.0.9.

v1.0.9

Choose a tag to compare

@nekohacker591 nekohacker591 released this 15 Sep 00:46

LibreChat 1.0.9 - the Android overhaul

Stability (crashes / hangs)

  • Disconnect-tolerant streaming. A vanished WebView used to block the generation thread forever inside the response pipe - one leaked thread + buffer per disconnect, the main crash vector. Streams now write through a sink that detaches on failure, a watchdog closes pipes that stall for 45s, and a reconnect replays the text so far instead of starting a duplicate (paid) upstream call.
  • Model list no longer hangs. Fetch attempts are throttled (failures included), the request never blocks, timeouts are short, and the last good listing is cached on device.
  • Crash logs. A global handler writes stack traces to the app log, with a new Share Logs menu item - future crashes are no longer unexplained.
  • Update dialogs/toasts are guarded against a destroyed screen, request bodies are capped, the server binds loopback only, and Activity/WebView callbacks are cleaned up on exit.

Media

  • Native photo attach. New gallery button next to the paperclip opens the system photo picker (camera when the page requests capture).
  • Uploads actually work. /api/files and /api/files/images store multipart uploads on device and serve them back; images are inlined into the model request in the shape each route expects (chat completions, Anthropic, Responses) and attachments survive reloads.

Context tracker & tools

  • The composer now reports token usage (on_token_usage / on_context_usage events, persisted per message) and serves /api/endpoints/token-config, so the context gauge works.
  • /api/roles grants the client's permission checks, restoring the composer toolset; web search is implemented on-device via a keyless DuckDuckGo lookup, and artifacts render client-side.

Android

  • versionCode 10 / versionName 1.0.9, signed with the same release key.

Desktop

  • No functional changes from 1.0.8.

v1.0.8

Choose a tag to compare

@nekohacker591 nekohacker591 released this 14 Sep 11:04

LibreChat 1.0.8

Fixed

  • Android: no more "null null null" in the chain-of-thought / reply. Android's org.json coerces the JSON null sentinel to the literal string "null", and reasoning models stream content: null next to reasoning_content - so every reasoning chunk appended "null" to the answer. Stream parsing now accepts only real strings and skips those chunks.
  • Reasoning is now forwarded to the mobile app in the legacy :::thinking ... ::: form the client renders as the collapsible chain-of-thought box: chat-completions reasoning_content, Anthropic thinking_delta, and Responses reasoning deltas.

Android

  • versionCode 9 / versionName 1.0.8, signed with the same release key as prior versions.

Desktop

  • No functional changes from 1.0.7.

v1.0.7

Choose a tag to compare

@nekohacker591 nekohacker591 released this 14 Sep 10:43

LibreChat 1.0.7

Fixed

  • Android: provider keys now really save. nanohttpd only exposes the raw body to POST handlers - PUT bodies are written to a temporary file and PATCH bodies are discarded - so PUT /api/keys from the Set Key dialog arrived empty, was rejected as missing a name, and the app still reported success while storing nothing. The server now resolves request bodies per method (POST raw body, PUT temp file, PATCH stream), which also repairs the PATCH-backed user preferences endpoint. Verified against nanohttpd 2.3.1 on the JVM: PUT, POST and PATCH bodies all resolve.
  • Settings -> Provider Keys now reflects a saved key (the row switches to Update), and chats stop returning the missing-key error.

Android

  • versionCode 8 / versionName 1.0.7, signed with the same release key as prior versions.

Desktop

  • No functional changes from 1.0.6.

v1.0.6

Choose a tag to compare

@nekohacker591 nekohacker591 released this 14 Sep 10:24

LibreChat 1.0.6

Fixed

  • Android: provider keys now actually save. The on-device server only accepted the old POST shape, while the bundled client saves with PUT {name, value, expiresAt} and reads the expiry via GET /api/keys?name=.... The app reported a successful save and stored nothing, so chats failed with the missing-key error. The full contract is implemented now - save with expiry, expiry lookup for the dialog, revoke one and revoke all - and chat requests extract the inner apiKey from the JSON object the Set Key dialog writes for custom endpoints.
  • Settings -> Provider Keys now shows the stored key's expiry, and the revoke button works.

Android

  • versionCode 7 / versionName 1.0.6, signed with the same release key as prior versions.

Desktop

  • Windows installer and portable builds; no functional changes from 1.0.5.

v1.0.5

Choose a tag to compare

@nekohacker591 nekohacker591 released this 14 Sep 01:48

LibreChat 1.0.5

New

  • Reasoning level in the composer: choose Auto, None, Low, Medium, High or Max next to the attachment and tool controls. It persists like other parameters (URL, localStorage, presets) and routes per backend: reasoning_effort for OpenAI-compatible and Anthropic Messages requests (OpenCode Go/Zen), reasoning: { effort } for the Responses API.
  • Android's on-device server forwards the same field, so the control works in the APK without a desktop backend.

Fixed

  • The reasoning control repaints immediately when its value changes. Previously it kept showing the previous level after the first message or after toggling Web Search, because the composer's memoized conversation did not include the field.
  • Android in-app updates now check this repository's releases (previously pointed at upstream LibreChat).

Android

  • versionCode 6 / versionName 1.0.5, signed with the same release key as prior versions.
  • Bundled client refreshed; dead precompressed sidecars removed, so the APK is back to ~12.6 MB.

Desktop

  • Windows installer and portable builds with the auto-update manifest.