Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
256 commits
Select commit Hold shift + click to select a range
a53f09b
build(deps): bump actions/setup-go from 6.3.0 to 6.4.0 in /.github/wo…
dependabot[bot] Apr 13, 2026
0e9de2f
build(deps): bump actions/setup-go from 6.3.0 to 6.4.0 in /.github/ac…
dependabot[bot] Apr 13, 2026
cf6e193
Add missing license comments in go.mod (#4938)
pietern Apr 13, 2026
fde66e1
Inline indirect gopkg.in/yaml.v3 dependency (#4937)
pietern Apr 13, 2026
54e4b0b
Use SPDX license identifiers in go.mod and add test to enforce them (…
pietern Apr 13, 2026
6dd4294
Update NOTICE file and add test to enforce completeness (#4943)
pietern Apr 13, 2026
eacf329
direct: Fix permissions for resources.models (#4941)
denik Apr 13, 2026
c7771a8
Remove direct dependency on golang.org/x/exp (#4944)
pietern Apr 13, 2026
dbd5096
acc: Added a test to reproduce run_as not being reset when removed fr…
andrewnester Apr 13, 2026
0ef180d
Fixed apps incorrectly using local filesystem path from artifacts pat…
andrewnester Apr 13, 2026
c20c6df
Remove KEY column from list, add register-key command
shuochen0311 Apr 13, 2026
f5003e0
Migrate from math/rand to math/rand/v2 (#4952)
pietern Apr 13, 2026
6045ca9
Use slices.Backward and slices.Reverse for reverse iteration (#4953)
pietern Apr 13, 2026
f8f8cc1
Simplify SSH flow: register command, direct SSH args, remove config w…
shuochen0311 Apr 14, 2026
4b41861
Auto-register SSH key after auth login, fix login hook matching
shuochen0311 Apr 14, 2026
4adee6a
Make --accelerator flag optional for ssh connect (#4947)
anton-107 Apr 14, 2026
7d4a13a
Use `slices` and `cmp` packages instead of `sort` (#4951)
pietern Apr 14, 2026
7413850
Use `slices.Sorted(maps.Keys(...))` to replace collect-keys-then-sort…
pietern Apr 14, 2026
ef63c88
Use `WaitGroup.Go` for remaining manual Add/Done patterns (#4956)
pietern Apr 14, 2026
881c540
direct: Pass changed fields into update mask for apps instead of wild…
andrewnester Apr 14, 2026
4f98409
Disable @-mentions in approval workflow comments (#4965)
simonfaltum Apr 14, 2026
fa37f5c
Exclude continue_293 test on models with perms and apps (#4966)
denik Apr 14, 2026
c9e08e7
Allow run_as for dashboards with embed_credentials set to false (#4961)
andrewnester Apr 14, 2026
4b43aee
Replace `os.IsNotExist` and friends with `errors.Is` (#4969)
pietern Apr 14, 2026
a5c9f95
direct: apps: mark compute_size as backend_default (#4971)
denik Apr 14, 2026
876287c
Fix resource references not correctly resolved in apps config section…
andrewnester Apr 14, 2026
853e18f
Replace sync.Once with sync.OnceFunc/OnceValue/OnceValues (#4958)
pietern Apr 14, 2026
f86c804
Fix `auth profiles` misclassifying SPOG hosts as workspace configs (#…
mihaimitrea-db Apr 14, 2026
06f4c01
Extract IsSPOG and ResolveConfigType into libs/auth (#4939)
mihaimitrea-db Apr 14, 2026
df599e9
Support passthrough args and remote commands in lakebox ssh
shuochen0311 Apr 14, 2026
cd25797
Fix workspace client init after login, persist last profile
Apr 14, 2026
4555745
Make --name flag optional for ssh connect (#4970)
anton-107 Apr 15, 2026
dfb1207
Enable synctest-based SSH proxy connection tests (#4950)
pietern Apr 15, 2026
a418f75
Bump OpenTelemetry dependencies to address CVE-2026-29181 (#4973)
pietern Apr 15, 2026
5eb6668
Bump AppKit to 0.23.0 and agent skills to 0.1.4 (#4968)
pkosiec Apr 15, 2026
8567847
Remove leftover renovate.json (#4945)
pietern Apr 15, 2026
95b7cb9
Add lint rule to prevent use of stdlib `log` package (#4957)
pietern Apr 15, 2026
4fc00e4
Use `reflect.TypeFor` instead of `reflect.TypeOf((*T)(nil)).Elem()` (…
pietern Apr 15, 2026
c1eac83
Move eng-apps-devex to OWNERTEAMS for approval resolution (#4976)
simonfaltum Apr 15, 2026
00de70c
direct: Fix processing of configs with dots in map keys (#4977)
denik Apr 15, 2026
a33efee
[Release] Release v0.297.0
deco-sdk-tagging[bot] Apr 15, 2026
2705046
Enable `usestdlibvars` linter and fix all violations (#4978)
denik Apr 15, 2026
81e6f6f
Merge pull request #1 from kelvich/lakebox-cli
kelvich Apr 15, 2026
ebda5a0
Merge fork changes + add SSH passthrough args support
shuochen0311 Apr 15, 2026
c1168a4
Add consistent terminal UI: spinners, colors, aligned output
shuochen0311 Apr 16, 2026
a2fb05f
Add CSV output format for SQL query results (#4728)
simonfaltum Apr 16, 2026
78973d0
Add X-Databricks-Org-Id header to filer API calls for SPOG hosts (#4985)
simonfaltum Apr 16, 2026
7f1b0c5
direct: Rename RefreshOutput to ModelServingEndpointRemote (#4989)
janniklasrose Apr 16, 2026
4909238
Bump databricks-sdk-go to v0.127.0 (#4984)
simonfaltum Apr 16, 2026
fd3403c
Bump Terraform provider to v1.113.0 (#4991)
simonfaltum Apr 16, 2026
0341df8
Truncate file lists in maintainer-approval comments (#4998)
simonfaltum Apr 16, 2026
0c8b5a0
fix(ssh): SaveSSHKeyPair no longer removes the shared key directory (…
ilia-db Apr 17, 2026
03e2b98
Bump Go toolchain to 1.25.9 (#5004)
pietern Apr 17, 2026
39573ae
Update product names: Workflows→Jobs, Delta Live Tables→Spark Declara…
lennartkats-db Apr 17, 2026
bfde237
Add workflow to automatically bump Go toolchain (#5010)
pietern Apr 17, 2026
d4cfed7
Use hardcoded ArmoredPublicKey for TF binary installation (#5021)
andrewnester Apr 19, 2026
37738c3
Add tag input to release-build workflow_dispatch (#5020)
pietern Apr 19, 2026
57285dd
acceptance: raise default test script timeout to 60s (#5023)
denik Apr 20, 2026
5202ec2
Add support for Vector Search Endpoint (direct only) (#4887)
janniklasrose Apr 20, 2026
363f15b
Use merge base for lintdiff comparison instead of main tip (#4981)
denik Apr 20, 2026
2ad75c3
acceptance: fix UV_PYTHON_INSTALL_DIR to use actual managed Python di…
denik Apr 20, 2026
02897ca
Backport CHANGELOG.md entries from patch versions released (#5030)
andrewnester Apr 20, 2026
11008d7
acc: Make run_as/job_default test run only on direct (#5012)
andrewnester Apr 20, 2026
0bf8326
Accept "yes" in addition to "y" for AskYesOrNo prompts (#5025)
simonfaltum Apr 20, 2026
417095b
Remove `experimental-jobs-as-code` template (#4999)
denik Apr 20, 2026
4ae8d02
direct: Fix permanent drift in sql warehouses caused by creator_name …
andrewnester Apr 20, 2026
70b814e
Add experimental workspace open command (#4727)
simonfaltum Apr 20, 2026
64a5907
Add `bundle debug list-targets` command (#5005)
pavloKozlov Apr 20, 2026
c20559d
Fix nil pointer dereference in `WaitForDeploymentToComplete` (#4993)
denik Apr 20, 2026
db527d1
Add --auto-approve to experimental prompt sites (#5026)
simonfaltum Apr 20, 2026
a698cdc
Enable 13 more linters and fix all violations (#4997)
denik Apr 20, 2026
e24ae4e
Remove Slow tests (#5032)
denik Apr 20, 2026
ab96f3b
Fix template permission tests to be umask-independent (#5033)
denik Apr 20, 2026
f47a140
build(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 in /.github/…
dependabot[bot] Apr 20, 2026
e0141b2
build(deps): bump astral-sh/ruff-action from 3.6.1 to 4.0.0 in /.gith…
dependabot[bot] Apr 20, 2026
bf734e1
build(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 in /.github/…
dependabot[bot] Apr 20, 2026
4d358e7
build(deps): bump astral-sh/ruff-action from 3.6.1 to 4.0.0 in /.gith…
dependabot[bot] Apr 20, 2026
caf9a58
build(deps): bump actions/github-script from 8.0.0 to 9.0.0 in /.gith…
dependabot[bot] Apr 20, 2026
f2443de
Bump databricks-sdk-go to v0.128.0 (#5031)
simonfaltum Apr 20, 2026
4014404
build(deps): bump github.com/hashicorp/go-version from 1.8.0 to 1.9.0…
dependabot[bot] Apr 21, 2026
cb4c90d
bundle: add DATABRICKS_BUNDLE_HTTP_TIMEOUT_SECONDS; prop context to W…
denik Apr 21, 2026
73ea046
integration: Loosen dashboard-conflict assertion to ErrResourceConfli…
simonfaltum Apr 21, 2026
4462f5d
Treat deleted resources as not running in fail-on-active-runs check (…
pietern Apr 21, 2026
88b415f
direct: refactor permissions objectIDRef into helper with if-elseif-e…
janniklasrose Apr 21, 2026
5187c58
direct: Exclude deploy-only fields from Apps update mask (#5042)
simonfaltum Apr 21, 2026
829fbfe
acceptance: clean up vector_search_endpoints min_qps tests (#5046)
janniklasrose Apr 21, 2026
917773e
Fix lint issues in tools and codegen (#5048)
denik Apr 21, 2026
5502640
Deprecate `auth env` (#5049)
simonfaltum Apr 21, 2026
81dc649
Expose bundle deploy flags on apps deploy (#5027)
simonfaltum Apr 21, 2026
db0e351
Prompt before destroying Lakebase resources (#5052)
pietern Apr 21, 2026
39b562c
Bump AppKit in the `apps init` flow to 0.24.0 (#5054)
pkosiec Apr 21, 2026
1f3e9b3
direct: Make update mask fixed for apps (#5051)
andrewnester Apr 21, 2026
3f77063
Fix background `npm install` with `file dependencies in `apps init` f…
pkosiec Apr 21, 2026
6f48f8b
direct: Fix phantom diffs from depends_on reordering in job tasks (#4…
denik Apr 21, 2026
5d92492
Add `@asnare` to `CODEOWNERS` for labs. (#4826)
asnare Apr 21, 2026
4f090c8
acceptance: mark vector search endpoint tests as RequiresUnityCatalog…
janniklasrose Apr 22, 2026
3f3e848
build(deps-dev): bump pytest from 8.3.3 to 9.0.3 in /python (#4959)
dependabot[bot] Apr 22, 2026
f2b2431
Prepare NEXT_CHANGELOG for v0.298.0 (#5058)
pietern Apr 22, 2026
488e86a
Remove merge=union strategy for NEXT_CHANGELOG.md (#5060)
denik Apr 22, 2026
e27c99f
Cache /.well-known/databricks-config lookups in the CLI (#5011)
simonfaltum Apr 22, 2026
5d5c85f
[Release] Release v0.298.0
deco-sdk-tagging[bot] Apr 22, 2026
26612ea
acc: Fixes apps tests failing on Cloud (#5061)
andrewnester Apr 22, 2026
e35cff3
Fix nil pointer dereference in `doBuild` when shell detection fails (…
pietern Apr 22, 2026
5ba5cdc
acceptance: support `-useversion latest` and skip overwrites on timeo…
denik Apr 22, 2026
6849eff
Bump golangci-lint from v2.5.0 to v2.11.4 (#5066)
pietern Apr 22, 2026
2f35d65
auth: import FileTokenCache into CLI and wire DualWrite (#5056)
simonfaltum Apr 22, 2026
7da6408
Enable golangci-lint modernize linter (#5067)
pietern Apr 22, 2026
2f4b00d
libs/auth/storage: add dormant secure-storage foundation (#5008)
simonfaltum Apr 22, 2026
da7fc67
auth: wire secure-storage cache into CLI (#5013)
simonfaltum Apr 22, 2026
82ef643
Add deadcode CI check and remove unreachable functions (#4974)
simonfaltum Apr 22, 2026
0708134
Move tool.uv.dev-dependencies (deprecated) to dependency-groups.dev (…
janniklasrose Apr 23, 2026
f0d90e6
Re-enable integration test trigger and route cross-org dispatch throu…
mihaimitrea-db Apr 23, 2026
c8e2567
direct: Manage app lifecycle on create as well (#5069)
andrewnester Apr 23, 2026
5166341
tests: unblock CLI integration nightlies after main-branch drift (#5076)
simonfaltum Apr 23, 2026
faac692
Add interactive pager for list commands with a row template (#5015)
simonfaltum Apr 24, 2026
8e39df0
Reformat and extend AI-assistant rule files (#5078)
simonfaltum Apr 24, 2026
4a89313
Bump agent skills to v0.1.5 (#5081)
simonfaltum Apr 24, 2026
08c97f8
Extract installer skills pin to SKILLS_VERSION file (#5082)
simonfaltum Apr 24, 2026
22a957e
auth: add unit and acceptance tests for secure-storage guards (#5077)
simonfaltum Apr 27, 2026
7748059
auth: decouple CLI from SDK's Experimental_IsUnifiedHost field (#5047)
simonfaltum Apr 27, 2026
de07621
Fix crash and security defects in four packages (#5080)
arsenyinfo Apr 27, 2026
bacec5a
Use configured HTTP transport for SSH metadata fetch (#5075)
arsenyinfo Apr 27, 2026
4a4aa8b
Added release-docker.yml action to publish Docker images (#5101)
andrewnester Apr 28, 2026
30e21b5
Add relative path translation for alert_task.workspace_path in job ta…
shreyas-goenka Apr 28, 2026
7ff1a81
aitools: extract pollStatement helper and pin OnWaitTimeout (#5092)
simonfaltum Apr 28, 2026
b91f5ee
aitools: run multiple SQL queries in parallel from one invocation (#5…
simonfaltum Apr 28, 2026
2bd698f
aitools: add 'tools statement' lifecycle commands (#5095)
simonfaltum Apr 28, 2026
d0d58e8
Add changelog entry for alert_task.workspace_path translation (#5103)
shreyas-goenka Apr 28, 2026
a3f0765
aitools: parallelize discover-schema across tables and probes (#5097)
simonfaltum Apr 28, 2026
80f7a54
acceptance: merge delete_one local+cloud, replace sort_acls_json with…
denik Apr 28, 2026
86ccb6e
Add X-Databricks-Org-Id header to telemetry API calls for SPOG hosts …
shreyas-goenka Apr 28, 2026
987c2d9
Apply upstream genkit fix to warehouses update-default-warehouse-over…
janniklasrose Apr 28, 2026
d93ac04
pr-checklist: add PR description guidance for agents (#5105)
janniklasrose Apr 28, 2026
1c514fc
Publish bundle jsonschema.json as a release asset (#5083)
janniklasrose Apr 28, 2026
d58d93a
auth: rename legacy storage mode to plaintext, make it the default (#…
simonfaltum Apr 29, 2026
56a032c
Fix float precision loss in jsonschema ParseFloat (#4992)
denik Apr 29, 2026
d7ab355
Update direct engine resources impl guidelines (#5119)
denik Apr 29, 2026
d45ba87
Add PR links to NEXT_CHANGELOG entries (#5122)
shreyas-goenka Apr 29, 2026
4a6e12a
[Release] Release v0.299.0
deco-sdk-tagging[bot] Apr 29, 2026
4ad6ba3
Replace bar.com with bar.test in tests (#5125)
denik Apr 29, 2026
3c622e9
Replace Makefile with Taskfile.yml and move all generation-related lo…
denik Apr 29, 2026
f9de788
Fix CLI to match new lakebox API contract
shuochen0311 Apr 29, 2026
22be781
Persist endpoint UUID for vector_search_endpoints drift detection (#5…
janniklasrose Apr 30, 2026
1556464
Ship bundle JSON schema with the CLI release artifact (#5144)
janniklasrose Apr 30, 2026
ccf34ac
acc: Format out.test.toml in diff-friendly and copypaste-friendly way…
denik Apr 30, 2026
e5fb6e4
cmd: add count-fuzz test for auto-generated commands (#5102)
janniklasrose Apr 30, 2026
d795f40
direct: Fix spurious recreate of external volumes with trailing-slash…
denik Apr 30, 2026
0fba87d
feat(apps): surface beta plugin tier in apps init (#5090)
MarioCadenas Apr 30, 2026
97e916e
Update CLI to lakebox sandbox/ssh-keys API surface
shuochen0311 Apr 30, 2026
82e96a4
Taskfile: Fix runs on Windows (#5148)
janniklasrose Apr 30, 2026
46642d1
Show auto-stop policy in lakebox list and status
shuochen0311 May 1, 2026
412ff70
Add lakebox config command for setting auto-stop policy
shuochen0311 May 1, 2026
03a6240
Rename persist → no_autostop and document auto-clear behavior
shuochen0311 May 1, 2026
8cfe3bb
Switch idle_timeout wire type to google.protobuf.Duration
shuochen0311 May 1, 2026
a70a14f
acceptance: shorten vector_search_endpoint test name to fit 50-char A…
shreyas-goenka May 1, 2026
b87b712
[lakebox] Support staging workspaces in CLI ssh + api routing
shuochen0311 May 2, 2026
ed4f4e6
acceptance: fix vector_search_endpoint permissions config to use exis…
shreyas-goenka May 3, 2026
e95f44f
Restore variables in config-remote-sync (#5053)
ilyakuz-db May 4, 2026
e602a92
Remove no-op `promptui.SearchPrompt` assignment in warehouse picker (…
pietern May 4, 2026
87dd766
build(deps): bump github.com/google/jsonschema-go from 0.4.2 to 0.4.3…
dependabot[bot] May 4, 2026
6229134
build(deps): bump golang.org/x/text from 0.35.0 to 0.36.0 (#5086)
dependabot[bot] May 4, 2026
9a5e7d3
build(deps): bump golang.org/x/mod from 0.34.0 to 0.35.0 (#5085)
dependabot[bot] May 4, 2026
d3e28c5
build(deps): bump github.com/mattn/go-isatty from 0.0.20 to 0.0.21 (#…
dependabot[bot] May 4, 2026
e1d2a5c
build(deps): bump golang.org/x/crypto from 0.49.0 to 0.50.0 (#5084)
dependabot[bot] May 4, 2026
7c7eb24
build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in /.github/…
dependabot[bot] May 5, 2026
8a41c1c
build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in /.github/…
dependabot[bot] May 5, 2026
f51c0ca
build(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1…
dependabot[bot] May 5, 2026
b74c85f
build(deps): bump goreleaser/goreleaser-action from 7.0.0 to 7.1.0 in…
dependabot[bot] May 5, 2026
521074c
build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 in /.gi…
dependabot[bot] May 5, 2026
3c867c9
api: route per-call against unified hosts (#5137)
simonfaltum May 5, 2026
a0a117d
Replace nwidger/jsoncolor with an in-tree colorizer (#5170)
pietern May 5, 2026
fadaebc
Experimental postgres query command (PR 1/4: scaffold) (#5135)
simonfaltum May 5, 2026
42e344b
Experimental postgres query (PR 2/4): provisioned + JSON/CSV streamin…
simonfaltum May 5, 2026
67d4a5e
Experimental postgres query (PR 3/4): multi-input + error formatting …
simonfaltum May 5, 2026
e76361a
Experimental postgres query (PR 4/4): cancellation, timeout, TUI (#5143)
simonfaltum May 6, 2026
b540fec
Replace fatih/color with in-tree ANSI helpers (#5178)
pietern May 6, 2026
5d9e6e4
cmdio: wrap promptui so callers stop importing it directly (#5174)
pietern May 6, 2026
5fa9c5f
filer: detect notebook already-exists across both error formats (#5106)
shreyas-goenka May 6, 2026
74fb879
acceptance: skip integration_whl/wrapper{,_custom_params} on AWS (#5152)
shreyas-goenka May 6, 2026
1b1ad15
cmdio: drop unused PromptOptions.AllowEdit (#5177)
pietern May 6, 2026
621df37
acceptance: add default_branch to postgres project test outputs (#5107)
shreyas-goenka May 6, 2026
e961caa
Set next release version to v0.299.1 (#5176)
pietern May 6, 2026
9fc1f8d
build(deps): bump github.com/jackc/pgx/v5 from 5.9.1 to 5.9.2 (#5184)
dependabot[bot] May 6, 2026
f415407
ci: set TASK_CONCURRENCY=1 for Windows runners (#5185)
denik May 6, 2026
d316aa7
Remove Makefile (use ./task directly) (#5167)
shreyas-goenka May 6, 2026
1313ab2
engine/direct: recover from a failed Create during Recreate (#5173)
janniklasrose May 6, 2026
8e61912
python: bump pytest and pygments for Dependabot alerts (#5187)
pietern May 6, 2026
00a9f8a
Archive gotestsum JSON for unit and acc tests (#5068)
pietern May 6, 2026
3eab8c8
Validate that resource keys do not contain variable references (#5169)
andrewnester May 6, 2026
796a01d
Fix missing plugin name prefix in `--set` hint for `apps init` (#5089)
pkosiec May 6, 2026
2156629
testserver: 404 on permissions GET when V2 parent is gone (#5186)
janniklasrose May 6, 2026
45222b5
Replace gorilla/mux with Go 1.22 stdlib ServeMux in test server (#4955)
pietern May 6, 2026
42a9c25
Replace remaining real-domain test hosts with .test (#5189)
pietern May 6, 2026
e7d7525
Replace old Spark Jar integration tests with an acceptance test (#5191)
andrewnester May 6, 2026
38eb06e
Update changelog re 5127 (#5192)
denik May 6, 2026
360b53a
fix: convert duplicate YAML merge key panic to diagnostic error (#5188)
denik May 6, 2026
c6168a1
Revert vector_search_endpoints UUID persistence (#5127, #5192) (#5193)
janniklasrose May 6, 2026
c59058c
Added metric for lifecycle.started used in Apps (#5202)
andrewnester May 7, 2026
547f2c7
fix: guard against nil target entries in bundle debug list-targets (#…
pavloKozlov May 7, 2026
f506949
Add workflow to refresh jsonschema_for_docs.json after each release (…
shreyas-goenka May 7, 2026
0522580
[Release] Release v0.299.1
deco-sdk-tagging[bot] May 7, 2026
ef90f53
acceptance: skip pydabs_1000_tasks in migrate + continue_293 invarian…
pietern May 7, 2026
6115d17
auth: silently fall back to plaintext when keyring is unreachable on …
simonfaltum May 7, 2026
f0edaa4
Fix --force-pull on bundle summary and bundle open (#5028)
simonfaltum May 7, 2026
b6edcf8
acceptance: fix force_pull_commands test on macOS (#5212)
simonfaltum May 8, 2026
1dd13a4
Bump Go toolchain to go1.25.10 (#5213)
github-actions[bot] May 8, 2026
2281422
cmdio: drop AskSelect, migrate caller to RunSelect (#5219)
pietern May 8, 2026
8d8565d
auth describe: show U2M token storage location and source (#5211)
simonfaltum May 8, 2026
3fe2d04
acceptance: drop darwin-only gate from bundle open + force_pull_comma…
simonfaltum May 8, 2026
55f2cab
cmdio: relocate helpers into dedicated files; build Secret/Select on …
pietern May 8, 2026
4a58c0c
Add `selftest tui` commands for manual prompt verification (#5208)
pietern May 8, 2026
942e91c
Propagate auth env to experimental.python subprocess (#5074)
simonfaltum May 8, 2026
83efe60
auth: highlight default profile and unify pickers across login/logout…
simonfaltum May 8, 2026
e4a77e1
tests: use .test TLD for bare-hostname fixtures (#5220)
janniklasrose May 8, 2026
2f25245
Fix bundle generate job to preserve nested notebook directory structu…
varundeepsaini May 8, 2026
b65a733
Merge PR #4930: Add Lakebox CLI for managing Databricks sandbox envir…
pietern May 8, 2026
86b4295
lakebox: integrate as a 'databricks lakebox' subcommand
pietern May 8, 2026
ea75d2c
lakebox: rewrite ui.go on top of cmdio
pietern May 6, 2026
49cdfc3
lakebox: replace local ANSI consts with cmdio color helpers
pietern May 6, 2026
43807fa
cmdio: add Bold and Dim color helpers; restore lakebox parity
pietern May 6, 2026
205edce
lakebox: restore status('creating') bold and field column alignment
pietern May 6, 2026
f66fe2a
lakebox: drop unix-only exec_unix.go and runtime.GOOS branch
pietern May 7, 2026
102f279
lakebox: use libs/execv for ssh process replacement
pietern May 7, 2026
08a56be
lakebox: rewrite api.go on top of the SDK ApiClient
pietern May 7, 2026
205d545
lakebox: make spinner Close() idempotent; defer it at every spin site
pietern May 7, 2026
d356344
lakebox: hold cmdio spinner via interface; drop redundant 'finished' …
pietern May 7, 2026
e6e461f
lakebox: expose Update through the spinner wrapper
pietern May 7, 2026
adb7d73
lakebox: validate saved default before reusing it on ssh
pietern May 7, 2026
a6eece8
lakebox: add unit tests for state.go
pietern May 7, 2026
bd72f85
lakebox: add keyHash helper matching the server's algorithm
pietern May 7, 2026
4d4ca9e
lakebox: simplify keyHash with strings.SplitSeq; correct doc comment
pietern May 7, 2026
9b696ba
lakebox: simplify keyHash to byte iteration
pietern May 7, 2026
34aaad6
lakebox: correct misleading comment on keyHash test inputs
pietern May 7, 2026
4df1daf
lakebox: drop superfluous TestKeyHashIsStableLength
pietern May 7, 2026
670f66e
lakebox: align org-ID header with the rest of the codebase
pietern May 8, 2026
f6f28eb
lakebox: skip state file writes when nothing changed
pietern May 8, 2026
5807f24
lakebox: hide the subcommand from the top-level help listing
pietern May 8, 2026
3ff74bd
Stop prefixing vector_search_endpoints names (#5209)
janniklasrose May 8, 2026
1d3083f
Refactor validate_direct_only_resources and approval log loops (#5215)
janniklasrose May 8, 2026
fec675f
acc: regenerate stale out.test.toml for job_nested_notebooks (#5228)
pietern May 11, 2026
896ac8d
integration: fix TestClustersGet assertion after JSON formatter chang…
pietern May 11, 2026
596207d
test: cover nil target entries in bundle debug list-targets (#5206)
pavloKozlov May 11, 2026
dc81fe9
Make ssh setup work with interactive cluster selection (#5207)
rclarey May 11, 2026
9f7db0a
Drop unused `Default` field from `cmdio.PromptOptions` (#5229)
pietern May 11, 2026
3bff4ca
acceptance: replace TestGenerateFromExistingJobAndDeploy (#5190)
shreyas-goenka May 11, 2026
29b16f9
Merge branch 'main' into demo-lakebox
pietern May 11, 2026
33f949d
lakebox: skip Unix perm assertions in state test on Windows
pietern May 11, 2026
40b66ad
lakebox: fix CreateSandbox wire format, paginate list, surface name
pietern May 18, 2026
9439c8a
lakebox: add ssh-key list/delete, default register --name, fix list n…
akshaysingla-db May 20, 2026
6c7204a
[lakebox] Default staging SSH gateway to ue1.s.dbrx.dev
shuochen0311 May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
55 changes: 30 additions & 25 deletions .agent/rules/auto-generated-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,49 +50,54 @@ paths:

## Identification

The files matching this rule glob pattern are most likely generated artifacts. Auto-generated files generally have a comment (if the file type allows for comments) at or near the top of the file indicating that they are generated, or their file name/path may indicate they are generated. You may also consult Makefile as starting point to determine if a file is auto-generated.
Files matching this rule's glob pattern are most likely generated artifacts. Auto-generated files generally have a comment (when the file type allows it) at or near the top indicating they are generated, or their name or path signals it. You may also consult the Makefile as a starting point to determine if a file is auto-generated.

## Rules

DO NOT "MANUALLY" EDIT THESE FILES!
**RULE: Do not manually edit auto-generated files.**

If a change is needed in any matched file:
1. Find the source logic/template/annotation that drives the file.
2. Run the appropriate generator/update command.
3. Commit both the source change (if any) and regenerated outputs.
**RULE: To change a generated file, edit the source and regenerate.**

1. Find the source logic, template, or annotation that drives the file.
2. Run the appropriate generator or update command.
3. Commit both the source change (if any) and the regenerated outputs.

### Core generation commands

- Everything, in one shot:
- `./task generate` — aggregator that runs all generators below
- OpenAPI SDK/CLI command stubs and related generated artifacts:
- `make generate`
- Includes generated `cmd/account/**`, `cmd/workspace/**`, `.gitattributes`, `internal/genkit/tagging.py`, and direct engine refresh.
- `./task generate-genkit`
- Includes generated `cmd/account/**`, `cmd/workspace/**`, `.gitattributes`, `internal/genkit/tagging.py`.
- Direct engine generated YAML:
- `make generate-direct` (or `make generate-direct-apitypes`, `make generate-direct-resources`)
- `./task generate-direct` (or `./task generate-direct-apitypes`, `./task generate-direct-resources`)
- Bundle schemas:
- `make schema`
- `make schema-for-docs`
- `./task generate-schema`
- `./task generate-schema-docs`
- This can also refresh `bundle/internal/schema/annotations_openapi.yml` when OpenAPI annotation extraction is enabled.
- Bundle docs:
- `make docs`
- `./task generate-docs`
- Validation generated code:
- `make generate-validation`
- `./task generate-validation`
- Mock files:
- `go run github.com/vektra/mockery/v2@b9df18e0f7b94f0bc11af3f379c8a9aea1e1e8da`
- Python bundle codegen:
- `make -C python codegen`
- `./task pydabs-codegen`

### Acceptance and test generated outputs

Acceptance outputs are generated and should not be hand-edited (except rare, intentional mass replacement when explicitly justified by repo guidance).
**RULE: Do not hand-edit acceptance outputs.** Exception: rare, intentional mass replacement when explicitly justified by repo guidance.

Regeneration commands:

- `./task test-update`
- `./task test-update-templates` (templates only)

Typical generated files:

- Preferred regeneration:
- `make test-update`
- `make test-update-templates` (templates only)
- `make generate-out-test-toml` (only `out.test.toml`)
- Typical generated files include:
- `acceptance/**/out*`
- `acceptance/**/output.txt`
- `acceptance/**/output.*.txt`
- `acceptance/**/output/**` (materialized template output trees)
- `acceptance/**/out*`
- `acceptance/**/output.txt`
- `acceptance/**/output.*.txt`
- `acceptance/**/output/**` (materialized template output trees)

When touching acceptance sources (`databricks.yml`, scripts, templates, or test config), regenerate outputs instead of editing generated files directly.
**RULE: When touching acceptance sources, regenerate outputs instead of editing generated files.** Sources include `databricks.yml`, scripts, templates, and test config.
8 changes: 8 additions & 0 deletions .agent/rules/dresources.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
description: Rules for implementing resources in bundle/direct/dresources
globs: bundle/direct/dresources/**/*.go
paths:
- "bundle/direct/dresources/**/*.go"
---

**RULE: Before implementing or modifying a resource, read `bundle/direct/dresources/README.md`.** It covers constraints, field classification, update mask rules, async patterns, testing requirements, and state compatibility.
225 changes: 203 additions & 22 deletions .agent/rules/style-guide-go.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@ paths:

## General guidance

Please make sure code that you author is consistent with the codebase and concise.
Code you author should be consistent with the codebase and concise. The code should be self-documenting based on its function and variable names.

The code should be self-documenting based on the code and function names.

Functions should be documented with a doc comment as follows:
**RULE: Document functions with a doc comment that starts with the function name and ends with a period.**

```go
// SomeFunc does something.
Expand All @@ -22,33 +20,197 @@ func SomeFunc() {
}
```

Note how the comment starts with the name of the function and is followed by a period.
**RULE: Avoid redundant and verbose comments.** Only add a comment if it complements the code rather than repeating it.

**RULE: Focus on making implementations as small and elegant as possible.** Avoid unnecessary loops and allocations. If dropping or relaxing a requirement would simplify things, ask the user about the trade-off.

### Modern Go (1.24+) idioms

**RULE: Use `for i := range X` for integer iteration, not `for i := 0; i < X; i++`.**

**RULE: Use builtin `min()` and `max()` where possible.** They work on any type and any number of values.

**RULE: Do not capture the for-range variable.** Since Go 1.22 a new copy is created each iteration, so the capture workaround is no longer needed.

**RULE: Use empty struct types for context keys.**

Avoid redundant and verbose comments. Use terse comments and only add comments if it complements, not repeats the code.
GOOD:

Focus on making implementation as small and elegant as possible. Avoid unnecessary loops and allocations. If you see an opportunity of making things simpler by dropping or relaxing some requirements, ask user about the trade-off.
```go
type myKeyType struct{}
```

BAD:

```go
type myKeyType int
```

Use modern idiomatic Golang features (version 1.24+). Specifically:
- Use for-range for integer iteration where possible. Instead of for i:=0; i < X; i++ {} you must write for i := range X{}.
- Use builtin min() and max() where possible (works on any type and any number of values).
- Do not capture the for-range variable, since go 1.22 a new copy of the variable is created for each loop iteration.
- Use empty struct types for context keys: `type myKeyType struct{}` (not `int`).
- Define magic strings as named constants at the top of the file.
- When integrating external tools or detecting environment variables, include source reference URLs as comments so they can be traced later.
**RULE: Define magic strings as named constants at the top of the file.** When a value is used in more than one place, define a package-level constant even if the literal is short. If a related value already has a constant in the same package, follow the existing pattern instead of introducing a parallel literal.

**RULE: When integrating external tools or detecting environment variables, include source reference URLs as comments.** This lets future readers trace where the behavior came from.

### Control flow

**RULE: When several branches are alternatives for the same decision, prefer `switch` over `if / else if`.** Same-decision means: you're dispatching on one value or one boolean question and each branch is a different answer to it. Ordered precedence chains (try this, else this, else this) are a different shape; leave those as early-return `if`s.

GOOD (alternatives for one decision):

```go
switch mode {
case modeText:
renderText(out, result)
case modeJSON:
renderJSON(out, result)
default:
return fmt.Errorf("unknown mode %q", mode)
}
```

Also fine (ordered precedence, early-return style):

```go
// see libs/auth/storage/mode.go#ResolveStorageMode
if override != "" {
return override, nil
}
if envValue != "" {
return parseMode(envValue)
}
return loadFromFile()
```

**RULE: Collapse `if err != nil { return err }; return nil` to just `return err`.** The pattern is never doing anything useful in the intermediate step.

GOOD:

```go
return someCall()
```

BAD:

```go
if err := someCall(); err != nil {
return err
}
return nil
```

### Determinism

**RULE: When you build a slice by iterating over a map and its order affects tests, logs, update masks, or the wire format, sort it before returning.** Go maps have randomized iteration order, so the same input produces different outputs across runs. Reviewers catch these when they produce flaky test output or noisy diffs in update masks. If the slice is purely internal and nothing downstream observes its order, sorting is unnecessary — some accepted code in `bundle/direct/dresources/` and `bundle/config/mutator/resourcemutator/` returns unsorted slices precisely because order doesn't matter there.

GOOD:

```go
fieldPaths := make([]string, 0, len(changes))
for p := range changes {
fieldPaths = append(fieldPaths, p)
}
slices.Sort(fieldPaths)
return fieldPaths
```

BAD:

```go
fieldPaths := make([]string, 0, len(changes))
for p := range changes {
fieldPaths = append(fieldPaths, p)
}
return fieldPaths
```

### Configuration Patterns
### Environment variables

**RULE: In library and product code, use `github.com/databricks/cli/libs/env` for reading environment variables, not `os.Getenv`.** `env.Get(ctx, name)` and `env.Lookup(ctx, name)` can be overridden per-context in tests, so you don't have to mutate process-wide state to exercise a code path. `os.Getenv` is still fine in `main`, tests, and acceptance/integration harnesses where no `ctx` is available and overrides aren't needed.

GOOD:

```go
import "github.com/databricks/cli/libs/env"

token := env.Get(ctx, "DATABRICKS_TOKEN")
if path, ok := env.Lookup(ctx, "DATABRICKS_CLI_PATH"); ok {
// use path
}
```

BAD:

```go
token := os.Getenv("DATABRICKS_TOKEN")
```

### Lazy initialization

**RULE: Use `sync.OnceValue`, `sync.OnceValues`, or `sync.OnceFunc` for one-time initialization, not `sync.Once` with package variables.** The `sync.OnceValue[T]` family (Go 1.21+) removes the boilerplate and makes the cached result a first-class return value. Use `sync.OnceFunc` when the initialization has side effects and no return value (the CLI already uses it in places like `libs/cmdio/spinner.go`).

GOOD:

```go
var loadConfig = sync.OnceValues(func() (*Config, error) {
return parseConfigFile("config.yml")
})

func GetConfig() (*Config, error) {
return loadConfig()
}
```

BAD:

```go
var (
config *Config
configErr error
configOnce sync.Once
)

func GetConfig() (*Config, error) {
configOnce.Do(func() {
config, configErr = parseConfigFile("config.yml")
})
return config, configErr
}
```

Caveats that apply to both: results are cached forever (including errors), and a panic is rethrown on every subsequent call. Create a new instance if you need retry semantics.

### Constructors

When a constructor's parameter list is long enough that callers forget the order or misread positional arguments, consider grouping dependencies into a struct. This is a judgment call. The CLI has many ordinary constructors with 4+ parameters, and that's fine when the arguments are obvious at the call site. The signal for switching is readability, not parameter count.

```go
type ServiceDeps struct {
Client HTTPClient
Logger Logger
Config Config
Validator Validator
Metrics MetricsCollector
}

func NewService(deps ServiceDeps) *Service { ... }
```

### Configuration patterns

- Bundle config uses `dyn.Value` for dynamic typing
- Config loading supports includes, variable interpolation, and target overrides
- Schema generation is automated from Go struct tags

## Context

Always pass `context.Context` as a function argument; never store it in a struct. Storing context in a struct obscures the lifecycle and prevents callers from setting per-call deadlines, cancellation, and metadata (see https://go.dev/blog/context-and-structs). Do not use `context.Background()` outside of `main.go` files. In tests, use `t.Context()` (or `b.Context()` for benchmarks).
**RULE: Always pass `context.Context` as a function argument; never store it in a struct.** Storing context in a struct obscures the lifecycle and prevents callers from setting per-call deadlines, cancellation, and metadata. See https://go.dev/blog/context-and-structs.

**RULE: Do not use `context.Background()` outside of `main.go` files.**

**RULE: In tests, use `t.Context()` (or `b.Context()` for benchmarks).**

## Logging

Use the following for logging:
**RULE: Use `github.com/databricks/cli/libs/log` for debug/info/warn/error logging.** The `ctx` variable must be passed in by the caller.

```go
import "github.com/databricks/cli/libs/log"
Expand All @@ -59,15 +221,34 @@ log.Warnf(ctx, "...")
log.Errorf(ctx, "...")
```

Note that the 'ctx' variable here is something that should be passed in as
an argument by the caller.

Use cmdio.LogString to print to stdout:
**RULE: Use `cmdio.LogString` to print to stdout.**

```go
import "github.com/databricks/cli/libs/cmdio"

cmdio.LogString(ctx, "...")
```

Always output file path with forward slashes, even on Windows, so that acceptance test output is stable between OSes. Use filepath.ToSlash for this.
**RULE: Always output file paths with forward slashes, even on Windows.** Use `filepath.ToSlash` so acceptance test output is stable between OSes.

**RULE: Pick log levels deliberately.** Warn for things the user should know about and might act on. Debug for diagnostic signal a developer wants but a user shouldn't see by default. Error for actual failures that also surface as a returned error. A message that's warn-by-default but isn't user-actionable belongs at debug.

GOOD:

```go
if err := w.Config.Authenticate(); err != nil {
// user can check their profile; worth warning
log.Warnf(ctx, "could not authenticate: %v", err)
}

if err := cleanupExpiredCacheEntries(ctx); err != nil {
// internal-only, user can't act on this
log.Debugf(ctx, "cache cleanup failed: %v", err)
}
```

BAD:

```go
log.Warnf(ctx, "cache cleanup failed: %v", err) // noisy, not actionable
```
23 changes: 15 additions & 8 deletions .agent/rules/style-guide-py.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,18 @@ paths:

## General guidance

When writing Python scripts, we bias for conciseness. We think of Python in this code base as scripts.
- use Python 3.11
- Do not catch exceptions to make nicer messages, only catch if you can add critical information
- use pathlib.Path in almost all cases over os.path unless it makes code longer
- Do not add redundant comments.
- Try to keep your code small and the number of abstractions low.
- After done, format your code with `ruff format -n <path>`
- Use `#!/usr/bin/env python3` shebang.
Python in this codebase is written as scripts. Bias for conciseness.

**RULE: Use Python 3.11.**

**RULE: Use `#!/usr/bin/env python3` as the shebang.**

**RULE: Prefer `pathlib.Path` over `os.path`.** Exception: when it would make the code longer.

**RULE: Do not catch exceptions just to add a nicer message.** Only catch if you can add critical information the caller can't produce.

**RULE: Avoid redundant comments.**

**RULE: Keep code small and minimize abstractions.**

**RULE: Format with `ruff format -n <path>` before committing.**
Loading