Skip to content

AIR CLI Integration: render air get run as styled boxes#5654

Merged
riddhibhagwat-db merged 3 commits into
air-clifrom
air-integration-m1-1-ui
Jun 23, 2026
Merged

AIR CLI Integration: render air get run as styled boxes#5654
riddhibhagwat-db merged 3 commits into
air-clifrom
air-integration-m1-1-ui

Conversation

@riddhibhagwat-db

@riddhibhagwat-db riddhibhagwat-db commented Jun 18, 2026

Copy link
Copy Markdown

What

Replaces the plain-text view of air get run <id> with a one-shot, styled terminal renderer built on lipgloss (layout/styling) and termenv (hyperlinks + color-profile detection). It builds the full string and writes it once — no streaming, spinner, or redraw.

The view is two boxes:

  • Configuration — the resolved run config YAML (inline yaml_parameters, the downloaded yaml_parameters_file_path, or a synthesized fallback), colorized line by line.
  • Metadata — Run ID, Status, Submitted, Retries, Max Retries, Duration, Experiment, MLflow Run, User, Accelerators, Environment. Run ID and MLflow Run are OSC 8 hyperlinks.

Look & feel

  • Boxes share a light-purple border/title, warm Oat neutrals, and a restrained accent palette (blue for keys/links; green/amber/red reserved for the status dot).
  • Honors --no-color / NO_COLOR / non-TTY via termenv.Ascii: no escape codes, and links degrade to the bare label (the URLs remain available in -o json as dashboard_url / mlflow_url).

Scope

  • Sweep (foreach) runs and JSON output are unchanged.
  • termenv becomes a direct dependency (annotated // MIT in go.mod, added to NOTICE).

Testing

  • Unit tests in render_test.go / mlflow_test.go cover the box, field list, link fallback, config sourcing, and the MLflow run-name fetch.
  • Acceptance output regenerated (acceptance/experimental/air/get).
  • go build ./..., ./task lint-q (0 issues), and the air + acceptance suites pass.

This pull request and its description were written by Isaac.

@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Approval status: pending

/acceptance/experimental/air/ - approved by @maggiewang-db

Files: acceptance/experimental/air/get/output.txt, acceptance/experimental/air/get/test.toml

/experimental/air/ - approved by @maggiewang-db

7 files changed

General files (require maintainer)

Files: NOTICE, go.mod
Based on git history:

  • @pietern -- recent work in ./

Any maintainer (@andrewnester, @anton-107, @denik, @pietern, @shreyas-goenka, @simonfaltum, @renaudhartert-db) can approve all areas.
See OWNERS for ownership rules.

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: 125a391

Run: 28049776638

Env 🟨​KNOWN 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
🟨​ aws linux 7 13 264 1014 7:49
🟨​ aws windows 7 13 266 1012 9:46
💚​ aws-ucws linux 7 13 360 928 6:42
💚​ aws-ucws windows 7 13 362 926 6:40
💚​ azure linux 1 15 267 1012 6:10
💚​ azure windows 1 15 269 1010 6:05
💚​ azure-ucws linux 1 15 365 924 7:05
💚​ azure-ucws windows 1 15 367 922 8:01
💚​ gcp linux 1 15 263 1015 6:35
💚​ gcp windows 1 15 265 1013 6:34
20 interesting tests: 13 SKIP, 7 KNOWN
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
🟨​ TestAccept 🟨​K 🟨​K 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/permissions 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions 🟨​K 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🟨​K 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/with_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 🟨​K 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions 🟨​K 🟨​K 💚​R 💚​R 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=direct 🟨​K 🟨​K 💚​R 💚​R
🟨​ TestAccept/bundle/resources/permissions/jobs/destroy_without_mgmtperms/without_permissions/DATABRICKS_BUNDLE_ENGINE=terraform 🟨​K 🟨​K 💚​R 💚​R
🙈​ TestAccept/bundle/resources/postgres_branches/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/recreate 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/replace_existing 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/update_protected 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_branches/without_branch_id 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_endpoints/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/postgres_projects/update_display_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/synced_database_tables/basic 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
Top 20 slowest tests (at least 2 minutes):
duration env testname
4:32 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
4:21 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
4:03 gcp windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:44 gcp linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:25 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
3:23 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
3:22 aws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:52 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:51 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:51 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:50 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:48 azure windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:48 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:41 aws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:37 azure-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:35 azure-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:34 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=terraform
2:32 azure linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:31 aws-ucws linux TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct
2:31 aws-ucws windows TestAccept/bundle/resources/apps/inline_config/DATABRICKS_BUNDLE_ENGINE=direct

@riddhibhagwat-db riddhibhagwat-db changed the title experimental/air: render air get run as styled boxes AIR CLI Migration: render air get run as styled boxes Jun 18, 2026
@riddhibhagwat-db riddhibhagwat-db force-pushed the air-integration-m1-1-ui branch from 0275200 to 40a652a Compare June 18, 2026 21:50
Replace the plain text view of `air get run <id>` with a one-shot,
styled terminal renderer built on lipgloss + termenv:

- Configuration box: the resolved run config YAML (inline params,
  downloaded params file, or synthesized), colorized line by line.
- Metadata box: Run ID, Status, Submitted, Retries, Max Retries,
  Duration, Experiment, MLflow Run, User, Accelerators, Environment,
  with OSC 8 hyperlinks on Run ID and MLflow Run.

Boxes share a light-purple border/title, warm Oat neutrals, and a
restrained accent palette. Honors --no-color / NO_COLOR / non-TTY via
termenv.Ascii; links degrade to the bare label (URLs stay in -o json).

Sweep (foreach) runs and JSON output are unchanged. termenv becomes a
direct dependency (annotated in go.mod and NOTICE).

Co-authored-by: Isaac
Comment thread experimental/air/cmd/render.go
@riddhibhagwat-db riddhibhagwat-db changed the title AIR CLI Migration: render air get run as styled boxes AIR CLI Integration: render air get run as styled boxes Jun 22, 2026
Co-authored-by: Maggie Wang <141875985+maggiewang-db@users.noreply.github.com>
The bare-URL footer added in the previous commit prints `Run URL:` /
`MLflow URL:` lines after the boxes; regenerate the acceptance golden so
the air get acceptance test matches.

Co-authored-by: Isaac
@riddhibhagwat-db riddhibhagwat-db merged commit e118e67 into air-cli Jun 23, 2026
27 of 28 checks passed
@riddhibhagwat-db riddhibhagwat-db deleted the air-integration-m1-1-ui branch June 23, 2026 22:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants