This changelog provides a high-level overview of changes. From v0.2.0 onwards, the versioning follows the principles of Semantic Versioning. The format is inspired by Keep a Changelog.
Release 0.5.0 - 2026-05-27
- Pytest-based integration test suite for the copier template, including helpers module and CONTRIBUTING.md for the template. #140
- Submission of releases to the LinkML community on Zenodo. #141
- List of recommended mkdocs/material extensions in the project mkdocs configuration. #148
- Support for Python 3.14 in the template's CI matrix. #160
- README in the
project/directory so the folder is tracked even before generation. #161 (fixes #124) - Auto-detect WSL2 in
just setupand advise the user accordingly. #149 - Copier prompt for an existing custom LICENSE file; when set, the user's
file is preserved and
pyproject.toml'slicense-filesreferences it (using the PEP 639 SPDX expressionLicenseRef-Custom). #162 (closes #151) - Add Noel McLoughlin as a co-creator in the Zenodo metadata. #165
tool.ruffsection inpyproject.tomlexcluding auto-generated_version.pyand setting the minimum Python version. #170- Module docstrings in template
__init__.pyfiles to avoid ruff D104. #170 - New
existing_license_fileprompt: when set to the path of a license file already present in the project (e.g.LICENSE.md,LICENSE.txt), the template skips generating a newLICENSEand pointslicense-filesinpyproject.tomlat the provided file. Thelicenseprompt then defaults toCustom(recorded as the PEP 639 SPDX identifierLicenseRef-Custom), signalling "see the license file"; the user can override with a specific SPDX identifier if they know it. #151
just gen-projecttolerates a missingproject/directory. #161- Generated YAML files (GitHub Actions, mkdocs) and
test_data.pynow pass default yamllint/ruff checks. #170 just _update-linkmlusesuv lockinstead ofuv addto avoid side-effect of adding linkml as main dependency. #159- Reject invalid
project_nameinput (e.g. trailing dot, single character) at the prompt with a friendly message instead of crashing later. #159 - Force-push to
gh-pagesduring docs deployment to avoid history conflicts. #154 - Align
uv syncinvocation in template workflows. #150 - Skip ShEx integration test on Python 3.13 and install dependencies in the integration test fixture. #140
- Lint test tolerates warnings; example reduced to 4 warnings. #140
- Default license for new projects is now Apache-2.0 (was MIT), matching linkml core. #162
- Drop Python 3.9 from the supported version matrix; bump minimum Python requirement to >=3.10. #155
- Update pre-commit configuration and recommend installing pre-commit via
pre-commit-uv. #145 - Group Dependabot updates into a single monthly PR. #139
- Update URLs throughout the project to the new linkml monorepo / template location (README, migration notes, CHANGELOG). #132
- Cleaner linter defaults: yamllint ignores non-compliant generated files and
uses line-length 88; pre-commit skips
.copier-answers.ymland pins newer tool versions. #170 - Enable
set windows-shellby default in the templatejustfile(no-op on Linux/macOS). #170 - README notes that migrating existing projects should review/merge template linter configs rather than overwrite. #170
Release 0.4.2 - 2026-02-25
- Generate TypeScript output and allow regeneration of OWL artifacts. #113
justimprovements: allow overriding generator commands and generating additional formats. #114- mkdocs customizations and pymdown extensions in the generated project. #101
- Document the
UV_DEFAULT_INDEXenvironment variable for custom package indexes. #97 - Document handling of the WSL2
just setuperror in the README. #99
- Fix
uv toolinstall command so thatjinja2-timeis included with copier. #90 - Disable Jinja interpolation of
{{ }}in generated outputs to avoid double-brace breakage. #105 just setupno longer fails when the working tree is not git-clean. #102- Skip the docs-preview action on PRs originating from forks. #111
- Adjust README and project metadata for the new home under the
linkmlGitHub organization (replacedalitoreferences, spelling fixes, remove cookiecutter-era text). #94, #104 - Update OWL settings in
config.yaml. #96 - Improve the docs-preview action and activate it by default. #115
- Update all GitHub actions in the template to current versions. #108
- Rename the example schema container slot
entriestopeople. #110 - Allow a configurable Python version in the template workflows' matrix. #100
Release 0.4.1 - 2025-08-02
- Update to also test on Python 3.13 and use Python 3.13 as default in actions. #89
- Update to use linkml >= 1.9.3 #89
- Update github actions to latest versions. #89
- Update github actions in project and change from hash version specifier to text. #86
Release 0.4.0 - 2025-04-06
- New pre-commit command that updates the uv.lock file. #81
- Automatic publishing of releases to Zenodo (doi:10.5281/zenodo.15163584).
- Adjust docs-preview required permission to publish messages in PR thread.
- Create directory
docs/schemawithin_gen-yamlrecipe if not present.
- Migrate to new packaging/build tools: uv, uv-dynamic-versioning and hatch. #81
Release 0.3.1 - 2025-04-04
- The
just gen-doccommand will now also build a merged schema (yaml). - The
just testcommand will now also test all json test datafiles (in addition to yaml). #79
- Give docs-preview required permission to publish messages in PR thread. #74
- Correct lower Python boundary to 3.9 in template. #80
- Applied April-2025 updates to dependencies of gh-actions. #80
Release 0.3.0 - 2025-03-02
- Typos integration with pre-commit (was only an gh-action before). #58
- Fix yamllint config-location in pre-commit configuration of the project. #60
- Generate markdown schema documentation as part of docs build in gh-actions.
- Remove old files from `docs/elemnents" before re-creating markdown files. #66
- Fix clean command to remove only md-files from
docs/elements. - Generate java code from model. #70
- Clean
examples/outputfolder before re-creating its content in recipejust test. #72
- The generated part of the documentation is now git-ignored (
docs/elements/*.md). #59 - Make gen-doc a visible just command (was already present as "_gendoc").
- Don't commit project artifacts on initialisation. #65
- Let
just lintrecipe lint all schema files in schema dir instead of only the main schema. #71
- The environment variable to the schema file
LINKML_SCHEMA_SOURCE_PATHwas replaced by a new environment variableLINKML_SCHEMA_SOURCE_DIRpointing to the directory with schema files.
Release 0.2.2 - 2025-02-17
- Improved 0.2.x-migration message for
just update.
- Moving files in the 0.2.0-migration was incomplete and gave git errors due to non-existing folders.
The just shell recipe was replaced by a new Python recipe to work around the limitations of
git mv.
Release 0.2.1 - 2025-02-16
- Notes on updating from 0.1.x to 0.2.x to README.md.
- Developer tools: Repo and generated project now have a pre-commit configuration with sections for yamllint, typos, ruff (only in project) and some basic checks from pre-commit itself. #50
- Typos spell checker as gh-action for the repo (but not for the generated project). #50
- Added a README to the schema subfolder so that it is added to git even in absence of a schema file.
- Syntax of
just setuprecipe. - Invalid just recipe name for migrating from 0.1.x to 0.2.x which prevented execution on copier update.
- Excessive whitespace generation in jinja-templates (e.g. in LICENSE files)
- Some LICENSES were not correctly copied to the generated project. #52
- Wrong jinja escaping for creating the example schema and test-page-build action. This led to the creation of the files even if the question was answered with "no" in copier.
- All yes/no question are now treated as type bool in copier.
- Ignore also
docs/index.mdanddocs/about.mdwhen updating with copier. - Make Python test for example schema/datamodel more general.
- Make
just gen-projecta visible command (it was already present but hidden). - Improved yamllint configuration and reformatted all non-conforming yaml files in the project. #50
- Change license of linkml-project-copier from CC0 to MIT. #49
- Removed schemasheet integration from copier-setup questions and related just recipes. Since it never worked this removal is not considered a breaking change. #46
Release 0.2.0 - 2025-02-13
Full changelog relative to v0.1.6 since this was the base of v0.2.0.
This release implements many of the changes that motivated the project.
- Cleaner directory structure matching the expectations on mkdocs/python-projects.
docsis now the permanent storage for docs.docs/elementsis the new directory for markdown files generated from the schema.docs/templates-linkmlcontains the jinja-templates for customizing the generated schema documentation.tests/data-folder is now the primary source of example data (wassrc/data)
- Easier customization of mkdocs documentation: Thanks to the above directory changes, the guidelines from mkdocs on customizing the theme/js/css are now directly applicable for projects generated from the template.
project/*all code in this folder is now generated from the schema and no longer included in the template.- Improved example project (more examples, better tests that use pytest)
- If the example project or if certain GitHub actions should be created or not, can be selected via copier setup questions.
- Several of the changes result in combination in a low risk of conflicts when updating the underlying template in existing projects (for future updates after 0.2.0).
- Support
justas the only command runner. The support formakewas removed to simplify maintenance.
Most changes were made in one PR (#31) followed by fixups in #42 and #44.
- support for make as alternative command runner
- New directory layout for docs and example/test data compared to 0.1.x series (see above)
Release 0.1.7 - 2025-02-13
- Testing of valid & invalid data as part of
just testrecipe. #41
Release 0.1.6 - 2025-02-12
- Add .editorconfig to template & project. #29
- Fix clean recipe. #35
- Give gh-pages bot a name/email for a better git log. #28
Release 0.1.5 - 2025-02-08
- deploy-docs action was failing because credentials were removed directly after checkout although they were still needed later.
Release 0.1.4 - 2025-02-08
- install cmd in docs-building actions. #26
Release 0.1.3 - 2025-02-08
- clean command should not remove README and init.py. #22
Release 0.1.2 - 2025-02-06
- copier validation for main_schema_class name. #21
Release 0.1.1 - 2025-02-06
- Add command groups to justfile by @dalito in #16
- Add dependabot for action-updates. #14
- Improve updating by adding more files/dirs for copier to skip #11
- Update actions. #14
Release 0.1.0 - 2025-01-19
First release of a new copier-based LinkML-project template.
- This and later 0.1.x releases are compatible with linkml-project-cookiecutter except that they use copier instead of cruft/cookiecutter as scaffolding tool.
- This release generates the same project as linkml-project-cookiecutter (commit 1094cf2, date 2025-01-10).
In comparison to linkml-project-cookiecutter:
- Switch from cruft/cookiecutter to copier. #3
- Replace hooks by copier features and improve updates. #5
- just is the primary command runner instead of make.
In comparison to linkml-project-cookiecutter:
- dot-env-standard compliant formatting of the configuration file (
config.public.mk). This breaks Makefile-compatibility. See the notes in the file to restore make-conformity.