github onyx-dot-app/onyx v4.0.0

latest releases: v4.0.0-jira-dc-perm-sync, v3.3.8
6 hours ago

Warning

Do not upgrade to this release if you want to preserve your existing indexed documents but have not yet run the document index migration, which can be done from any version v3.x. See additional documentation here.

What's Changed

  • fix(external-group-sync): bridge fence validator transition gap by @nmgarza5 in #10691
  • fix(metrics): pass tenant_id explicitly to indexing-task connector resolver [ENG-4085] by @justin-tahara in #10689
  • fix(connectors): add HTTP timeouts to prevent worker hangs by @nmgarza5 in #10693
  • fix(slack): treat account_inactive as expired credential by @nmgarza5 in #10694
  • chore(tests): unit tests for llm utils by @jmelahman in #10698
  • chore(tests): LLM provider tests for openai and ollama by @jmelahman in #10462
  • feat(sidebar): revamp NotificationsPopover with New/Older sections by @raunakab in #10651
  • fix(Hubspot): use search API for incremental poll to avoid full scans - phase 2 by @Bo-Onyx in #10677
  • feat: index attempt metrics FE by @evan-onyx in #10640
  • chore(deps): rollforward "bump litellm from 1.81.6 to 1.83.0 (#9898)" by @jmelahman in #10179
  • fix(embedding): Change vertex embedding to global by @Danelegend in #10699
  • chore(llms): update recommended models by @jmelahman in #10700
  • fix(math): render LaTeX live during message streaming by @Subash-Mohan in #10681
  • fix(pruning): adjust the default pruning frequency to 20 days by @Bo-Onyx in #10705
  • feat(chat-preferences): restore-default for system prompt + Highspot/Loopio logo migration by @raunakab in #10706
  • fix(fe): add padding to welcome header by @jmelahman in #10707
  • chore(public): remove orphaned third-party logo PNGs by @raunakab in #10708
  • chore(deps-dev): bump postcss from 8.5.6 to 8.5.10 in /examples/widget by @dependabot[bot] in #10626
  • feat(chat-preferences): gate "Keep Chat History" behind EE by @raunakab in #10712
  • chore(playwright): remove timestamp from persona chat screenshot by @jmelahman in #10713
  • chore(deps): bump gitpython from 3.1.45 to 3.1.47 by @dependabot[bot] in #10627
  • fix(pruning): Explicitly stamp enqueued_at header on pruning generator tasks by @Bo-Onyx in #10714
  • chore(deps): bump lxml from 5.3.0 to 6.1.0 in /backend/requirements by @dependabot[bot] in #10436
  • fix(openrouter): enable auto-update mode by @jmelahman in #10718
  • refactor(tests): bedrock integration and unit tests by @jmelahman in #10716
  • fix(hubspot): N+1 HubSpot association fetches using batch_read API by @Bo-Onyx in #10715
  • chore(tests): use allow_module_level=True as needed by @jmelahman in #10717
  • fix(fe): model selector check icon is center aligned by @jmelahman in #10719
  • fix(deploy): add opensearch to depends_on so init-letsencrypt brings it up by @nmgarza5 in #10722
  • fix(beat_schedule): include LICENSE_ENFORCEMENT_ENABLED in EE gate by @Subash-Mohan in #10683
  • fix(google drive): Download google slides w/ images by @Danelegend in #10723
  • chore(tests): migrate connectors test to pytest_secrets by @jmelahman in #10733
  • fix(opensearch): For MT cloud only verify each index once per process by @acaprau in #10737
  • feat(tracing): LLMFlow registry, wrap every LLM call site by @nmgarza5 in #10735
  • chore(CI): Revert: Temporarily disable 2 tests which depend on Anthro… by @jmelahman in #10742
  • fix(google-connector): catch impersonation failures across all Google Drive API calls by @Bo-Onyx in #10730
  • fix(doc-processing): Cap num threads for contextual rag by @Danelegend in #10729
  • chore(docker): drop python:3.11-slims OS suffix by @jmelahman in #10741
  • fix(doc processing): Apply multiple threads for image processing by @Danelegend in #10744
  • chore(metrics): Add metrics for image processing by @Danelegend in #10731
  • fix(sharepoint): add slim connector so it does not need to fetch permission during pruning by @Bo-Onyx in #10750
  • feat(billing): allow trialing tenants to upgrade on demand by @nmgarza5 in #10732
  • chore(ci): enable license enforcement in test infra via dev license by @nmgarza5 in #10738
  • fix(gitlab): fall back to username when GitLab masks author name by @jmelahman in #10755
  • feat(targeted-reindex): schema for targeted document reindexing by @nmgarza5 in #10747
  • test(notion): accept new app.notion.com page URL format by @jmelahman in #10754
  • chore(logging): enforce ruff G004, convert f-strings to %-style by @wenxi-onyx in #10767
  • feat: crawler playwright retry +improved error msg by @evan-onyx in #10746
  • fix: sharepoint retry transport errors by @evan-onyx in #10748
  • fix: dont check per sync creds for public connectors by @evan-onyx in #10765
  • fix: paginate role assignments by @evan-onyx in #10749
  • chore(tooling): unify ruff and black versions via uv-run pre-commit hooks by @wenxi-onyx in #10769
  • chore: remove dead RequestTracker connector and commented brotli import by @wenxi-onyx in #10772
  • feat(chat): make MAX_LLM_CYCLES env-configurable by @beraterkanelcelik in #10780
  • feat(web): Refreshed Index Settings Page by @raunakab in #10272
  • chore(codeowners): drop required reviewer for AGENTS.md and CLAUDE.md by @Weves in #10739
  • chore(deps): upgrade pdfminer-six to 20260107 by @jmelahman in #10760
  • chore(devcontainer): plumb GH_TOKEN and add vscode tasks by @jmelahman in #10762
  • chore(deps): bump docker/login-action by @jmelahman in #10672
  • refactor(web): clean up admin ClientLayout + move to layouts/admin/ by @raunakab in #10793
  • chore(deps): bump runs-on/action & runs-on/cache by @jmelahman in #10671
  • chore(deps): upgrade jaraco-context to 6.1.2 by @jmelahman in #10761
  • refactor: chat input bar to contentEditable for rich content by @wenxi-onyx in #10500
  • refactor(web): internalize sidebar fold state into SidebarRoot by @raunakab in #10797
  • fix(auth): refresh OAuth tokens for any OIDC provider, not just Google by @beraterkanelcelik in #10794
  • fix(freshdesk): handle null due by by @evan-onyx in #10801
  • chore(deps): pin uv pip installs to uv.lock via --require-hashes by @jmelahman in #10800
  • fix(billing): add /tenants/seats/update alias for cloud FE by @nmgarza5 in #10802
  • fix(web): mutate currentSearchSettings on cancel re-index by @raunakab in #10804
  • feat: add paste_as_tile user preference by @wenxi-onyx in #10803
  • fix(a11y): add missing aria-labels to interactive components by @wenxi-onyx in #10774
  • perf(db): add eager loading for chat message feedbacks and search docs by @wenxi-onyx in #10776
  • chore: remove dead legacy admin user management components by @wenxi-onyx in #10809
  • feat(web): show Index Settings in sidebar for cloud deployments by @raunakab in #10808
  • chore(frontend): deprecate legacy Text component, migrate preview modal variants by @wenxi-onyx in #10778
  • feat(license): tiered expiry warnings + 14d grace period by @nmgarza5 in #10758
  • fix(embedding): Fix broken retries for embedding by @Danelegend in #10766
  • fix(pruning): update default pruning frequency from 20 to 15 days by @Bo-Onyx in #10796
  • feat(web): enterprise-tab tooltips + InlineMarkdown fixes by @raunakab in #10812
  • chore(deps): use --no-deps for uv pip install by @jmelahman in #10815
  • feat(targeted-reindex): consumer query filters by @nmgarza5 in #10764
  • fix(auth): refresh OIDC access tokens on every authenticated request (follow-up to #10794) by @beraterkanelcelik in #10806
  • refactor(connectors): rename Resolver.resolve_errors to reindex by @nmgarza5 in #10818
  • chore: perm sync vis setup by @evan-onyx in #10789
  • feat: frontend models and components for perm sync vis by @evan-onyx in #10790
  • chore(format): apply black formatting to playwright_fetch.py by @jmelahman in #10830
  • chore(doc-processing): add per-attempt doc-processing batch counters by @Bo-Onyx in #10768
  • fix(slack): key bot auth ID cache by (tenant_id, slack_bot_id) by @nmgarza5 in #10827
  • refactor(web): replace CreateButton with direct Opal Button by @raunakab in #10817
  • fix(targeted-reindex): keep staged files of concurrent in-progress attempts by @nmgarza5 in #10826
  • feat: more frontend models for perm sync vis by @evan-onyx in #10791
  • chore(deps): bump rapidfuzz from 3.13.0 to 3.14.5 in /backend by @dependabot[bot] in #10820
  • chore(deps): upgrade litellm to latest w/ override-dependencies by @jmelahman in #10807
  • chore(devcontainer): cache frontend build artifacts on named volumes by @jmelahman in #10837
  • feat: perm sync visibility by @evan-onyx in #10795
  • Update README by @yuhongsun96 in #10843
  • fix(indexing): surface oversized document errors and raise MAX_DOCUMENT_CHARS limit by @Bo-Onyx in #10844
  • chore(devcontainer): add release workflow to publish multi-arch image by @jmelahman in #10845
  • fix(ci): clear devcontainer tags when pushing by digest by @jmelahman in #10852
  • refactor(persona): replace llm override strings with model_configuration FK by @raunakab in #10846
  • chore(db): drop legacy persona llm override string columns by @raunakab in #10855
  • feat(llm): make provider display name optional and allow renaming by @raunakab in #10847
  • fix(ui): correct indexing errors modal pagination by @Bo-Onyx in #10851
  • feat: paste tiles in contentEditable input bars by @wenxi-onyx in #10810
  • chore: remove kg_processing worker from vscode launch config by @wenxi-onyx in #10862
  • perf(db): add eager loading to get_document_set_by_id by @wenxi-onyx in #10775
  • chore: remove 15 unused legacy components by @wenxi-onyx in #10865
  • fix(indexing): tabular chunker crash on Google Sheets with multi-line cells by @Bo-Onyx in #10860
  • feat(web): make LLM provider display name optional by @raunakab in #10848
  • refactor(web): rename llmConfig → languageModels to match sidebar tab name by @raunakab in #10872
  • fix(db): asyncpg statement_cache_size=0 by @nmgarza5 in #10871
  • fix: confluence data center websudo by @evan-onyx in #10853
  • fix(indexing): fix generator didn't stop after throw() in prepare_to_modify_documents by @Bo-Onyx in #10870
  • feat(code-interpreter): Handle session creation, deletion and bash routes by @Danelegend in #10859
  • feat(code-interpreter): Add version to health endpoint by @Danelegend in #10867
  • feat(code-interpreter): Block functions by code-interpreter server version by @Danelegend in #10875
  • feat(targeted-reindex): API endpoints + DB writes + stub celery task by @nmgarza5 in #10828
  • chore(embedding): Cache query embeddings by @acaprau in #10786
  • fix: use rest space perms confluence dc 9.1 by @evan-onyx in #10854
  • feat(github): Download github util function by @Danelegend in #10880
  • feat(tools): Add bash tool by @Danelegend in #10876
  • fix(litellm): Opus 4.7 no longer accepts temperature param, litellm is not dropping it by @acaprau in #10878
  • fix(redis): Add some method calls to methods_to_wrap for tenant ID prefixing by @acaprau in #10849
  • feat(targeted-reindex): celery task lifecycle + resolution tracking by @nmgarza5 in #10829
  • feat(targeted-reindex): connector.reindex + indexing pipeline wiring by @nmgarza5 in #10864
  • test: e2e tests for contentEditable input bar and paste tiles by @wenxi-onyx in #10811
  • test(targeted-reindex): daily integration suite against real Drive by @nmgarza5 in #10874
  • fix(celery): gate cleanup tasks to active tenants only by @nmgarza5 in #10890
  • docs(test): e2e Playwright rules — POM + auto-retrying matchers by @nmgarza5 in #10892
  • chore(gha): add repro command to nightly external dependency tests Slack notification by @jmelahman in #10896
  • chore(deps-dev): bump python-multipart from 0.0.26 to 0.0.27 by @dependabot[bot] in #10905
  • chore(deps): bump gitpython from 3.1.47 to 3.1.49 by @dependabot[bot] in #10903
  • chore(deps-dev): bump mistune from 3.2.0 to 3.2.1 by @dependabot[bot] in #10904
  • feat(coding-agent): Add various helpers and definitions for coding agent by @Danelegend in #10882
  • chore(docprocessing): use batch counters in heartbeat monitor for faster invalidation by @Bo-Onyx in #10835
  • chore: [Running GitHub actions for #10856] by @evan-onyx in #10899
  • fix(background): release DB sessions before slow I/O in user file tasks by @Bo-Onyx in #10881
  • chore(deps): bump next to 16.2.6 by @jmelahman in #10916
  • chore(deps): bump hono from 4.12.14 to 4.12.18 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #10907
  • chore(deps): bump ip-address and express-rate-limit in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #10908
  • fix(chat): release DB session before LLM stream begins by @nmgarza5 in #10906
  • chore(tf): Ability to pin nodes by @justin-tahara in #10910
  • feat: capture perm sync exception trace by @evan-onyx in #10898
  • fix(pruning): make default pruning 10 days by @Bo-Onyx in #10925
  • fix(db): replace bare except clauses with except Exception by @wenxi-onyx in #10928
  • fix(imap): replace print() with logger.warning in charset decoding fallback by @wenxi-onyx in #10927
  • fix(types): replace any types with concrete types in AreaChart component by @wenxi-onyx in #10930
  • fix(db_session): release DB session before embedding in docprocessing task by @Bo-Onyx in #10924
  • feat(coding agent): Add coding agent by @Danelegend in #10877
  • feat(coding-agent): Coding Agent as Tool for Chat Agent by @Danelegend in #10885
  • feat(coding-agent): Add admin page and action bar changes for coding agent tool by @Danelegend in #10883
  • feat(coding-agent): Handle tool packets for coding agent tool by @Danelegend in #10884
  • chore(embedding): Use expire instead of set when resetting the TTL for query cache hits by @acaprau in #10901
  • feat(web,backend): allow litellm to use ADC for vertex by @Mberga14 in #10357
  • feat(craft): initial craft plans by @Weves in #10727
  • fix(chat): release DB session across compress_chat_history LLM call by @nmgarza5 in #10923
  • fix(chat): release DB session during rename_chat_session LLM call by @nmgarza5 in #10922
  • feat(onyx/backend): add ability to use GCS with Workload identity by @Mberga14 in #10703
  • refactor(opal): sever app-layer imports for npm publish by @nmgarza5 in #10939
  • refactor(search): replace contextual RAG string columns with model_configuration FK by @raunakab in #10866
  • feat(opal): add tsup build + npm publish metadata by @nmgarza5 in #10941
  • refactor(opal): drop refresh-components shims, import directly from opal by @nmgarza5 in #10945
  • fix(index): remove progress stall check in favor of heartbeat monitor by @Bo-Onyx in #10940
  • feat(targeted-reindex): wire Resolve-All button + harden synthetic IndexAttempt lifecycle by @nmgarza5 in #10891
  • fix(coding-agent): Stop coding agent populating main chat by @Danelegend in #10946
  • fix(files): Stop persona file blockages by @Danelegend in #10943
  • fix(files): Code interpreter files not appearing during chat streaming by @Danelegend in #10944
  • chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /web by @dependabot[bot] in #10948
  • ci(opal): add release workflow for @onyx-ai/opal by @nmgarza5 in #10947
  • chore(opal): bump version to 0.1.1 for first OIDC release by @nmgarza5 in #10954
  • feat(targeted-reindex): Confluence Resolver.reindex by @nmgarza5 in #10942
  • fix(onyx-cli): build go binary for each GOOS/GOARCH by @wenxi-onyx in #10955
  • chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #10950
  • feat(targeted-reindex): plumb HierarchyNode yields through reindex by @nmgarza5 in #10949
  • chore(deps-dev): bump langchain-core from 1.2.28 to 1.3.3 by @dependabot[bot] in #10956
  • chore(deps): bump gitpython from 3.1.49 to 3.1.50 by @dependabot[bot] in #10959
  • feat(ods): ods deploy wiki command by @justin-tahara in #10962
  • docs: craft search tool plans by @wenxi-onyx in #10960
  • chore(ods): Bump from v0.7.6 -> v0.7.7 by @justin-tahara in #10964
  • feat: add Search API endpoint (POST /api/search) by @wenxi-onyx in #10966
  • feat(tenants): disable default LLM provider for multi-tenant cloud by @nmgarza5 in #10740
  • chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /backend/requirements by @dependabot[bot] in #10980
  • chore(redis): Implement proper TenantRedisClient, replace all usages of TenantRedis by @acaprau in #10909
  • fix: drive perm sync validation by @evan-onyx in #10965
  • fix(tools): Tool Name mismatch issue by @justin-tahara in #10981
  • chore(deps): bump mako to 1.3.12 by @jmelahman in #10983
  • chore(deps): bump path-to-regexp to 8.4.2 in sandbox web template by @jmelahman in #10984
  • refactor(web): consolidate and clean up all agent-related code by @raunakab in #10970
  • refactor(modals): use InputSelectField for auth method pickers by @raunakab in #10990
  • chore(devtools): make devcontainer firewall opt-in by @jmelahman in #10988
  • feat(slack-bot): gate invocation by respond_member_group_list allowlist by @nmgarza5 in #10992
  • chore(deps): bump next from 16.2.3 to 16.2.6 in /examples/widget by @dependabot[bot] in #10985
  • refactor: onyx-cli for agent-first experimence by @wenxi-onyx in #10973
  • fix(mcp): per user multiple header by @evan-onyx in #10995
  • refactor(share-modal): replace LineItem with ContentAction + SvgCheck by @raunakab in #10991
  • chore(docs): update craft search docs with implementation details and new part 3 plan by @wenxi-onyx in #10999
  • feat(wiki): Push public connector documents to Agent Wiki after indexing by @Bo-Onyx in #10953
  • fix: confluence version endpoint by @evan-onyx in #10998
  • fix(billing): update help URL to correct documentation path by @wenxi-onyx in #11003
  • feat(onyx-cli): agentic search command by @wenxi-onyx in #11001
  • chore(deps): bump next from 16.2.3 to 16.2.6 in /backend/onyx/server/features/build/sandbox/kubernetes/docker/templates/outputs/web by @dependabot[bot] in #11006
  • refactor: better copy PAT button in creation modal by @wenxi-onyx in #11005
  • feat(llm): use Bifrost normalized_name for display names by @justin-tahara in #11015
  • chore(deps): bump tauri from 2.10.3 to 2.11.1 in /desktop/src-tauri by @dependabot[bot] in #10902
  • fix(onyx-cli): show help by default instead of launching TUI, support Ctrl+D to cancel configure by @wenxi-onyx in #11017
  • fix(opal): correct SelectCard border-color regression + add borderColor prop by @raunakab in #11020
  • feat(auth): add PAT type system and encrypted sandbox credential storage by @wenxi-onyx in #11023
  • feat(indexing): add Cohere embed-v4.0 with response-format compat by @justin-tahara in #11025
  • feat(indexing): add Gemini embedding-2-preview with instruction prompts by @justin-tahara in #11026
  • fix(onyx-cli): show clean error when server returns HTML instead of JSON by @wenxi-onyx in #11028
  • chore(indexing): remove search-time image processing by @justin-tahara in #11024
  • test(voice): verify STT works without a TTS provider (ENG-3927) by @justin-tahara in #11029
  • fix(asana): stop dropping teamless projects from explicit allowlist by @justin-tahara in #11016
  • feat(craft): wire PAT provisioning into sandbox lifecycle by @wenxi-onyx in #11031
  • chore(img-gen): Drop dalle-3 as a image gen provider by @Danelegend in #11032
  • docs(craft): Skills V1 PRD + HTML mockups by @rohoswagger in #10987
  • feat(craft): wire company-search skill into sandbox via onyx-cli by @wenxi-onyx in #11037
  • fix(seat-limit): close TOCTOU race + plug promotion + cloud auto-bill by @nmgarza5 in #10900
  • feat(users): re-add invite-only toggle by @nmgarza5 in #10886
  • feat(skills): Establish Skills V1 foundation schema by @rohoswagger in #10996
  • refactor(craft): comprehensively remove file sync behavior by @wenxi-onyx in #11042
  • fix(admin): WebSearch modal cleanup — masked_api_key, disconnect-prevention, ProviderCard hover by @raunakab in #11036
  • ci: build craft-edge images on experimental-cc4a tags by @wenxi-onyx in #11045
  • docs(db): broaden statement_cache_size=0 comment beyond pgbouncer by @nmgarza5 in #11057
  • fix(freshdesk): paginate past 300 pages by @evan-onyx in #11062
  • docs(craft): claim skills task board tasks by @rohoswagger in #11058
  • chore: update onyx-cli default url by @wenxi-onyx in #11065
  • refactor(craft): remove demo data toggle and connector config UI by @wenxi-onyx in #11046
  • fix(scim): return null instead of 404 when no token configured by @nmgarza5 in #11038
  • feat(craft): scheduled tasks v1 by @Weves in #11027
  • chore(deps): upgrade tailwindcss v3 → v4 by @jmelahman in #11035
  • fix(confluence): use the REST API with non-scoped tokens for downloading attachments by @wenxi-onyx in #11068
  • fix(db): cascade hierarchy_node join on cc_pair credential swap by @nmgarza5 in #11067
  • chore(devtools): commit Playwright MCP config by @jmelahman in #11070
  • fix(chat): restore prose margins after tailwind v4 upgrade by @jmelahman in #11071
  • chore(web): drop custom Cache-Control for /_next/static/* by @jmelahman in #11075
  • fix: onyx-cli version in sandbox by @wenxi-onyx in #11081
  • fix: helm add sandbox backend by @wenxi-onyx in #11076
  • fix(skills): simplify skill schema uniqueness by @rohoswagger in #11082
  • feat(hooks): add document-push hook point, remove hardcoded agent-wiki push by @Bo-Onyx in #11078
  • fix(hook_UI): hook management button right side aligned by @Bo-Onyx in #11084
  • chore: always show indexing metrics by @evan-onyx in #11085
  • chore(deps): bump langsmith from 0.7.32 to 0.8.0 by @dependabot[bot] in #11083
  • feat(web): gate queued messages on previous answer fully rendered by @nmgarza5 in #10921
  • chore(deps): bump authlib from 1.6.11 to 1.6.12 by @dependabot[bot] in #11043
  • fix: opencode config for anthropic by @wenxi-onyx in #11088
  • fix: remove num_hits from public search api by @wenxi-onyx in #11090
  • chore(devtools): migrate from prettier to oxfmt by @jmelahman in #11040
  • refactor(search api + cli): preprocess response from search pipeline to be coherent for consumers and update onyx cli for new api by @wenxi-onyx in #11091
  • chore(devtools): migrate from black to ruff format by @jmelahman in #11080
  • chore: bump sandbox cli version by @wenxi-onyx in #11099
  • refactor(mcp server): for updated search api by @wenxi-onyx in #11098
  • chore(pre-commit): prefer pre-commit-terraform by @jmelahman in #11101
  • chore: bump opal to v0.1.2 by @nmgarza5 in #11100
  • chore(fmt): fix oxfmt at HEAD by @jmelahman in #11102
  • chore(ci): path-filter python and database test workflows by @jmelahman in #11105
  • feat(connectors/slack): add Enterprise Grid support by @nmgarza5 in #11077
  • perf(playwright): bump admin CI workers 2→4 by @nmgarza5 in #11103
  • feat(web): drain typewriter faster after stream finishes by @nmgarza5 in #10920
  • fix: gdrive hierarchynode parents by @evan-onyx in #11106
  • feat(skills): skills scaffolding by @rohoswagger in #11069
  • feat(dev): hot-reload + breakpoints for celery workers via watchfiles by @wenxi-onyx in #11112
  • chore: postgres tcp keepalive by @evan-onyx in #11116
  • chore(opensearch): Implement bulk updates by @acaprau in #11109
  • chore(opensearch): Bump docker compose OpenSearch image tag to 3.6.0 by @acaprau in #11117
  • fix(helm): provision redis CRD and postgres cluster; drop -master from REDIS_HOST by @wenxi-onyx in #11111
  • chore(opensearch): Retry on bulk update already_closed_exception, search_phase_execution_exception; Clean up bulk call semantics by @acaprau in #11114
  • chore(opensearch): Bump Helm OpenSearch tag to 3.6.0 by @acaprau in #11119
  • chore(opensearch): Use bulk updating in the hotpath by @acaprau in #11115
  • refactor(voice): Clean up small items for Voice, Web-Search, Language-Models by @raunakab in #11063
  • docs(dev): add local Kubernetes development workflow by @wenxi-onyx in #11113
  • chore(devtools): migrate from eslint to oxlint by @jmelahman in #11079
  • chore(ci): path-filter integration test workflow by @jmelahman in #11126
  • feat(litellm): Expand support for capabilities by @mikew in #10783
  • fix(helm): Helm chart fixes for bool parsing, operator pins, and HPA targets by @justin-tahara in #11125
  • feat(llms): Store reasoning flow support by @mikew in #10785
  • fix(dev): subscribe celery debug workers to sandbox and checkpoint… by @wenxi-onyx in #11130
  • fix: LiteLLM embedding test model name payload by @k-kasajima in #11110
  • feat(open_url): add OPEN_URL_VALIDATE_SSRF opt-out for trusted networks by @justin-tahara in #11097
  • chore(ci): use GitHub App token for cherry-pick automation by @jmelahman in #11127
  • docs: add SECURITY.md for vulnerability reporting by @jmelahman in #11134
  • ci: run craft kubernetes sandbox tests via kind by @wenxi-onyx in #11132
  • chore(ci): path-filter playwright test workflow by @jmelahman in #11135
  • chore(deps): bump runs-on/action from 2.0.3 to 2.1.2 by @dependabot[bot] in #10821
  • fix(indexing): raise CSV field size limit to 128 MiB by @justin-tahara in #10552
  • fix(indexing): demote PDF parsing failures to warning by @justin-tahara in #10543
  • feat: pass all csvs to code interpreter by @evan-onyx in #11136
  • feat: craft push files via sandbox manager and daemon by @wenxi-onyx in #11121
  • feat(skills): small db refactor and new skills api by @wenxi-onyx in #11128
  • refactor(skills): migrate builtin skills to push-based delivery by @wenxi-onyx in #11133
  • feat(craft): asymmetric Ed25519 auth for sandbox push daemon by @wenxi-onyx in #11145
  • chore(document index): Remove old DocumentIndex interface by @acaprau in #10917
  • feat(tier-management): add Business tier and unified gating middleware by @Subash-Mohan in #11050
  • fix(ollama): better default API Base URLs when running in docker by @jmelahman in #10045
  • fix(pruning): reduce default pruning frequency to 7 days by @Bo-Onyx in #11151
  • chore(opensearch): Debug script can get detailed cluster health and do route retry by @acaprau in #11138
  • chore: validate file args to code interpreter by @evan-onyx in #11137
  • chore(security): enable ruff flake8-bandit (S) rules by @jmelahman in #11153
  • fix(deletion): prevent OOMKill of monitoring pod during large deletions by @justin-tahara in #11155
  • chore(security): enable ruff S608 (hardcoded-sql-expression) by @jmelahman in #11157
  • fix(ci): use client-id for create-github-app-token by @jmelahman in #11164
  • fix(utils): rename platform.py to avoid stdlib shadowing by @jmelahman in #11150
  • chore(claude): ignore .claude/worktrees directory by @justin-tahara in #11170
  • chore(ci): drop ECR-cache reads/writes from release Docker builds by @jmelahman in #11172
  • fix(tier-management): gracefully handle missing database tables in incomplete schemas by @justin-tahara in #11169
  • chore(opensearch, prometheus): Emit telemetry on search failures by @acaprau in #11163
  • feat(opal): export logos in dist + bump to 0.1.3 by @nmgarza5 in #11173
  • chore(opensearch, grafana): Add dashboards for search failures by @acaprau in #11165
  • fix(deletion): release PG connection before document-index I/O in per-doc cleanup by @justin-tahara in #11175
  • fix(chat): always return chat_session_id from non-streaming send-chat-message by @justin-tahara in #11177
  • chore(grafana): Dedup redundant dashboard in profiling/grafana/dashboards, mount production helm dashboards in local grafana testing flow by @acaprau in #11166
  • fix(tests): poll retrieval to stabilize flaky update test by @jmelahman in #11176
  • fix(monitoring): two OOM fixes for monitoring worker under heavy backlog by @justin-tahara in #11180
  • test(craft): comprehensive test suite overhaul by @wenxi-onyx in #11152
  • chore(opensearch): Fix if <> is not None control flow split in calling OpenSearch client by @acaprau in #11183
  • chore(opensearch, prometheus): Emit telemetry on search latency overhead by @acaprau in #11181
  • feat(craft): skills ui by @Weves in #11011
  • chore(opensearch, grafana): Add dashboards for search latency diffs by @acaprau in #11182
  • chore(opensearch, grafana): Add more granular tables for search latency by type by @acaprau in #11186
  • chore: jira perm sync logs by @evan-onyx in #11184
  • feat(craft): user file sync to sandboxes via push daemon by @wenxi-onyx in #11158
  • feat(craft): sidecar container for control-plane operations by @wenxi-onyx in #11174
  • chore(craft): add infra todos and bump default sandbox image version by @wenxi-onyx in #11189
  • feat(enterprise-settings): add custom help link and hide-branding toggle by @Subash-Mohan in #11148
  • chore(deps): bump j178/prek-action from 2.0.2 to 2.0.3 by @dependabot[bot] in #11192
  • feat(opal): move colors.css into Opal package by @raunakab in #11122
  • docs(craft): infra todos by @wenxi-onyx in #11197
  • fix(ci): build opal package before vercel deploy-preview by @raunakab in #11204
  • feat(admin): add Security and Hardening admin page stub by @jmelahman in #11200
  • feat(llm): custom model display names + consolidate LLM types by @raunakab in #11195
  • chore(craft): reorganize docs by @wenxi-onyx in #11210
  • fix(opal): build dist via prepare hook on npm ci by @nmgarza5 in #11203
  • chore(skills): remove broken test by @wenxi-onyx in #11212
  • fix(craft): symlink user library into session by @wenxi-onyx in #11209
  • feat(indexing): skip re-indexing documents whose content hasn't changed by @Bo-Onyx in #11159
  • test(craft): scope IRSA test to sandbox-side checks by @wenxi-onyx in #11217
  • fix(ci): collapse playwright/integration skip workflows into single workflow by @jmelahman in #11214
  • fix: jira perm sync dc v10 by @evan-onyx in #11187
  • fix(multitenant): allow tenant_dev in tenant ID iteration by @nmgarza5 in #11205
  • chore(logging, celery): Single source of truth for logging in celery workers by @acaprau in #11190
  • feat(opensearch): Remove Vespa as an option entirely by @acaprau in #11207
  • fix(ollama): honor Modelfile num_ctx when fetching models (#11160) to release v4.0 by @onyx-cherry-pick[bot] in #11231
  • fix: mcp oauth token handling (#11238) to release v4.0 by @onyx-cherry-pick[bot] in #11240
  • feat(tracing): populate Langfuse user_id and release on traces (#11247) to release v4.0 by @onyx-cherry-pick[bot] in #11251
  • fix(chat): cache failed plaintext extractions to stop S3 re-fetch storm (#11268) to release v4.0 by @onyx-cherry-pick[bot] in #11286
  • fix: confluence pagination limit (#11284) to release v4.0 by @evan-onyx in #11295
  • fix(metrics): populate llm_model column for single-model chats (#11309) to release v4.0 by @onyx-cherry-pick[bot] in #11315
  • fix(voice): unbreak OpenAI STT after Realtime Beta API deprecation (#11322) to release v4.0 by @onyx-cherry-pick[bot] in #11329
  • fix: confluence pagination limit2 (#11291) to release v4.0 by @evan-onyx in #11299
  • fix: sharepoint download retries (#11221) to release v4.0 by @evan-onyx in #11394
  • fix: docfetching doc count (#11294) to release v4.0 by @onyx-cherry-pick[bot] in #11296
  • fix(icons): size unsized @opal/icons usages (#11239) to release v4.0 by @onyx-cherry-pick[bot] in #11246
  • fix: mcp user email replacement (#11390) to release v4.0 by @onyx-cherry-pick[bot] in #11407

New Contributors

Full Changelog: v3.3.8...v4.0.0

Don't miss a new onyx release

NewReleases is sending notifications on new releases.