# brickster 0.2.14

-   Fixed OAuth U2M and M2M authentication across multiple Databricks workspaces in one R session by isolating OAuth clients and cached tokens per workspace (#256, @zacdav-db)
-   OAuth tokens are now refreshed 40 seconds before expiry, avoiding Databricks API rejections during the final 30 seconds of a token's lifetime; this requires `{httr2}` 1.3.0 or later (#258, @zacdav-db)
-   Added `databricks-cli` authentication support for profiles created by `databricks auth login`; `{brickster}` obtains tokens through `databricks auth token`, caches only the short-lived access token in memory, and leaves durable credentials and refresh to the CLI (#258, @zacdav-db)
-   Authentication mode overrides now come from `auth_type` in the selected `.databrickscfg` profile; replace `DATABRICKS_AUTH_TYPE` with the profile field. Environment-only authentication continues to infer the mode from available credentials (#258, @zacdav-db)
-   Fixed `dbWriteTable()` and `dbAppendTable()` standard-path writes for binary columns, which now use Databricks `BINARY` types and `X'...'` literals when no staging volume is configured (#246, @zacdav-db)
-   `dbConnect()` now preserves Databricks API error details when its validation query fails (#247, @zacdav)
-   `db_perform_request()` and `db_perform_response()` now preserve useful error messages when Databricks returns non-JSON error bodies such as empty, plain-text, or HTML responses (#247, @zacdav)
-   Fixed `git_source()` erroring when `type` was left at its default (#225, @m-muecke)
-   Fixed Unity Catalog volume file requests so `db_volume_*` paths containing spaces are encoded correctly (#233, @zacdav-db)
-   `db_cluster_events()` now forwards the `event_types` argument to the API, which was previously ignored (#236, @m-muecke)
-   `db_sql_warehouse_create()` and `db_sql_warehouse_edit()` now forward the `tags` argument to the API, which was previously ignored (#240, @m-muecke)
-   Unity Catalog list helpers now preserve `next_page_token` metadata in list responses for catalogs, schemas, tables, and volumes; their list arguments are sent as documented query parameters (#244, @zacdav-db)
-   `db_uc_volumes_list()` now forwards the `max_results`, `include_browse`, and `page_token` arguments to the API, which were previously ignored (#228, @m-muecke)
-   `db_vs_indexes_query()` now sends the `score_threshold` argument to the API, which was previously ignored (#235, @m-muecke)
-   Added `show_progress` to `dbConnect()` for the DBI backend; `dbGetQuery()`, `dbFetch()`, `dbWriteTable()`, and dbplyr `collect()` now use the connection default while preserving per-call `show_progress` overrides (#223, @zacdav-db)

# brickster 0.2.13

-   Enabled `db_request()` retries for transient low-level HTTP request failures, improving resilience to intermittent curl/HTTP2 framing errors (#215)
-   Added a DBI connection-level `disposition` setting so `dbSendQuery()` and default `dbGetQuery()` calls can use `INLINE` results when direct cloud-storage downloads are blocked (#205)
-   Added Azure AD service principal OAuth M2M support (`ARM_CLIENT_ID`, `ARM_CLIENT_SECRET`, `ARM_TENANT_ID`) with optional `DATABRICKS_AUTH_TYPE` override (`oauth-m2m`, `azure-client-secret`, `oauth-u2m`); default auth resolution now prefers Azure M2M over U2M when ARM credentials are present (#185)
-   Marked DBFS REST wrappers (`db_dbfs_*`) as deprecated and moved them to internal-only, guiding users towards using volumes (`db_volume_*`)
-   Added `db_volume_download_dir()` for parallel directory downloads from Unity Catalog volumes to local directories
-   Renamed `preserve_structure` to `recursive` in `db_volume_upload_dir()` and `db_volume_download_dir()` for consistent directory traversal semantics
-   Added a new vignette for working with volumes
-   Added compact, colorized `{cli}` S3 print methods for `db_cluster_get()`/`db_cluster_list()`, `db_sql_warehouse_get()`/`db_sql_warehouse_list()`, and `db_jobs_get()`/`db_jobs_list()` that preserve nested list structures while improving at-a-glance summaries
-   Standardized DBI write progress argument naming: `dbWriteTable()` and internal `db_write_table_volume()` now use `show_progress` (#201)

# brickster 0.2.12

-   Fixed `dbplyr::compute` interaction for DBI backend (#184)
-   Added OAuth M2M support for workspace-level service principal authentication (#173, #103)
-   DBI connections accept `http_path` as an alternative to `warehouse_id` and extract the warehouse ID from `/sql/1.0/warehouses/<id>`.
-   Added RStudio/Positron Connections Pane support for the DBI backend.
-   Added DBI helpers for `dbCreateTable()`, `dbReadTable()`, and `dbRemoveTable()` with `Id`/`AsIs` support, plus offline tests for DBI table helpers.
-   Optimized SQL result fetching for single-chunk external links by using the inline link from the initial response when available.
-   Increment version of testthat required (\>= 3.3.0)

# brickster 0.2.11

-   Added Lakebase workspace database helpers (`db_lakebase_*`) including credential generation, instance listing, instance lookup by name or UID, and catalog retrieval (#113)
-   Moving all filesystem related calls to {fs} (#140)
-   The DBI backend now always respects a staging volume when specified, even for small data (#143)
-   `schemaEvolutionMode` is now always `none` when writing to tables with DBI backend and staging volumes (#147)

# brickster 0.2.10

-   Increment version of httr2 required (\>= 1.1.1)
-   DBI connections expose `max_active_connections` and `fetch_timeout` to control result download concurrency and timeouts
-   DBI/dbplyr write table methods now make two transactions (create empty table --\> insert into) to ensure type correctness
-   Allow optional schedules in `db_jobs_reset()` and propagate parameters in reset/update requests.
-   DBI/dbplyr inline writes now preserve single quotes in character columns via explicit escaping (#130)

# brickster 0.2.9

-   Added DBI + dbplyr backend support: `DatabricksSQL()` driver for standard DBI operations
-   Increase support for job level parameters
-   Added `db_jobs_repair_run`

# brickster 0.2.8

-   Added SQL Queries API coverage
-   Updated Jobs to 2.2
-   Added additional tasks for jobs: `for_each_task`, `condition_task`, `sql_query_task`, `sql_file_task`, `run_job_task`
-   Removing the Python SQL connector as `db_sql_query` supersedes it.
-   Added `db_sql_query` to simplify execution of SQL
-   Adjusted `db_repl` to handle mulit-line expressions (R only)
-   Removed RStudio Addins to send lines/selection/files to console
-   Moved arrow to Suggests

# brickster 0.2.7

-   Exporting UC table functions (`db_uc_table*`) (#72)
-   Adding support for `direct_download` option in `db_workspace_export()`
-   Exporting UC Catalog/Schema get/list functions (#72)
-   Adding support for UC Volume management (#72)
-   Fixing command execution context cancel (#86, #87)
-   Adding stricter version requirements for {httr2} (#81, #63)

# brickster 0.2.6

-   Fixing `db_volume_delete()` function (#73, @vladimirobucina)
-   Adjustments to ensure {httr2} changes don't break things (#75, @hadley)

# brickster 0.2.5

-   Adding `db_repl()` a remote REPL to a Databricks cluster (#53)
-   Removing defunct RStudio add-in for browsing Databricks compute
-   Changes to DESCRIPTION file in preperation for CRAN (#64)
-   Removal of `notebook_use_posit_repo()` and `notebook_enable_htmlwidgets()` as they are incompatible with CRAN (#64)
-   Removing kntir engine due to many render edge cases not being solvable
-   Adding shortcuts for REPL under addins
-   Added `db_context_command_run_and_wait`
-   Adjusted tests to use `withr` (#68)

# brickster 0.2.4

-   `open_workspace()` and the rstudio connection pane have been heavily revised to enhance browsing unity catalog and also remove DBFS and WSFS browsing (#52)

# brickster 0.2.3

-   Adding NEWS.md
-   Renamed `set_lib_path` to `add_lib_path` and added the `after` parameter
-   Adding OAuth U2M support (workspace level), considered the default when `DATABRICKS_TOKEN` isn't specified (e.g `db_token()` returns `NULL`)
-   Updating authentication vignette to include information on OAuth
-   Updating README.md to include quick start and clearer information
-   Adding vector search index functions
