✨ Features
- Improve table diff sample output in CLI (#3017) @Themiscodes
- Improve environment loading performance by lazy evaluating snapshot and snapshot id fields (#3038) @crericha
- Allow creating environments without changes when using selector (#3060) @izeigerman
- Add clickhouse engine adapter (#3019) @treysp
🪲 Bug fixes
- Skip loading context on run closes #1511 (#3037) @tobymao
- Rename renderer cache so it's not serialized (#3039) @tobymao
- Don't cache snapshot intervals (#3041) @izeigerman
- User-provided plan end must take precedence over the max interval end per model (#3042) @izeigerman
- Add path to Invalid model definition error, fixes #3040 (#3045) @akv-akv
- Heuristics that determine the default start date of the forward-only preview plan (#3043) @izeigerman
- Allow omitting the MODEL (...) block when name inference is activated (#3049) @georgesittas
- Test failure caused by a new version of rich (#3053) @izeigerman
- Don't process models that have already been processed (#3052) @tobymao
- Seed and model column mismatch due to normalization (#3036) @Themiscodes
- Handle missing source target aliases in sample data diff (#3046) @Themiscodes
- (bigquery) Do not use execution_project as default catalog in partitions query (#3056) @treysp
- Handle metaprogramming inspect.getfile TypeError (#3058) @georgesittas
- Cache inclusive exclusive for performance (#3057) @tobymao
- Ignore expired environments in the selector (#3059) @izeigerman
- Retain indexes when creating state table backups (#3061) @izeigerman
🧹 Chore
- Document batch_concurrency for unique_by_key closes #3031 (#3034) @tobymao
- Bump sqlglot to v25.17.0 (#3048) @georgesittas
- Treat the target environment as missing during planning if it's expired (#3051) @izeigerman
👽 Other
- Document unavailable schema placeholder for sqlmesh macros (#3035) @georgesittas
- Beautify README (#3068) @sungchun12
- Move README images to docs/readme/ (#3069) @treysp