Docs
https://docs.onyx.app/changelog
What's Changed
- fix(salesforce): order child windows by sortable fields only by @nmgarza5 in #15273
- chore(deps): update python base image digests by @onyx-cherry-pick[bot] in #14697
- chore(deps): update node base image digests by @onyx-cherry-pick[bot] in #14696
- build(deps): bump pyjwt from 2.13.0 to 2.14.0 by @dependabot[bot] in #15242
- feat: support OpenSearch vector quantization by @yuhongsun96 in #15212
- chore(deps): bump next from 16.2.9 to 16.3.6 by @dependabot[bot] in #14579
- fix(tests): use short pytest tracebacks so CI logs do not leak secrets by @evan-onyx in #15306
- feat(helm): run the object store next to bundled MinIO and copy its files in a Job by @nmgarza5 in #15124
- feat(deployment): add the SeaweedFS object-store service beside MinIO by @nmgarza5 in #15248
- feat(file-store): write to both stores and fall back to MinIO during the move by @nmgarza5 in #15249
- feat(file-store): copy MinIO's files into the object store and retire it by @nmgarza5 in #15250
- feat(cli): move installs and upgrades to the object store by @nmgarza5 in #15251
- chore(llm): drop Claude Sonnet 4.5 from the provisioning fallback and cache test by @nmgarza5 in #15309
- feat(ci): open an issue, fix PR, and Slack alert per vulnerable package by @nmgarza5 in #15308
- test(slack): unique message text per run in Slack connector tests by @evan-onyx in #15319
- feat(ods): dev stack runs the object store only, with a one-shot MinIO migrate by @nmgarza5 in #15318
- feat(ci): scan the sandbox image for CVE alerts by @nmgarza5 in #15321
- chore(dev): upgrade onyx-devtools to 0.13.9 by @onyx-cherry-pick[bot] in #15323
- feat: credential binding models for connector configs by @evan-onyx in #15204
- feat: credential family framework by @evan-onyx in #15205
- feat: Atlassian credential family for Confluence and Jira by @evan-onyx in #15206
- feat: Google credential family for Gmail and Google Drive by @evan-onyx in #15207
- feat: Microsoft credential family for SharePoint, OneDrive, Outlook, and Teams by @evan-onyx in #15208
- fix(dev): lock the win_arm64 wheel of onyx-devtools-audit 0.13.9 by @nmgarza5 in #15327
- fix(search): don't scope search to a source that is the question's topic by @nmgarza5 in #15317
- test(integration): scripted mock LLM server for integration tests by @wenxi-onyx in #15109
- test(integration): move LLM-dependent tests to the mock LLM server by @wenxi-onyx in #15197
- test(e2e): run Playwright against the mock LLM server by @wenxi-onyx in #15198
- chore(llm): remove the mock_llm_response and MOCK_LLM_RESPONSE test hooks by @wenxi-onyx in #15201
- fix(deps): pin sentence-transformers to 5.6.0 by @onyx-cherry-pick[bot] in #15335
- chore(deps): bump cryptography from 49.0.0 to 50.0.0 in /backend/onyx/server/features/build/sandbox/image by @dependabot[bot] in #13892
- build(deps): bump urllib3 from 2.7.0 to 2.8.0 in /backend/onyx/server/features/build/sandbox/image by @dependabot[bot] in #15303
- chore(deps): bump litellm from 1.93.0 to 1.93.2 in /backend/requirements by @dependabot[bot] in #15322
- chore(deps): bump sharp to 0.35.5 by @justin-tahara in #15359
- chore(deps): bump proxy-addr to 2.0.8 by @justin-tahara in #15360
- chore(deps): bump undici to 7.29.1 by @justin-tahara in #15361
- chore(deps): bump fast-uri to 3.1.7 by @justin-tahara in #15362
- chore(deps): bump js-yaml to 4.3.2 / 3.15.2 by @justin-tahara in #15363
- chore(deps): bump brace-expansion to 5.0.11 / 1.1.20 by @justin-tahara in #15364
- chore(deps): bump browserslist to 4.28.7 by @justin-tahara in #15365
- chore(deps): override uuid to 11.1.1 in mobile by @justin-tahara in #15366
- ci(dependabot): track mobile bun dependencies by @justin-tahara in #15367
- fix(chat): keep file processing indicator until files are ready by @justin-tahara in #15354
- chore(deps): bump postcss from 8.5.15 to 8.5.28 in /backend/onyx/server/features/build/sandbox/image/templates/outputs/web by @dependabot[bot] in #15299
- chore(deps): bump next to 16.3.8 by @justin-tahara in #15358
- refactor(connectors): refresh the credential step and give it one hook by @raunakab in #15320
- chore: remove Vespa and consolidate the document index interface by @yuhongsun96 in #15336
- feat(image-gen): add GPT Image 2.5 models and fix Office output MIME types by @justin-tahara in #15353
- feat(ci): run CVE alerts on the release branch a failed tag came from by @nmgarza5 in #15328
- refactor(connectors): move the source types into the connectors library by @raunakab in #15337
- feat(ci): alert on deploy-blocking findings in a Slack thread by @nmgarza5 in #15345
- fix(deps): lock Craft template postcss to 8.5.28 by @justin-tahara in #15392
- fix(auth): restart sign-in on a stale SSO state instead of showing the error by @nmgarza5 in #15395
- feat: support GKE Workload Identity for Google embeddings by @yuhongsun96 in #15339
- fix(deep-research): pass only research call ids as sub-agent parents by @wenxi-onyx in #15093
- fix(deep-research): stop think step from skipping a research sub-turn by @wenxi-onyx in #15094
- fix(deep-research): treat timed-out research agents as failed calls by @wenxi-onyx in #15096
- fix(deep-research): stream the full think tool reasoning by @wenxi-onyx in #15098
- fix(ci): keep an alert pending after a failed patch, prove a main fix by @nmgarza5 in #15404
- refactor(chat): stop sending the unused top_level_branching packet by @wenxi-onyx in #15099
- fix(chat): return failure responses for unknown tool calls in mixed batches by @wenxi-onyx in #15100
- fix(chat): stop corrupting closing code fences with plaintext labels by @justin-tahara in #15352
- fix(connectors): drop the rows when mock-credential creation fails validation by @nmgarza5 in #15153
- fix(llm): page provider models in the user-facing listing by @nmgarza5 in #15407
- chore(deps): update node base image digests by @onyx-cherry-pick[bot] in #15333
- chore(deps): update python base image digests by @onyx-cherry-pick[bot] in #15334
- feat(connectors): keyboard navigation for the catalog, on two Opal hooks by @raunakab in #15390
- feat(opal): add
@opal/loadersby @raunakab in #15421 - fix(credentials): fix delete and loading, and gather credential code by @raunakab in #15436
- feat(opensearch): cc-pair ids on chunks by @evan-onyx in #15279
- feat(search): query-time cc-pair access filter behind a shadow/enforce flag by @evan-onyx in #15280
- feat(connectors): data access for private cc-pairs in its own table by @evan-onyx in #15292
- feat(connectors): Editor and Operator manage roles on cc-pairs by @evan-onyx in #15293
- feat(connectors): manage-access APIs for cc-pair roles by @evan-onyx in #15294
- docs(opensearch): add quantization benchmark report by @yuhongsun96 in #15449
- fix(llm): bulk-insert provider models on save by @nmgarza5 in #15448
- chore(deps): bump baseline-browser-mapping to 2.11.0 by @justin-tahara in #15462
- chore(deps): bump compression to 1.8.2 by @justin-tahara in #15463
- chore(deps): bump fflate to 0.4.9 by @justin-tahara in #15464
- chore(deps): bump shell-quote to 1.11.0 by @justin-tahara in #15465
- chore(deps): bump authlib to 1.8.0 by @justin-tahara in #15466
- chore(deps): bump pypdf to 6.19.0 by @justin-tahara in #15467
- fix(saml): accept logins when HTTPS runs on a port other than 443 by @Ajitsharmas in #15128
- fix(llm): page models in the admin provider listing by @nmgarza5 in #15461
- chore(deps): bump nanoid to 3.3.18 by @justin-tahara in #15478
- feat(connectors): restricted sync access type by @evan-onyx in #15295
- chore(deps): bump ip-address to 10.7.1 by @justin-tahara in #15480
- chore(deps): bump fast-uri to 3.1.8 by @justin-tahara in #15477
- chore(deps): bump postcss-selector-parser to 7.1.3 by @justin-tahara in #15481
- chore(deps): bump brace-expansion to 5.0.12 / 1.1.21 by @justin-tahara in #15476
- chore(deps): bump qs to 6.16.0 by @justin-tahara in #15482
- chore(deps): bump hono to 4.13.7 by @justin-tahara in #15479
- feat(opal): refresh toasts by @raunakab in #15484
- feat(ci): attach fixed versions to findings and thread repeat alerts by @nmgarza5 in #15435
- feat(ci): audit every shipped image's OS layer before the build by @nmgarza5 in #15444
- feat(ci): run the release lines nightly and name the digest refresh as the fix by @nmgarza5 in #15445
- feat(ods): audit gate command to run before cutting a tag by @nmgarza5 in #15446
- feat(tenants): snapshot a migrated template schema per shard by @nmgarza5 in #15278
- feat(tenants): provision new tenants from the shard snapshot by @nmgarza5 in #15285
- chore(migrations): require deterministic rows in new revisions by @nmgarza5 in #15405
- feat(opal): add anims to
@opal/Tabsby @raunakab in #15492 - feat(credentials): reskin the create-credential form with Opal by @raunakab in #15450
- chore(code-interpreter): bump to 0.4.9 by @nmgarza5 in #15506
- fix(tenants): compare snapshot structure from pg_catalog, not pg_dump by @nmgarza5 in #15511
- fix(ci): backport every affected image family and keep distro releases apart by @nmgarza5 in #15504
- feat(connectors): run the full capability checks after a pairing is created or swapped by @evan-onyx in #15374
- feat(connectors): typed form state and check declarations for capability checks by @evan-onyx in #15394
- feat(connectors): capability-check runs on an unsaved connector form by @evan-onyx in #15398
- feat(connectors): named capability checks at creation, and a run when a credential is created by @evan-onyx in #15406
- feat(opal): add
Collapsibleand migrateSimpleCollapsibleby @raunakab in #15517 - feat(connectors): reskin connector scheduling with Opal by @raunakab in #15509
- feat(connectors): the first index attempt waits for required capability checks by @evan-onyx in #15452
- refactor(connectors): Confluence source-operations gateway by @evan-onyx in #15453
- refactor(connectors): Confluence perm-sync calls go through the gateway by @evan-onyx in #15454
- feat(connectors): named indexing capability checks for Confluence by @evan-onyx in #15455
- feat(connectors): named permission-sync and group-sync checks for Confluence by @evan-onyx in #15456
- feat(web): credential-bound fields come before the credential on the create form by @evan-onyx in #15457
- feat(opal): add Dropdown and rebuild the input dropdowns on it by @raunakab in #15523
- feat(opal):
@opal/Dropdownsecondary views by @raunakab in #15524 - fix(ci): upload the backend image audit under its Dockerfile path by @nmgarza5 in #15520
- feat(zoom): resolve who may read a recording from its share settings by @Subash-Mohan in #14978
- refactor(llm): move error types to llm/exceptions and redact credentials from span errors by @wenxi-onyx in #15498
- fix(chat): scope stop requests to one stream by @wenxi-onyx in #15497
- chore: remove dead code with no live callers by @rohoswagger in #15533
- fix(auth): preserve login session identity across JWT refresh by @rohoswagger in #15536
- chore(billing): remove unused statusToDisplay helper by @rohoswagger in #15539
- fix(terraform): let the license upload through the GCP Cloud Armor policy by @nmgarza5 in #15540
- fix(tools): keep custom-tool file results and empty search selections intact by @wenxi-onyx in #15495
- chore(llm): correct stale LLM call comments in the gateway and helpers by @wenxi-onyx in #15542
- refactor(tools): snapshot persona tool configuration and MCP server credentials by @wenxi-onyx in #15513
- chore(ci): upload the integration worker logs when the tests fail by @evan-onyx in #15519
- chore(llms): update recommended models by @onyx-cherry-pick[bot] in #15172
- chore(skills): make .agents/skills the canonical skills directory by @rohoswagger in #15550
- refactor(chat): move chat helpers to their owning modules by @wenxi-onyx in #15514
- feat(llm-gateway): workspace-level enable/disable switch by @rohoswagger in #15065
- feat(web): migrate dropdowns to
@opal/Dropdownby @raunakab in #15525 - chore: sync models.dev price table by @onyx-cherry-pick[bot] in #15173
- refactor(tools): return ToolDefinition from tool_definition() by @wenxi-onyx in #15512
- fix(llm): prompt caching behind gateways + head cache breakpoint by @rohoswagger in #15552
- fix(terraform): tune the GCP Cloud Armor rule sets with field exclusions by @nmgarza5 in #15553
- feat(auth): add OAuth provider credential lifecycle storage by @rohoswagger in #15537
- fix(deps): override tinypool to 2.1.2 to unblock audit by @rohoswagger in #15573
- fix(deps): pin tinypool to 2.1.2 by @onyx-cherry-pick[bot] in #15578
- feat(llms): regenerate recommended models with an OpenAI agent by @rohoswagger in #15558
- feat(ci): a failed pull-request audit dispatches the CVE alerts on main by @nmgarza5 in #15576
- feat(ci): audit the sandbox image's OS layer in the deploy gate and nightly by @nmgarza5 in #15515
- chore(agents): run pre-commit on changed files when Claude Code or Codex ends a turn by @rohoswagger in #15555
- fix(opal): stop dropdowns from scrolling the page when they open by @raunakab in #15597
- feat(connectors): add a Connector Settings section with Opal access fields by @raunakab in #15518
- feat(web-search): add Firecrawl as a web search provider by @justin-tahara in #15483
- fix(chat): render bold-labeled file links as links, not citations by @justin-tahara in #15599
- feat(ci): a fix opened on main is backported to the four newest release lines by @nmgarza5 in #15591
- fix(llm): deliver reasoning effort to models behind OpenAI-compatible providers by @justin-tahara in #15600
- feat(ci): post auto-update PRs to #ai-pr-reviews and tag the owner by @rohoswagger in #15579
- fix(llm): mark in-loop tool rounds cacheable for prompt caching by @rohoswagger in #15571
- feat(sync): gap-fill first-party chat models litellm lists before models.dev by @rohoswagger in #15596
- feat(ci): a fix landed on Dependabot's PR is backported like any other by @nmgarza5 in #15605
- chore(dev): upgrade onyx-devtools to 0.13.10 by @onyx-cherry-pick[bot] in #15604
- docs(agents): add the Onyx feature map and the feature-map skill by @rohoswagger in #15551
- chore(feature-map): add an integrity check hook and reviewer rules that keep the map true by @rohoswagger in #15554
- fix(zed): pin Debugpy configs to the repo .venv interpreter by @raunakab in #15612
- fix(chat): store context summaries as SUMMARY messages and hide them from history by @wenxi-onyx in #15496
- fix(ci): give Dependabot's picked commits their parents by @nmgarza5 in #15616
- fix(discord): stop requesting the members intent by @wenxi-onyx in #15626
- ci: post maintenance PRs as Internal Tools in #ai-pr-reviews by @rohoswagger in #15620
- fix(ci): stop OpenSearch disk-watermark flakes on test runners by @rohoswagger in #15628
- fix(opensearch): surface readiness ping errors and trust custom CAs by @justin-tahara in #15608
- feat(llm): minify LLM-facing tool JSON payloads by @rohoswagger in #15627
- feat(llm): capability-driven prompt caching for Bedrock Converse by @rohoswagger in #15630
- fix(llm): move citation guidance from the system prompt to the reminder by @rohoswagger in #15592
- fix(security): serve persona avatars as inert images and scope token refresh to its transport by @justin-tahara in #15646
- chore: sync models.dev price table by @onyx-cherry-pick[bot] in #15622
- chore(llm): remove unused CITATION_REMINDER by @rohoswagger in #15647
- fix(ci): give each run's ephemeral test image a unique digest by @rohoswagger in #15648
- fix(gmail): the slim listing reads every page of every user by @evan-onyx in #15649
- feat(llm): record prompt-cache split stats on generation spans by @rohoswagger in #15643
- fix(dev): recover stale Telepresence agents during k8s launch by @wenxi-onyx in #15651
- refactor(connectors): clean up the Connector Content section by @raunakab in #15617
- test(gong): expect only the call kept in the library by @evan-onyx in #15661
- fix(indexing): move the poll cursor past documents that keep failing by @nmgarza5 in #15564
- test: add deterministic mock LLM stream gates by @wenxi-onyx in #15653
- feat(search-settings): turn Contextual Retrieval off without a re-index by @nmgarza5 in #15565
- chore(deps): update python base image digests by @onyx-cherry-pick[bot] in #15531
- fix: share lazy file content across descriptor copies by @wenxi-onyx in #15654
- fix(indexing): keep one failing document from failing its batch by @nmgarza5 in #15563
- fix(files): avoid sharing database sessions during content loading by @wenxi-onyx in #15657
- chore(deps): update golang base image digests by @onyx-cherry-pick[bot] in #14934
- chore(deps): update node base image digests by @onyx-cherry-pick[bot] in #15530
- chore(deps): update ubuntu base image digests by @onyx-cherry-pick[bot] in #14698
- fix: brand-cased connector and logo names; Disabled scroll fix by @raunakab in #15662
- feat(ee): downgrade a self-hosted deployment to Community by @nmgarza5 in #15625
- feat(ee): remove custom user groups on a Community downgrade by @nmgarza5 in #15629
- feat(ee): switch off paid features on a Community downgrade by @nmgarza5 in #15632
- feat(billing): offer a Community downgrade once the license lapses by @nmgarza5 in #15633
- chore: Warn admins when OpenSearch needs more resources by @yuhongsun96 in #15663
- feat(utils): support saved thread context and observable results by @wenxi-onyx in #15655
- fix(chat): serialize incognito history updates with session locks by @wenxi-onyx in #15658
- ci: dedupe base image refresh Slack announcements by @rohoswagger in #15671
- fix(llm): mark endpoint-less OpenRouter routers unbounded, emit no output limit by @rohoswagger in #15660
- feat(outlook): choose mailboxes by Entra group and bound mail history by @nmgarza5 in #15566
- perf(outlook): rebuild the conversations of a delta page in parallel by @nmgarza5 in #15567
- perf(outlook): walk eight mailboxes side by side by @nmgarza5 in #15568
- feat(outlook): index each mail thread once across mailboxes by @nmgarza5 in #15569
- feat(llm): capture image capabilities and client settings by @wenxi-onyx in #15656
- refactor(ee): gate Enterprise features on the license alone by @nmgarza5 in #15640
- chore: drop the two EE env vars from deploys, ods, CI and tests by @nmgarza5 in #15645
- feat: add Voyage 4 embedding models by @evan-onyx in #15680
- refactor(craft): rename sandbox daemon contract module to models by @wenxi-onyx in #15687
- fix(usage): let scoped PATs read their own usage by @Ajitsharmas in #15670
- test(outlook): keep the thread table in memory in the daily live test by @nmgarza5 in #15693
- feat: optional permissions boundary and path for Terraform IAM roles by @evan-onyx in #15695
- chore(index-settings): remove unused provider-level deprecated flag by @devin-ai-integration[bot] in #15690
- feat(oauth): add a generic OAuth provider, with MCP as its first resource by @rohoswagger in #15543
- feat(mcp): clean up expired OAuth credentials by @rohoswagger in #15574
- feat(oauth): accept OAuth provider access tokens on the MCP server and search routes by @rohoswagger in #15606
- feat(oauth): add consent UI and deployment discovery by @rohoswagger in #15638
- feat(connectors): check a credential before a connector is created by @raunakab in #15007
- feat(zoom): grant transcripts by who may watch the recording by @Subash-Mohan in #14979
- refactor(zoom): remove the attendance-based access path by @Subash-Mohan in #15016
- feat(zoom): sync domain groups from the account roster by @Subash-Mohan in #15019
- refactor(opal): one Fold animation for every folding section by @raunakab in #15699
- feat(zoom): sync recording permissions periodically by @Subash-Mohan in #15020
- test(zoom): assert access, syncs and visibility in the daily tests by @Subash-Mohan in #15021
- chore(deps): update python base image digests by @onyx-cherry-pick[bot] in #15714
- feat: pin the EKS cluster admin and KMS key admin in Terraform by @evan-onyx in #15696
- fix(web): hide the vector quantization setting by @Bo-Onyx in #15717
- fix(craft): allow 90 seconds for OpenCode session initialization by @wenxi-onyx in #15715
- feat(craft): support IPv6-only Kubernetes sandbox networking by @wenxi-onyx in #15541
- refactor(craft): organize sandbox proxy modules and models by @wenxi-onyx in #15561
- feat(craft): support IPv6-only Docker sandboxes by @wenxi-onyx in #15677
- fix(craft): enforce sandbox proxy destination policy by @wenxi-onyx in #15678
- fix(craft): refresh PowerPoint and PDF previews after file changes by @wenxi-onyx in #15688
- fix(craft): open output links from assistant messages by @wenxi-onyx in #15689
- feat(billing): lay out the downgrade dialog per the design by @nmgarza5 in #15727
- fix: yield the next SharePoint site node after a drive listing failure by @evan-onyx in #15734
- feat(outlook): decide each thread from its headers, mailbox by mailbox, with no store by @nmgarza5 in #15698
- fix(embedding): stop computing and querying title embeddings by @Bo-Onyx in #15733
- perf(file processing): collect garbage after spreadsheets only by @nmgarza5 in #15702
- perf(file store): build the default file store once per process by @nmgarza5 in #15703
- fix(sharepoint): look up folder permissions without long URL paths by @justin-tahara in #15736
- fix(craft): animate the welcome composer into the conversation by @wenxi-onyx in #15726
- fix(ci): keep the CVE Alerts nightly watching through failed run reads by @nmgarza5 in #15716
- fix(craft): remove kindnet CPU throttling in local clusters by @wenxi-onyx in #15724
- refactor(opensearch): drop title_vector from the index schema by @Bo-Onyx in #15737
- fix(craft): proxy both Next.js HMR websocket endpoints by @wenxi-onyx in #15742
- fix(craft): simplify working card and reload notice by @wenxi-onyx in #15745
- fix(craft): invalidate slide caches after preserved-timestamp edits by @wenxi-onyx in #15743
- ci(mcp): guard native client compatibility and alert regressions by @rohoswagger in #15694
- fix(background): guard the orphan-tag sweep and bound the chat_session index build by @nmgarza5 in #15747
- fix(llm): harden vendored model catalog against upstream data pathologies by @rohoswagger in #15682
- feat(llm): prefer live model catalog from main, vendored table as offline floor by @rohoswagger in #15684
- feat(llm): gate release-notes fetch behind ONYX_AIRGAPPED by @rohoswagger in #15691
- chore(tests): remove unused NativeOAuthServer.saw_authenticated_mcp_request by @rohoswagger in #15749
- perf(teams): walk the active channels side by side in each indexing step by @nmgarza5 in #15705
- perf(teams): read channels side by side in the permission-sync walk by @nmgarza5 in #15706
- perf(teams): drain organizers and channels from a queue instead of fixed batches by @nmgarza5 in #15707
- perf(teams): read a team's threads through the export API by @nmgarza5 in #15708
- perf(teams): find changed meeting chats through one export stream per organizer by @nmgarza5 in #15709
- fix(teams): retry throttled downloads and keep the directory lookup off the lock by @nmgarza5 in #15710
- perf(teams): read a channel's files on its worker by @nmgarza5 in #15712
- feat(craft): navigate PowerPoint previews with slide thumbnails by @wenxi-onyx in #15725
- feat(craft): expose metadata-only output inventories by @wenxi-onyx in #15728
- refactor(craft): unify preview caching and refresh lifecycle by @wenxi-onyx in #15729
- fix(craft): discover outputs and preserve file browser state by @wenxi-onyx in #15730
- fix(craft): preserve state in the five most recently visited output tabs by @wenxi-onyx in #15731
- chore(craft): remove unused file browser hook and translations by @wenxi-onyx in #15755
- fix: bound the Google Drive checkpoint dedup set by @evan-onyx in #14911
- feat: add Google Drive organizer discovery and drive reachability by @evan-onyx in #14913
- feat: add phase cursor model for Google Drive retrieval by @evan-onyx in #14914
- feat: switch Google Drive service account retrieval to phased partitions by @evan-onyx in #15659
- fix(teams): read a drive's SharePoint identity under Graph's key by @nmgarza5 in #15756
- chore(google-drive): remove code orphaned by phased service account retrieval by @devin-ai-integration[bot] in #15758
- refactor(connectors): validate a proposed pairing without side effects by @evan-onyx in #15544
- feat(connectors): field policies for connector config edits by @evan-onyx in #15545
- feat(indexing): a checkpoint is reused only with the config it was built with by @evan-onyx in #15546
- feat(indexing): one-off backfill attempts outside the incremental cursor by @evan-onyx in #15547
- feat(connectors): restart an attempt and request a prune for connector edits by @evan-onyx in #15548
- feat(connectors): fail closed while a connector waits for its first permission sync by @evan-onyx in #15549
- feat(connectors): field policies for every connector config by @evan-onyx in #15556
- feat(connectors): dry-run capability checks for an existing connector by @evan-onyx in #15557
- feat(connectors): compute a connector edit plan by @evan-onyx in #15559
- feat(connectors): plan file connector edits per file by @evan-onyx in #15560
- feat(connectors): plan and apply connector edits by @evan-onyx in #15613
- chore(deps): update python base image digests by @onyx-cherry-pick[bot] in #15761
- feat(embedding): add Bifrost as a native embedding provider by @justin-tahara in #15741
- fix(permissions): read stored rows whose document metadata is null by @nmgarza5 in #15762
- feat(llm): Auto mode in the model picker backed by an admin-chosen router by @rohoswagger in #15697
- fix(opensearch): set confidence_interval explicitly for 7-bit quantization by @Bo-Onyx in #15748
- feat(telemetry): add bounded private fleet instrumentation by @yuhongsun96 in #15434
- refactor(connectors): Jira source-operations gateway by @justin-tahara in #15770
- feat(connectors): named indexing capability checks for Jira by @justin-tahara in #15771
- feat(connectors): named permission-sync and group-sync checks for Jira by @justin-tahara in #15772
- feat(connectors): draft credentials and per-account check endpoints by @raunakab in #15757
- fix(craft): OpenCode cold startup and local development resource budgets by @wenxi-onyx in #15769
- feat(port): copy stored vectors on a quantization-only reindex by @Bo-Onyx in #15774
- fix(connectors): Jira date-error retry runs by @justin-tahara in #15781
- feat(opal): add passive text buttons and secondary dropdown rows by @wenxi-onyx in #15797
- feat(i18n): require translation updates for English copy changes by @wenxi-onyx in #15794
- refactor(download): support binary blobs and reuse Craft downloads by @wenxi-onyx in #15796
- ci(mcp): pull MCP Compatibility images through the ECR pull-through cache by @rohoswagger in #15792
- feat(craft): improve CSV image and presentation previews by @wenxi-onyx in #15799
- feat(craft): add PDF and PowerPoint output thumbnails by @wenxi-onyx in #15793
- chore(deps): update bun base image digests by @onyx-cherry-pick[bot] in #15814
- chore(deps): update node base image digests by @onyx-cherry-pick[bot] in #15815
- fix(teams): blame permissions only when Graph names a missing grant by @nmgarza5 in #15768
- fix(permissions): grant create:user_api_keys to the Basic group and let admins toggle it by @nmgarza5 in #15810
- refactor(connectors): Google Drive source-operations gateway by @evan-onyx in #15802
- feat(connectors): named indexing capability checks for Google Drive by @evan-onyx in #15804
- feat(connectors): named permission-sync and group-sync checks for Google Drive by @evan-onyx in #15805
- fix(llm): classify mode-less catalog entries, prefer explicit cost tiers by @rohoswagger in #15752
- fix: stop the docfetching process when the watchdog raises by @evan-onyx in #15879
- feat(connectors): saved-account cards, draft accounts and realm-bound accounts by @raunakab in #15711
- feat(connectors): animated account-section fold with a new-account summary by @raunakab in #15875
- feat(connectors): clearer failed-to-run state in the checks card by @raunakab in #15881
- fix(connectors): enable Create once required checks pass, without re-running checks by @raunakab in #15883
- chore: sync models.dev price table by @onyx-cherry-pick[bot] in #15886
- chore(deps): update node base image digests by @onyx-cherry-pick[bot] in #15887
- feat(linear): index only the configured teams and projects by @nmgarza5 in #15778
- feat(linear): permission sync by @nmgarza5 in #15783
- feat(linear): connector validation checks on a source-operations gateway by @nmgarza5 in #15786
- fix(craft): retain file previews through refresh failures by @wenxi-onyx in #15798
- feat(web): show the vector quantization setting again by @Bo-Onyx in #15809
- perf(permissions): list only the groups nested in an Entra group for document readers by @nmgarza5 in #15764
- refactor(sharepoint): permission reads return plain data by @nmgarza5 in #15766
- feat(hubspot): permission sync from HubSpot's record viewers by @nmgarza5 in #15788
- refactor(hubspot): route every HubSpot call through a source-operations gateway by @nmgarza5 in #15789
- feat(hubspot): named capability checks for Test Connection by @nmgarza5 in #15790
- fix(perm-sync): scope censoring-only open ACLs to perm-synced connectors by @nmgarza5 in #15776
- fix(llms): recommended-models agent defaults to the balanced tier, never Astra/Fable by @rohoswagger in #15890
- fix(connectors): keep the realm in the credential, not the connector config by @evan-onyx in #15895
- feat(connectors): checks card and account list polish by @raunakab in #15893
- feat: capability checks return findings by @evan-onyx in #15836
- feat: workspace setting to turn off connector check findings by @evan-onyx in #15837
- feat: discovery checks gather findings without gating by @evan-onyx in #15838
- feat: Confluence lists the visible spaces as check findings by @evan-onyx in #15839
- feat: Slack lists the readable channels as check findings by @evan-onyx in #15840
- feat: Outlook and OneDrive count mailboxes and drives as check findings by @evan-onyx in #15841
- fix: address the independent review of check findings by @evan-onyx in #15865
- feat: free-text advisories on capability checks by @evan-onyx in #15867
- feat: OneDrive capability checks report what they could not verify by @evan-onyx in #15870
- chore(llm): remove dead is_embedding_model helpers by @rohoswagger in #15851
- fix(connectors): fail a draft check run at once when task setup breaks by @raunakab in #15898
- fix(craft): prefer workdir for subdirectory shell commands by @wenxi-onyx in #15907
- feat(connectors): break a cc-pair's documents down by hierarchy node by @evan-onyx in #15864
- fix: retry Google Docs API rate limits and fail the document if they last by @evan-onyx in #15903
- feat(web): show a rebuild banner when a reindex copies vectors by @Bo-Onyx in #15894
- chore(llms): update recommended models by @onyx-cherry-pick[bot] in #15899
- ci: run the reindex port integration tests daily and on related PRs by @evan-onyx in #15910
- refactor(connectors): Notion source-operations gateway by @evan-onyx in #15856
- feat(connectors): named indexing capability checks for Notion by @evan-onyx in #15857
- fix(craft): separate composer drafts from stored attachments by @wenxi-onyx in #15795
- fix(craft): isolate history loading and queued turn recovery by @wenxi-onyx in #15800
- fix(chat): retain project context with custom agents by @wenxi-onyx in #15900
- chore(zed): upgrade and downgrade the schema by N revisions by @raunakab in #15914
- fix(craft): avoid dev debug channel hydration delays by @wenxi-onyx in #15913
- fix(craft): publish Docker bundles atomically by @wenxi-onyx in #15912
- feat: Google Drive check findings and advisories by @evan-onyx in #15874
- feat: Jira capability checks report what they could not verify by @evan-onyx in #15873
- feat(telemetry): track executed tool categories per query by @yuhongsun96 in #15909
- refactor(sharepoint): source-operations gateway by @nmgarza5 in #15777
- feat(connectors): named indexing capability checks for SharePoint by @nmgarza5 in #15785
- feat(connectors): named permission-sync checks for SharePoint by @nmgarza5 in #15826
- fix(ci): pin release lines to main's base image digests and post one failure notice per failure by @nmgarza5 in #15889
- fix(zed): make the db up/down [N] tasks work under fish by @raunakab in #15925
- chore(linear): drop the unused permission sync twin builder and members model by @nmgarza5 in #15891
- chore(ci): drop the unreachable multi-commit name in the CVE Alerts cherry-pick by @devin-ai-integration[bot] in #15928
- feat(admin-sidebar): one pointer-following tooltip over locked pages; logical tooltip sides by @raunakab in #15926
- chore(microsoft): remove unused graph_error_code and ENTRA_GROUP_ID_SELECT by @devin-ai-integration[bot] in #15929
- fix(slack): skip channels the bot cannot join instead of failing the run by @nmgarza5 in #15897
- feat: Outlook capability checks report what they could not verify by @evan-onyx in #15920
- refactor(connectors): GitHub source-operations gateway by @evan-onyx in #15859
- feat(connectors): named indexing capability checks for GitHub by @evan-onyx in #15860
- feat(connectors): named permission-sync and group-sync checks for GitHub by @evan-onyx in #15861
- ci: run the OneDrive job tests only on related PRs and fail fast on a throttled attempt by @evan-onyx in #15924
- feat: Slack capability checks report what they could not verify by @evan-onyx in #15919
- test(e2e): create the file connector fixture paused by @evan-onyx in #15938
- feat(credentials): require the bound fields of a pair to use another user's credential by @evan-onyx in #15862
- feat(credentials): honour credential sharing with admins and groups by @evan-onyx in #15863
- feat(connectors): account sharing UI on the add-connector page by @raunakab in #15930
- feat(connectors): show plan-limited settings on every plan, locked by @raunakab in #15939
- fix(connectors): block SYNC_RESTRICTED until the cc_pair_ids backfill completes by @evan-onyx in #15940
- feat(connectors): list locked plan options under an upgrade link by @raunakab in #15942
- feat: Open a connector in the create form in edit mode by @evan-onyx in #15944
- feat: Fill the connector edit form with the connector's current state by @evan-onyx in #15945
- feat: Run the connector edit form's checks as dry runs by @evan-onyx in #15946
- feat: Stage file uploads for a file connector edit by @evan-onyx in #15947
- feat: Edit a connector through a plan preview by @evan-onyx in #15948
- feat: Show a connector's pending backfills on its detail page by @evan-onyx in #15949
- chore: Playwright flow for editing a connector through a plan by @evan-onyx in #15950
- feat(search): show the cc_pair_ids backfill progress on Index Settings by @evan-onyx in #15943
- fix(opal): give tabs per-variant minimum heights by @raunakab in #15952
- feat(connectors): fold all account cards, rename saved accounts by @raunakab in #15953
- fix(connectors): keep the locked-form tooltip level with the pointer by @raunakab in #15956
- feat(craft): tag gateway traces with the originating Craft session by @Bo-Onyx in #15923
- fix(ci): disable telemetry in Onyx Lite test runner by @yuhongsun96 in #15958
- fix(web): underline chat links by @devin-ai-integration[bot] in #15927
- feat(slack): match configured channels by id and show their names by @nmgarza5 in #15962
- feat(craft): persist turn output ownership and viewed revisions by @wenxi-onyx in #15915
- feat(craft): add document preview controls and PDF rendering by @wenxi-onyx in #15916
- feat(craft): redesign the output workspace by @wenxi-onyx in #15917
- feat(craft): show durable turn output cards by @wenxi-onyx in #15921
- fix(llm): price router models by the model the gateway actually served by @rohoswagger in #15911
- feat(deployment): run the MCP server by default in docker compose by @rohoswagger in #15963
- feat(opal): update
InputUploadand remove previous, legacy component by @raunakab in #15965 - feat(telemetry): report deployment type and indexed connector presence by @yuhongsun96 in #15957
- chore(craft): remove unused CraftingLoader and useIsPreProvisioningReady by @devin-ai-integration[bot] in #15968
- feat(opal): single and multi upload inputs; Google Sites and File use them by @raunakab in #15971
- feat(helm): enable the MCP server by default by @rohoswagger in #15969
- fix(tests): clean up Craft test schedules by @wenxi-onyx in #15982
- feat(connectors): set up Microsoft accounts in the connector form by @raunakab in #15966
- feat(craft): show a Business upsell for Craft on Community Edition by @rohoswagger in #15901
- feat(connectors): Opal logos for the catalog, and source metadata in the connectors library by @raunakab in #15993
- feat(connectors): set up Google Drive accounts in the connector form by @raunakab in #15994
- fix(connectors): hide the account fold button with no saved accounts by @raunakab in #16002
- fix(connectors): keep the account section expanded with no saved accounts by @raunakab in #16003
- feat(indexing): global rate limit on indexing embedding requests by @evan-onyx in #15970
- fix(llm): retain cached tokens when flat usage is null by @wenxi-onyx in #15998
- fix(chat): validate preferred response type and session by @wenxi-onyx in #15999
- fix(chat): read attachment metadata before starting workers by @wenxi-onyx in #16000
- fix(slack): bound channel regex matches and message markup parsing by @justin-tahara in #15986
- test(auth): add route gate contract tests and make two read routes read-only by @justin-tahara in #15991
- fix(devtools): stop local tools writing through symlinks and running fork hooks by @justin-tahara in #15992
- fix(craft): show the task status inline with the schedule by @rohoswagger in #15984
- feat(zoom): show the Zoom connector under a new Meetings section by @Subash-Mohan in #15823
- fix(file-processing): apply zip limits to xlsx and Google Sites archives by @justin-tahara in #15987
- fix(llm): parse LLM output in linear time by @justin-tahara in #15989
- fix(permissions): honour source ACLs only on perm-synced connectors by @justin-tahara in #15990
- fix(connectors): validate outbound destinations and isolate browser credentials by @justin-tahara in #14832
- fix(perm-sync): skip inactive cc_pairs and back off failed group syncs by @evan-onyx in #16024
- test(llm): make linear-time parse tests robust on slow runners by @justin-tahara in #16031
- fix(telemetry): report indexed document counts by @yuhongsun96 in #16038
- fix(mcp): enforce route access and protect identity headers by @justin-tahara in #14822
- fix(auth): generate admin-reset passwords that follow the password policy by @Ajitsharmas in #15701
- chore(helm): require chart version and release note updates by @wenxi-onyx in #16035
- feat(craft): configure sandbox runtime and network lockdown by @wenxi-onyx in #16026
- fix(craft): allow private MCP origins through sandbox proxy by @wenxi-onyx in #16025
- feat(web): rebuild the connector detail page on Opal by @nmgarza5 in #15972
- feat: list a connector's runs of every kind on its detail page by @nmgarza5 in #15979
- feat: chart a connector's indexing throughput on its status card by @nmgarza5 in #15983
- feat(web): show an index run's stage details in a popover by @nmgarza5 in #16001
- feat: show a connector's failures and document errors in a side panel by @nmgarza5 in #16004
- feat: open a run's failed documents and stack trace beside its activity card by @nmgarza5 in #16006
- feat(web): break a connector's documents down by hierarchy node by @nmgarza5 in #16007
- feat(web): warn before Create when a non-required connector check failed by @nmgarza5 in #16008
- feat: keep a history of connector check runs and prunes, schedule checks, and release the indexing hold by @nmgarza5 in #16028
- feat(connectors): set up Gmail accounts in the connector form by @raunakab in #15995
- fix(auth): cap bearer token length before hashing by @justin-tahara in #16044
- feat(skills): add an ODS-based dev-stack workflow by @rohoswagger in #16023
- feat(ods): add stack command for per-worktree dev stacks by @rohoswagger in #16036
- feat(connectors): one scoped-token field for Confluence and Jira by @raunakab in #16005
- feat(connectors): skip Connector Content when there is nothing to configure by @raunakab in #15996
- fix(indexing): order index attempt queries by time_created [edit of #14111] by @nmgarza5 in #16048
- feat(i18n): translate every hard-coded placeholder by @raunakab in #16055
- chore(dev): upgrade onyx-devtools to 0.13.11 by @onyx-cherry-pick[bot] in #16058
- chore: add skip-coderabbit label support by @devin-ai-integration[bot] in #16059
- chore(web): remove unused PermissionSyncStatusBadge by @devin-ai-integration[bot] in #16061
- fix(llm): honor reasoning off on Claude Opus 5.5 and Sonnet 5.5 on Bedrock [edit of #15018] by @nmgarza5 in #16063
- chore(deps): update node base image digests by @onyx-cherry-pick[bot] in #16066
- feat: chart every connector's indexing throughput on the status page by @nmgarza5 in #16009
- feat: list every connector with its latest run on the status page by @nmgarza5 in #16010
- feat(web): fold a connector's run history open on the status page by @nmgarza5 in #16011
- feat: show every connector's failures and errors on the status page by @nmgarza5 in #16012
- feat(web): open the full activity history beside the status page by @nmgarza5 in #16013
- fix(web): drop the failed-documents banner from the connector page by @devin-ai-integration[bot] in #16076
- fix(tracing): trace the /search endpoint by @Danelegend in #16057
- feat(cve-alerts): one Slack post per run, thread repeats by CVE id, track CVEs per image by @devin-ai-integration[bot] in #16077
- chore(ods): drop the unused audit.SyncAlerts wrapper by @devin-ai-integration[bot] in #16089
- fix: list a model switch's index runs in the connector run feed by @devin-ai-integration[bot] in #16082
- fix(web): stop the settings header shadow from fading by @devin-ai-integration[bot] in #16091
- feat(indexing): add SKIP_SPREADSHEET_CONTENT to index spreadsheets by title only by @Weves in #16075
- refactor(opal): move custom-header collapsibles onto Opal's Collapsible by @raunakab in #16090
- fix(web): reap Chromium zombies mid-run and stop retrying download links by @fejesd in #15880
- fix(craft): name sessions after the first message is saved by @wenxi-onyx in #16095
- fix(mcp): encode MCP tool results once instead of twice by @Ajitsharmas in #16027
- feat(chat): add response item storage by @wenxi-onyx in #16020
- feat(chat): add response checkpoints by @wenxi-onyx in #16040
- fix(connectors): paginate the file connector's file lists by @Danelegend in #16096
- refactor(oauth): consolidate authorization flow primitives by @wenxi-onyx in #14157
- fix(external-apps): harden OAuth authorization attempts by @wenxi-onyx in #14147
- feat(mcp): guide users through tool connection and reauthentication by @wenxi-onyx in #16092
- feat(llm): support agent execution and cooperative cancellation by @wenxi-onyx in #16021
- feat(chat): add execution metadata and child-session links by @wenxi-onyx in #16041
- fix(indexing): ack docprocessing tasks on receipt by @evan-onyx in #16097
- fix(web): pin the settings header shadow to its divider by @devin-ai-integration[bot] in #16122
- fix(opal): let the
@opal/Collapsiblesection fill a flex parent again by @raunakab in #16123 - refactor(oauth-config): use shared authorization attempts by @wenxi-onyx in #14158
- fix(llm): one-line provider cards, translated custom provider names by @raunakab in #16120
- fix(indexing): resume past attempts that never set a poll window by @evan-onyx in #16124
- fix(opal): keep a dropdown trigger's focused border while it is open by @raunakab in #16127
- feat(craft): add Zendesk as a built-in external app by @Danelegend in #15960
- fix(tests): stop tests leaving Postgres session settings on pooled connections by @evan-onyx in #16129
- feat(settings): workspace default UI language with per-user override by @nmgarza5 in #15673
- refactor(img-gen): remove reusing an LLM provider's API key by @raunakab in #16131
- feat(llm): add an independent search selection model default by @rohoswagger in #16078
- feat(search): route evidence selection to its designated model by @rohoswagger in #16079
- feat(admin): group naming and search model selection in Chat Preferences by @rohoswagger in #16080
- feat(indexing): chunk spreadsheets strategy w/ less chunks by @Danelegend in #16115
- feat(scripts): add a CSV/Excel retrieval benchmark by @Danelegend in #16139
- feat(opal): input slots, reveal toggle and dropdown polish by @raunakab in https://github.com/onyx-dot-app/onyx/pull/16142
- fix(permissions): hold permission sync attempts with a Postgres lease by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/15973
- feat(permissions): report permission sync progress while it runs by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/15974
- refactor(permissions): the open doc permission sync attempt is the sync lock by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/15975
- refactor(permissions): the open group sync attempt is the sync lock by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/15976
- chore(permissions): remove the Redis state for permission and group syncs by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/15977
- refactor(backend): inline redundant forwarding helpers by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16155
- chore(ods): install skills from onyx-infra agent-context by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16130
- feat(youtrack): index YouTrack Cloud and Server issues by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16135
- feat(youtrack): permission sync by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16136
- feat(youtrack): connector validation checks by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16138
- fix(craft): keep app policy controls aligned beside long descriptions by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16177
- fix(opal): switches keep keyboard focus and get a clearer focus state by @raunakab in https://github.com/onyx-dot-app/onyx/pull/16175
- fix(web): show optional tracing fields with the optional suffix by @raunakab in https://github.com/onyx-dot-app/onyx/pull/16182
- refactor(opal): support consistent plugin dialogs with shared primitives by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16187
- feat(plugins): separate workspace availability from personal defaults by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16188
- refactor(plugins): share typed clients and member preference state by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16189
- feat(plugins): unify workspace administration and setup dialogs by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16190
- feat(plugins): integrate personal defaults with Chat and Craft by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16191
- fix(helm): exempt release-branch merge queue runs from the chart release check by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16220
- feat(web): connector page cards per the indexing mock by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16121
- feat(indexing): supersede, resolve, and batch-resolve failed runs by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16128
- feat(web): Opal foundations, status icons, copy and formats for the indexing mock by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16165
- feat(web): Manage Index menu, activity cards, and runs card per the indexing mock by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16172
- feat(web): embedded run list, status page shell, and connector page sections per mock by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16171
- fix(web): show the code interpreter status with
@opal/Contentby @raunakab in https://github.com/onyx-dot-app/onyx/pull/16223 - fix(web): disable the sidebar Craft tab below the Business tier by @raunakab in https://github.com/onyx-dot-app/onyx/pull/16224
- feat(mcp): per-server switch to register OAuth clients through DCR by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16227
- chore(search): remove unused primary-flow prompt budget flags by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16140
- chore(deps): update node base image digests by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16230
- chore(llms): update recommended models by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16226
- chore(deps): update python base image digests by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/15816
- chore(i18n): remove plugin message keys that no code reads by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16219
- chore: sync models.dev price table by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16229
- chore(deps): update ubuntu base image digests by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16231
- test(opensearch): allow rounding in semantic search scores by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16213
- refactor(craft): align action policy names by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16184
- fix(connectors): drop the web connector local file upload mode by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/16046
- chore(ci): remove the Linear PR check by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16244
- fix(web): indexing surfaces truncate long names, the failed-document action is Retry, the history panel matches the column by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16228
- feat(craft): enforce personal and task action policies by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16179
- fix(craft): preserve approval outcomes and report expired requests by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16180
- feat(craft): integrate personal and workspace plugin permissions by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16185
- fix(craft): clear deleted scheduled tasks from history and cache by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16249
- feat(telemetry): report LLM cycles per chat query by @yuhongsun96 in https://github.com/onyx-dot-app/onyx/pull/16248
- feat(web): lint design-system rules and migrate files to Opal on edit by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16234
- refactor(ods): unify launchers and protect shared infrastructure by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16246
- chore(ods): remove unused IsPortExposed and NewConfigFromEnv helpers by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16263
- fix(api): cache the /versions DockerHub lookup by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/16045
- fix(auth): revoke a user's sessions when their password is reset by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/16049
- fix(tools): apply the outbound SSRF policy to custom tool requests by @justin-tahara in https://github.com/onyx-dot-app/onyx/pull/16047
- fix(indexing): do not commit a chunk count the index did not take by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/16261
- chore(agents): check for latest main at agent session start by @claude[bot] in https://github.com/onyx-dot-app/onyx/pull/16043
- fix: SharePoint probes look past empty sites for a sample file by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16279
- fix(opal): redraw icons on a 16x16 viewBox, add file-type icons by @raunakab in https://github.com/onyx-dot-app/onyx/pull/16278
- fix(web): the status page's overview and Activities cards share one height by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16283
- feat(indexing): support callers that re-process already-indexed content by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/16178
- feat(ods): list dev stacks machine-wide, stop orphans by project, and release unused port leases by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16285
- refactor(web): replace lucide-react and react-icons with @opal/icons by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16240
- refactor(web): replace raw button and input elements with Opal by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16241
- refactor(web): migrate replaced refresh-components to Opal by @rohoswagger in https://github.com/onyx-dot-app/onyx/pull/16242
- feat(indexing): re-chunk tabular documents indexed by the old chunker by @Danelegend in https://github.com/onyx-dot-app/onyx/pull/16153
- fix(opal): keep dropdowns within available viewport space by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16269
- fix(skills): allow invalid skill deletion and reuse previews by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16270
- feat: incomplete check status and error kinds by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16156
- feat: checks keep error details and stack traces by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16160
- feat: checks run after the checks they depend on by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16157
- feat: check results carry a short line and a description by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16167
- feat: Confluence checks follow the design's rows and copy by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16169
- feat: Confluence check outcomes follow the design's states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16183
- feat: Jira checks follow the design's rows, copy and states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16193
- feat: Google Drive checks follow the design's rows, copy and states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16194
- feat: GitHub checks follow the design's rows, copy and states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16196
- feat(connectors): Slack checks follow the design's rows, copy and states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16197
- feat(connectors): Linear checks follow the design's rows, copy and states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16198
- feat(connectors): Notion checks follow the design's rows, copy and states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16199
- feat(opal): stored-secret password tag, tab keyboard nav, tertiary actions by @raunakab in https://github.com/onyx-dot-app/onyx/pull/16275
- chore(ods): remove unused Registry.Lease wrapper by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16289
- chore(web): remove unused refresh-components SelectButton by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16301
- feat(connectors): HubSpot checks follow the design's rows, copy and states by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16200
- fix(connectors): redact auth headers and cookies from check error details by @raunakab in https://github.com/onyx-dot-app/onyx/pull/16268
- fix: review follow-ups for the connector checks stack by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16287
- feat(plugins): unify admin plugin configuration forms by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16271
- feat(plugins): unify member connection and settings modals by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16272
- feat(plugins): align directory ordering and availability indicators by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16273
- fix(plugins): manage default Chat selection in plugin settings by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16281
- fix(celery): resolve the broker client through Sentinel when Sentinel is on (#16313) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16315
- fix(deps): pin certifi to 2026.10.19 everywhere to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16341
- fix(deps): bump pillow to 13.0.0 for GHSA-8g5g-8vmr-9782 (#16342) to release v5.0 by @claude[bot] in https://github.com/onyx-dot-app/onyx/pull/16350
- fix(web): call OpenAPI plugins plugins, not actions, in the Plugins flow (#16366) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16378
- fix(web): show the OpenAPI schema validation error once (#16367) to release v5.0 by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16382
- fix(chat): show blocked and redirected custom tool calls as failed (#16368) to release v5.0 by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16383
- fix(web): list every connector source in Chat Preferences and explain the section (#16369) to release v5.0 by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16384
- fix(web): align plugin rows and the Plugins entry in the tools menu (#16370) to release v5.0 by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16385
- fix(web): close tool menus before opening the tool credentials dialog (#16371) to release v5.0 by @devin-ai-integration[bot] in https://github.com/onyx-dot-app/onyx/pull/16386
- fix(connectors): route Google OAuth callbacks by connector path (#16379) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16390
- fix(craft): restore progress and pending connections after refresh (#16380) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16407
- fix(deps): pin storybook to 10.6.2 everywhere to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16396
- fix(deployment): warn when a hand-run Compose upgrade leaves files in MinIO (#16375) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16411
- fix(craft): preserve session drafts and support new-tab navigation (#16410) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16421
- fix(indexing): exact run durations, 24h/7d/all-time windows, pinned status page history (#16381) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16415
- fix(plugins): simplify connection status before sign-in (#16412) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16422
- feat(craft): simplify scheduled task details and plugin controls (#16408) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16423
- fix(indexing): show queued runs as queued and a failed latest run as failed (#16416) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16425
- docs(deployment): downgrade the schema before rolling back from v5 (#16424) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16426
- fix: serialize default assistant tool updates (v5.0 backport) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16450
- fix(plugins): improve MCP setup and configuration (v5.0 backport) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16451
- feat(mcp): add temporary OAuth setup state (v5.0 backport) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16452
- fix(mcp): validate connection changes before publishing (v5.0 backport) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16453
- fix(plugins): retain MCP drafts until connection succeeds (v5.0 backport) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16454
- fix(plugins): open Tools after MCP setup completes (v5.0 backport) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16455
- fix(plugins): restore MCP token entry (v5.0 backport) by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16462
- fix(license): refuse a Community downgrade unless the license gates access (#16439) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16442
- fix(helm): wait for the object store at startup and keep the MinIO PVC on retire (#16431) to release v5.0 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16468
- fix(web): lock the SCIM and service-account pages without a license (#16470) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16474
- chore(hotfix): cherry-pick 3 commits to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16475
- fix(deps): pin dompurify to 3.4.17 everywhere to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16517
- fix(deps): pin next to 16.4.1 everywhere to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16519
- fix(deps): pin @sentry/nextjs to 10.75.2 to release v5.0 by @claude[bot] in https://github.com/onyx-dot-app/onyx/pull/16528
- chore(deps): update node base image digests (#16505) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16521
- chore(hotfix): cherry-pick 2 commits to release v5.0 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16533
- fix(deps): override nested dompurify to 3.4.17 (#16524) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16540
- fix(ci): stop the CVE Alerts loop and give triage its search tools (#16537) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16544
- fix(chat): show the session-ended modal when a chat send is rejected (#16448) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16545
- fix(embedding): show configured bring-your-own embedding models (#16446) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16549
- fix(i18n): German uses Sie and one term per concept (#16457) to release v5.0 by @nmgarza5 in https://github.com/onyx-dot-app/onyx/pull/16550
- fix(helm): name the legacy MinIO copy Job and MIGRATION.md in NOTES (#16562) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16566
- fix(tools): clarify custom tool private-network policy and hide raw timeout errors (#16447) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16570
- fix(auth): revoke personal access tokens when a password is reset (#16449) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16575
- fix(slack): make connection checks configurable actions (#16576) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16582
- feat(perm-sync): resume Google Drive permission sync from a checkpoint (#16539) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16583
- fix(connectors): sample several Jira projects before skipping permission checks (#16445) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16587
- feat(search-settings): turn Contextual Retrieval on without a re-index (#16579) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16595
- fix(indexing): list a run's failed drives and channels, not only its failed documents (#16563) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16588
- fix(deletion): queue connector deletion cleanup in bounded batches (#16560) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16612
- chore(hotfix): cherry-pick 3 commits to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16613
- fix(outlook): keep each mailbox listing on disk instead of capping it (#16578) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16614
- fix(deps): pin brotli to 1.2.1 everywhere to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16624
- fix(llm): stream invocations only for actual environment injection (#16604) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16616
- fix(google-drive): retry dropped connections on access probes (#16628) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16631
- chore(hotfix): cherry-pick 2 commits to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16645
- fix(image-gen): default to gpt-image-2.5-flare now that gpt-image-1 is shut down (#16641) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16651
- fix(image-gen): warn on retired GPT Image 1 and make the image gen seed migration a no-op (#16644) to release v5.0 by @onyx-cherry-pick[bot] in https://github.com/onyx-dot-app/onyx/pull/16655
- fix(indexing): serialize pause with index attempt creation (#16391) to release v5.0 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16656
- fix(pruning): cancel an abandoned prune's sync record and keep a pause's stop signal (#16477) to release v5.0 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16657
- fix(onedrive): skip drive-less users within one checkpoint step (#16478) to release v5.0 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16658
- fix(indexing): count only document and hierarchy batches as fetch events (#16479) to release v5.0 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16659
- fix(connectors): let a shared credential of an unbound source be used without a pair (#16480) to release v5.0 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16660
- fix(web): hide the account and checks for connectors with no credential (#16482) to release v5.0 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16661
- fix(web): label backfill index attempts as backfills (#16483) to release v5.0 by @evan-onyx in https://github.com/onyx-dot-app/onyx/pull/16662
- perf(api): remove per-chunk middleware relays (#16652) to release v5.0 by @wenxi-onyx in https://github.com/onyx-dot-app/onyx/pull/16681
New Contributors
- @Ajitsharmas made their first contribution in #15128
Full Changelog: v4.9.4...v5.0.0