Version 1.1.0
The following are the main changes since release 1.0.17.
Plotting & Visualization
We now support “backtest plots”, which are plots for evaluations (backtests). These are flexible, configurable plots. Currently, as a prototype, we provide a few simple plots, but developers can quite easily implement other plots. In the current version, this is a prototype, and a known issue is that this plot may fail to load in the modeling app if there is too much data (due to timeout in the routes API). This will be fixed in a future version.
Metric System
New system for implementing custom metrics for evaluations.
A few example metrics are implemented, and developers can easily add new ones through a modular system.
Documentation and a tutorial for developing metrics:
🔗 https://github.com/dhis2-chap/Assessment_example_chap_compatible
Database Migration System (Alembic)
- Complete Alembic integration for database schema migrations with documentation
- Automatic migrations on
chap servestartup - Enables upgrading chap-core without losing previous data
Model Integration through chapkit (Experimental)
- Experimental support for running models with the new chapkit framework
🔗 https://dhis2-chap.github.io/chapkit/ - Future plan: gradually move all model development to chapkit
- Currently partial/experimental support in chap-core
- Documentation:
🔗 https://dhis2-chap.github.io/chap-core/external_models/chapkit.html
Infrastructure & Performance
Python
- Migrated from Python 3.10 → 3.13
Docker Improvements
- Gunicorn-based production server replacing direct Uvicorn
- Pre-built worker images cached in GHCR (including INLA worker image)
- Fixed health checks and container orchestration
- Better logging from Gunicorn to stdout for Docker logs
- Containers now run as non-root
chapuser
REST API Enhancements
- Refactored backtest endpoints (
create-backtest-with-data) - New endpoints: plots, metrics, dataset info, predictions
- Deprecated endpoints removed (old
evaluate,predict,list-features) - Improved error handling and logging
Code Quality & Cleanup
Removed Legacy Code
- Google Earth Engine integration removed
- COVID masking code removed
- Simulation code cleanup
LocationLookupremoved- Old evaluation functions removed
Refactoring
rest_api_src→rest_api- Dataset models refactored with optional period types
- Cleaned up model template configuration
Bug Fixes & Stability
- GeoJSON handling improvements (skip large geometries to prevent timeouts)
- Docker Compose integration test fixes
- Fixed column names in report output
- Fixed metric names in pandas DataFrames
Testing & CI
- Cleanup and speed improvements to test suite
- Integration tests for Docker Compose flows improved
- Weekly data support in backtest tests
- New test fixtures for datasets and backtests
- GitHub Actions caching improvements
Minor Improvements
- New models added to default installation (including INLA baseline model)
- Better dataset seeding on startup
- Optional intervention data in simulations
- Improved documentation for newcomers
Breaking Changes
- Python 3.10 → 3.13 required
- Google Earth Engine dependencies removed
- REST API endpoints refactored (deprecated endpoints removed)