Releases: MetOffice/CSET
v25.7.0 (2025-07-17)
Over the last two months development of CSET has been steaming ahead. In this release we bring something for everyone.
Figures have been improves so they are better layouts, colours and titles, and use consistent units.
The output webpage now includes extra information so you can tell the provenance of the output you are looking at, and easily copy to settings into your own workflow.
There is new functionality for trimming the domain boundaries (useful for
removing regions where unphysical data exists), and new recipes for calculating summary statistics within a case, such as mean, min/max, or standard deviation.
There have been a number of fixes to how common time points are selected; this has fixed a nasty issue with the diurnal cycle being offset by an hour under certain circumstances. Wind directions are now normalised to true North/East, to allow comparison between models with different conventions.
The workflow has been streamlined, and is now faster due to using an external conda environment, and has an improved tutorial, so it is easier than ever to learn how to use it. The workflow is also easier to install; rather than having to download a separate tarball, it comes included with the cset
command line.
Developers are not forgotten either, with the development environment now being setup with a single make
command, and the workflow code having moved into the main CSET package for easier testing and distribution.
PyPI package | conda-forge package | Documentation
What's Changed
- Tidy up titles in CSET output by @jwarner8 in #1395
- General improvements to plots by @jwarner8 in #1394
- Ensure all lead time in common units (hours) between models by @ukmo-huw-lewis in #1405
- Add non-aggregated cell_methods constraint to all histogram plotting recipes for surface and level variables by @ukmo-huw-lewis in #1406
- Clean up task family inheritance in include files by @jfrost-mo in #1408
- Add copy of local rose-suite.conf into output pages by @ukmo-huw-lewis in #1400
- Set 20 minute runtime limit for GitHub Actions jobs by @jfrost-mo in #1420
- Add subarea configuration to example rose-suite.conf by @jfrost-mo in #1409
- Minor fixes and additional tests for run_cset_recipe by @jfrost-mo in #1422
- Allow other python version's tests to finish running after a failure by @jfrost-mo in #1424
- Simplify and test conversion from --input-dir to --INPUT_PATHS by @jfrost-mo in #1425
- Review and reduce plot title wordcount by @ukmo-huw-lewis in #1416
- More robustly test command line argument parser by @jfrost-mo in #1426
- Correct version number in changelog by @jfrost-mo in #1407
- Ensure common time points are selected before aggregating over hour of day by @jwarner8 in #1290
- Remove environment section from bug report issue template by @jfrost-mo in #1421
- Provide value for placeholder in log message by @jfrost-mo in #1444
- Use correct recipe file for surface histogram case aggregation by @jfrost-mo in #1443
- Exclude additional VCS files from sdist manifest to prevent them being included in published packages by @jfrost-mo in #1412
- Add Makefile providing useful commands by @jfrost-mo in #1428
- Distribute workflow files inside main CSET package and add new
extract-workflow
command to unpack it for use by @jfrost-mo in #1413 - Add CSET version and date of workflow run to CSET webpage by @ukmo-huw-lewis in #1446
- Add model names to spatial_difference recipes by @ukmo-huw-lewis in #1439
- Create link to conda environment for workflow in
make setup
by @jfrost-mo in #1453 - Align time units and fix diurnal cycle aggregation bug by @ukmo-huw-lewis in #1450
- Add checks for non-hour inputs against both minute and second time parts by @ukmo-huw-lewis in #1432
- More flexible treatment of latitude/longitude and grid_latitude/grid_longitude across different model domain types by @ukmo-huw-lewis in #1403
- Add SELECT_SUBAREA method to trim cutout based on number of grid cells and add related tests by @ukmo-huw-lewis in #1433
- Filter down to required variables during workflow preprocessing to minimise data size by @ukmo-huw-lewis in #1411
- Fixes pressure model transect recipe by @daflack in #1467
- Update copyright year in README.md by @Fraetor in #1463
- Add new functionality to better control plot extents and colorbar definitions by @ukmo-huw-lewis in #1429
- Rename rose-suite.conf.txt to rose-suite.conf by @jfrost-mo in #1462
- Move
make setup
documentation to make it more prominent by @jfrost-mo in #1461 - Remove conda-environment link from development workflow to fix failing tests by @jfrost-mo in #1460
- Skip posting code coverage report on PRs made from forks by @jfrost-mo in #1468
- Include discrete colourbar for spatial visibility_in_air plots by @Sylviabohnenstengel in #1471
- Visibility follow up by @jfrost-mo in #1476
- Use temporary working directory for plotting tests by @jfrost-mo in #1475
- Update cell_methods constraint to process time aggregated input cubes by @ukmo-huw-lewis in #1472
- Add workaround for flaky preprocess tests by @jfrost-mo in #1477
- Remove dead links from documentation by @jfrost-mo in #1485
- Add extra cloud diagnostics to RAL3LFRic example config, and apply cloud diagnostic fixes by @ukmo-huw-lewis in #1478
- Add support for rainfall amount diagnostics by @ukmo-huw-lewis in #1480
- Add summary statistic (mean, max, min,...) plots and introduce additional aggregation options by @ukmo-huw-lewis in #1377
- Simplify internal package structure to make workflow more easily findable by @jfrost-mo in #1474
- Move workflow utils into rose apps by @jfrost-mo in #1489
- Clarify adding a recipe to the CSET workflow by @jfrost-mo in #1487
- Update title for domain mean timeseries aggregation of all cases to remove model names from title by @ukmo-huw-lewis in #1491
- Increases memory for ensemble plotting by @daflack in #1506
- Draft documentation update for revised cset-workflow GUI and plot settings by @ukmo-huw-lewis in #1492
- Update ceilometer_cloud_amount_maxrnd by @jfrost-mo in #1499
- Allow ensembles to run for more than ten variables by @daflack in #1507
- Update the pre-commit hook ID for ruff-check by @jfrost-mo in #1488
- Rotate UM winds to true east and true north to match LFRic by @JMEdwardsXtr in #1469
- Update and improve the workflow tutorial by @jfrost-mo in #1512
- Remove preprocess task by @jfrost-mo in #1514
- Simplify release instructions to reflect the workflow being bundled into the CSET package by @jfrost-mo in #1515
- Add CSET v25.7.0 release notes to changelog by @jfrost-mo in #1516
- Correct description for standard deviation time aggregation method in rose edit by @Sylviabohnenstengel in #1513
New Contributors
- @JMEdwardsXtr made their first contribution in #1469
- @Fraetor is an alternate account of @jfrost-mo
Full Changelog: v25.5.2...v25.7.0
v25.5.2 (2025-05-23)
A bugfix release to fix all recipes failing when run by the workflow due to undefined SUBAREA_TYPE
and SUBAREA_EXTENT
recipe variables.
PyPI package | conda-forge package | workflow tarball
What's Changed
- Update pyproject.toml metadata by @jfrost-mo in #1383
- Various minor GitHub Actions improvements by @jfrost-mo in #1387
- Add subarea variables to include files by @jfrost-mo in #1389
- Add CSET v25.5.2 release notes to changelog by @jfrost-mo in #1390
Full Changelog: v25.5.1...v25.5.2
v25.5.1 (2025-05-22)
A smaller release with some big features. We now have the capability to select a sub-area of a domain for analysis. This is useful both for looking at small parts of a large (perhaps global) domain, as well as for trimming off boundaries that may contain numerical artifacts.
We also follow up on the last release by bringing multiple model support to time series and vertical profile plots.
PyPI package | conda-forge package | workflow tarball
What's Changed
- Correct model level sort key in rose edit by @jfrost-mo in #1364
- Rationalise number of include and recipe files by introducing LEVELTYPE generic option to simplify dev and user experience by @ukmo-huw-lewis in #1328
- Support multiple models on single plot for timeseries by @refszkentla in #1365
- Support equalising hour coordinate in difference operator by @jfrost-mo in #1260
- Pair cube with corresponding coordinate when plotting line series by @jfrost-mo in #1366
- Bump minimum iris version to avoid dask issues by @jfrost-mo in #1369
- Fix formatting of cset bake example documentation by @jfrost-mo in #1379
- Improve testing of get_cube_coordindex by @jfrost-mo in #1374
- Reimplement sub-area functionality universally by @jwarner8 in #1259
- Multiple model lines on vertical profiles by @refszkentla in #1368
- Document how to switch git repository from HTTPS to SSH by @Sylviabohnenstengel in #1380
- Add CSET v25.5.1 release notes to changelog by @jfrost-mo in #1382
Full Changelog: v25.5.0...v25.5.1
v25.5.0 (2025-05-02) Multi-model histograms and more!
Amongst the many changes in this release we now have the capability to plot multiple models on the same plot, at least for histogram plots. This should be a significant aid to those comparing multiple models with CSET. We also have significantly improved documentation (though it has been online for a while), improved colour bars, various performance improvements, simplification of workflow configuration GUI, and various bug fixes.
PyPI package | conda-forge package | workflow tarball
What's Changed
- Update workflow CSET package by @jfrost-mo in #1291
- Ignore codespell error for "runN" by @jfrost-mo in #1292
- Update output image in full cylc example tutorial by @jfrost-mo in #1293
- Add fully worked example with CYLC to documentation by @jwarner8 in #1213
- include precipitation specific colorbar and unit conversion by @Sylviabohnenstengel in #1268
- Improve colorbar formatting to reduce whitespace by @ukmo-huw-lewis in #1296
- Nicer output on crash from run_cset_recipe by @jfrost-mo in #1262
- Normalise all LFRic coord names by @jfrost-mo in #1299
- Add option to skip writing output by @jfrost-mo in #1277
- Updated default colorbar definition for radiation by @ukmo-huw-lewis in #1305
- Conditionally fix times in callbacks to avoid corrupting dates by double fixing by @jfrost-mo in #1297
- Avoid writing meta.json outside tempdir during test by @jfrost-mo in #1311
- Retry failed processing tasks by @jfrost-mo in #1313
- Add SKIP_WRITE to example configuration by @jfrost-mo in #1320
- Update cset-workflow GUI organisation with clearer labelling for "General setup", "Cycling and Models", diagnostic-type and evaluation-type specific option panels by @ukmo-huw-lewis in #1310
- Drop support for python 3.10 by @jfrost-mo in #1316
- Add last few changes into v25.3.1 changelog by @jfrost-mo in #1288
- Add preprocessing task to speed up workflow by @jfrost-mo in #1301
- Add model level support to CSET by @jwarner8 in #1270
- Refactor lfric_time_callback by @jfrost-mo in #1321
- Simplify cset-workflow plot options and env variable names by @ukmo-huw-lewis in #1319
- Move diagnostic archive creation into bake by @jfrost-mo in #1326
- Provide input paths via recipe variables and remove unneeded
cset recipe-id
command by @jfrost-mo in #1329 - Update logic for reading SKIP_WRITE environment variable when running cset-workflow by @ukmo-huw-lewis in #1339
- Correctly format print-based logging in run_cset_recipe.py by @jfrost-mo in #1341
- Fix implementation of grid latitude grid longitude callback for non rotated pole inputs by @ukmo-huw-lewis in #1340
- Remove unnecessary array construction in radtime_prehour callback by @jfrost-mo in #1342
- Add category to transect recipe by @jfrost-mo in #1348
- Symbolic link to raw filesystem data to avoid slow copy by @jfrost-mo in #1352
- Add additional STASH to LFRic mappings by @jfrost-mo in #1354
- Plot all models on a single histogram plot by @refszkentla in #1324
- Order LFRic before UM in RAL3-LFRic rose config by @jfrost-mo in #1349
- Add v25.5.0 release notes and document more of the release process by @jfrost-mo in #1357
New Contributors
- @refszkentla made their first contribution in #1324
Full Changelog: v25.3.1...v25.5.0
v25.3.1 (2025-03-27) Bug fixes and minor improvements
A smaller release contains a number of bug fixes and other minor improvements ahead of a new feature release next month. The most noticeable change maybe be the plot colorbar now being horizontal to leave more space for titles and side-by-side comparisons.
PyPI package | conda-forge package | workflow tarball
What's Changed
- Remove unneeded deletion from housekeeping by @jfrost-mo in #1241
- Add conda HTTP error to common errors by @jfrost-mo in #1242
- Reduce PROCESS time limit to 15 minutes by @jfrost-mo in #1243
- Getting started documentation improvements by @jfrost-mo in #1218
- Check for staggered grid with name rather than STASH in difference operator by @jfrost-mo in #1248
- Fully sort website index by @jfrost-mo in #1249
- Increase aggregation wallclock to 3 hours by @jfrost-mo in #1250
- Skip running dummy tasks by @jfrost-mo in #1120
- Document adding a site-specific configuration by @jfrost-mo in #1251
- Bump the actions-dependencies group with 4 updates by @dependabot in #1274
- Avoid calling
os.sync()
by @jfrost-mo in #1276 - Avoid accessing non-captured output in MASS fetch script by @jfrost-mo in #1278
- Correct for instances where longitude plot bounds caused set_extent to by @ukmo-huw-lewis in #1283
- 1-line change to move default position of map colorbars to horizontal by @ukmo-huw-lewis in #1284
- Overwrite partially downloaded files from MASS by @jfrost-mo in #1281
- Add release notes for v25.3.1 by @jfrost-mo in #1286
Full Changelog: v25.3.0...v25.3.1
v25.3.0 (2025-03-06) The RAL3-LFRic release
This release is the baseline for evaluating RAL3_LFRic#708.1 with RMED Ticket #708 detailing the science configuration. It introduces a fixed evaluation functionality for RAL3-LFRic and RAL3-UM, new functionality, bug fixes, and improvements. Key features for RAL3-LFRic evaluation include:
- Surface fields: spatial plots, timeseries, histograms, model comparison plots, time aggregation by hour of day, validity time, forecast range, area averages.
- Pressure levels fields: spatial plots, timeseries, histograms, model comparison plots, time aggregation by hour of day, validity time, forecast range, area averages, vertical profiles, PDFs.
Additional capabilities: transects, point selection, QQ plots, age of air diagnostics, cape diagnostics that can be selected by the user.
The next release will add analysis on model levels, multi-line plotting, and more derived variables.
PyPI package | conda-forge package | workflow tarball
What's Changed
- Upload hidden coverage files to fix GitHub Actions breakage by @jfrost-mo in #832
- Pin GitHub Actions to specific commits to prevent random breakage by @jfrost-mo in #846
- Switch to data time cycling to support multiple models and multiple case studies or trials by @jfrost-mo in #765
- Note that all documentation shell examples use bash by @jfrost-mo in #861
- Add colorbar entries for more standard names by @jfrost-mo in #839
- Support python 3.13 and remove usage of tox in CI by @jfrost-mo in #872
- Correct execute_recipe docstring; it takes an input directory by @jfrost-mo in #869
- Fix colorbar min and max not being set on pcolormesh plots by @jfrost-mo in #870
- Error fetch_fcst task when no data found for a model, as it usually indicates a typo in the data path by @jfrost-mo in #842
- Rewrite colorbar loading to use default colorbar definition from inside CSET package by @jfrost-mo in #871
- Fix spelling of stratiform_rainfall_rate in colorbar definition by @jfrost-mo in #878
- Improve transect title by @jwarner8 in #829
- Update colorbar definitions by @daflack in #892
- Fix typo in comment by @jfrost-mo in #906
- Sort conda lock files to aid reviewing by @jfrost-mo in #890
- Explicitly use conda-forge conda channel for updating conda and resolving lock files by @jfrost-mo in #886
- Exclude
__main__.py
from test coverage measurement by @jfrost-mo in #880 - Remove HTTP status check as urlopen already does it by @jfrost-mo in #882
- Test templating variables into recipe parser by @jfrost-mo in #881
- Test recipe listing and detailing functions by @jfrost-mo in #883
- Fix type signature by @jwarner8 in #931
- Changes to fix longitude convention to be in the range -180 degrees to 180 degrees where possible by @JKPShonk in #896
- Disable strict checking that TLS certificates are well formed by @jfrost-mo in #904
- Change CSET introduction on documentation welcome page by @Sylviabohnenstengel in #899
- Harmonise variable names from UM Stash to LFRic variable and long_name by @ukmo-huw-lewis in #898
- Add date to cset plot menu items by @mo-sanamahmood in #934
- Wrap plot title and increase figure size by @Sylviabohnenstengel in #935
- Fix supported arg type in regrid operator by @jwarner8 in #948
- Use non-interactive backend for plotting by @jfrost-mo in #951
- Update to WEB_ADDR documentation. by @daflack in #955
- Add iris-grib library support by @jwarner8 in #960
- Revert "Add iris-grib to dev dependencies" by @jfrost-mo in #974
- Import CSET.recipes as recipes during testing for readability by @jfrost-mo in #968
- Add nicer error messages for unhandled exceptions by @jfrost-mo in #884
- Target lockfile update PR to source branch by @jfrost-mo in #963
- Convert CLI interface tests to not use
subprocess.run
by @jfrost-mo in #970 - Use regular install for CI tests by @jfrost-mo in #463
- Add age of air diagnostic functionality by @jwarner8 in #480
- Add mask operators by @daflack in #967
- Documentation update for mask operator by @daflack in #990
- Adds spatial perturbation operator by @daflack in #979
- New callbacks to standardise some dim names by @jwarner8 in #983
- Fix location of AOA docs by @jwarner8 in #1001
- Fix no title in surface histogram plots by @jwarner8 in #1006
- Updates generate_levels_constraint documentation for ensemble functionality by @daflack in #1003
- Log cubes that don't merge in
load_cube
operator by @jfrost-mo in #1022 - Remove unneeded
name
global attribute by @jfrost-mo in #1024 - Adds DKE functionality by @daflack in #1002
- Format JSON when writing by @jfrost-mo in #1041
- Limit domain statistics to 3 s.f. and move below plot by @jfrost-mo in #1040
- Require tasks to succeed in DEBUG mode by @jfrost-mo in #1039
- Generalise spatial plot log message by @jfrost-mo in #1042
- Separate words in callback function name with _ so it is easier to read by @jfrost-mo in #1043
- Handle sorting files outside the current directory in
sort_json.py
script by @jfrost-mo in #1046 - Replace all remaining usage of typing.Union with
|
by @jfrost-mo in #1047 - Fix typo in rose-edit help by @jfrost-mo in #1051
- Add configuration file for GitHub Issue templates by @jfrost-mo in #1035
- Merge lead time into initiation time cycling by @jfrost-mo in #1053
- Add utility function for equalising attributes by @jfrost-mo in #1052
- unify colourbar for relative_humidity between UM and LFRic. by @Sylviabohnenstengel in #1038
- unify colourbar for cloud_base_altitude between um and lfric by @Sylviabohnenstengel in #1059
- Reduce useless log messages by @jfrost-mo in #1045
- Adds collapse_by_hour_of_day operator by @daflack in #1034
- Sort colorbar JSON files via pre-commit hook by @jfrost-mo in #1060
- Handle CubeList in line plotting operator by @Sylviabohnenstengel in #954
- Ensure multiple cases are put into a single cube by @daflack in #1050
- Data loading improvements, including loading multiple models by @jfrost-mo in #1054
- Improve rose edit and simplify include files by @jfrost-mo in #1055
- Collapse by validity time by @daflack in #1067
- Update collapse_by_hour for multiple cases by @daflack in #1068
- Accept microsecond precision in iris times by @jfrost-mo in #1074
- Parallelise CI tests by @jfrost-mo in #1071
- Use "spawn" start method for multiprocessing by @jfrost-mo in #1075
- Fix issue with rose-suite.conf variable by @jwarner8 in #1082
- Remove unnecessary computation from age-of-air test by @jfrost-mo in #1081
- Share multiprocessing pool across ensemble members by @jfrost-mo in #1080
- Add data fetching script from MASS by @jfrost-mo in #1084
- Spatial difference plots by @jfrost-mo in #1061
- Make MASS fetch data script executable by @jfrost-mo in #1085
- ...
v25.2.0-pre3 (2025-02-18)
Third try, to see if I've got my release process down smoothly.
The half-hour wait for the conda-forge CDN to update is painful...
25.2.0-pre2 (2025-02-18)
Second pre-release. Hopefully we get a bit further this time.
To use the workflow download the attached cset-workflow tarball.
25.2.0-pre1 (2025-02-18)
Test release to refine release process and shake out bugs. Not intended for general consumption.
24.8.0 (2024-08-29)
This release contains a large number of bug fixes and small improvements, and sets the stage for the major cycling improvement (#750) coming in the next release in a few days.
What's Changed
- Parse recipe variables as python literals by @jfrost-mo in #683
- Fixed metplus config issue by @dasha-shchep in #693
- Clarify error message on missing files by @jfrost-mo in #663
- Update testing.rst by @Sylviabohnenstengel in #696
- Correct rst syntax added in #696 by @jfrost-mo in #700
- Suggest descriptive PR titles instead of changelog entry by @jfrost-mo in #701
- Improve PR title documentation in developer's guide by @jfrost-mo in #707
- Remove Fixes placeholder in PR template by @jfrost-mo in #705
- Update section header to match PR checklist item by @jfrost-mo in #704
- Minor wording tweak in marking PR as ready to review docs by @jfrost-mo in #702
- Add canonical URL links to documentation by @jfrost-mo in #650
- Clarify running specific tests by @jfrost-mo in #703
- Fix SET_SUBAREA being required to run some LFRIC recipes by @dasha-shchep in #717
- Remove deprecated postage stamp contour plot operator by @jfrost-mo in #710
- Remove unneeded fallback code for old recipe step keys by @jfrost-mo in #711
- Test vertical plotting with a filename specified by @jfrost-mo in #712
- Test running recipes with no collate steps and running with a specified style file by @jfrost-mo in #713
- Test handling of masked arrays in convection operators, and load convection test files with fixtures by @jfrost-mo in #714
- Ignore cartopy DownloadWarning in pytest by @jfrost-mo in #716
- LFRic extension to vertical profile by @Sylviabohnenstengel in #638
- Remove unneeded rose edit setting by @jfrost-mo in #722
- Test higher dimentional orography handling in convection operators by @jfrost-mo in #715
- Support STASH codes in generate_var_constraint by @jfrost-mo in #723
- Add cross-section transect functionality by @jwarner8 in #531
- Extend UM vertical plotting to model level by @Sylviabohnenstengel in #697
- UM spatial plot on model levels by @Sylviabohnenstengel in #699
- Enable spatial fields on full and half levels by @Sylviabohnenstengel in #695
- Fix bug in transect operator by @jwarner8 in #731
- Unquote double quoted shell values by @jfrost-mo in #729
- Remove invalid rose meta trigger for removed variable by @jfrost-mo in #733
- Add _utils operators to internal function documentation by @jfrost-mo in #735
- Don't check documentation hyperlinks in commit CI by @jfrost-mo in #749
- Generate Histograms for 2D field by @Sylviabohnenstengel in #594
- Tidy up documentation around recipes and cset bake command, introducing examples by @Sylviabohnenstengel in #641
- Create operator to combine Cubes/CubeList into single CubeList by @jwarner8 in #738
- Update copyright attribution per legal advice by @jfrost-mo in #753
- Regrid to take CubeList and Cubes by @jwarner8 in #734
- Enhance level filter operator to return all vertical levels by @jwarner8 in #728
- Mass retrieval fix by @jwarner8 in #759
- Copy source files from any named folder when installing locally by @jfrost-mo in #472
- Add missing brackets to TemporaryDirectory call when installing local CSET by @jfrost-mo in #760
- Move all website files under the workflow shared directory by @jfrost-mo in #764
- Fix overwriting when using transect on multiple variables by @jwarner8 in #766
- Add Q-Q plot functionality by @daflack in #642
- Add nc-time-axis to dependencies by @jwarner8 in #767
- Fix plot frames jumping around by @jwarner8 in #772
- Surface field histogram by @Sylviabohnenstengel in #640
- Preload plot images on web page by @jfrost-mo in #781
- Extract single point data by @JKPShonk in #577
- Filter irrelevant warning raised by regrid test by @jfrost-mo in #796
- Merge and concatinate cubes on load by @jfrost-mo in #790
- Allow Point cell methods for empty constraint, making it possible to unify UM and LFRic recipes by @jfrost-mo in #778
- Merge install_local_cset into build_conda so environment is setup in a single cylc task by @jfrost-mo in #791
- Convert time AuxCoord to DimCoord for LFRic data by @jfrost-mo in #789
- Cancel running PR checks if new commit is pushed by @jfrost-mo in #793
- Stop ruff warning about ignore-init-module-imports by @jfrost-mo in #800
- Parsing of float in workflow by @jwarner8 in #802
- Configurable plotting resolution by @jfrost-mo in #803
- General small plot improvements and website organisation by @jwarner8 in #801
- Set figsize to consistent 8 by 8 inches, and reduce resolution to 100 dpi by @jfrost-mo in #786
- Remove LFRic specific recipes now recipes can handle both UM and LFRic data by @jfrost-mo in #805
- Move workflow utility code into unstable module within CSET package by @jfrost-mo in #792
- Add pcolormesh plotting operator by @jfrost-mo in #787
- Use pcolormesh for Quicklook surface spatial plots by @jfrost-mo in #788
- Create the plot index in finish_website to avoid a data race between concurrent index writers by @jfrost-mo in #794
- Add release notes for CSET v24.8.0 by @jfrost-mo in #816
Full Changelog: v24.6.0...v24.8.0