github onyx-dot-app/onyx v4.2.0-beta.0
v4.2.0-beta

latest releases: v4.0.8, v4.1.2, v4.1.0-cloud.6...
pre-release8 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.

See the assets to download this version and install.

What's Changed

  • chore: centralize retry-after parsing by @evan-onyx in #11772
  • fix(opal): drop CSS imports via esbuild plugin instead of marking as external by @raunakab in #11816
  • ci(nightly): drop backend image from LLM provider chat tests by @jmelahman in #11818
  • fix(slack): skip doc-set and persona ACL checks for anonymous Slack bot users by @justin-tahara in #11817
  • ci(nightly-llm): surface local reproduce command on provider failure by @jmelahman in #11815
  • ci(preview): skip preview deployment when Vercel credentials are unset by @jmelahman in #11785
  • feat(opal): own z-index tokens so they survive standalone distribution by @raunakab in #11823
  • feat(craft): add session-scoped approvals by @wenxi-onyx in #11819
  • fix(scim): promote shadow EXT_PERM_USER on SCIM adoption by @nmgarza5 in #11814
  • feat(craft): Add more actions to Slack, GDrive, and Linear External Apps by @Danelegend in #11798
  • ci: add python-version input to setup-python action by @nmgarza5 in #11828
  • fix(craft): prewarm agent sessions before first prompt by @rohoswagger in #11824
  • feat(opal): add "xl" rounding variant to Card by @raunakab in #11831
  • feat(search): show active conversation name in browser tab title by @justin-tahara in #11832
  • feat(notifications): paginate retrieval api by @wenxi-onyx in #11829
  • fix(users): revalidate users table + counts after invite by @nmgarza5 in #11826
  • chore(craft): Docker compose e2e approval w/ network proxy test in CI by @acaprau in #11777
  • feat(security): gate API docs/schema behind ENABLE_PUBLIC_DOCS (default off) by @jmelahman in #11837
  • chore(craft): Enable k8s e2e approval w/ network proxy test in CI by @acaprau in #11778
  • fix(fireflies): re-scan an overlap window so late transcripts aren't dropped by @Bo-Onyx in #11835
  • fix(craft): pr-craft-compose-integration.yml doesn't need to start FE containers by @acaprau in #11839
  • chore(opal): bump version to 0.1.7 by @raunakab in #11834
  • feat(shared): scaffold @onyx-ai/shared package for web + mobile by @Subash-Mohan in #11799
  • feat(mobile): scaffold Onyx Expo (SDK 56) React Native app by @Subash-Mohan in #11800
  • ci(mobile): add lint, format & typecheck pre-commit hooks by @Subash-Mohan in #11849
  • fix(craft): pr-craft-compose-integration.yml should upload log artifacts by @acaprau in #11840
  • fix(craft): Prevent Craft model picker flash while sessions load by @rohoswagger in #11844
  • fix(mobile): pin Kotlin 2.1.20 for Android builds + add dev setup docs by @Subash-Mohan in #11848
  • feat(craft): run interactive turns in background by @rohoswagger in #11822
  • fix(external apps): show tooltip for why the creation modal is not complete by @wenxi-onyx in #11852
  • feat(security): add dedicated security_settings table by @jmelahman in #11853
  • feat(craft): codify Onyx Craft EKS infra (terraform + helm) by @rohoswagger in #11787
  • fix(craft): avoid event bus during opencode prewarm by @wenxi-onyx in #11855
  • fix(chat): tolerate deleted files referenced in chat history by @justin-tahara in #11854
  • perf(llm): cache non-admin LLM provider listings per tenant by @nmgarza5 in #11856
  • fix(craft): interrupt with single Escape by @wenxi-onyx in #11857
  • fix(craft): hydrate webapp previews through proxy by @rohoswagger in #11842
  • feat(security): runtime-configurable security settings via KV store by @jmelahman in #11453
  • feat(helm): mount custom CA certs on all outbound-TLS pods by @justin-tahara in #11858
  • fix: fall back to global default model when personal default's provider is gone by @justin-tahara in #11866
  • chore(deps): bump starlette from 0.49.3 to 1.0.1 in /backend by @dependabot[bot] in #11745
  • fix(sandbox-proxy): reduce noisy proxy logs by @wenxi-onyx in #11867
  • test(agents): split flaky welcome-page-with-assistant screenshot by @jmelahman in #11870
  • feat(opal): move sidebar layout primitives into Opal (v0.1.8) by @raunakab in #11864
  • fix(craft): cancel interrupted tool call spinner by @rohoswagger in #11851
  • fix(chat): SSE heartbeat + first-chunk stream retry to stop silent stream deaths by @nmgarza5 in #11872
  • feat(craft): make Craft runtime-only; drop the craft backend image by @rohoswagger in #11877
  • feat(opal): add SvgFile and SvgOnyxLogo icons by @raunakab in #11883
  • fix(craft): gate scheduled-run-context fetch to scheduled sessions by @rohoswagger in #11884
  • feat(mobile): add typed API client with TanStack Query by @Subash-Mohan in #11847
  • fix(craft): pr-craft-compose-integration.yml should use runs-on by @acaprau in #11865
  • perf(llm): memoize litellm reasoning-support probe per process by @nmgarza5 in #11879
  • feat(security): admin UI for runtime security settings by @jmelahman in #11863
  • fix(ods): run bun install when node_modules is empty by @jmelahman in #11895
  • chore(deps): bump azure-cognitiveservices-speech: 1.38.0->1.50.0 by @jmelahman in #11894
  • ci(craft): deploy ad-hoc sandbox images via sandbox/dev git tags by @rohoswagger in #11893
  • fix(fe): stop useAuthType clobbering the shared auth-type SWR cache by @nmgarza5 in #11896
  • fix(craft): make sandbox snapshots reliable + fail-closed idle cleanup by @rohoswagger in #11892
  • feat: rate limit chat message feedback endpoints by @justin-tahara in #11758
  • fix(terraform): expose EKS security group outputs by @wenxi-onyx in #11910
  • fix(chat): runs survive client disconnect — workers own persistence by @nmgarza5 in #11878
  • refactor(craft): store snapshots in onyx filestore by @wenxi-onyx in #11909
  • feat(connectors): add Braintrust connector by @nmgarza5 in #11880
  • chore(opal): remove className from Checkbox and RootLayout interfaces by @raunakab in #11918
  • feat(craft): codify sandbox pod spec into a Helm PodTemplate by @rohoswagger in #11919
  • fix(craft): codify sandbox proxy IRSA wiring by @wenxi-onyx in #11926
  • fix(craft): Fix k8s test, forward bare vs approve and 403 flows by @acaprau in #11882
  • feat(load-tests): Add Locust load-test harness for the chat path + deterministic mock LLM server 0/n by @justin-tahara in #11917
  • feat(craft): migrate sandbox sidecar to restartable init container by @wenxi-onyx in #11928
  • feat(craft): sneaky easter egg by @rohoswagger in #11939
  • fix(web): only render custom chat background on chat surfaces by @jmelahman in #11943
  • fix(opal/admin-sidebar): sidebar layout fixes by @raunakab in #11925
  • fix(web): add frame-ancestors CSP to prevent clickjacking by @jmelahman in #11936
  • chore: Restore ruff G004 (no f-strings in logging) and fix 15 violations that crept in by @justin-tahara in #11945
  • feat(load-tests): tool-call + deep-research support in mock LLM, scenarios, Dockerfile 1/n by @justin-tahara in #11938
  • fix(CORS): Never pair wildcard CORS origins with allow_credentials (ENG-4126) by @justin-tahara in #11948
  • chore(sidebar): reorganise sidebar utilities into lib/sidebar/ by @raunakab in #11950
  • fix(craft): Fix docker compose integration test log matching by @acaprau in #11947
  • fix(craft): use OnyxError in reset sandbox API by @wenxi-onyx in #11954
  • feat(load-tests): in-cluster harness image + k8s manifests for mock LLM and Locust 2/n by @justin-tahara in #11951
  • chore(dev): ignore sandbox image files in hot reload by @wenxi-onyx in #11953
  • chore(craft): Run docker compose integration on presubmit by @acaprau in #11949
  • fix(helm): validate Craft sandbox proxy config by @wenxi-onyx in #11956
  • fix(craft): always register all supported providers in opencode config by @rohoswagger in #11860
  • fix(fe): stop nested in model selection list by @jmelahman in #11911
  • feat(load-tests): scenario mix, multi-turn, disconnects, collapse-point ramp 3/n by @justin-tahara in #11961
  • build(craft): upgrade sandbox image to Python 3.13 by @wenxi-onyx in #11965
  • feat(security): consolidate SSRF protection into one admin setting by @jmelahman in #11881
  • feat(load-tests): Prometheus exporter + Grafana correlation dashboard 4/n by @justin-tahara in #11967
  • fix(craft): persist opencode chat history by @wenxi-onyx in #11922
  • fix(web): stop background tabs from polling the API forever by @nmgarza5 in #11962
  • fix(web): poll search settings only while a re-embedding migration is active by @nmgarza5 in #11963
  • fix(load-tests): add title + uid to correlation dashboard by @justin-tahara in #11971
  • fix(web-connector): apply URL validation across all fetch paths by @jmelahman in #11973
  • fix(indexing): cap spawned worker memory + Drive extracted-text size by @nmgarza5 in #11969
  • chore(deps): upgrade ods: 0.8.0->0.8.1 by @jmelahman in #11966
  • feat(craft): reuse standard chat message components + copy actions by @rohoswagger in #11958
  • fix(llm): route Claude Fable 5 / Mythos 5 through adaptive thinking by @jmelahman in #11992
  • feat(craft): sneaky craft easter egg by @rohoswagger in #11993
  • chore: update go toolchain to 1.26.4 by @wenxi-onyx in #12001
  • fix(cli): upgrade wish and go toolchain by @wenxi-onyx in #11997
  • fix(sandbox): update web template dependencies by @wenxi-onyx in #11999
  • fix(sandbox): update runtime toolchain by @wenxi-onyx in #11998
  • fix(deps): replace retry with tenacity to drop CVE-2022-42969 (py) by @jmelahman in #12000
  • chore(deps): enable dependabot for sandbox image by @wenxi-onyx in #12006
  • ci(cli): scan release wheels with govulncheck by @wenxi-onyx in #12009
  • feat(craft): prune session snapshots on write (keep only the latest) by @rohoswagger in #12002
  • fix(security): harden default MinIO/S3 object-storage credentials by @jmelahman in #12003
  • chore(deps-dev): bump pypdf from 6.10.2 to 6.12.0 by @dependabot[bot] in #12008
  • fix(e2e): scope settings page screenshots to the settings container by @jmelahman in #12017
  • fix(sandbox): update web template dependencies by @wenxi-onyx in #12022
  • fix(craft): set ephemeral-storage requests/limits on sandbox pods by @rohoswagger in #11921
  • refactor(craft): extract sandbox manager factory from base.py by @rohoswagger in #12029
  • test(web): deflake command-menu screenshots by masking timestamps by @jmelahman in #12035
  • feat(slack-connector): add channel exclude list with optional regex by @nmgarza5 in #11996
  • fix(cli): publish musllinux wheels by @wenxi-onyx in #12037
  • chore(search): stop inferring filters in the search pipeline by @Danelegend in #12019
  • fix(security): require USER_AUTH_SECRET on non-dev deployments by @jmelahman in #12038
  • feat(craft): show action description for external app skill commands by @rohoswagger in #12036
  • fix(web): don't shrink custom placeholders in PasswordInputTypeIn by @jmelahman in #12041
  • fix(web): sanitize docx-preview output in file preview modal by @jmelahman in #12043
  • fix(seat-limit): cloud bulk invite self-deadlocks on double advisory lock acquisition by @nmgarza5 in #12045
  • refactor(craft): flatten sandbox/manager/ into sandbox/snapshot_manager.py by @rohoswagger in #12030
  • fix(sandbox): update initial dependencies by @wenxi-onyx in #12044
  • chore(sandbox): use oxlint for web template by @wenxi-onyx in #12026
  • chore(craft): kind image refresh tooling for local dev by @rohoswagger in #12034
  • refactor(craft): move shared modules out of build api/ package by @rohoswagger in #12031
  • chore(web): remove unused @sentry/tracing dependency by @jmelahman in #12020
  • fix(scim): skip SCIM token probe below Enterprise tier by @nmgarza5 in #12004
  • fix(users): bound invite request with a timeout so the modal can't hang by @nmgarza5 in #12005
  • refactor(projects): migrate ProjectContextPanel and ProjectChatSessionList to sections/projects/ by @raunakab in #12049
  • refactor(tokens): centralize design tokens in @onyx-ai/shared by @Subash-Mohan in #11937
  • fix(projects): replace empty spacer divs with padding utilities by @raunakab in #12056
  • feat(mobile): add React Native Sidebar (Opal SidebarLayouts port) by @Subash-Mohan in #12057
  • feat(craft): background-snapshot RUNNING sandboxes in the idle sweep by @rohoswagger in #12021
  • fix(google_drive): bound connector memory by streaming documents in sub-batches by @nmgarza5 in #12059
  • chore(web): auto-rebuild opal dist CSS on checkout/pull by @Subash-Mohan in #12067
  • feat(mobile): load Hanken Grotesk + DM Mono fonts for typeface parity by @Subash-Mohan in #12069
  • fix(voice): strip markdown before TTS read-aloud playback by @Subash-Mohan in #12070
  • fix(notion): iterate block/page traversal to prevent RecursionError by @Danelegend in #12040
  • chore(cloud): temporarily pause signups by @wenxi-onyx in #12075
  • feat(llm-disablement): disable new LLM provider configuration on cloud by @raunakab in #12076
  • fix(sentry): reduce captured content in error events by @nmgarza5 in #12077
  • fix(llm): return 400 not 502 when an Ollama server is unreachable by @nmgarza5 in #12079
  • feat: structured audit logging for credential access by @justin-tahara in #12083
  • fix(app-chrome): unified chrome header — consistent height, no dead space by @raunakab in #12082
  • chore(opal): bump patch version 0.1.11 → 0.1.12 by @raunakab in #12088
  • fix(llm): prevent LLM environment sharing by @Danelegend in #12080
  • fix(ci): unblock craft compose integration after USER_AUTH_SECRET hardening by @rohoswagger in #12051
  • refactor(model-selector): unify LLMPopover, ModelSelector, LLMSelector into one by @raunakab in #11952
  • fix(app-chrome): restore header on "start an agent chat" page by @raunakab in #12093
  • fix(projects): Fix CreateProjectModal and cap description lines by @raunakab in #12094
  • feat(chat): durable chat runs — reconnect to in-flight streams by @nmgarza5 in #11927
  • feat(agent-sharing): schema for per-share permissions and ownership - 1/7 by @nmgarza5 in #12010
  • chore(opal): remove dead RootLayout.Sidebar component by @raunakab in #12106
  • fix(craft): mark failing bash commands as failed and persist them by @rohoswagger in #12050
  • feat(ods): add ods release opal to cut opal releases via bot PR by @nmgarza5 in #12095
  • refactor(craft): reorganize build package into domain packages by @rohoswagger in #12032
  • feat(agent-sharing): per-share permission model - 2/7 by @nmgarza5 in #12011
  • fix(craft): accept assignment-form basePath in next.config template test by @rohoswagger in #12114
  • fix(craft): fix /workspace/sessions volume permissions in Docker sandbox by @wenxi-onyx in #12078
  • refactor(craft): move sandbox celery tasks to background/celery/tasks/build by @rohoswagger in #12033
  • fix(craft): run docker workspace execs as sandbox user by @wenxi-onyx in #12116
  • fix(deployment): alert on create-release failure by @jmelahman in #12122
  • fix(ci): resolve draft release id via list endpoint, not tag lookup by @jmelahman in #12123
  • chore(deps): upgrade ods: 0.8.1->0.8.2 by @nmgarza5 in #12117

Full Changelog: v4.1.1...v4.2.0-beta.0

Don't miss a new onyx release

NewReleases is sending notifications on new releases.