|
1 | 1 | ````markdown |
| 2 | +Release 0.9.0 January 22, 2026 |
| 3 | + |
| 4 | +The main purpose of this release is to clean up the CLI for the hedtools and to improve the documentation in preparation for release of 1.0.0, which will be a breaking release. |
| 5 | + |
| 6 | +## Major changes |
| 7 | + |
| 8 | +### Command-line interface (CLI) overhaul |
| 9 | + |
| 10 | +**Complete CLI redesign with Git-Style commands** |
| 11 | +- Introduced unified `hedpy` command-line interface with git-style subcommand structure |
| 12 | +- Replaced legacy standalone scripts with organized command groups: `validate`, `schema`, `extract` |
| 13 | +- Added comprehensive help system with detailed command documentation |
| 14 | +- Implemented click-option-group for organized command options |
| 15 | + |
| 16 | +**New commands:** |
| 17 | +- `hedpy validate bids-dataset` - BIDS dataset validation |
| 18 | +- `hedpy validate string` - HED string validation |
| 19 | +- `hedpy validate sidecar` - JSON sidecar validation |
| 20 | +- `hedpy validate tabular` - TSV file validation |
| 21 | +- `hedpy schema validate` - Schema file validation |
| 22 | +- `hedpy schema convert` - Schema format conversion |
| 23 | +- `hedpy schema add-ids` - HED ID management |
| 24 | +- `hedpy extract bids-sidecar` - Sidecar template extraction |
| 25 | +- `hedpy extract tabular-summary` - Tabular file summarization |
| 26 | + |
| 27 | +**Enhanced output options:** |
| 28 | +- Multiple output formats: text, json, json_pp (pretty-printed JSON with metadata) |
| 29 | +- Configurable error limiting per error type |
| 30 | +- File-based and per-error error counting options |
| 31 | +- Comprehensive logging configuration with file output support |
| 32 | + |
| 33 | +### Documentation improvements |
| 34 | + |
| 35 | +**Major documentation restructuring** |
| 36 | +- Complete rewrite of user guide with comprehensive examples and workflows |
| 37 | +- Added detailed Jupyter notebook documentation section |
| 38 | +- Created extensive CLI documentation with command examples |
| 39 | +- Improved API reference organization with clearer section headers |
| 40 | +- Enhanced introduction page with quick start examples |
| 41 | +- Added troubleshooting section with common issues and solutions |
| 42 | +- Updated the RELEASE_GUIDE to better reflect current release process |
| 43 | + |
| 44 | +**New documentation features:** |
| 45 | +- Sidebar quick links for easy navigation |
| 46 | +- Custom CSS styling for improved readability |
| 47 | +- Dark mode support with proper color theming |
| 48 | +- Brand customization with project logo and name |
| 49 | +- Better code block formatting and syntax highlighting |
| 50 | +- Comprehensive examples for all major workflows |
| 51 | + |
| 52 | +### Jupyter notebook examples |
| 53 | + |
| 54 | +**New example notebooks (examples/ directory)** |
| 55 | +- `extract_json_template.ipynb` - Generate JSON sidecar templates |
| 56 | +- `find_event_combinations.ipynb` - Find unique value combinations |
| 57 | +- `merge_spreadsheet_into_sidecar.ipynb` - Merge edited annotations |
| 58 | +- `sidecar_to_spreadsheet.ipynb` - Convert JSON to spreadsheet format |
| 59 | +- `summarize_events.ipynb` - Summarize event file contents |
| 60 | +- `validate_bids_dataset.ipynb` - Validate BIDS datasets |
| 61 | +- `validate_bids_dataset_with_libraries.ipynb` - Validate with library schemas |
| 62 | +- `validate_bids_datasets.ipynb` - Batch validate multiple datasets |
| 63 | +- `validate_bids_dataset_nondefault. ipynb` - Non-standard validation scenarios |
| 64 | + |
| 65 | +**Notebook infrastructure:** |
| 66 | +- Added comprehensive README for notebooks with usage instructions |
| 67 | +- Created optional dependencies group for Jupyter support |
| 68 | +- Added notebook testing framework for validation |
| 69 | + |
| 70 | +### Core functionality enhancements |
| 71 | + |
| 72 | +**Validation improvements:** |
| 73 | +- Enhanced placeholder validation with units (e.g., "# m-per-s^2") |
| 74 | +- Fixed unit class validation for placeholders with units |
| 75 | +- Improved error reporting with better categorization |
| 76 | +- Added support for --no-log option to disable all logging |
| 77 | + |
| 78 | +**TabularSummary Enhancements:** |
| 79 | +- Added categorical limit feature to prevent memory issues with high-cardinality columns |
| 80 | +- Implemented overflow column tracking for truncated summaries |
| 81 | +- Added categorical counts metadata (total values and file counts) |
| 82 | +- Improved summary statistics and reporting |
| 83 | + |
| 84 | +**Schema processing:** |
| 85 | +- Enhanced schema validation error messages with specification links |
| 86 | +- Fixed schema attribute inheritance handling |
| 87 | +- Improved JSON schema format support |
| 88 | +- Updated conversion factor validation |
| 89 | + |
| 90 | +### Script and utility improvements |
| 91 | + |
| 92 | +**New scripts:** |
| 93 | +- `hed/scripts/validate_hed_string.py` - Standalone HED string validation |
| 94 | +- `hed/scripts/validate_hed_sidecar.py` - Standalone sidecar validation |
| 95 | +- `hed/scripts/validate_hed_tabular.py` - Standalone tabular file validation |
| 96 | +- `hed/scripts/extract_tabular_summary.py` - Non-BIDS tabular summarization |
| 97 | +- `hed/scripts/script_utils.py` - Shared utility functions for scripts |
| 98 | + |
| 99 | +**Script uilities:** |
| 100 | +- Centralized logging setup across all scripts |
| 101 | +- Standardized validation result formatting |
| 102 | +- Consistent error handling and reporting |
| 103 | +- Improved argument parsing with organized option groups |
| 104 | + |
| 105 | +### Dependencies and requirements |
| 106 | + |
| 107 | +**Updated Dependencies:** |
| 108 | +- Added `click-option-group>=0.5.0` for CLI option organization |
| 109 | +- Updated `wordcloud` from 1.9.4 to 1.9.5 |
| 110 | +- Updated `black` to >=26.1.0 with Jupyter support |
| 111 | +- Added `mdformat>=0.7.0` and `mdformat-myst>=0.1.5` for markdown formatting |
| 112 | +- Updated Sphinx and documentation dependencies |
| 113 | + |
| 114 | +**New Optional Dependency Groups:** |
| 115 | +- `examples` - Jupyter notebook support (jupyter, notebook, nbformat, ipykernel) |
| 116 | +- Updated `docs` group with version constraints |
| 117 | +- Enhanced `dev` group with markdown formatting tools |
| 118 | + |
| 119 | +### Testing enhancements |
| 120 | + |
| 121 | +**Schema test data:** |
| 122 | +- Added extensive JSON test data for schema validation |
| 123 | +- New test files for schema attribute validation |
| 124 | +- Tests for conversion factors, HED IDs, unit classes, value classes |
| 125 | +- Tests for character validation and deprecation handling |
| 126 | +- Tests for library schema attributes |
| 127 | + |
| 128 | +**Test organization:** |
| 129 | +- Improved test structure with categorized error cases |
| 130 | +- Added common causes and correction strategies to test metadata |
| 131 | +- Enhanced test documentation with specification references |
| 132 | +- Moved JSON test references from the hed-specification repository to the hed-tests repository |
| 133 | + |
| 134 | +### Documentation files |
| 135 | + |
| 136 | +**Updated documentation:** |
| 137 | +- Comprehensive CHANGELOG.md updates |
| 138 | +- Enhanced CONTRIBUTING.md with detailed workflows |
| 139 | +- Improved README. md with better examples and structure |
| 140 | +- Updated RELEASE_GUIDE.md with detailed release procedures |
| 141 | + |
| 142 | +**Configuration files:** |
| 143 | +- Added `.lycheeignore` for link checker exclusions |
| 144 | +- Added `lychee.toml` for link validation configuration |
| 145 | +- Enhanced `.gitignore` with additional patterns |
| 146 | +- Updated workflow configurations for GitHub Actions |
| 147 | + |
| 148 | +## GitHub actions and CI/CD |
| 149 | + |
| 150 | +### Workflow updates |
| 151 | + |
| 152 | +**Enhanced CI pipeline:** |
| 153 | +- Updated cache actions from v4 to v5 across all workflows |
| 154 | +- Changed default branch references from `develop` to `main` |
| 155 | +- Renamed and reorganized workflow files (. yml → .yaml) |
| 156 | +- Improved Sphinx documentation build workflow |
| 157 | + |
| 158 | +**New workflows:** |
| 159 | +- `links. yaml` - Lychee link checker for documentation (weekly schedule) |
| 160 | +- `mdformat.yaml` - Markdown formatting validation |
| 161 | +- `notebook_tests.yaml` - Jupyter notebook validation |
| 162 | +- `ruff.yaml` - Python linting with Ruff |
| 163 | + |
| 164 | +**Workflow improvements:** |
| 165 | +- Updated codespell workflow to use main branch |
| 166 | +- Enhanced documentation deployment workflow |
| 167 | +- Added proper artifact handling for GitHub Pages |
| 168 | +- Improved test isolation and parallel execution |
| 169 | + |
| 170 | +## File organization and structure |
| 171 | + |
| 172 | +### Repository structure changes |
| 173 | + |
| 174 | +**Removed:** |
| 175 | +- Removed `spec_tests/hed-specification` submodule (replaced with hed-tests) |
| 176 | +- Removed remodeling CLI commands (moved to separate repository) |
| 177 | + |
| 178 | +**Added:** |
| 179 | +- New `examples/` directory with Jupyter notebooks and README |
| 180 | +- New `hed/scripts/script_utils.py` for shared utilities |
| 181 | +- New validation scripts for string, sidecar, and tabular files |
| 182 | +- New extract script for non-BIDS tabular summaries |
| 183 | + |
| 184 | +**Updated:** |
| 185 | +- Moved documentation assets from `docs/assets/` to `docs/_static/` |
| 186 | +- Enhanced documentation structure with better organization |
| 187 | +- Improved test data organization in spec_tests/ |
| 188 | + |
| 189 | +### Code quality and formatting |
| 190 | + |
| 191 | +**Black formatting:** |
| 192 | +- Applied Black code formatter across entire codebase |
| 193 | +- Updated Black configuration for Python 3.14 support |
| 194 | +- Enhanced exclusion patterns for auto-generated files |
| 195 | + |
| 196 | +**Ruff linting:** |
| 197 | +- Added comprehensive Ruff configuration |
| 198 | +- Implemented linting rules for code quality |
| 199 | +- Added automated linting in CI pipeline |
| 200 | + |
| 201 | +**Markdown formatting:** |
| 202 | +- Added mdformat for consistent markdown styling |
| 203 | +- Configured myst-parser support |
| 204 | +- Automated markdown checking in CI |
| 205 | + |
| 206 | +## Bug fixes and minor improvements |
| 207 | + |
| 208 | +### Schema handling |
| 209 | +- Fixed MediaWiki → MEDIAWIKI naming consistency |
| 210 | +- Improved schema format detection and conversion |
| 211 | +- Enhanced schema attribute validation |
| 212 | +- Fixed inheritance handling for schema attributes |
| 213 | + |
| 214 | +### Validation |
| 215 | +- Fixed unit validation for placeholders with units |
| 216 | +- Improved error message clarity and documentation links |
| 217 | +- Fixed definition extraction from sidecars |
| 218 | +- Enhanced sidecar validation error reporting |
| 219 | + |
| 220 | +### Error reporting |
| 221 | +- Updated documentation link format in error messages |
| 222 | +- Improved error categorization and grouping |
| 223 | +- Added error iteration utility (`iter_errors`) |
| 224 | +- Enhanced printable issue formatting |
| 225 | + |
| 226 | +### Miscellaneous |
| 227 | +- Fixed various typos and formatting issues |
| 228 | +- Improved code comments and docstrings |
| 229 | +- Enhanced type hints and error handling |
| 230 | +- Cleaned up deprecated code patterns |
| 231 | + |
| 232 | +## Breaking changes |
| 233 | + |
| 234 | +**CLI command changes:** |
| 235 | +- Legacy commands are now deprecated (still work but show warnings) |
| 236 | +- Recommended migration to new `hedpy` command structure |
| 237 | +- Some command-line argument names have changed for consistency |
| 238 | + |
| 239 | +**Python version:** |
| 240 | +- Minimum Python version remains 3.10 |
| 241 | +- Added support for Python 3.14 |
| 242 | + |
| 243 | +## Migration guide |
| 244 | + |
| 245 | +### CLI Migration |
| 246 | +```bash |
| 247 | +# Old (deprecated) |
| 248 | +validate_bids /path/to/dataset |
| 249 | + |
| 250 | +# New (recommended) |
| 251 | +hedpy validate bids-dataset /path/to/dataset |
| 252 | +``` |
| 253 | + |
| 254 | +### Script Imports |
| 255 | +```python |
| 256 | +# Validation functions remain unchanged |
| 257 | +from hed import HedString, load_schema_version, BidsDataset |
| 258 | + |
| 259 | +# New utility imports available |
| 260 | +from hed.errors import iter_errors |
| 261 | +from hed.scripts.script_utils import format_validation_results |
| 262 | +``` |
| 263 | + |
2 | 264 | Release 0.8.1 December 9, 2025 |
3 | 265 |
|
4 | 266 | The primary purpose of this release was to correct the JSON format for HED schemas so that it would accurately distinguish between inherited and non-inherited attributes. The documentation layout was also improved with quick links. |
|
0 commit comments