v3.1.9

onyx-dot-app/onyxv3.1.9Apr 24, 2026by github-actions[bot]

AI Summary

This release introduces encryption key rotation utility, tool call argument streaming improvements, configurable file upload size limits, and establishes a Storybook infrastructure for component development.

Key Highlights

  • Rotation of encryption key utility
  • Tool call arg streaming implementation
  • Configurable user file max upload size settings
  • Storybook infrastructure and stories for all components
  • OpenSearch enabled by default

New Features

  • Preview file type support with PreviewModal
  • CSV parsing improvements
  • LiteLLM model fetching
  • Admin Users page shell with stats bar
  • Foldable support in 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
* fix(scim): add advisory lock to prevent seat limit race condition (#10048) to release v3.1 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/10067
* fix(image): Cap Uploaded File Image Count (#10298) to release v3.1 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/10307
* fix(LLM config): resolve API Key before fetching models (#10056) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10318
* feat(anthropic): include Opus 4.7 in recommended models (#10273) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10319
* fix(deps): install transitive vertexai dependency (#10328) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10333
* feat: filestore delete missing error (#9878) to release v3.1 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/10372
* fix(files): harden authorization on chat file downloads (#10380) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10392
* fix(security): enforce chat session ownership on stop endpoint (#10413) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10416
* fix(files): Add img generated files to user accessible (#10434) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10448
* fix(files): Img generated files blocked during chat (#10465) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10511
* fix(files): allow connector file previews through /chat/file (#10498) to release v3.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/10572
* fix: sharepoint members recursion (#10505) to release v3.1 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/10606

## 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.12...v3.1.9