Skip to main content

Documentation Index

Fetch the complete documentation index at: https://oxy.tech/docs/llms.txt

Use this file to discover all available pages before exploring further.

New Features

Oxygen Design System

The web app now ships on a unified three-layer design token system with Light, Dark, and System theme modes. Light mode is the new default surface, with Dark available as an opt-in alongside system-preference following.
  • Three-mode theme toggle — A new Light / Dark / System control lets you pick your preferred surface or follow your operating system’s appearance. Selection is persisted across reloads and reflows the entire UI — surfaces, text contrast, status colors, charts, and the Monaco editor — without a page refresh.
  • Light mode as the new default — Light is now the baseline surface, with text and status hues tuned for AA contrast on white. Dark mode mirrors the same ladder with brighter, more visible hues against dark surfaces.
  • Refined brand and status palette — The full Oxy-Blue palette (50–950) plus secondary hues (purple, pink, red, amber, orange, green, sky, indigo) are exposed as semantic tokens, with brand-blue chart ramps inverted automatically in dark mode for legibility.
  • Inter as the system font — Inter ships bundled with the app (no CDN fetch) and a new typography scale (.t-display, .t-h1.t-h3, .t-body, .t-small, .t-button, .t-label, .t-code) provides consistent text styling across every screen.

Higher-Quality Builder Onboarding

Workspace onboarding produces noticeably better YAML now, with new validation steps that catch broken queries before they ever reach the UI. The builder agent also picks up an on-demand reference-lookup tool so it can pull authoritative guidance only when it’s needed.
  • End-to-end smoke tests during onboarding — After generating semantic views, topics, and Data Apps, the builder now runs each artifact end-to-end and self-corrects on failure. Apps in particular are executed through the same path the dashboard uses on first load, so malformed SQL (broken JOINs, dialect mismatches, type errors) is caught and fixed during onboarding rather than surfacing as a blank chart later.
  • Smarter topic and dashboard selection — The App phase now profiles every topic (rows, cardinality, coverage, stddev) and picks the highest-scoring one for the initial dashboard, instead of choosing alphabetically. The follow-up App2 phase reads the overview to avoid duplication, discovers foreign-key relationships across semantic views, and prefers a cross-topic JOIN dashboard when viable — surfacing more interesting first-run dashboards.
  • Warehouse-aware date handling — Semantic views generated during onboarding now use a pattern-first workflow: sample the column, then pick a per-warehouse cast for ClickHouse, BigQuery, Snowflake, Postgres, or DuckDB. This eliminates a common class of dashboard-load failures where date columns were treated as strings.
  • Foreign-key awareness across tables — When a semantic view spans multiple tables, the builder now declares type: foreign entities for FK columns, so dashboards render human-readable references instead of raw UUIDs.
  • On-demand reference cards — The builder has a new lookup_reference tool that fetches authoritative cards (semantic layer, app builder, agent builder, agentic builder) only when needed. The interactive Cmd+I builder benefits transparently, and dashboards built mid-conversation get the same quality guidance as fresh onboarding runs.

Faster Builder Onboarding

Onboarding runs are now meaningfully snappier and more reliable to resume.
  • ~12 seconds shaved per run — Onboarding skips a per-phase interpretation pass that the UI didn’t surface anyway, reclaiming ~2 seconds across each of the six phases.
  • Trimmer per-phase tool surface — Each onboarding phase now sees only the tools it actually needs, dropping ~3–5K tokens of prompt overhead per call and reducing irrelevant tool-selection noise.
  • Server restarts no longer lose onboarding — If the server restarts while a workspace is being set up, the builder now resumes against the same model and vendor it was using before — even if config.yml hadn’t been written yet.

Platform Improvements

Airhouse Credentials

  • Ephemeral credential model — Airhouse access no longer relies on per-user state. Workspaces now mint short-lived credentials on demand from a service account, simplifying credential lifecycle and removing rotation surface area for operators.
  • Revoke individual tokens — Admins can revoke a specific Airhouse credential through a new DELETE /airhouse/me/tokens/:username endpoint, in place of the previous password-rotation flow.
  • Clearer Airhouse error feedback — Admin Airhouse operations now distinguish between authentication failures, permission errors, and rate-limit responses, surfacing actionable error messages instead of generic failures.
  • More informative Postgres errors — Postgres connector errors now preserve SQLSTATE codes and the original server message, making diagnostics from logs and error responses substantially more actionable.

Builder Reliability

  • Stable cached prompt across workspaces — The builder’s cached prompt prefix is now workspace-independent, so prompt-cache hits work as expected when teammates collaborate on multiple workspaces in the same session.
  • Larger files no longer overflow context — The builder’s prompt scaffolding has been trimmed and authoritative reference content moved off the cached prefix, leaving more room for actual file content during long conversations.

Mobile & Accessibility

  • Mobile-friendly settings and dialogs — The Settings and Manage Workspaces dialogs are now rendered at the app root and close the sidebar on mobile when opened, so they always appear on top and don’t fight the navigation drawer for screen space.
  • Cleaner chat panel on small screens — The Home chat panel, Agent selector, and mode toggles now truncate, wrap, and size icons gracefully on narrow viewports for a less cramped layout on phones and split-screen windows.
  • Screen reader-friendly toggles — Auto-approve and similar toggle buttons in the Chat panel, Builder dialog, and Builder message input now expose proper role="switch" and aria-checked semantics for assistive technologies.
  • No more “ghost” unclickable pages — Fixed a long-standing Radix dropdown menu issue that could leave the page unclickable after navigating away from an open menu by explicitly clearing pointer-events on the body.

Billing UI Polish

  • Skeleton loaders for billing — The billing section now shows skeleton placeholders for the subscription summary and invoice list while data loads, replacing the previous plain “Loading…” text and reducing perceived latency.
  • Billing tab respects the feature flag — The “Billing” tab in organization settings is now hidden when billing is disabled on the backend, and the admin billing queue surfaces a clear “Billing is disabled” notice instead of an empty state. The backend /auth/config response now exposes billing_enabled so the UI can stay in sync with deployment configuration.