Enhancements
- Add Data.set_data_io(), which allows for setting a `DataIO` to a data object after-the-fact. bendichter and CodyCBakerPhD [1013](https://github.com/hdmf-dev/hdmf/pull/1013)
- Added `add_ref_termset`, updated helper methods for `HERD`, revised `add_ref` to support validations prior to populating the tables
and added `add_ref_container`. mavaylon1 [968](https://github.com/hdmf-dev/hdmf/pull/968)
- Use `stacklevel` in most warnings. rly [1027](https://github.com/hdmf-dev/hdmf/pull/1027)
- Fixed broken links in documentation and added internal link checking to workflows. stephprince [1031](https://github.com/hdmf-dev/hdmf/pull/1031)
Minor Improvements
- Updated `__gather_columns` to ignore the order of bases when generating columns from the super class. mavaylon1 [991](https://github.com/hdmf-dev/hdmf/pull/991)
- Update `get_key` to return all the keys if there are multiple within a `HERD` instance. mavaylon1 [999](https://github.com/hdmf-dev/hdmf/pull/999)
- Improve HTML rendering of tables. bendichter [998](https://github.com/hdmf-dev/hdmf/pull/998)
- Improved issue and PR templates. rly [1004](https://github.com/hdmf-dev/hdmf/pull/1004)
- Added check during validation for if a variable length dataset is empty. bendichter, oruebel [789](https://github.com/hdmf-dev/hdmf/pull/789)
Bug fixes
- Fixed issue with custom class generation when a spec has a `name`. rly [1006](https://github.com/hdmf-dev/hdmf/pull/1006)
- Fixed issue with usage of deprecated `ruamel.yaml.safe_load` in `src/hdmf/testing/validate_spec.py`. rly [1008](https://github.com/hdmf-dev/hdmf/pull/1008)
- Fixed issue where `ElementIdentifiers` data could be set to non-integer values. rly [1009](https://github.com/hdmf-dev/hdmf/pull/1009)
- Fixed issue where string datasets/attributes with isodatetime-formatted values failed validation against a text spec. rly [1026](https://github.com/hdmf-dev/hdmf/pull/1026)