v3.1.4
onyx-dot-app/onyxv3.1.4Apr 10, 2026by github-actions[bot]
AI Summary
A minor release introducing encryption key rotation, tool call streaming, configurable user file upload limits, and comprehensive bug fixes.
Key Highlights
- New encryption key rotation utility
- Tool call argument streaming support
- Configurable user file upload size limits
- OpenSearch enabled by default
- Storybook infrastructure and component library
New Features
- Encryption key rotation utility
- Tool call argument streaming
- Configurable user file upload limits
- OpenSearch integration
- Storybook infrastructure
- LineItemButton component
- Card and EmptyMessageCard components
- LLM provider model fetching
- Foldable support for OpenButton
Full Release Notes
## What's Changed * feat: rotate encryption key utility by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9162 * feat: Tool call arg streaming by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/9095 * fix(user files): Add configurable user file max upload size setting 1/3 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9157 * fix(user files): Enforce user upload file size limit in projects/chat upload path 2/3 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9158 * fix(user files): Add frontend precheck for oversized user uploads 3/3 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9159 * chore(llm): Adding Integration test for Model state cache 2/2 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9142 * fix(fe): fix broken slack bot admin pages by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9168 * fix: remove unnecessary multitenant check in migration by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9172 * fix: ph ssl upgrade on redirect for local development by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9175 * chore: update decryption utility by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9176 * fix: move available context tokens to useChatController and remove arbitrary 50% cap by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9174 * fix: set event hook for wrapping values into SensitiveValue by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9177 * feat: add `LineItemButton` component by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9137 * fix: fallback doc access when drive item is externally owned by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9053 * chore(deps): bump astral-sh/setup-uv from 7.2.0 to 7.3.1 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9200 * chore(deps): bump actions/download-artifact from 7.0.0 to 8.0.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9199 * chore(deps): bump hashicorp/setup-terraform from 3.1.2 to 4.0.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9198 * fix(mcp): use CE-compatible chat endpoint for search_indexed_documents by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9193 * refactor: default width from `w-auto` → `w-fit` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9146 * fix(fe): move app padding inside overflow container by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9206 * fix: don't fetch mcp tools when no llms are configured by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9173 * fix: discord connector async resource cleanup by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9203 * fix(safari): Search results dont shrink by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9126 * feat(storybook): add Storybook infrastructure - 1/3 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9195 * fix: impropoer kv store strings by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9213 * fix(api memory): replace glibc with jemalloc for memory allocating by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9196 * feat(opensearch): Enable by default by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9211 * fix(fe): fix chat content padding by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9216 * fix(code-interpreter): set default CODE_INTERPRETER_BASE_URL w/ docke… by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9215 * chore(auth): backend cleanup by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/8558 * fix: use `detail` instead of `message` in OnyxError response shape by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9214 * feat(storybook): add stories for all components - 2/3 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9194 * ci: add Storybook deploy workflow - 3/3 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9205 * feat(fe): increase preview file type support & replace `TextViewModal` with `PreviewModal` variant by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9212 * fix(fe): preview modal fade matches code bg color by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9221 * fix: assistant file transfer by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9163 * feat: prune hierarchynodes by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9066 * fix: Prevent the removal and hiding of default model by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/9131 * feat(custom-tools): enhance custom tool error handling and timeline UI by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/9189 * chore(release): run playwright on release pushes by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9233 * chore(auth): deployment docker cleanup by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/8587 * chore(tests): fix nightly model-server tests by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9236 * fix(opensearch): Allow configuring the page size of chunks we get from Vespa during migration by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9239 * chore(opensearch): Allow configuring num hits from hybrid subquery from env var by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9243 * fix(fe): make CSV inline display responsive by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9242 * fix: update jira group sync endpoint by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9241 * fix(storybook): case-sensitivity, icon rename, and story fixes by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9244 * fix(fe): correctly parse comma literals in CSVs by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9245 * chore(opensearch): Followup for #9243 by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9247 * fix(fe): increase responsive breakpoint for centering modals by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9250 * fix(opensearch): Update should clear projects and personas when they are empty by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8845 * chore: add cache_okay to EncryptedJson by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9252 * chore: sharepoint dedupe by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9254 * chore: redeclare cache_okay for EncryptedBase children by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9253 * feat(llm-provider): fetch litellm models by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8418 * fix: Consolidate search state-machine by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9234 * chore(release): upgrade `release-tag` by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9257 * chore(deps): bump hono from 4.12.5 to 4.12.7 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9263 * feat(opal): add `foldable` support to `OpenButton` + fix `MessageToolbar` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9265 * feat(litellm): Adding FE Provider workflow by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9264 * feat(admin): add Users page shell with stats bar and SCIM card - 1/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9079 * feat(opal): add Card and EmptyMessageCard components by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9271 * fix(tests): remove deprecated o1-preview and o1-mini model tests by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9280 * fix(indexing): Stop deep-copy during indexing by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/9275 * chore(opensearch): unset container ulimits in dev by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9277 * chore(deps): bump pypdf from 6.7.5 to 6.8.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9260 * feat(ods): use release-tag to print highest stable semver that should receive the `latest` tag by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9278 * fix(craft): rename webapp download endpoint to avoid route conflict by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/9283 * fix(fe): `InputComboBox` resets filter value on open by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9287 * chore(deps): bump tornado from 6.5.2 to 6.5.5 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9290 * feat(admin): add user timestamps and enrich FullUserSnapshot - 2/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9183 * chore(models): rm `claude-3-5-sonnet-v2` metadata by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9285 * fix(slackbot): resolve channel references and filter search by channel tags by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9256 * chore(devtools): `ods backend api` by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9295 * feat(admin): add Users table with DataTable and server-side pagination - 3/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9178 * chore(devtools): upgrade `ods`: 0.6.3->0.7.0 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9297 * feat(admin): add role, group, and status filters to Users table - 4/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9179 * fix(db): avoid SQLAlchemy sentinel mismatch in batch user insert by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9300 * fix(fe): prevent clicking `InputSelect` from selecting text by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9292 * refactor: use ods latest-stable-tag to tag images in Docker Hub by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9281 * feat(admin): add row actions with confirmation modals - 5/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9180 * refactor: sync craft latest builds with latest stable by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9279 * fix(favicon): prefer relative path to favicon by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9307 * chore: sharepoint error logs by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9309 * feat(admin): add invite users modal - 6/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9181 * feat(chat): support attaching more file types to chats by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9299 * chore(auth): deployment helm cleanup by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/8588 * feat(admin): add inline role editing in Users table - 7/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9184 * chore(deps): bump orjson from 3.11.4 to 3.11.6 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9315 * chore(fe): polish file previews more by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9259 * feat(oidc): Adding PKCE for OIDC by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9128 * fix(cherry-pick): Improving workflows by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9316 * chore(greptile): Improving the Custom Context by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9319 * fix(craft): stop proxied webapp asset and HMR reload leaks by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/9255 * fix: skip classic site pages by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9318 * feat(admin): add edit group membership modal - 8/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9185 * feat(admin): switch to new Users page and remove v2 route - 9/9 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9223 * feat(voice mode): stt and tts by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/8715 * fix(helm): User Auth Secret off by Default by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9325 * chore(cherry-pick): CODEOWNERS for cherry-pick by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9329 * fix: sharepoint pages 400 list expand by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9321 * chore(cherry-pick): Whitelist for Users who can CP by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9330 * chore(deps): upgrade `katex`: v0.16.17->v0.16.38 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9327 * chore(playwright): remove `.only` typo by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9336 * fix(voice): sanitized error and fix replay voice on revisit chat by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/9326 * feat(cherry-pick): notify Slack on successful PR creation by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9331 * chore: refactor ph events for typing and consolidation and add event on llm configuration by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9328 * feat(llm-modal-consolidation): Update components by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9334 * chore(format): format files where `ruff` and `black` agree by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9339 * feat: add more user icons by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9343 * chore(deps): bump pyjwt from 2.11.0 to 2.12.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9341 * fix(litellm): filter embedding models by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/9347 * feat: add progress-bars opal icon by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9349 * feat: refresh admin sidebar with new sections, search, and disabled EE tabs by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9344 * fix(fe): bump flatted to patch CVE-2026-32141 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9350 * feat(ci): add Slack @-mention support to slack-notify action by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9359 * fix(admin): users page UI/UX polish by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9366 * chore(posthog): allow no-op client in `DEV_MODE` by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9357 * chore(deps): bump authlib from 1.6.7 to 1.6.9 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9370 * chore(hook): Add feature control by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9320 * chore(voice): support non-default FE ports for `IS_DEV` by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9356 * fix: use uuid as ph unique id from BE by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9371 * test(ui): Add visual regression test for project files with long filenames by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9062 * chore(deps): bump actions/checkout from 6.0.1 to 6.0.2 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9373 * chore(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9375 * chore(deps): bump docker/metadata-action from 5.10.0 to 6.0.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9374 * chore(tests): fix flaky `test_run_with_timeout_raises_on_timeout` by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9377 * fix(celery): Limiting connector_hierarchy_fetching jobs by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9381 * chore(ws): ignore port when determining origin in dev by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9382 * chore: update install script by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9068 * test(admin): add E2E Playwright tests for Users page by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9266 * chore: run identify from backend by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9392 * refactor: refreshed `Pagination` component by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9380 * chore(fe): make sidebar scrollbar flush with edge by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9383 * fix(search-ui): center pagination in `SearchUI` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9396 * chore(fe): admin navigation always goes to LLM config page by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9395 * chore(playwright): make project name human-readable by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9394 * chore(hook): DB changes by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9337 * fix(vespa): use weightedSet for ACL filters to prevent query failures by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9403 * feat(llm-config): replace AdvancedOptions with unified ModelsAccessField by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9270 * fix: make ConnectorCredentialPair name required by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9408 * chore(fe): rm dead stackTraceModalContent by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9412 * chore(deps): bump next from 16.1.5 to 16.1.7 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9420 * chore(devtools): `ods backend` scans for available ports by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9418 * fix(llm): surface masked OpenAI quota failures by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9308 * chore(fe): prefer `INTERNAL_URL` by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9419 * feat(opensearch): Configure hybrid search subquery groups and pipelines via env var by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9407 * chore(deps): bump pyasn1 from 0.6.2 to 0.6.3 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9417 * chore(opensearch): Make Password Default Empty by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9415 * refactor: update size variant and dimension names in opal components by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9416 * chore(docker): configurable api_server resource limits by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9424 * chore: Scripts for search quality eval by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/9421 * chore(devtools): upgrade `ods`: 0.7.0->0.7.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9429 * chore(hooks): Add db CRUD by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9411 * fix(opensearch): Fix env var mismatch issue with configuring subquery results; set default to 100 by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9428 * fix(fe): replace users table buttons with LineItems by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9435 * chore(opensearch): Disable `test_update_single_can_clear_user_projects_and_personas` by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9434 * chore(playwright): projects screenshot is main container only by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9440 * fix(file upload): Allow zip file upload via query param by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/9432 * fix(fe): display name on attachment file card hover by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9446 * chore: bump next to 16.1.7 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9423 * chore(deps): bump next from 16.1.5 to 16.1.7 in /examples/widget by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9425 * chore(ruff): fix and enable S324 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9451 * chore(deps): bump pypdf from 6.8.0 to 6.9.1 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9450 * chore(tests): unit tests for pdf processing by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9452 * fix(fe): update connector indexing error modal by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9426 * fix(fe): truncate project name in sidebar button by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9462 * fix(opensearch): Exclude retrieving vectors during hybrid and random search by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9430 * feat(opensearch): Can override number of shards and replicas via env var by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9431 * fix(fe): truncate connector names in table by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9459 * chore(hooks): Add Celery task to remove hook running records older than 30 days by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9433 * feat(fe): "Full Exception Trace" modal uses CodePreview rendering by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9464 * fix(image): stop dumping base64 image data into error logs by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9457 * fix(fe): make indexing attempt error rows click to show trace by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9463 * fix(image): add diagnostic logging to vision model selection by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9460 * fix(celery): add task expiry to upload API send_task call by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9456 * fix(celery): add dedup guardrails to user file delete queue by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9454 * fix(logging): extract LiteLLM error details in image summarization failures by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9458 * chore(hooks): Define Hook Point in the backend by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9391 * fix(agents): Agents are Private by Default by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9465 * chore(opensearch): Allow disabling match highlights via env var; default to disabled by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9436 * chore(fe): remove `opal-button*` class names by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9471 * refactor(fe): move table to opal, update size API by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9438 * feat(admin): groups page - list page and group cards by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9453 * chore(fe): reduce padding on elements at the bottom of modal headers by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9488 * fix(code interpreter): Caching files by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9484 * fix(fe): fix memories immediately losing focus on click by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9493 * chore: move `Hoverable` story by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9495 * feat: windows installer and install improvements by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9476 * fix(llm): don't send tool_choice when no tools are provided by @Fizza-Mukhtar in https://github.com/onyx-dot-app/onyx/pull/9224 * fix: drive rate limit retry by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9498 * feat(ods): Rerun run-ci workflow by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9501 * feat(backend): Adding procps by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9509 * feat(opensearch): Add functions for keyword and semantic retrieval by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9479 * chore: edit `AGENTS.md` and `CLAUDE.md` files by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9486 * fix(fe): dim project name in sidebar color by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9519 * feat(tf): Port over WAF updates by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9520 * fix(fe): clicking outside chat area keeps chat input focused by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9521 * feat(hook): improve on hook point definition by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9522 * chore(hook): Hook executor. by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9467 * fix: windows installer by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9507 * feat(hook): Add hook management API by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9513 * fix: deadlock in multitenant test by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9530 * fix(chat): Cache plaintext file results by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/9511 * chore(fe): update memories dropdown padding by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9526 * feat: installer invocable from other bash script by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9531 * fix: csv test with newlines by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9534 * feat: `UserAvatar` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9527 * fix(mt): Tenant Provisioning Fixes by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9541 * chore(fe): auto-focus clicked memory, improve action hover style by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9532 * fix: windows install improvements by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9542 * chore(fe): clean up table qualifier API and internals by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9528 * chore(deps-dev): bump flatted from 3.4.1 to 3.4.2 in /web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9539 * chore(deps-dev): bump flatted from 3.3.3 to 3.4.2 in /examples/widget by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9550 * fix(opal): remove table-layout fixed, right-align actions column by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9551 * fix(opal): reduce table qualifier icon sizes by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9552 * fix: last index time consistency by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9546 * chore: [mirror of #9267] pass OAuthClientProvider to call_mcp_tool for automatic token refresh by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9414 * feat(opal): add `SvgStarOff` icon by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9555 * feat(fe): migrate root layout from SSR to CSR with SWR data fetching by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9529 * chore(deps): bump docker/bake-action from 6.10.0 to 7.0.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9559 * chore(deps): bump astral-sh/setup-uv from 7.3.1 to 7.6.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9562 * chore(deps): bump actions/setup-node from 6.2.0 to 6.3.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9561 * chore: web connector wait for page networkidle before continuing by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9556 * chore: don't allow periods in gmail signup on cloud by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9564 * chore(fe): remove `Inter` font by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9566 * chore(deps-dev): bump flatted from 3.3.3 to 3.4.2 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9535 * refactor: update auth paths to use onyx error and correctly pass error detail to auth error page by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9565 * fix(ux): give a tooltip with reason agent edit cannot save by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9571 * fix: alias anonymous ph users with registered users by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9570 * refactor: update names in `Persona` table by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9569 * chore(fe): action popover item UX by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8831 * fix(migration): Fix duplicate Null Users issue by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9568 * feat(tf): Introduce Opensearch Terraform for AWS by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9523 * fix(ux): display invalid agent fields on load by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9582 * chore(opensearch, devtools): Benchmarking script by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9579 * chore(opensearch, devtools): Generate embedding script by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9580 * chore(playwright): mask date switcher in screenshots by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9584 * chore: use efficient persona id query path by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9573 * refactor: filter fields by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9574 * chore(indexing): Add tests for DocumentIndex index function by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/9477 * chore(fe): memories save after pressing enter by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9553 * chore(fe): position memories modal at the top by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9554 * chore(fe): always load an empty memory card by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9560 * feat(admin): refresh agents page with DataTable and opal components by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9376 * fix(a11y): hidden buttons appear on tabbing by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9518 * feat(ux): handle when chat session id cannot be found by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9524 * chore(fe): memory input defaults to 1 row with max of 3 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9563 * fix(fe): stop SWR retry spam and spurious logout on auth pages by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9587 * fix(fe): editing an LLM provider uses the global default model by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9502 * chore(blame): ignore ruff formatting change by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9345 * fix(fe): properly style "Sign In" button by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9480 * chore(gha): basic test selection for external deps and connector tests by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9596 * fix(fe): map snake_case auth type API response to camelCase by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9586 * fix(fe): settings page layout shift on load by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9594 * fix(voice): add WebSocket upgrade headers to nginx configs by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/9558 * fix: eager load chat session persona by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9577 * refactor(opal): opalify `FilterButton` + migrate all instances away from old one by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9597 * fix(mt): Preprovision all tenants at once by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9576 * feat(helm): Adding pginto specific host by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9600 * feat(hook): integrate query processing hook point by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9533 * refactor(opal): cleanup `button` types in Opal by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9598 * feat(admin): inline group renaming by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9491 * feat(groups): add create group page by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9515 * fix(ui): Text focused paste from PowerPoint by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9603 * fix: update values.yaml comment for opensearch admin password secretKeyRef by @ciaransweet in https://github.com/onyx-dot-app/onyx/pull/9595 * refactor(opal): restructure Onyx logo icons into composable parts by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9606 * fix(ux): disable MCP Tools toggle if needs authenticated by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9607 * refactor: fix sidebar layout by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9601 * feat(groups): add shared resources and token limit sections by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9538 * fix(width): UI update model width definition. by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9613 * feat(hook): Add frontend feature control and admin hook page by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9575 * fix: Fix tag widths by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9618 * feat(groups): add edit group page by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9543 * fix: no more lazy queries per search call by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9578 * feat(metrics): add reusable Prometheus metrics server for celery workers by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9589 * fix: confluence client retries by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9605 * feat(metrics): add queue depth and connector health Prometheus collectors by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9590 * feat(groups): polish edit page table and delete UX by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9544 * feat(metrics): add task lifecycle and per-connector Prometheus metrics by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9602 * feat: Group-based permissions — Phase 1 schema (AccountType, Permission, PermissionGrant) by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/9547 * feat(groups): switchover to /admin/groups and rewrite e2e tests by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9545 * fix: use persisted source functions when toggling search tool by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/9548 * fix(sidebar): fix icon alignment for user-avatar-popover by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9615 * fix(fe): redirect to status page after deleting connector by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9620 * fix(chat): dont clear input message after errors submitting by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9624 * fix(notion): upgrade API version + logical changes by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/9609 * chore(voice): align fe with other admin pages by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/9505 * feat(hook): Frontend hook infrastructure by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9634 * chore(agents): Match Mocks & Add Date Validation by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9632 * feat: sharepoint shareable links non-public by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9636 * chore(deps): bump pypdf from 6.9.1 to 6.9.2 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9637 * feat(opal): add Text component with inline markdown support by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9623 * chore(deps): bump picomatch in /examples/widget by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9651 * fix: clarify service account API key upgrade message for trial accounts by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9581 * chore(playwright): rework admin navigation tests by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9650 * chore(deps-dev): bump picomatch from 4.0.3 to 4.0.4 in /widget by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9659 * feat(opensearch): Search UI search flow can be configured to use pure keyword search by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9500 * chore(deps): bump requests from 2.32.5 to 2.33.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9652 * chore(deps): bump yaml from 1.10.2 to 1.10.3 in /web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9655 * feat(opensearch): Add Prometheus metrics for OpenSearch retrieval by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9654 * fix(ci): tag web-server and model-server with craft-latest by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/9661 * chore(opensearch): Optimize terms filters; add type aliases by @acaprau in https://github.com/onyx-dot-app/onyx/pull/9619 * chore(deps): bump picomatch in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9662 * chore(deps): bump nltk from 3.9.3 to 3.9.4 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/9663 * feat: sharepoint filters (denylist) by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9649 * feat(chat): add DB schema and Pydantic models for multi-model answers by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9646 * fix(opal): remove gap between title and description in ContentMd by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9666 * refactor(opal): accept `string | RichStr` in all Opal text-rendering components, modals, and input-layouts by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9656 * fix(metrics): replace inspect.ping() with event-based worker health monitoring by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9633 * feat(llm): add Bifrost gateway as LLM provider (backend) by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9616 * fix(admin): wrap system prompt modal in Formik with markdown subDescription by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9667 * feat(canvas): add API client, data models, and connector scaffold 1/4 by @benwu408 in https://github.com/onyx-dot-app/onyx/pull/9385 * refactor: migrate legacy `components/Text` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/9628 * chore(greptile): split greptile.json into .greptile/ directory by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9668 * feat(hook): Hook connect/manage modal by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9645 * fix(api-key): clarify upgrade message for trial accounts by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9678 * fix(jira): large batches fail json decode by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/9677 * fix(voice): dont soft-delete providers by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9679 * feat(llm): add Bifrost gateway frontend modal and provider registration by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9617 * fix(billing): retry claimLicense up to 3x after Stripe checkout return by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9669 * feat(hook): Hook Form Modal Polish. by @Bo-Onyx in https://github.com/onyx-dot-app/onyx/pull/9683 * feat(providers): allow deleting all types of providers by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9625 * fix(fe): Popover content doesnt overflow on small screens (#9612) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9700 * chore(playwright): deflake `settings_pages.spec.ts` (#9684) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9702 * fix: Anthropic litellm thinking workaround (#9713) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9724 * feat(voice): VAD auto-stop only when auto-send is enabled (#9809) to release v3.1 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9819 * fix(perf): optimize chat sessions query to prevent DB cascading failures (#9802) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9822 * fix(celery): use broker connection pool to prevent Redis connection leak (#9682) to release v3.1 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/9821 * fix(db): remove unnecessary selectinload(User.memories) from auth paths (#9838) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9845 * chore(deps): bump litellm from 1.81.6 to 1.83.0 (#9898) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9902 * Revert "chore(deps): bump litellm from 1.81.6 to 1.83.0 (#9898) to release v3.1" by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9910 * fix(federated): prevent masked credentials from corrupting stored secrets (#9868) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9928 * fix: stop falsely rejecting owner-password-only PDFs as protected (#9953) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9962 * fix: set correct ee mode for mcp server (#9933) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9938 * fix(groups): Global Curator Permissions (#9974) to release v3.1 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/9980 * fix(indexing, powerpoint files): Patch markitdown _convert_chart_to_markdown to no-op (#9970) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9979 * feat: generic OpenAI Compatible LLM Provider setup (#9968) to release v3.1 by @github-actions[bot] in https://github.com/onyx-dot-app/onyx/pull/9975 * fix: onboarding LLM Provider configuration fixes (#9972) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9989 * fix: LM Studio API key field mismatch (#9991) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/9992 * fix: Custom LLM Provider requires a Provider Name by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10000 * fix(llm): Azure custom model support + Mistral tool call message ordering (#9729) to release v3.1 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/10037 * feat(federated): full thread replies + direct URL fetch in Slack search (#9940) to release v3.1 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/10051 ## New Contributors * @Fizza-Mukhtar made their first contribution in https://github.com/onyx-dot-app/onyx/pull/9224 **Full Changelog**: https://github.com/onyx-dot-app/onyx/compare/v3.0.6...v3.1.4