:sparkles: Features
* **(dbt)** Add support for on-run-start and on-run-end hooks (4044) themisvaltinos
* Add host/port to snowflake connection settings (4023) cduarte-ta
* Improve CLI evaluation progress bar (4000) treysp
* Add CICD bot check for linting (4027) VaggelisD
* State import/export (4038) erindru
* Make model tests run concurrently (4047) VaggelisD
:beetle: Bug fixes
* Fix macros with spaces to make them more consistent (4052) tobymao
* Fail instead of warn if cleaning up an environment failed (4054) izeigerman
* Set allow_partials models for all dbt model kinds, including full refresh models (4060) izeigerman
* Pass the model dialect when computing a hash for the column types (4067) izeigerman
* Single blueprint edge case (4071) georgesittas
* Make jinja_macros optional for environment statements (4072) themisvaltinos
* Dont wrap macro vars and str replacements in intervals (4073) georgesittas
* Python serialization edge case (4074) georgesittas
* Account for array types when showing sample in table diff (4077) themisvaltinos
* Serialize blueprint variables separately to leverage AST (4061) georgesittas
* Make dialect in dbt init noncompulsory again (4087) themisvaltinos
* Retain DBX SQL execution log level when updating spark engine adapter (4085) treysp
* Refreshing snapshot intervals for uncategorized snapshots when state is stored in databricks (4095) izeigerman
* Use duckdb to store state in bigquery / snowflake integration tests izeigerman
:broom: Chore
* Fix linter docs for new command (4057) VaggelisD
* Bump sqlglot to v26.12.1 (4062) georgesittas
* Fix airflow tests (4063) erindru
* Fix escape char warning (4065) georgesittas
* Update dbt integration doc sqlmesh init command to avoid init error (4066) JunqiYangjqy
* Add args and kwargs parameters to BaseNotificationTarget notif… (4070) vchan
* Update blueprint docs (4078) georgesittas
:alien: Other
* Update with new design (4083) sungchun12