v2.12.0

onyx-dot-app/onyxv2.12.0Feb 20, 2026by github-actions[bot]

AI Summary

Major release featuring Onyx Craft (new AI coding environment), comprehensive file system hierarchy nodes for Jira, Slack, SharePoint, Confluence, and improved OpenSearch migration. Includes JWT-based authentication, Postgres file store, Brave Web Search integration, and full billing system with license enforcement.

Key Highlights

  • Onyx Craft - new AI coding environment with sandboxed execution
  • File system hierarchy nodes for Jira, Slack, SharePoint, Confluence, Notion, and Google Drive
  • OpenSearch migration system with bulk indexing support
  • Complete billing system with license enforcement, seat limits, and unified billing API
  • JWT-based authentication and postgres file store

Breaking Changes

  • Route renamed from /chat to /app
  • Build/v1 API refactored to craft/v1

New Features

  • Onyx Craft with sandboxed execution and session management
  • File system hierarchy nodes with permission info
  • OpenSearch dual indices with migration tasks
  • JWT-based authentication
  • Postgres file store
  • Brave Web Search integration
  • Chat history search and message summarization
  • New agent timeline blocks
  • Desktop app with light/dark toggle and proper Mac signing
  • License enforcement middleware enabled by default

Full Release Notes

See the assets to download this version and install.

## What's Changed
* fix: user count check by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7811
* feat(ee): add license public key file and improve signature verification by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7806
* feat(opensearch): Add separate index settings for AWS-managed OpenSearch; Add function for disabling index auto-creation by @acaprau in https://github.com/onyx-dot-app/onyx/pull/7814
* feat: Onyx Craft by @Weves in https://github.com/onyx-dot-app/onyx/pull/7484
* fix: type ignore unrelated mypy for onyx craft head by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7843
* fix: processing mode enum by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7849
* feat(ee): add proxy endpoints for self-hosted billing operations by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7819
* fix: Project Creation by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/7851
* feat(chat): Search over chats and projects by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/7788
* fix(craft): only insert onyx user context when demo data not enabled by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7841
* fix: pass in correct region to allow IRSA usage by @Weves in https://github.com/onyx-dot-app/onyx/pull/7865
* fix(helm): Updating Ingress Templates by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7864
* feat(ee): enforce seat limits on user operations by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7504
* fix: remove posthog debug logs and adjust gitignore by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7868
* fix: connector details back button should nav back by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7869
* chore: specify sandbox version by @Weves in https://github.com/onyx-dot-app/onyx/pull/7870
* feat(ee): update api to claim license via cloud proxy by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7840
* chore(pr): Add Cherry-pick check by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7805
* fix(llm): Hide private models from Agent Creation by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7873
* fix(craft): only include org_info/ when demo data enabled by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7845
* fix(redis): Adding more TTLs by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7886
* fix(citations): enable citation sidebar w/ web_search-only assistants by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7888
* feat(craft): better output formats by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7889
* feat: md rendering, docx conversion and download, output panel refresh refactor for all artifacts by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7892
* fix: sidebar items are title case by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7893
* chore: remove pyproject config for pypandoc mypy by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7894
* fix: demo data toggle race condition by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7902
* chore(mypy): fix mypy cache issues switching between HEAD and release by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7732
* fix: db connection closed for craft by @Weves in https://github.com/onyx-dot-app/onyx/pull/7905
* feat(filesys): data models and migration by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7402
* feat(ee): Add unified billing API  by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7857
* fix(craft): delete session ui by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7847
* feat(ee): improve license enforcement middleware by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7853
* fix: improve session recovery by @Weves in https://github.com/onyx-dot-app/onyx/pull/7912
* feat: md preview scrollbar by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7909
* chore(tracing): Adding more explicit Tracing to our callsites by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7911
* feat(craft): update github action for craft latest by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7910
* feat(filesys): Connectors know about hierarchynodes by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7404
* fix(craft): allow initializing non-visible models by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7915
* feat: craft ui improvements by @Weves in https://github.com/onyx-dot-app/onyx/pull/7916
* fix(craft): files directory works locally + kube by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7913
* fix(craft): new demo data & change of eng IC demo persona by @joachim-danswer in https://github.com/onyx-dot-app/onyx/pull/7917
* feat(filesys): connect hierarchynode and assistant by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7428
* chore: kg stuff in celery by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/7908
* chore: README by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/7919
* feat(filesys): opensearch integration with hierarchy by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7429
* fix(craft): block opencode.json read by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7846
* refactor: packet type processing and path sanitization by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7920
* fix(craft): allow more lenient tag names (for versioning) by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7921
* refactor: build/v1 to craft/v1 by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7924
* feat(filesys): implement hierarchy injection into vector db chunks by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7548
* fix(craft): install script for craft-latest image by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7918
* feat(craft): allow closing LLM setup modal by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7925
* feat(filesys): creation of hierarchyfetching job by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7555
* fix: z index for output panel by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7926
* fix: kubernetes freezing by @Weves in https://github.com/onyx-dot-app/onyx/pull/7928
* fix: attachment prompt tweak by @Weves in https://github.com/onyx-dot-app/onyx/pull/7929
* feat(filesys): hierarchyfetching task impl by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7557
* feat(filesys): drive hierarchynodes by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7560
* feat(filesys): hierarchynodes carry permission info by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7669
* fix: Cloud Embedding Keys by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/7944
* chore(api): Cleanup by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7945
* chore(devtools): `ods cherry-pick` QOL by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7708
* fix(craft): install script for craft will force pull latest image for any craft-* image tags by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7950
* refactor: New `sections/cards` directory to host all feature-specific cards. by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7949
* fix: exceptions trace modal by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7951
* chore(devtools): upgrade `ods`: v0.4.0->v0.4.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7952
* feat(craft): onyx craft upsell upgrade modal when you run out of free messages by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7943
* fix(craft): hide session limit by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7947
* refactor: rename `/chat` route to `/app` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7711
* chore(hygiene): remove linux kernel by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7953
* chore(deps): bump next from 16.0.10 to 16.1.5 in /web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7882
* chore(deps): bump next from 16.1.4 to 16.1.5 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7887
* chore(deps): bump hono from 4.11.5 to 4.11.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/7880
* chore(craft): more craft logging by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7954
* chore(deps): bump pypdf from 6.6.0 to 6.6.2 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7834
* chore(deps): bump next from 16.1.2 to 16.1.5 in /examples/widget by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7885
* chore(deps): bump j178/prek-action from 1.0.11 to 1.0.12 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7529
* chore(deps): add pytest-repeat to dev by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7956
* chore(braintrust): Removing indexing_pipeline logs by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7957
* 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/7802
* chore(deps): bump astral-sh/setup-uv from 7.1.5 to 7.2.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7528
* chore(deps): bump esbuild and vite in /widget by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7543
* chore(deps): bump lodash from 4.17.21 to 4.17.23 in /web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7670
* chore(deps): Bump mistune from 0.8.4 to 3.1.4 in /backend by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/6407
* chore(deps): bump lodash-es from 4.17.21 to 4.17.23 in /web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7652
* refactor(craft): fix pre-provisioning state management, fix demo data state management by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7955
* refactor: craft onboarding nit and connector docs by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7960
* fix: local indexing for craft by @Weves in https://github.com/onyx-dot-app/onyx/pull/7959
* refactor: Make `AgentCard` use `LineItemLayout` for its information instead by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7958
* fix: improve termination by @Weves in https://github.com/onyx-dot-app/onyx/pull/7964
* fix(craft): auto set best model instead of checking for visibility by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7962
* feat(ee):  fe - add billing hooks and actions by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7858
* chore: Remove Reranking by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/7946
* fix(craft): PROMPT IMPROVEMENTS by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7961
* fix(craft): RESTORING WORKS by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7966
* fix: Edit styling by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7968
* fix: llm provider upserts by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7969
* feat(craft): README by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7970
* refactor: Edit `SimpleCollapsible` API and update stylings for `Modal` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7971
* feat(craft): make last name optional in user info form by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7973
* test(filesys): drive hierarchynodes by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7676
* fix: don't show intro anim with new tenant modal + usage by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7976
* fix: input masking by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/7977
* refactor: Consolidate `Label` component by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7974
* chore(tests): add retries to azure embeddings daily test by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7978
* feat(auth): update default auth by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/7443
* feat: enable optional host setting by @victoriamreese in https://github.com/onyx-dot-app/onyx/pull/7979
* chore(fe): update baseline-browser-mapping by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7986
* fix: custom config by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7987
* fix(helm): Fixing PSQL Operator Labeling by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7985
* refactor: Add expandable card layouts with smooth animations by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7981
* chore(deps): bump starlette from 0.47.2 to 0.49.3 in /backend/requirements by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/5964
* chore(deps): Bump @sentry/nextjs from 10.23.0 to 10.27.0 in /web by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7990
* chore(flags): rm unused NEXT_PUBLIC_ENABLE_CHROME_EXTENSION by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7983
* chore(flags): remove unused NEXT_PUBLIC_DEFAULT_SIDEBAR_OPEN by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7984
* chore(deps): Bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /web by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7991
* fix(ce): documents sidebar spawns by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7994
* feat: Add new `star` icon + rename icon file with invalid naming by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7992
* refactor: Small tweaks to a few components by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7995
* endpoint clean by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7998
* hygiene(opensearch): Some cleanup by @acaprau in https://github.com/onyx-dot-app/onyx/pull/7999
* refactor: Add a `HoverableContainer` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/7997
* fix(vertex): standardise vertex image config by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/7988
* chore(devserver): fix invalid customTheme require by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8001
* feat: Add `bottomSlot` to modal API by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8000
* feat(filesys): APIs for attaching hiernodes by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7698
* feat(filesys): filter on assistant info by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7852
* fix(llm): existing custom config not used by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8002
* refactor: Update hoverable by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8007
* feat(filesys): UI for selecting hierarchy in assistant creation part 1 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7721
* refactor: Update layout components and SettingsPage by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8008
* feat(filesys): working filesys explorer by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7760
* chore: launch.json web server uses .env.web by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/7993
* chore: dev env template defaults by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8015
* fix: race conditions in drive hiernodes by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8017
* feat: notion connector hierarchynodes by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7931
* fix: onboarding model specification by @Weves in https://github.com/onyx-dot-app/onyx/pull/8019
* feat(persona): Add default_model_configuration_id column by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8020
* fix: Add explicit sizings to icons by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8018
* fix(asana): Workspace Team ID mismatch by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7674
* fix(desktop): Remove Global Shortcuts by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7914
* fix(craft): clear env vars from all sandboxes in file_sync pods by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8028
* refactor: craft onboarding ease by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8030
* feat: Add new tag icon by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8029
* chore(gha): build desktop app in CI by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/7996
* fix(ui): Updating Dropdown Modal component by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8033
* fix: discord connector tests by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8036
* fix(ee): use set(ex=) instead of setex() for license cache updates by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8004
* fix(craft): files stuff by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8037
* fix(fe): polish chat UI with custom background by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8016
* fix: troll discord assertion by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8038
* feat(components): add InputNumber with increment/decrement controls by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8003
* fix(craft): idle sandbox cleanup by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8041
* refactor(chat): move loading indicator to content area by @trial2onyx in https://github.com/onyx-dot-app/onyx/pull/8039
* fix: optional dependency for /me by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8042
* fix: Consolidate providers into one central location by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8032
* chore: remove license cache invalidation from multi-tenant by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8052
* refactor: Consolidate duplicated AppHeader components into one by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8054
* feat(billing): add circuit breaker, license re-claim, and seats to checkout by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8005
* chore(craft): bump sandbox image default value by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8055
* refactor(craft): make usage limit overrides feature flags instead of env vars by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8056
* chore: Some settings for DR for evals by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8058
* fix(chat): reduce scroll container bottom margin by @trial2onyx in https://github.com/onyx-dot-app/onyx/pull/8048
* fix: attaching user files to assistant by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8061
* chore: ban chat-tempmail by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8063
* feat(filesys): initial confluence hierarchy impl by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/7932
* feat(opensearch): Migration 0 - Introduce db tables, alembic migration, db model utils by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8013
* chore(tests): Fix name for `test_expire_oauth_token`, loosen timing bounds a bit by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8067
* refactor: Clean up app page rendering logic by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8060
* chore: DR edge case by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8074
* feat(opensearch): Migration 1 - Introduce and implement migration tasks by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8014
* chore: hopefully help LLM not spam web queries by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8075
* chore: Tune web search by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8078
* chore: OpenURL sometimes gives too many tokens by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8079
* chore: DR tool tuning by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8080
* chore: ensure ascii false by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8081
* chore: ASCII in docs by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8082
* chore: remove long term log by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8084
* chore: Web query sanitize by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8085
* refactor: Update `InputSelect` implementation by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8076
* refactor: Update `Hoverable` to be more adherent to the mocks by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8083
* fix(craft): attempt to solve hanging with explicit k8s_stream timeout by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8066
* feat(desktop): Ensure that UI reflects Light/Dark Toggle by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/7684
* refactor: hooks by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8089
* fix(ui): Ollama Model Selection by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8091
* fix(ui): Cleanup Card Span by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8094
* fix(ui): Agent Saving with other people files by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8095
* chore: DR to run more than 1 cycle typically by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8100
* chore(provider): add more integration tests for provider flow by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8099
* feat(chat): new agent timeline blocks by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8101
* chore(opensearch): Migration 2- Introduce external dependency tests by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8045
* refactor: More app header cleanups by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8097
* fix: resolve pod label duplication by @victoriamreese in https://github.com/onyx-dot-app/onyx/pull/8098
* chore(no-auth): Clean up Playwright by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8109
* fix(craft): fix default dockerfile outputs_template_path and venv_template_path by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8102
* feat(helm): Add Probes for All by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8112
* fix(ui): Search Connectors by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8116
* feat(provider): create flow mapping table by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8025
* fix: perm sync group prefixing by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8077
* feat(filesys): selected info improvements by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8117
* chore: LiteLLM bump version by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8114
* fix(craft): phantom pre-provisionsed sandboxes and poll for fresh session on welcome page by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8124
* feat(ee): fe - add new billing page structure with PlansView by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8068
* fix(ui): Model Selection in Place by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8128
* feat(ee): fe - add CheckoutView component (2/5) by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8069
* feat(ui): Selecting all Models toggle by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8125
* feat(ee): fe - add BillingDetailsView component (3/5) by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8070
* fix: LiteLLM in threading context by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8103
* feat(ee): fe - update billing hooks and services (4/5) by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8071
* fix(craft): CREEPA? AW MAN by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8115
* feat: LLM history now allows parallel tool call for a single message by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8131
* feat(ee): fe - enable new billing UI (5/5) by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8072
* feat(timeline): QA fixes aroung renderers by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8132
* feat(chat history): summarize older messages by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/7810
* feat(ee): updating billing api by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8073
* chore(opensearch): Some small cleanup around update by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8119
* feat(opensearch): String filtering by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8110
* fix(craft): wrong usage limit string by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8136
* feat(opensearch): Add tenant ID to the document chunk ID by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8129
* fix: DR time based wrap ups by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8141
* fix(auth): redirect to login page after email verification by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8137
* fix(craft): pod restoration race, recovery from unexpected state, and updating heartbeat on session creation by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8140
* feat: Track reasoning in Braintrust by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8143
* chore: Remove auth log by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8145
* fix: Back off to basic auth by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8146
* feat(opensearch): Implement admin and random retrieval; fully deprecate update in the old interface; relax update restrictions by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8142
* chore(document index): Remove offset by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8148
* fix: Give more helpful message to LLM on bad tool calls by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8150
* fix(ChatSearchCommandMenu): improve keyboard navigation and search UX by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8134
* feat(filesys): jira hierarchy v1 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8113
* feat(filesys): slack connector by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8118
* feat(filesys): sharepoint v1 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8130
* fix(timeline): consolidate header components and visual fixes by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8133
* chore: firecrawl v2 by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8155
* test(timeline): add unit tests for packet processor by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8135
* fix(ci): Fix Bedrock Test by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8161
* feat(filesys): sorting attached knowledge by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8156
* fix(craft): bump aws sync concurrent requests 10-->200 by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8163
* chore(chat compress): create readme by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/8165
* fix(ci): Notification workflow for Slack by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8167
* fix: Fix expansion error inside of `TextView` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8151
* fix(ci): Allow for flexible beta tag by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8171
* fix(ui): Additional LLM Config update by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8174
* fix(db): add cascade delete to search_query user_id foreign key by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8176
* fix: Anthropic DR requires setting reasoning limit if we want to set output limit by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8168
* chore: Sanitize LLM tool call args by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8177
* chore: DR description for GA by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8178
* feat(filesys): disabled sections by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8153
* fix(salesforce): cleanup logic by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8175
* chore: Slight tweaks of DR by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8179
* chore: DR Prompt Tuning by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8180
* feat(CommandMenu): add comprehensive tests by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8159
* fix(openai): Fix reasoning by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8183
* feat(opal): extract Hoverable into Interactive atom by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8173
* chore(devtools): `ods compose` to start containers by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8185
* refactor(craft): chad s5cmd > chud aws cli (mem overhead + speed) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8170
* fix(craft): file upload by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8149
* fix: don't run craft setup script unless it exists by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8191
* chore: bump default usage limits by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8188
* chore(devtools): upgrade `ods`: 0.4.1->0.5.0 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8190
* chore(ruff): move config up a level by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8192
* fix(ci): Model Check update by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8196
* chore(openai): Add Reasoning Specific Test by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8195
* feat: recommend opus 4-6 by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8198
* fix(agents): Removing Label Dependency by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8189
* fix: LLM Read Timeout by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8193
* chore(chat): Cleaning Error Codes + Tests by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8186
* chore(devtools): CLAUDE.md.template -> AGENTS.md by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8197
* fix: mt provisioning rollback and add tests by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8205
* chore(ruff): enable flake8s unused arg rules by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8206
* chore: bump sandbox cpu and memory limits by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8208
* feat(opal): expand InteractiveBase variant system by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8200
* fix: GPT -chat models by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8210
* fix(openai): Set Auto Reasoning effort to Medium by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8211
* chore(openai): Add test for Chat Models by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8213
* feat(opensearch): Support bulk indexing by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8203
* feat: support PEM-style delimiters in license file uploads by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/7559
* feat(ee): block Slack bot for suspended tenants and enforce seat limits by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8202
* feat: basic langfuse tracing + tracing consolidation by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8207
* chore(opensearch): Add timing and debug logging in the OpenSearch client; also expand `log_function_time` by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8209
* fix: LiteLLM for OpenAI compatible models not using Responses route by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8215
* fix(ui): Inconsistent LLM Provider Logo by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8220
* fix(db): null out document set and persona ownership on user deletion by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8219
* fix(craft): upload to s3 before marking docs as indexed in db by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8216
* chore(migrations): database migration runner by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8217
* fix(llm): LLM override can fail if admin by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8204
* fix: make it more clear how to add channels to fed slack config form by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8227
* fix(settings): default ee_features_enabled to False by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8237
* fix(opensearch): Allow update to skip if a doc chunk is not found in OpenSearch, or if chunk count is not known by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8236
* fix: metadata hardening by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8201
* chore(opensearch): Make indexing use the client's new bulk index API by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8238
* fix: column overlap typing by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8247
* fix(web search): strictly typed provider config by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/8022
* chore(provider config): llm provider config prefers LLMModelFlow by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8064
* chore(auth): anon fix by @jessicasingh7 in https://github.com/onyx-dot-app/onyx/pull/8222
* refactor(chat): agent timeline layout and spacing changes by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8226
* chore(opensearch): Improve ordering of migration records that we query by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8248
* fix: Deep Research Agent Cycle Count by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/8254
* feat: jwt-based auth by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8244
* fix(profiling): `log_function_time` should use `time.monotonic` not `time.time` by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8258
* feat: postgres file store by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8246
* refactor(opal): interactive base variant types + foreground color system by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8255
* fix(opensearch): Tighten up task timing by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8256
* chore(chat frontend): Round up in `formatDurationSeconds` so we don't see "Thought for 0s" by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8259
* chore(llm): Introduce Scaffolding for Integration Tests by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8251
* fix(login): window undefined on login by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8266
* fix(craft): snapshot restore by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8194
* fix(chrome extension): Simplify NRFPage ChatInputBar layout to use normal flex flow by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/8267
* 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/8123
* chore(deps): bump actions/upload-artifact from 4.6.2 to 6.0.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8121
* chore(deps): bump time from 0.3.44 to 0.3.47 in /desktop/src-tauri by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8187
* chore(deps): bump webpack from 5.102.1 to 5.105.0 in /web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8199
* chore(deps): bump bytes from 1.11.0 to 1.11.1 in /desktop/src-tauri by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8138
* chore(deps): bump actions/setup-node from 4.4.0 to 6.2.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8122
* chore: disable hiernodes when opensearch not available by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8271
* chore(deps): bump python-multipart from 0.0.21 to 0.0.22 in /backend/requirements by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/7831
* chore(deps): bump protobuf from 6.33.4 to 6.33.5 in /backend/requirements by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8182
* chore(deps): bump actions/setup-python from 6.1.0 to 6.2.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8274
* chore(deps): bump actions/cache from 4.3.0 to 5.0.3 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8273
* chore(deps): bump @isaacs/brace-expansion from 5.0.0 to 5.0.1 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8139
* chore(deps): bump @modelcontextprotocol/sdk from 1.25.3 to 1.26.0 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8166
* chore(deps): bump docker/login-action from 3.6.0 to 3.7.0 by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8275
* chore(deps-dev): bump faker from 37.1.0 to 40.1.2 in /backend by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8126
* refactor(opal): add new `Button` component built on `Interactive.Base` by @raunakab in https://github.com/onyx-dot-app/onyx/pull/8263
* chore(deps-dev): bump pytest-xdist from 3.6.1 to 3.8.0 in /backend by @dependabot[bot] in https://github.com/onyx-dot-app/onyx/pull/8120
* chore(opensearch): Try to create `OpenSearchTenantMigrationRecord` earlier in `check_for_documents_for_opensearch_migration_task` by @acaprau in https://github.com/onyx-dot-app/onyx/pull/8260
* chore(devtools): `ods logs`, `ods pull`, `ods compose --force-recreate` by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8277
* fix(posthog): Chat metrics for Cloud by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8278
* chore(devtools): upgrade ods: 0.5.0->0.5.1 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8279
* feat(ee): Enable license enforcement by default (#8270) to release v2.12 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8292
* fix: model config not populating flow during sync (#8542) to release v2.12 by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8567
* chore(hotfix): cherry-pick 9 commits to release v2.12 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/8598
* chore(hotfix): cherry-pick 6 commits to release v2.12 by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/8600
* fix(bedrock): Fixing toolConfig call (#8342) to release v2.12 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8607
* fix(desktop): Link clicking within App (#8493) to release v2.12 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8608
* chore(gha): rm nightly license scan workflow (#8541) to release v2.12 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8619
* fix(timeline): reduce agent message re-renders with referential stability in usePacedTurnGroups by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8618
* fix(chatpage): Improve agent message layout, sidebar nesting, and icon fixes  by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8616
* fix(ui): fix few common ui bugs (#8425) by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8623
* fix: update SourceTag component to use variant prop for sizing (#8582) to release v2.12 by @Subash-Mohan in https://github.com/onyx-dot-app/onyx/pull/8622
* fix: /llm/provider route returns all providers (#8545) to release v2.12 by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/8634
* feat(web): Initial Framework for Brave Web Search 1/3 (#8594) by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8636
* feat(web): Logical Hardening for Brave Web Search 2/3 #8595 by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8638
* fix: search tool enabled when nothing selected to release v2.12 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/8639
* feat(web): FE Changes for Brave Web Search 3/3 (#8597) by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8641
* chore(hotfix): cherry-pick 2 commits to release v2.12 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8650
* chore(fe): fix drop-down overflow in API Key modal (#8574) to release v2.12 by @jmelahman in https://github.com/onyx-dot-app/onyx/pull/8652
* chore(release): Fixing Release Branch by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/8653


**Full Changelog**: https://github.com/onyx-dot-app/onyx/compare/v2.11.0...v2.12.0