What's Changed
- feat(slack-bot): make agent selector searchable by @nmgarza5 in #10036
- feat(helm): add API and heavy worker ServiceMonitors by @nmgarza5 in #10025
- chore(devtools): introduce a
.devcontainerby @jmelahman in #10035 - chore(devtools): upgrade
ods: 0.7.3->0.7.4 by @jmelahman in #10039 - chore(devtools): devcontainer allows go and rust repos by @jmelahman in #10041
- fix: jira bulk issue fetch batching by @evan-onyx in #10044
- feat(federated): full thread replies + direct URL fetch in Slack search by @nmgarza5 in #9940
- feat(helm): add OpenSearch and Redis queues Grafana dashboards by @nmgarza5 in #10042
- fix(fe): Query History table has constrained column size by @jmelahman in #10047
- fix(chat): hide ModelSelector in search mode by @nmgarza5 in #10052
- chore(devtools): improve devcontainer usability w/ rootless docker by @jmelahman in #10054
- fix(LLM config): resolve API Key before fetching models by @jmelahman in #10056
- feat: google drive error resolution by @evan-onyx in #9842
- feat: add logos for embedding providers (Cohere, Nomic, Voyage) to
@opal/logosby @raunakab in #10034 - chore(devtools): upgrade
ods: 0.7.4->0.7.5 by @jmelahman in #10060 - fix(license): exclude service account users from seat count by @nmgarza5 in #10053
- feat: opalified
Dividerby @raunakab in #10063 - fix(scim): add advisory lock to prevent seat limit race condition by @nmgarza5 in #10048
- chore(deps): bump lodash from 4.17.23 to 4.18.1 in /web by @dependabot[bot] in #9901
- fix(mcp): prevent masked OAuth credentials from being stored on re-auth by @jmelahman in #10066
- fix(mcp): route OAuth callback to web server instead of MCP server by @jmelahman in #10071
- fix: italicize proper nouns in modal titles by @raunakab in #10073
- fix(mcp): add Ingress route for OAuth callback to reach web server by @jmelahman in #10074
- fix(chat): model selection + multi-model follow-up correctness by @nmgarza5 in #10075
- feat: add padding API to
Dividerby @raunakab in #10077 - chore(devtools): rm docker socket from devcontainer by @jmelahman in #10079
- feat(chat): smooth character-level streaming by @nmgarza5 in #10076
- Revert "feat(chat): smooth character-level streaming" by @nmgarza5 in #10083
- fix(copy-button): fall back when Clipboard API unavailable by @jmelahman in #10080
- chore: remove Knowledge Graph admin page by @raunakab in #10110
- refactor: migrate
refresh-components/Separatorandrefresh-components/Dividerto@opal/components.Dividerby @raunakab in #10064 - feat(chat): smooth character-level streaming by @nmgarza5 in #10093
- chore(indexing): Add tests for current document chunking by @Danelegend in #10086
- chore: remove top-level Formik from ChatPreferencesPage by @raunakab in #10112
- chore(indexing): Add kind enum to Section model by @Danelegend in #10092
- chore(deps): bump j178/prek-action from 1.1.1 to 2.0.1 by @dependabot[bot] in #10120
- feat(chat): scrollable tables with overflow fade by @nmgarza5 in #10097
- fix(chat): isolate multi-model streaming errors to their panels by @nmgarza5 in #10113
- chore(deps): bump actions/download-artifact from 8.0.0 to 8.0.1 by @dependabot[bot] in #10122
- fix: welcome message alignment in chrome extension/desktop by @nmgarza5 in #10094
- Add Datadog admission opt-out label to sandbox pods by @alex000kim in #10040
- chore(deletion): Cleanup log by @justin-tahara in #10133
- fix(deletion): Handle Null Connector Properly by @justin-tahara in #10131
- feat(admin): add global multi-model chat toggle by @nmgarza5 in #10132
- fix: CLAUDE.md incorrect task info by @evan-onyx in #10116
- refactor(indexing): Split document chunking into section-based strategies by @Danelegend in #10087
- chore(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 by @dependabot[bot] in #10121
- fix(chat): disable Deep Research in multi-model mode (ENG-4009) by @nmgarza5 in #10126
- chore(deps): bump next from 16.1.7 to 16.2.3 in /examples/widget by @dependabot[bot] in #10125
- refactor: rename
nonInteractivetowithLabelin input layouts by @raunakab in #10117 - chore(deps): bump pillow from 12.1.1 to 12.2.0 by @dependabot[bot] in #10129
- fix(widget): surface descriptive error for trial account 429 by @nmgarza5 in #10141
- chore(admin): rework chat preferences page layout by @nmgarza5 in #10143
- chore(ci): disable automatic Greptile reviews on push by @nmgarza5 in #10146
- feat(indexing): add error_type to index_attempt_errors by @nmgarza5 in #10134
- chore(deps-dev): bump pypdf from 6.9.2 to 6.10.0 by @dependabot[bot] in #10070
- chore(deps): bump lodash from 4.17.23 to 4.18.1 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #9937
- chore(deps): bump pytest from 8.3.5 to 9.0.3 in /backend/requirements by @dependabot[bot] in #10124
- chore(deps-dev): bump black from 25.1.0 to 26.3.1 by @dependabot[bot] in #9313
- chore(deps): bump @hono/node-server from 1.19.10 to 1.19.13 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #9985
- chore(deps): bump next from 16.1.7 to 16.2.3 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #10062
- chore(deps): bump lodash-es from 4.17.23 to 4.18.1 in /web by @dependabot[bot] in #9858
- feat(metrics): Wire Promtheus Metrics for Light Worker by @justin-tahara in #10148
- fix: confluence 504 retry with smaller page size by @evan-onyx in #10147
- chore(deps): bump cryptography from 46.0.6 to 46.0.7 by @dependabot[bot] in #10012
- fix(pruning): Adjust Prometheus histogram buckets for pruning metrics by @Bo-Onyx in #10155
- fix(pruning): Commit hierarchy node upserts atomically in pruning by @Bo-Onyx in #10156
- fix(pruning): Release DB connection before connector enumeration in pruning by @Bo-Onyx in #10154
- fix: properly refresh settings/ee settings on license upload success by @wenxi-onyx in #10158
- chore(deps): bump hono from 4.12.7 to 4.12.12 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #9986
- feat(metrics): Add Deletion-specific Prometheus Metrics by @justin-tahara in #10157
- fix: show correct knowledge toggle status on agent edit page by @wenxi-onyx in #10151
- chore(pruning): Add Celery task queue wait time metric by @Bo-Onyx in #10161
- fix: llm popover should refresh on admin provider edit by @wenxi-onyx in #10152
- fix(google): handle JSON credential payloads in KV storage (@jack-larch) by @wenxi-onyx in #10160
- refactor: opalify input layouts with trinary withLabel prop by @raunakab in #10144
- fix(files): Lower log level on file store cache miss by @Danelegend in #10164
- fix: document set name patch by @evan-onyx in #10162
- chore(deps-dev): bump langchain-core from 1.2.22 to 1.2.28 by @dependabot[bot] in #10010
- fix: use static provider list instead of querying be by @wenxi-onyx in #10166
- chore(deps): bump alembic from 1.10.4 to 1.18.4 in /backend by @dependabot[bot] in #9768
- feat(notifications): announce upcoming group-based permissions migration by @Subash-Mohan in #10178
- refactor: replace Radix
Slotwithdivwrapper in@opal/core.Disabledby @raunakab in #10119 - fix(llm): Fix the Auto Fetch workflow by @justin-tahara in #10181
- fix: auth logout modal on fresh load by @wenxi-onyx in #10007
- fix(chat): speed up text gen by @nmgarza5 in #10186
- chore(fe): Toast logs to the console by default in dev by @jmelahman in #10183
- fix(chat): eliminate long-lived DB session in multi-model worker threads by @nmgarza5 in #10159
- fix: text shimmer animation nice and fast by @wenxi-onyx in #10184
- chore(opensearch): Add debug log for when the migration task releases its lock by @acaprau in #10190
- fix: uploaded files as knowledge source by @evan-onyx in #10167
- chore(deps): upgrade python patch version in docker by @jmelahman in #10192
- chore(deps): upgrade playwright: 1.55.0->1.58.0 by @jmelahman in #10194
- fix(pruning): Skip Permission Sync During Google Drive Pruning by @Bo-Onyx in #10185
- feat(indexing): Add TabularSection by @Danelegend in #10095
- chore(deps): bump next from 16.1.7 to 16.2.3 in /web by @dependabot[bot] in #10195
- fix(chat): render inline citation chips in multi-model panels by @nmgarza5 in #10196
- feat(indexing): capture swallowed per-doc exceptions in Sentry by @nmgarza5 in #10149
- chore(devtools): install java runtime into devcontainer by @jmelahman in #10197
- feat: add ref forwarding to input layout components by @raunakab in #10206
- fix(fe): handle file attachment overflow by @jmelahman in #10211
- feat(indexing): add diagnostic logging to check_for_indexing beat task by @nmgarza5 in #10200
- feat: opalify Tooltip component, migrate all consumers by @raunakab in #10210
- fix(chat): fix fade gradient missing on last multi-model panel by @nmgarza5 in #10199
- fix(chat): disable hover/pointer states on multi-model panels during streaming by @nmgarza5 in #10202
- fix(chat): keep model selector popover open until max models reached by @nmgarza5 in #10203
- feat(indexing): add admin API for failed documents by @nmgarza5 in #10204
- feat(indexing): notify admins when connector enters repeated error state by @nmgarza5 in #10207
- fix(ollama): always include model tag in display name by @jmelahman in #10218
- fix(voice): send TTS text in POST body instead of query params by @nmgarza5 in #10213
- feat(monitoring): add local Prometheus + Grafana docker-compose stack by @nmgarza5 in #9627
- chore(deps): bump transformers from 4.53.0 to 5.5.4 by @dependabot[bot] in #9987
- chore(tests): avoid openapi client import in tests by @jmelahman in #10220
- feat(pruning): pruning grafana dashboard for single tenant by @Bo-Onyx in #10208
- feat(metrics): replace pull-based connector metrics with push-based for multi-tenant by @nmgarza5 in #10189
- chore(devtools): connect databases and github remote to devcontainer by @jmelahman in #10222
- feat(indexing): CSV Chunker - Field-Value Implementation by @Danelegend in #10099
- feat(canvas): checkpoint logic (3/4) by @benwu408 in #9807
- fix(chat): only header click selects preferred in multi-model panels by @nmgarza5 in #10198
- fix(chat): snap typewriter to full content on tab re-focus by @nmgarza5 in #10226
- fix(chat): hide incomplete citation links during streaming by @nmgarza5 in #10224
- feat: opalify
MessageCardby @raunakab in #10223 - fix(xlsx): Openpyxl Formatting Issues by @justin-tahara in #10230
- feat(connectors): Connectors output TabularSections for tabular files by @Danelegend in #10096
- fix(pruning): GitHub connector pruning timeout via SlimConnector by @Bo-Onyx in #10205
- fix(pruning): Resolve hierarchy node FK error for Confluence and Notion by @Bo-Onyx in #10235
- feat(mt): Infra setup for Redis Set (1/3) by @justin-tahara in #10209
- fix(deletion): Commit Session in per-doc cleanup by @justin-tahara in #10193
- fix(model-server): add missing onyx/configs to Dockerfile for sentry support by @nmgarza5 in #10236
- feat(metrics): add connector_name label to push-based connector metrics by @nmgarza5 in #10237
- fix: invert already_existed logic in ingestion API response by @jaffarkeikei in #9999
- chore(helm): update Grafana dashboard for new push-based metric names by @nmgarza5 in #10238
- chore(tests): remove defunct
test_litellm_embeddingby @jmelahman in #10244 - chore(deps): bump langsmith from 0.3.45 to 0.7.31 in /backend/requirements by @dependabot[bot] in #10250
- chore(deps): bump hono from 4.12.12 to 4.12.14 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #10252
- chore(python): replace
mypywithtyby @jmelahman in #10256 - chore(deps): bump dompurify from 3.3.2 to 3.4.0 in /widget by @dependabot[bot] in #10253
- feat(celery): Monitoring for Primary Worker by @justin-tahara in #10257
- fix(helm): increase proxy timeouts to prevent HTTP/2 stream resets by @nmgarza5 in #10247
- chore(pre-commit): add
tyhook by @jmelahman in #10263 - chore(search): Search API load test script by @acaprau in #10248
- fix(metrics): move in_progress emission from subprocess to watchdog thread by @nmgarza5 in #10249
- fix(openpyxl): Adding support for xlsm by @justin-tahara in #10261
- chore(python): fix
tywarnings by @jmelahman in #10265 - chore(opensearch): Add option to conditionally disable migration task by @acaprau in #10260
- feat(indexing): Sheet descriptor chunk for tabular indexing by @Danelegend in #10245
- feat(mt): Writer Hooks for tenant work gating (2/3) by @justin-tahara in #10246
- chore(devcontainer): pre-seed
known_hosts, installbuild-essentialsby @jmelahman in #10266 - chore(playwright): always hide the text under the onyx-logo by @jmelahman in #10267
- fix(mt): Tighten tenant work-gating writer hooks (2.5/3) by @justin-tahara in #10268
- chore(ci): bump docker/setup-buildx-action to v4 and docker/build-push-action to v7 by @nmgarza5 in #10270
- feat(img): Editing User Uploaded Images by @Danelegend in #10264
- feat(opal): add SvgVector icon by @raunakab in #10274
- feat(indexing): Total descriptor chunk emitted during Tabular Indexing by @Danelegend in #10259
- feat(anthropic): include Opus 4.7 in recommended models by @jmelahman in #10273
- feat(connectors): convert Gong connector from poll to checkpointed by @nmgarza5 in #10258
- fix(logos): github logo displays correctly in dark mode by @jmelahman in #10269
- fix(pruning): Add pruning dashboard panels and reorder layout by @Bo-Onyx in #10279
- chore(deps): bump pypdf from 6.10.0 to 6.10.2 in /backend/requirements by @dependabot[bot] in #10287
- chore(deps): bump mako from 1.2.4 to 1.3.11 in /backend/requirements by @dependabot[bot] in #10286
- feat(opal): add LinkButton component by @raunakab in #10275
- fix: gmail datetime parsing on unexpected values by @wenxi-onyx in #10290
- fix(llm-selector): show each provider instance as its own group by @jmelahman in #10292
- chore(deps): bump authlib from 1.6.9 to 1.6.11 by @dependabot[bot] in #10293
- fix(image): Cap Uploaded File Image Count by @justin-tahara in #10298
- feat(opal): opalify
ExpandableCardby @raunakab in #10276 - refactor: migrate
EmptyMessageto@opal/components.EmptyMessageCardby @raunakab in #10302 - fix(pruning): Google Drive Connector - Skip redundant folder metadata calls for orphaned folders by @Bo-Onyx in #10304
- fix(fe): LineItem can disable icon stroke by @jmelahman in #10289
- refactor: migrate
ActionsLayoutsto@opal/layouts'sCardLayout.Headerby @raunakab in #10301 - fix(web): Sentry Token Check by @justin-tahara in #10310
- fix: chat preferences page spacing and layout cleanup by @raunakab in #10317
- refactor: Update toast notifications look and feel by @raunakab in #10320
- fix: zuplip temp dir init by @wenxi-onyx in #10324
- fix(deps): install transitive vertexai dependency by @jmelahman in #10328
- refactor: Rename
/admin/configuration/llmto/admin/configuration/language-modelsby @raunakab in #10327 - feat: add document sets to mcp server options by @wenxi-onyx in #10322
- fix: s3 test assertion by @wenxi-onyx in #10329
- feat(opensearch): Add option to disable Vespa and run Onyx with only OpenSearch by @acaprau in #10330
- fix(xlsx): Additional fixes for mime types by @justin-tahara in #10331
- fix(metrics): Adding in hostname by @justin-tahara in #10335
- fix(pruning): Fix SharePoint sp_tenant_domain not resolved for client secret auth with site pages by @Bo-Onyx in #10326
- feat(mt): Tenant work-gating gate + metrics (3/3) by @justin-tahara in #10281
- chore(gha): skip
typre-commit in CI by @jmelahman in #10337 - chore(devtools):
ods webinstalls node_modules on init by @jmelahman in #10046 - Fix: mcp langfuse tracing and Jira adf parsing by @aserafin-mtt in #10314
- chore(lint): run
shellcheckin pre-commit by @jmelahman in #10043 - feat(opensearch): Allow optional disabling of SSL to OpenSearch via env var by @acaprau in #10339
- refactor: replace raw
Card+Contentmessage patterns with@opal/components.MessageCardby @raunakab in #10342 - feat(opal): Update API for
LineItemButtonby @raunakab in #10345 - chore(metrics): Adding in calles for metrics by @justin-tahara in #10343
- refactor(opal): remove -Variant suffix from component props by @raunakab in #10348
- chore(embedding): Add Prometheus metrics for embedding telemetry by @acaprau in #10295
- chore(opensearch): Add update and get index settings, and open/close index methods to client by @acaprau in #10297
- fix(docs): Adding Partial Index by @justin-tahara in #10349
- fix(openpyxl): There is no item named issue by @justin-tahara in #10360
- fix(redis): update_sync_record_status cleanup by @justin-tahara in #10344
- refactor: update
ModelListContentto useLineItemButtonby @raunakab in #10346 - fix(pruning): WEB connector pruning timeout by implementing SlimConnector by @Bo-Onyx in #10350
- fix: consolidate Button/ and button/ case-split for Linux builds by @Mberga14 in #10355
- fix(external-group-sync): batch upsert + commit before API calls by @justin-tahara in #10364
- feat(chart): allow extra manifests for chart flexibility by @Mberga14 in #10356
- chore(sentry): make trace sample rates env-configurable, default celery to 0 by @justin-tahara in #10374
- fix(gong): move call-details retry into checkpoint state instead of blocking by @nmgarza5 in #10369
- fix(pruning): Google Drive Connector - cache orphaned ancestor paths to skip redundant folder walks by @Bo-Onyx in #10376
- fix(files): harden authorization on chat file downloads by @jmelahman in #10380
- fix(xlsx): Stream excel extraction to reduce peak memory by @Danelegend in #10375
- fix(desktop): check if backend server is available on start by @jmelahman in #10389
- chore(deps): bump tauri-apps/tauri-action from 0.6.1 to 0.6.2 by @dependabot[bot] in #10383
- chore(deps): bump actions/setup-go from 6.1.0 to 6.4.0 by @dependabot[bot] in #10385
- chore(devtools): set env which allows
api_serverto run by @jmelahman in #10396 - fix(xlsx): Hard limit on num cells by @Danelegend in #10377
- feat(indexing): Add file_id to Document model by @Danelegend in #10299
- feat(indexing): Stage file callback for connectors by @Danelegend in #10300
- fix(pruning): SharePoint Connector - fix pruning crash on site page 401 + permission validation by @Bo-Onyx in #10397
- fix(pdf): Allowing Image Extraction from PDF files by @justin-tahara in #10395
- feat(indexing): Stage files in docprocessing by @Danelegend in #10338
- chore: perm sync metrics by @evan-onyx in #10351
- refactor(auth): run disposable-email check before captcha on signup by @nmgarza5 in #10404
- fix(db): add missing FK indexes for hot celery worker tables by @justin-tahara in #10363
- feat(auth): require v3 score in captcha verification by @nmgarza5 in #10403
- fix(llm): Model reasoning returning None by @Danelegend in #10400
- feat(security): redis-backed rate limits for admin invite endpoints by @nmgarza5 in #10379
- feat(auth): add
USER_DIRECTORY_ADMIN_ONLYflag to gate/usersby @jmelahman in #10399 - feat(auth): reCAPTCHA cookie flow gating Google OAuth callback by @nmgarza5 in #10381
- fix(security): enforce chat session ownership on stop endpoint by @jmelahman in #10413
- feat(auth): Redis replay cache on captcha tokens by @nmgarza5 in #10402
- chore(opensearch): Debug script can get and set settings from/to, and open, close an index by @acaprau in #10408
- feat(auth): per-IP rate limit on /auth/register by @nmgarza5 in #10405
- chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 by @dependabot[bot] in #10386
- feat(opal): add
SvgNoImageandSvgSlowTimeicons by @raunakab in #10420 - fix: unchanged client id not set in backend by @evan-onyx in #10419
- feat(llm-context): Add ods install-skill to wire up llm context skills by @Bo-Onyx in #10418
- feat(invites): add tenant_invite_event table to cap trial tenant lifetime invites by @nmgarza5 in #10373
- fix(opal): keep expandable card separator line default border color by @raunakab in #10423
- feat(opal): add
headerPaddingprop + wire status border onMessageCardby @raunakab in #10424 - refactor(opal): add headerPadding prop to Card.Header layout by @raunakab in #10425
- chore(deps): bump mcp from 1.26.0 to 1.27.0 in /backend by @dependabot[bot] in #10384
- chore(deps): bump yarl from 1.22.0 to 1.23.0 in /backend by @dependabot[bot] in #10387
- refactor(opal): add root.css with library-owned size tokens by @raunakab in #10427
- chore(deps): bump brace-expansion in /web by @dependabot[bot] in #10426
- refactor(refresh-components): underline
Tabvariant,Textcolor inherit,LineItemwrapDescriptionby @raunakab in #10430 - chore(deps): rm
ddtraceby @dependabot[bot] in #10382 - fix: add missing headerPadding="sm" to all CardLayout.Header consumers by @raunakab in #10433
- chore(deps): bump rustls-webpki from 0.103.10 to 0.103.12 in /desktop/src-tauri by @dependabot[bot] in #10394
- fix(pruning): Set pruning frequency default to 25 days and establish backend as source of truth by @Bo-Onyx in #10431
- chore(indexing): remove multilingual_expansion from search settings by @jessicasingh7 in #10282
- chore(tests): run
test_run_multitenant_migrations.pyw/ database tests by @jmelahman in #10438 - fix: kill hung task from watchdog by @evan-onyx in #10439
- chore(deps-dev): bump python-dotenv from 1.1.1 to 1.2.2 by @dependabot[bot] in #10422
- fix(files): Add img generated files to user accessible by @Danelegend in #10434
- feat(indexing): Delete associated document files on doc delete by @Danelegend in #10347
- feat(auth): migrate reCAPTCHA to Enterprise Assessment API by @nmgarza5 in #10428
- chore(deps-dev): bump python-multipart from 0.0.22 to 0.0.26 by @dependabot[bot] in #10233
- feat(auth): gate /auth/login with captcha by @nmgarza5 in #10437
- refactor(opal): remove topRightChildren from Card.Header by @raunakab in #10441
- fix(llm): Fields unexpectedly None in llm model object by @Danelegend in #10452
- feat(indexing): Delete orphan staging indexing doc files by @Danelegend in #10453
- feat: queued messages by @wenxi-onyx in #10451
- fix(mcp): normalize empty parameters schema for Azure OpenAI by @justin-tahara in #10455
- fix: preserve DCR fields on server update by @evan-onyx in #10450
- feat(connectors): Save tabular files in Google Drive Connector by @Danelegend in #10378
- feat(search): Pull associated files for internal search docs by @Danelegend in #10444
- feat: Admin page cleanup by @raunakab in #10454
- feat(auth): add health-check bypass header for login captcha by @nmgarza5 in #10458
- refactor(platform): env
DANSWER_RUNNING_IN_DOCKER->ONYX_RUNNING_IN_DOCKERby @jmelahman in #10442 - feat(chat): chat preference to disable smooth streaming by @nmgarza5 in #10460
- fix(GoogleDriveConnector): Handle RefreshError for removed Workspace users by @Bo-Onyx in #10467
- fix(files): Img generated files blocked during chat by @Danelegend in #10465
- feat(auth): add LOW_CONFIDENCE_SCORE + SUSPECTED_CARDING to hard-reject set by @nmgarza5 in #10471
- fix(indexing): Reap files after doc processing by @Danelegend in #10475
- feat(pruning): migration script for pruning frequency by @Bo-Onyx in #10473
- chore: llm error scrubbing by @evan-onyx in #10476
- refactor(icons): migrate legacy icons/logos to opal by @raunakab in #10474
- refactor(icons): add opal logo components (Part 2) by @raunakab in #10483
- chore(tests): fetch keys at runtime by @jmelahman in #7446
- feat(telemetry): capture real client IP on every request by @nmgarza5 in #10477
- feat(connector): File connector attaches file_id by @Danelegend in #10484
- chore(playwright): chat file upload tests by @jmelahman in #10469
- refactor(voice): restructure Voice config page and migrate modals to Formik by @raunakab in #10490
- chore(devtools): replace
autoflakeandreorder-python-importswithruffby @jmelahman in #10489 - feat(connector): Blob + Sharepoint connector attach file_id for tabular sections by @Danelegend in #10485
- feat(query-history): add admin toggle for query history type by @Subash-Mohan in #10457
- fix(ConfluenceConnector): preserve /Date macro text and fix Cyrillic encoding by @Bo-Onyx in #10488
- chore(redis): Contextmanager library function for getting and releasing locks by @acaprau in #10445
- feat(tracing): auto-wrap every LLM subclass with braintrust generation_span by @nmgarza5 in #10478
- chore(CI): Temporarily disable 2 tests which depend on Anthropic by @acaprau in #10509
- feat: google oauth scope overrides by @evan-onyx in #10513
- fix(indexing): short-circuit get_old_index_attempt_ids by @justin-tahara in #10516
- fix(opensearch): Add an index refresh between delete and index in the doc idx class
indexmethod by @acaprau in #10514 - feat(agents-admin): Add filters by @raunakab in #10506
- fix: sharepoint members recursion by @evan-onyx in #10505
- fix(files): allow connector file previews through /chat/file by @jmelahman in #10498
- feat: openapi tool user placeholder by @evan-onyx in #10517
- feat(tracing): reassemble streaming tool-call deltas on fallback span by @nmgarza5 in #10486
- chore(indexing): default embedding_precision to FLOAT by @jessicasingh7 in #10285
- chore(redis): Contextmanager library function for getting and releasing locks by @acaprau in #10524
- fix(deep_research): emit synthetic tool_result on failed research call by @nmgarza5 in #10527
- feat(agents): Standardize agent filters in
AgentsNavigationPageandAgentsAdminPageby @raunakab in #10519 - chore(deps): upgrade
node: 20->24 by @jmelahman in #10526 - fix(slack): catch wrapped UndefinedTable in slack bot tenant iteration by @justin-tahara in #10531
- fix(slack): bail early on all Slack auth errors in listener by @justin-tahara in #10534
- fix: Enforce
is_listedfilter for all non-owner agent access by @raunakab in #10528 - fix(slack): set TenantSocketModeClient attrs before super().init by @justin-tahara in #10535
- fix(slack): silence LockNotOwnedError on tenant lock release by @justin-tahara in #10538
- feat(helm): add per-deployment extraEnv hook by @nmgarza5 in #10533
- fix(tracing): downgrade "No active trace" log from error to debug by @justin-tahara in #10539
- fix(alembic): set tenant contextvar around per-schema migrations by @justin-tahara in #10536
- chore(devtools):
ods dev tunnelby @jmelahman in #10470 - fix(opensearch): Add an index refresh between delete and index in the doc idx class index method by @acaprau in #10525
- fix(indexing): handle trial/paid usage-limit as a clean attempt-failure by @justin-tahara in #10541
- fix(embedding): log retryable provider errors at warning, not error by @justin-tahara in #10542
- fix(redis): retry BusyLoadingError and other transient Redis errors by @justin-tahara in #10537
- fix(slack): cache users.info failures and demote to warning by @justin-tahara in #10550
- fix(web): tolerate null document.body in auto-scroll step by @justin-tahara in #10553
- fix(fireflies): retry transient 5xx with exponential backoff by @justin-tahara in #10551
- fix(opensearch): Gate index operations behind a Redis lock by @acaprau in #10446
- fix(permissions): demote per-entity "no email" logs to warning by @justin-tahara in #10561
- feat: show app version in account popover by @raunakab in #10540
- fix(connector): Disable unused eager loading in indexing status endpoint by @Bo-Onyx in #10556
- fix(permissions): downgrade Org-member "no email" log to warning by @justin-tahara in #10579
- fix(sharepoint): downgrade sleep_and_retry final-failure log to warning by @justin-tahara in #10580
- fix(db): default POSTGRES_POOL_PRE_PING to true by @nmgarza5 in #10569
- fix(indexing): demote vector-db batch-fallback log to warning by @justin-tahara in #10581
- fix(opensearch): Warn on chunk count 0 by @acaprau in #10589
- fix(google-drive): tolerate 403 on primary admin lookup in group sync by @nmgarza5 in #10568
- chore(deps): bump rustls-webpki from 0.103.12 to 0.103.13 in /desktop/src-tauri by @dependabot[bot] in #10587
- fix(themes): custom backgrounds switch preferrred dark/light theme by @jmelahman in #10588
- chore(devtools): upgrade
ods: 0.7.5->0.7.6 by @jmelahman in #10596 - chore(opal): move Checkbox into Opal by @raunakab in #10595
- chore(deps): bump uuid from 9.0.1 to 14.0.0 in /web by @dependabot[bot] in #10482
- test: verify knowledge toggle persists SearchTool to agent by @wenxi-onyx in #10594
- feat: linear connector: use refresh_token if access_token is expired [mirror of #7021] by @evan-onyx in #10585
- fix(opal): separate
Opalfrom@web/srcshared utilities by @raunakab in #10598 - fix(storybook): add global
TooltipProviderdecorator to Storybook forOpalby @raunakab in #10603 - fix(security): enforce agent access on chat session creation by @justin-tahara in #10601
- chore(docker): install
torchinto dedicated layer by @jmelahman in #10604 - chore(devtools): upgrade
tsgo, fix.next/types/validator.tserrors by @jmelahman in #10600 - fix(security): enforce document set access in search filters by @justin-tahara in #10602
- chore(deps): bump postcss from 8.5.6 to 8.5.10 in /web by @dependabot[bot] in #10593
- fix(asana): Stop duping asana tasks by @Danelegend in #10614
- fix(embedding): Self-blocking async code, other cleanups by @acaprau in #10599
- fix(auth): stop /api/auth/refresh request loop on SAML deployments by @justin-tahara in #10617
- chore(embedding, prometheus): Emit telemetry for embedding by @acaprau in #10620
- Chinese README by @yuhongsun96 in #10624
- chore: demote noisy sentry logs by @evan-onyx in #10633
- fix(storybook): use render functions for RichStr markdown stories by @raunakab in #10610
- refactor(opal):
Contentupdates by @raunakab in #10645 - refactor(opal): rewrite
@opal/core.DisabledfromRadix Slottodivwrapper by @raunakab in #10501 - fix(api): fetch agent avatars from dedicated
/api/persona/{id}/avatarby @jmelahman in #10597 - feat(sidebar):
LineItemButtonmigrations by @raunakab in #10646 - fix(opal): Notification text is always light by @raunakab in #10649
- fix(hubspot): make connector more efficient with fewer api calls - phase 1 by @Bo-Onyx in #10616
- fix(opal):
toPlainStringstrips markdown by @jmelahman in #10650 - feat(openai): Add support for GPT Image 2 by @justin-tahara in #10653
- feat(metrics): Adding model information to Generated Report by @justin-tahara in #10648
- fix(tracing): record LLM stream usage on abandoned and failed exits by @nmgarza5 in #10658
- chore(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 by @dependabot[bot] in #10664
- chore(deps): bump referencing from 0.36.2 to 0.37.0 in /backend by @dependabot[bot] in #10661
- chore(deps): bump docker/build-push-action from 7.0.0 to 7.1.0 by @dependabot[bot] in #10660
- fix: don't die mid docprocessing by @evan-onyx in #10668
- chore(deps): bump huggingface-hub from 1.10.2 to 1.11.0 in /backend by @dependabot[bot] in #10659
- chore(tests): fix
test_bedrock.pyunauthenticated text assertion by @jmelahman in #10669 - feat: rotate llm provider script by @wenxi-onyx in #10670
- chore(deps): bump aws-actions/configure-aws-credentials from 6.0.0 to 6.1.0 by @dependabot[bot] in #10663
- fix(chat): allow Uploaded Files citations to open preview by @justin-tahara in #10675
- chore(deps-dev): bump postcss from 8.5.6 to 8.5.10 in /widget by @dependabot[bot] in #10625
- feat(opal): add SvgBullhorn, SvgCheckAll, and SvgSquare icons by @raunakab in #10676
- feat: Add a search only option for the EnterpriseRAG Bench script by @yuhongsun96 in #10673
- chore: copy new provider rotation script into dockerfile by @wenxi-onyx in #10680
- feat: data models for index attempt metrics by @evan-onyx in #10635
- refactor(doc-index-sync): rename vespa_metadata_sync_task by @nmgarza5 in #10613
- feat: supporting utils for index attempt metrics by @evan-onyx in #10636
- fix: docfetching stall death by @evan-onyx in #10678
- feat: hook up docfetching metrics by @evan-onyx in #10637
- feat: docprocessing index attempt metrics by @evan-onyx in #10638
- chore(devtools): Delete "Profile celery beat" which uses "austin" from
.vscode/tasks.template.jsoncby @acaprau in #10690 - feat: endpoint for index attempt metrics by @evan-onyx in #10639
- fix(monitoring): skip monitor_process_memory in kubernetes by @nmgarza5 in #10688
- fix(desktop): simplify alt-menu by @jmelahman in #10692
- refactor(opal): Hoverable variant rename + new variants by @raunakab in #10674
- fix(connectors): add HTTP timeouts to prevent worker hangs (#10693) to release v3.3 by @github-actions[bot] in #10696
- fix(slack): treat account_inactive as expired credential (#10694) to release v3.3 by @github-actions[bot] in #10697
- fix(external-group-sync): bridge fence validator transition gap (#10691) to release v3.3 by @github-actions[bot] in #10695
- fix(embedding): Change vertex embedding to global (#10699) to release v3.3 by @github-actions[bot] in #10701
- fix(math): render LaTeX live during message streaming (#10681) to release v3.3 by @github-actions[bot] in #10702
- chore(deps): rollforward "bump litellm from 1.81.6 to 1.83.0 (#9898)" (#10179) to release v3.3 by @jmelahman in #10720
- fix(beat_schedule): include LICENSE_ENFORCEMENT_ENABLED in EE gate (#10683) to release v3.3 by @github-actions[bot] in #10728
- feat(tracing): LLMFlow registry, wrap every LLM call site (#10735) to release v3.3 by @github-actions[bot] in #10743
- fix(sharepoint): add slim connector so it does not need to fetch permission during pruning (#10750) to release v3.3 by @evan-onyx in #10771
- fix: dont check per sync creds for public connectors (#10765) to release v3.3 by @evan-onyx in #10777
- fix: paginate role assignments (#10749) to release v3.3 by @evan-onyx in #10779
- fix(openrouter): enable auto-update mode (#10718) to release v3.3 by @jmelahman in #10836
- fix(slack): key bot auth ID cache by (tenant_id, slack_bot_id) (#10827) to release v3.3 by @github-actions[bot] in #10832
- fix(deploy): add opensearch to depends_on so init-letsencrypt brings it up (#10722) to release v3.3 by @github-actions[bot] in #10724
New Contributors
- @jaffarkeikei made their first contribution in #9999
- @aserafin-mtt made their first contribution in #10314
- @Mberga14 made their first contribution in #10355
Full Changelog: v3.2.0...v3.3.0