36 Commits
Author SHA1 Message Date
roshan 92d5149cb5 fix(craft): preserve runtime files after cleanup checkpoint failures (#16398)
## Description

Idle cleanup preserves recoverable files after checkpoint or workspace
discovery failures, including on unhealthy endpoints. Kubernetes
requires complete workspace-list output. Docker rejects failed or
incomplete snapshot probes.

Migration `45662b7b63a2` adds nullable `sandbox.cleanup_checkpoint`
JSONB storage. Cleanup commits proof after snapshots and final checks,
before deletion. The proof update requires the current provisioning
attempt and observed heartbeat.

Retry requires a confirmed absent runtime and matching attempt,
workspace storage identity, and heartbeat. Heartbeats and file mutations
invalidate old proof before files change. Successful sleep and new
provisioning clear the proof.

## How Has This Been Tested?

614 sandbox tests passed with two pytest workers. Tests cover partial
Docker deletion across workers, changed storage, stale attempts, resumed
activity, and failed checkpoint commits. Migration upgrade and downgrade
SQL generation passed. Pre-commit checks passed.

PostgreSQL persistence and heartbeat-race tests were added. Their local
run was blocked because PostgreSQL was unavailable. Live Docker services
were also unavailable locally.

## Known CI blocker

Preview deployment failed with an unauthorized deploy-token error after
one infrastructure retry. See the [failed preview
run](https://github.com/onyx-dot-app/onyx/actions/runs/39660940780).

Code, Craft, database, and type checks passed. Other CI jobs are still
running.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
<!-- coderabbit-ai-generated:v1 -->

## Summary by CodeRabbit

* **Bug Fixes**
* Idle sandboxes remain running when workspace discovery or snapshot
checks fail, preserving their files, runtime, and ports.
* Interrupted cleanup can resume when the sandbox state is unchanged.
Existing workspace storage is preserved when cleanup cannot be verified.
* Uploads and file deletions are coordinated with session activity,
preventing cleanup from interfering with active file changes.
* Cleanup checkpoints are cleared when sandbox activity or lifecycle
changes make them outdated.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-22 23:02:37 +00:00
Wenxi ae8fb04ef2 feat(craft): open static HTML previews from Apps (#16573)
## Description

List static HTML outputs alongside registered apps in Craft's Apps tab.
Open these files without registering a webapp or starting a server.
Matching cards use aligned icons and left-aligned labels in a centered
column.

Serve relative pages, styles, scripts, images, and data through a
bounded, expiring folder capability. Each read checks the owner's
access. Isolated frames cannot access the parent application. Cached
assets speed repeat navigation; reload creates a fresh preview.

Apps reload refreshes both discovery and file inventory, with distinct
loading, incomplete, and error states. Uploaded HTML resets on explicit
reload even when its bytes are unchanged. Hidden frames retain
interactive state within the panel's bounded viewer cache.

Nginx preserves the incoming host and port for scoped preview policies.
Transient refresh failures retain the loaded frame. Mounted frames renew
their existing capability even when hidden, preserving page state. If
browser suspension lets it expire, the next fetch obtains a fresh grant.
Asset bytes are shared by tenant, session, path, and revision; access
checks remain per grant.

## How Has This Been Tested?

- Follow-up: 205 frontend tests, 26 backend tests, and CLI
deployment-file tests pass. Chromium verified mapped-port nginx data
fetches, modules, styles, navigation, and parent isolation.

- 66 panel, Apps, and file-preview tests passed; an additional HTML test
verifies scoped URLs and reload.
- Earlier static-preview verification passed 19 backend tests and
browser checks for relative assets, navigation, and parent isolation.
- Type checking, coverage, formatting, lint, and feature-map checks
passed.

## Additional Options

- [ ] [Optional] Please cherry-pick this PR to the latest release
version.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
<!-- coderabbit-ai-generated:v1 -->

## Summary by CodeRabbit

* **New Features**
* HTML and HTM files in Outputs now appear alongside web apps in Apps.
Select a file to open it in a preview tab, including pages that use
relative assets.
* Previews support refresh and automatically renew access. If a preview
can’t be loaded, you can retry or download the file.
* HTML previews run in a restricted viewer that limits access to other
content and blocks actions such as opening popups or submitting forms.
* **Bug Fixes**
  * Proxy requests now preserve the incoming hostname and port.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-22 22:23:49 +00:00
roshan fba54a44c3 feat(oauth): add consent UI and deployment discovery (#15638) 2026-10-08 01:49:36 +00:00
Nikolas Garza aa1756191d feat(auth): SAML providers driven by sso_provider rows (#12758) 2026-07-08 19:38:02 +00:00
Jamison LahmanandClaude Opus 4.8 f3fc2b19d1 chore(nginx): disable server_tokens to hide nginx version (#12401)
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 21:39:50 +00:00
Jamison LahmanandClaude Opus 4.7 7d66a6987b chore(deployment): wait for healthy services via docker compose --wait (#11234)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 21:37:54 +00:00
Jamison Lahman b5434b2391 chore(lint): run shellcheck in pre-commit (#10043) 2026-04-17 21:21:14 +00:00
Jamison Lahman 8a517c4f10 fix(mcp): route OAuth callback to web server instead of MCP server (#10071) 2026-04-10 15:11:46 -07:00
Nikolas Garza be7f40a28a fix(nginx): route /scim/* to api_server (#9686) 2026-03-26 17:21:57 -07:00
Jessica SinghandClaude Opus 4.6 98c8f9884b fix(voice): add WebSocket upgrade headers to nginx configs (#9558)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:53:39 +00:00
Nikolas Garza c142b2db02 chore: special sauce (#8646) 2026-02-21 01:30:36 +00:00
Wenxi bac751d4a9 feat(helm): add mcp server (#6586) 2025-12-05 00:57:05 +00:00
Wenxi bc35354ced feat(MCP): basic Onyx MCP server with search tools and indexed sources resource (#6309) 2025-11-25 02:30:55 +00:00
Chris Weaver d803b48edd feat: Increase nginx default timeout (#5677) 2025-10-09 22:13:18 +00:00
Yuhong Sun 2e0bc8caf0 feat: Easy Install (#5461) 2025-09-24 15:31:45 -07:00
Weves c3ffaa19a4 Small no-letsencrypt improvement 2025-04-15 18:29:07 -07:00
Weves cf6ff3ce4a Fix run-nginx 2025-04-05 16:00:10 -07:00
Chris Weaverandjpb80 2380c2266c Infra and Deployment for ECS Fargate (#4449)
* Infra and Deployment for ECS Fargate
---------

Co-authored-by: jpb80 <jordan.buttkevitz@gmail.com>
2025-04-03 22:43:56 -07:00
Tim Rosenblatt 0f6cf0fc58 Fixes docker logs helper text in run-nginx.sh (#3678)
The docker container name is slightly wrong, and this commit fixes it.
2025-03-26 09:03:35 -07:00
Weves bdaa293ae4 Fix nginx for prod compose file 2025-02-21 16:57:54 -08:00
Chris Weaver ad4efb5f20 Pin xmlsec version + improve SAML flow (#4054)
* Pin xmlsec version

* testing

* test nginx conf change

* Pass through more

* Cleanup + remove DOMAIN across the board
2025-02-19 16:02:05 -08:00
pablodanswer 21ec5ed795 welcome to onyx 2024-12-13 09:56:10 -08:00
Weves 6e9d7acb9c Latency logging 2024-06-01 20:18:14 -07:00
Thomas Ritaine 86215238fc fix(nginx): adjust config to correctly route /openapi.json and /api/* 2024-02-29 16:32:42 -08:00
Weves 4eaf2b1200 Add more logging to run-nginx.sh 2024-02-19 16:52:29 -08:00
Weves 29e74c0877 Fix nginx startup issues 2024-02-01 21:54:49 -08:00
Weves b352d83b8c Increase max upload size 2023-12-29 21:11:57 -08:00
Chris Weaver a8b7155b5e Add support for non-letsencrypt-based https in docker compose setup (#628) 2023-10-25 20:35:47 -07:00
Weves d2f7dff464 Add max upload size to HTTPS NGINX listener 2023-10-15 12:52:13 -07:00
Weves 5deb12523e Allow large file uploads 2023-10-10 09:11:07 -07:00
Andrea NassiandGabriele Capitani 0e65688166 Change max upload size setting (#410)
---------

Co-authored-by: Gabriele Capitani <gabrielecapitani2005@gmail.com>
2023-09-09 17:01:44 -07:00
Yuhong Sun 590fbbc253 DAN-120 Kubernetes (#98)
Sample Kubernetes deployment with Auth default on
Also includes a bugfix for credentialed connectors with Auth turned on
2023-06-14 00:11:25 -07:00
Yuhong SunandWeves 6891e4f198 Standardize connectors + permissioning + new frontend for admin pages + small fixes / improvements (#75)
Introducing permissioning, standardize onboarding for connectors, re-make the data model for connectors / credentials / index-attempts, making all environment variables optional, a bunch of small fixes + improvements.

Co-authored-by: Weves <chrisweaver101@gmail.com>
2023-05-30 19:59:57 -07:00
Yuhong Sun 0d9595733b DAN-80 Example Env files (#48)
Also added alembic migrations running automatically
2023-05-16 01:18:08 -07:00
Weves 288f43111e Use HTTP/1.1 with nginx for chunked transfers 2023-05-13 14:08:14 -07:00
Weves 5aabc5abe6 Add arbitrary domain support + website hosting to onebox setup 2023-05-07 00:38:27 -07:00