Skip to content

Release notes

Every release of the kit is published as a GitHub release. The most recent are reproduced below, as they were written there. See Release notes convention for what goes in one.

v0.4.1

Released 2026-08-14. Read it on GitHub.

Diff since v0.4.0

This release folds in everything merged since v0.3.0: the managed formatter moved from JuliaFormatter to Runic, the kit itself gained Julia 1.10 support, and the AD harness picked up a filtered run_selected scenario/backend runner and a compiled ReverseDiff backend. Docs and standards also moved: a published inventory of dispatch-rule deviations, a new standards rule on duck-typed interfaces, a managed org coding-standards block for CLAUDE.md, and several accuracy and prose fixes across the getting-started pages. An adopting package picks all of this up on its next scheduled sync (update); nothing here needs a manual step beyond that.

Merged pull requests:

  • chore: patch release compliance pass and version bump (#441) (@seabbs-bot)

Closed issues:

  • Release 0.4.0 (#431)

  • Sweep issue/PR numbers out of internal comments (standards rule 8) (#439)

  • Release v0.4.1 (#440)

v0.4.0

Released 2026-08-13. Read it on GitHub.

Diff since v0.3.0

This is a breaking release.

Release notes (draft)

Breaking
  • The formatter is Runic, not JuliaFormatter. .JuliaFormatter.toml is a retired path, so a sync deletes it. The isolated test/formatter environment pins Runic exactly, kept in step with the .pre-commit-config.yaml hook revision.

  • docs/pages.jl is now a managed base with extension points, regenerated on every sync. A package adds nav through PACKAGE_TUTORIALS, PACKAGE_SECTIONS, DEVELOPMENT_EXTEND_PAGE and GETTING_STARTED_FAQ in the package-owned docs/docs_config.jl. A bespoke pages.jl without the managed header is preserved and warned about rather than clobbered.

  • The AD-backends tutorial is retired. Its content is folded into the AD-comparison benchmark page, which now carries the ad-backends anchor so existing @ref links across the org keep resolving. A sync deletes the page and warns while a package still registers it.

Added
  • ReverseDiff (compiled) joins the managed AD backends, so the matrix, codecov flags, README badge row and scenario seeds all cover seven backends.

  • run_selected, a filtered AD scenario/backend runner, so one suspect combination can be checked without the full suite.

  • Per-tutorial documentation environments. A heavy tutorial can build against its own environment via TUTORIAL_ENVIRONMENTS, for a dependency that cannot co-resolve with the rest of the docs environment. Dependabot watches each one.

  • Agent files are AGENTS.md plus a CLAUDE.md pointer, both linking the standards docs rather than copying them, so there is one copy that cannot drift. The managed block is a single marker line.

Fixed
  • An AD backend with no test item no longer reports green. Adding a backend to the kit reached an adopter's CI, badges and coverage flags but not their write-once test seeds, so the new job ran zero tests, passed, and uploaded an empty coverage flag behind a public badge. update now names each unbacked tag, and a tag filter matching nothing is an error.

  • Enzyme codecov flags name the Enzyme extension, not the whole ext/ directory. The directory claim charged those jobs for every other extension: measured as -17% on a package with seven.

  • The generated Extensions nav entry gets a trailing comma, so a package with [extensions] no longer fails its own formatting check and then reverts on the next sync, looping forever.

  • update reports package-owned docs describing a retired standard. A sync converges the managed files and said nothing about the package's own prose, so a contributing guide could keep naming a tool the standard had moved off.

  • README prose checks no longer misread markup and abbreviations, and the extension-by-dispatch deviation inventory is published in the standards.

  • Assorted infrastructure repairs: the release-nudge seed ref, docs-environment dependency warnings, world-age-guarded docs_config.jl reads, and the ExplicitImports floor.

Internal
  • Every .jl template is asserted to reach the Runic sweep, so a template gated on an unswept flag combination cannot go unchecked silently, and a failure names the template rather than a temp path.

Merged pull requests:

  • feat(scaffold): ship the org coding standards as a managed CLAUDE.md block (#370) (@seabbs-bot)

  • ci(deps): bump the github-actions group with 10 updates (#383) (@dependabot[bot])

  • ci: migrate the managed standard from JuliaFormatter to Runic (#387) (@seabbs-bot)

  • feat: add run_selected, a filtered AD scenario/backend runner (#389) (@seabbs-bot)

  • feat: add ReverseDiff (compiled) to the managed AD backends (#390) (@seabbs-bot)

  • ci(deps): bump the github-actions group with 9 updates (#392) (@dependabot[bot])

  • feat: add run_selected, a filtered AD scenario/backend runner (#394) (@seabbs-bot)

  • feat: docs/pages.jl becomes a managed base with extension points (#397) (@seabbs-bot)

  • fix: raise the ExplicitImports floor to 1.6 (#401) (@seabbs-bot)

  • fix: strip trailing whitespace from test/scaffold.jl (#402) (@seabbs-bot)

  • docs(standards): publish dispatch deviation inventory; fix(taskfile): thread docs builds (#403) (@seabbs-bot)

  • fix: stop the README prose checks misreading markup and abbreviations (#404) (@seabbs-bot)

  • fix: repin the release-nudge seed ref to a commit that resolves (#405) (@seabbs-bot)

  • docs(agents): link the ecosystem design docs from AGENTS.md (#406) (@seabbs-bot)

  • style: repair two comment openings in the README-check tests (#407) (@seabbs-bot)

  • feat(docs): let a tutorial build against its own environment (#408) (@seabbs-bot)

  • fix: assert the design link in the AGENTS.md test (#409) (@seabbs-bot)

  • feat: warn when the docs env is missing a dep the AD pages load (#411) (@seabbs-bot)

  • fix: emit a trailing comma after the last Extensions nav entry (#417) (@seabbs-bot)

  • fix: trim the managed agent-file boilerplate to one line (#418) (@seabbs-bot)

  • fix: warn and fail when a managed AD backend has no test item (#419) (@seabbs-bot)

  • feat: report package-owned docs that describe a retired standard (#421) (@seabbs-bot)

  • feat: depend on the registered kit and drop the Julia 1.11 floor (#422) (@seabbs-bot)

  • feat: retire the AD-backends tutorial into the AD-comparison page (#423) (@seabbs-bot)

  • test: assert every .jl template reaches the Runic sweep (#424) (@seabbs-bot)

  • fix: name the Enzyme extension in its codecov flags, not all of ext/ (#426) (@seabbs-bot)

  • feat(scaffold): freshen reusable-workflow refs forwards on update (#425) (#427) (@seabbs-bot)

  • feat(docs): opt-in parallel execution of heavy tutorials (#432) (@seabbs-bot)

  • feat: support Julia 1.10 in the kit and test the fleet on lts (#435) (@seabbs-bot)

Closed issues:

  • build_docs README-derived index conflicts with a hand-authored docs tree (docs-migration smoothing) (#170)

  • AlgebraOfGraphics (docs ad-backends tutorial) conflicts with FlexiChains as a hard dep (#283)

  • Decide and document one NEWS.md convention across the org (#286)

  • Decouple org into package identity, reusable-workflow host, and docs domain (support non-EpiAware-org adopters) (#287)

  • Proposal: standardise a package overview-page design (Why bullets, popping example, Related packages section) (#292)

  • Document the extension-by-dispatch litmus test and keep one shared tooling implementation (#311)

  • Review ecosystem best practices and following SciMl statements (#318)

  • Release (#320)

  • AD-backends tutorial imports Chairmarks but the kit cannot add it to the package-owned docs/Project.toml (#324)

  • Ecosystem news style (#329)

  • Package docs and comments very verbose (#331)

  • Re-pin release-nudge.yml seed ref once EpiAware/.github#38 merges (#333)

  • Record scope ruling: 11 packages; JuliaForIDM and ComposableProbabilisticIDModels are out of scope (#340)

  • Placeholder-carrying templates are not blue-clean once substituted, so managed files churn on every sync (#344)

  • Four repos need a Related packages README section for #292's new requirement (#345)

  • _sentences splits at unlisted abbreviations, so test_readme_bullets false-positives (#347)

  • test_readme_prose reads indented code blocks and reference link labels as prose (#348)

  • New features should causing failing tests in other packages to get them to update (#349)

  • update() silently reverts a package's TagBot lookback override (#356)

  • TagBot has never run automatically: the actor gate never fires (#357)

  • Taskfile coverage task never instruments: Pkg.test lacks coverage=true (#360)

  • Managed test/jet/Project.toml still git-pins the kit, now that the kit is registered (#361)

  • templates: release-nudge.yaml pins a .github SHA that predates the reusable workflow (#362)

  • Formatter check and JET analysis skip ext/ (#363)

  • Register.yml can never post the JuliaRegistrator comment: –field treats a leading @ as a filename (#365)

  • Ship org-wide coding standards for agents as a managed CLAUDE.md block (#369)

  • Let a tutorial page build against its own environment, so version-conflicted extensions get a normal Documenter page (#371)

  • _RELEASE_NUDGE_SEED_REF pins release-nudge.yaml to a ref where release-nudge.yml does not exist (#377)

  • Docs linkcheck: transient 429 on the org CODE_OF_CONDUCT link aborts builds (#378)

  • Scaffolded docs/docs-fast Taskfile tasks don't set a thread count, so local docs builds sample MCMC chains serially (#380)

  • AD harness: add selective (per-name) scenario/backend running as a first-class feature (#384)

  • Add ReverseDiff (compiled) to _AD_BACKENDS so packages can adopt it without hand-editing managed files (#386)

  • scaffold: gitignored per-env Manifest.toml goes stale after a compat/[sources] change (#393)

  • Install the JuliaTagBot GitHub App on the EpiAware org (#395)

  • Install the JuliaTagBot GitHub App on the EpiAware org (#398)

  • Is the Julia 1.11 floor still needed, or is it an artefact of the kit being unregistered? (#410)

  • template-sync.yaml template describes a self-drift check adopters do not have (#412)

  • Generated pages.jl Extensions group is not Runic-clean (missing trailing comma) (#413)

  • Adding a backend to _AD_BACKENDS silently ships an empty CI job to adopters (#415)

  • codecov.yml Enzyme flags claim all of ext/, deflating their coverage (#416)

  • Managed .jl templates are not Runic-checked, so a mis-formatted template reds every adopter (#420)

  • update never advances a reusable-workflow pin, so a lagging adopter stays behind (#425)

  • Optionally run heavy Literate tutorials in parallel subprocesses (#428)

  • test_aqua stale_deps errors on Windows: Aqua is not installed in the isolated env (#433)

v0.3.0

Released 2026-08-06. Read it on GitHub.

Diff since v0.2.0

  • Breaking release.

  • Changes how actions are managed

  • Changes were and how benchmarks are stored.

Merged pull requests:

  • feat: split the AD benchmark report out of the ad-backends template (#299) (#305) (@seabbs-bot)

  • chore(deps): update JET requirement from 0.10.2, 0.11 to 0.10.2, 0.11, 0.12 in the julia group across 1 directory (#337) (@dependabot[bot])

  • feat: watch the isolated test environments with Dependabot, bump JET to 0.12 (#351) (@seabbs-bot)

  • fix: build versioned docs for every release (#353) (@seabbs-bot)

  • feat: report a failing template-sync as one tracking issue (#352) (#355) (@seabbs-bot)

  • ci(deps): bump the github-actions group across 1 directory with 10 updates (#358) (@dependabot[bot])

  • fix: ignore benchmark trend chart in managed .gitignore (#359) (@seabbs-bot)

  • fix: sync kit's own .gitignore with the overall_trend.png template entry (#366) (@seabbs-bot)

  • feat(docs): source the release-notes page from GitHub Releases (#368) (@seabbs-bot)

  • docs(comments): trim oversized comment blocks in src and templates (#374) (@seabbs-bot)

  • ci(deps): bump the github-actions group across 1 directory with 10 updates (#375) (@dependabot[bot])

Closed issues:

  • test_formatting resolves JuliaFormatter from the shared test env, so an unpinned repo goes red on a formatter release (#339)

  • Template sync: open an issue when a sync cannot land without manual intervention (#352)

  • Source the release-notes docs page from GitHub Releases, not NEWS.md (#367)

  • Trim oversized comment blocks in src/ and templates/ (#373)

v0.2.0

Released 2026-08-03. Read it on GitHub.

Breaking release. Added non-opt in README checks for enforcing org standard readmes.

Merged pull requests:

  • feat: add generic benchmark-reporting harness as Benchmarks submodule (#1) (@seabbs-bot)

  • ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#2) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#3) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#5) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#6) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#7) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#8) (@dependabot[bot])

  • feat: QA helpers, dev-config templates, and scaffold (#9) (@seabbs-bot)

  • rename package EpiAwareTestUtils -> EpiAwarePackageTools (#10) (@seabbs-bot)

  • Harden AD registry, formatter isolation, and @template docstrings for CD-main adoption (#11) (@seabbs-bot)

  • fix(qa): formatter env isolation + @template docstring reading (#12) (@seabbs-bot)

  • feat: AD opt-in, self-dogfooding, managed README badges, and CI fixes (#13) (@seabbs-bot)

  • feat: standard README section-structure check + docs index injection (#15) (@seabbs-bot)

  • ci(deps): bump julia-actions/setup-julia from 2 to 3 (#24) (@dependabot[bot])

  • ci(deps): bump julia-actions/cache from 2 to 3 (#28) (@dependabot[bot])

  • feat: DocumenterVitepress docs build + scaffold/helper fixes (closes #16-#20, #31-#34) (#35) (@seabbs-bot)

  • ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#39) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#40) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#41) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/documentation.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#42) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#43) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#44) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#45) (@dependabot[bot])

  • feat: DocumenterVitepress docs + ref-preserving sync, scheduled template-sync, org templates, docstrings (#47) (@seabbs-bot)

  • feat: dogfood the docstrings @template into the kit's own module (#48) (@seabbs-bot)

  • fix(docs): default to project-pages base (no DNS) + subdomain opt-in (#53) (@seabbs-bot)

  • fix(docs): deploy the kit's own docs to its DNS-wired subdomain (#54) (@seabbs-bot)

  • feat: full CensoredDistributions.jl parity (docs build, README badges, benchmark + version CI, Taskfile, [workspace], test compat) (#55) (@seabbs-bot)

  • fix: managed .gitignore ignores generated docs pages + ad=true codecov status gate (#56) (#61) (@seabbs-bot)

  • chore: auto-increment version to 0.1.1 (#62) (@github-actions[bot])

  • chore!: stop scaffolding org community health files (use EpiAware/.github) (#63) (@seabbs-bot)

  • style(docs): hide the default VitePress nav social links in the managed theme (#64) (@seabbs-bot)

  • feat(docs): extract docs build into a tested DocsBuild module + render benchmark history + keep content tables (#68) (@seabbs-bot)

  • fix: aggregate AD status badge + restore benchmark trigger paths (#71) (@seabbs-bot)

  • fix: .gitignore managed-block so package additions survive update (#74) (@seabbs-bot)

  • fix: persist reviewer handle across update()/template-sync (closes #72) (#76) (@seabbs-bot)

  • fix: invokelatest the Literate.DocumenterFlavor constructor (world-age) (#79) (@seabbs-bot)

  • fix: green the dogfooded JET check — type-stable docs-subdomain + docs-build root (closes #77) (#81) (@seabbs-bot)

  • test: instantiate generated scaffold environments (#83) (@seabbs-bot)

  • feat!: make benchmarks opt-in (gated flag + idempotent detection) (#85) (@seabbs-bot)

  • feat(docs): CD-parity docs/README — getting-started page, CI-sync docs, citation, stars widget (#80) (#88) (@seabbs-bot)

  • docs: drop dogfood jargon, add page-customise guidance, lighten kit README (#90) (@seabbs-bot)

  • fix: separate Customising page, CD-style README bullets, fix broken docs links (#92) (@seabbs-bot)

  • fix: README /dev docs links, registered install form, JuliaFormatter pin (#93) (@seabbs-bot)

  • feat: register-readiness scaffold cluster (Register.yml, checklist, NEWS, logo) (#94) (@seabbs-bot)

  • test: raise quality/qa/docs_build coverage, focused on the quality module (#95) (@seabbs-bot)

  • fix: preserve package-owned with: inputs on managed CI callers (#73) (#96) (@seabbs-bot)

  • fix: fail loudly on a silently truncated docs home page (#91) (#98) (@seabbs-bot)

  • refactor: DRY the lazy Base.require loader + isolated-env runner (#58) (#99) (@seabbs-bot)

  • style: lowercase structural ALL-CAPS emphasis in src/test (#57) (#100) (@seabbs-bot)

  • fix: invokelatest Pkg.activate/instantiate in _run_isolated_env (#58) (#101) (@seabbs-bot)

  • feat: skip the AD sweep on docs-only changes (ad.yaml paths-ignore) (#102) (@seabbs-bot)

  • feat: port CD's two-job benchmark.yaml architecture (gap 1, #821) (#104) (@seabbs-bot)

  • fix: render light tutorials under skip_notebooks, stub only heavy ones (#106) (@seabbs-bot)

  • feat: centralise using/import in the module file (#105) (#107) (@seabbs-bot)

  • feat!: make _AD_BACKENDS the single source of truth for AD infra (#108) (@seabbs-bot)

  • feat: force-stub specific heavy tutorials independent of skip_notebooks (#111) (@seabbs-bot)

  • fix: compare job resolves the kit from git, not benchmark/Project.toml (#113) (@seabbs-bot)

  • ci: bump pinned actions + add pre-commit concurrency block (#116) (@seabbs-bot)

  • feat: adopt compact icon-only mobile fallback in StarUs.vue (#119) (@seabbs-bot)

  • fix: compare job's scratch env also installs BenchmarkTools (#120) (@seabbs-bot)

  • fix: single-source JuliaFormatter version so CI matches the pinned hook (#114) (#127) (@seabbs-bot)

  • fix: regenerate .secrets.baseline with detect-secrets 1.5.0 (#118) (#137) (@seabbs-bot)

  • fix: omit increment-version assignee when no reviewer, never the bare org (#122) (#146) (@seabbs-bot)

  • fix: auto-detect docs_subdomain on update so hosting is not reverted (#123) (#147) (@seabbs-bot)

  • fix: preserve a caller with: block documented by comments across update() (#117) (#148) (@seabbs-bot)

  • fix: read submodule docstrings from their own meta in test_docstring_format (#124) (#149) (@seabbs-bot)

  • fix: seed the docs env with the kit so the docs build resolves (#115 part 3) (#150) (@seabbs-bot)

  • fix: benchmark-history supports unregistered packages + pre-first-tag bootstrap (#125) (#151) (@seabbs-bot)

  • feat: package-level downgrade-compat opt-out that survives template sync (#121) (#152) (@seabbs-bot)

  • fix: strip seed's leading HTML comment from rendered Benchmarks page (#145) (#155) (@seabbs-bot)

  • fix: seed infrastructure page in its own Development nav section (#136) (#156) (@seabbs-bot)

  • fix: drop unwired benchmark/comment (asv_comment) env from scaffold (#126) (#157) (@seabbs-bot)

  • fix: harden version-on-demand against comment-body shell injection (#158) (#159) (@seabbs-bot)

  • fix: preserve adopter DOI badge across update()/template-sync (#161) (#164) (@seabbs-bot)

  • fix: package-owned opt-out for the force-managed AD driver (#162) (#165) (@seabbs-bot)

  • fix: benchmark-history parked triggers survive template-sync (#153) (#166) (@seabbs-bot)

  • feat: configurable docs-build timeout on document.yaml (#154) (#167) (@seabbs-bot)

  • fix: API-page generator includes re-exported + public-only bindings (#160) (#168) (@seabbs-bot)

  • fix: managed docs/quality tolerate unseeded package-owned config (#163) (#169) (@seabbs-bot)

  • fix: guard the #160 public-binding test fixture for lts (Julia 1.10) (#171) (@seabbs-bot)

  • fix: gate the #160 rendered dep_public assertion for lts (#172) (@seabbs-bot)

  • docs: kit's own logo (dogfood) + test/benchmark/AD infrastructure reference pages (#174) (@seabbs-bot)

  • feat: manage README standard sections (Contributing/CoC/How-to-cite) + CITATION.cff (#67) (#176) (@seabbs-bot)

  • fix: link CITATION.cff via GitHub URL so docs linkcheck passes (#177) (@seabbs-bot)

  • refactor!: rename exported update/generate to scaffold_update/scaffold_generate (#178) (@seabbs-bot)

  • fix: pass re-exported bindings' owning modules to makedocs (#175) (#179) (@seabbs-bot)

  • chore: auto-increment version to 0.1.1 (#182) (@github-actions[bot])

  • feat: nicer branded kit logo (package-cube mark) (#184) (@seabbs-bot)

  • feat: kit-shipped AD backends tutorial page driven by the ADRegistry (CD model) (#195) (@seabbs-bot)

  • fix(docs): embed + readable benchmark history (#192, #193) (#196) (@seabbs-bot)

  • fix: managed-file lifecycle — retire dead files, keep them writable, merge with: keys, bump the seed ref (#197) (@seabbs-bot)

  • fix: ext coverage under the unit flag only + loud guarded-config fallbacks (#180, #188) (#198) (@seabbs-bot)

  • fix(docs): pass source remotes for re-exported owning modules (#190) (#199) (@seabbs-bot)

  • fix: stop seeding kit meta-docs into package doc sites + dedupe the install section (#200) (@seabbs-bot)

  • feat(docs): overall benchmark summary table + combined trend plot (#203) (@seabbs-bot)

  • fix(quality): accept the managed '## How to cite' heading in the README-sections check (#210) (@seabbs-bot)

  • fix(docs): harden benchmark embed against empty-anchor DocumenterVitepress deploy aborts (#211) (@seabbs-bot)

  • docs: cross-reference EpiAwareADTools from the kit's AD docs (#213) (@seabbs-bot)

  • fix: attach a with:-block comment to the key it precedes, not the key before it (#212) (#218) (@seabbs-bot)

  • docs: warn that @testsnippet discovery isn't path-scoped by test/runtests.jl (#191) (#219) (@seabbs-bot)

  • fix: make the main/AD test-env templates is_kit-aware, like the JET env (#60) (#220) (@seabbs-bot)

  • fix(test): stop nested-worktree files shadowing testsnippets in managed runtests (#191) (#221) (@seabbs-bot)

  • fix(scaffold): preserve third-party action pins across scaffold_update (#222) (@seabbs-bot)

  • fix(quality): make test_explicit_imports extension-load-order independent (#223) (@seabbs-bot)

  • fix: fresh ad=true scaffold passes its own QA/AD out of the box + warn before clobbering a diverged unmarked ad setup.jl (#225) (@seabbs-bot)

  • fix(docs): parse stacked benchmark history tables, never emit an empty anchor (#204) (#227) (@seabbs-bot)

  • feat(scaffold): generic EPIAWARE_MANAGED_OVERRIDE marker for managed files (#224) (#228) (@seabbs-bot)

  • feat(benchmarks): resolve unregistered [sources] deps via a scratch registry (#216) (#229) (@seabbs-bot)

  • fix(ci): template sync never pushes to a branch it did not open (#215) (#230) (@seabbs-bot)

  • fix(docs): keep benchmark timing and allocation rows separate (#231) (#233) (@seabbs-bot)

  • fix(docs): guard the vitepress inventory against empty anchor ids (#232) (#238) (@seabbs-bot)

  • fix(quality): README section order as a subsequence + managed-block order check (#236) (#239) (@seabbs-bot)

  • feat(scaffold): preserve the downstreams list, the licence badge, and a bespoke docs/make.jl (#234, #235, #237) (#240) (@seabbs-bot)

  • feat: add managed registrability CI caller (#243) (@seabbs-bot)

  • feat(scaffold): opt-in EpiAware org branding in the README and docs footer (#242) (#245) (@seabbs-bot)

  • feat(scaffold): adopt a Julia 1.11 floor in the managed standard (#246) (#250) (@seabbs-bot)

  • fix(docs): raise the anchor-guard bound to DocumenterVitepress 0.3.5 (#232) (#252) (@seabbs-bot)

  • fix(scaffold): ignore the nested worktrees/ layout, not only worktree-* (#247) (#254) (@seabbs-bot)

  • chore: release 0.3.0 (signals the breaking Julia-floor bump from #250) (#257) (@seabbs-bot)

  • fix(ci): merge-conflict check runs every commit + catches the diff3 base marker (#251) (#258) (@seabbs-bot)

  • fix(ci): template-sync no-ops on a PR instead of erroring under Dependabot (#256) (#259) (@seabbs-bot)

  • fix(ci): auto-version-increment strips a -DEV suffix instead of bumping past it (#255) (#260) (@seabbs-bot)

  • fix(scaffold): reconcile docs deploy_url against the gh-pages CNAME (#262) (@seabbs-bot)

  • fix(scaffold): https:// scheme in docs deploy_url (ecosystem CSS 404 root fix) (#264) (@seabbs-bot)

  • ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#265) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#266) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#267) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/cancel-on-close.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#268) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#269) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#270) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/documentation.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#271) (@dependabot[bot])

  • chore(deps): update Statistics requirement to 1.11.1 (#272) (@dependabot[bot])

  • chore(deps): update DifferentiationInterfaceTest requirement from 0.9, 0.10 to 0.9, 0.10, 0.11 (#273) (@dependabot[bot])

  • chore(deps): update JET requirement from 0.10.2 to 0.10.2, 0.11 (#274) (@dependabot[bot])

  • fix(compat): correct the last false lower bounds + re-enable the downgrade job (#253) (#276) (@seabbs-bot)

  • fix(docs): stargazers widget degrades on any transient GitHub error (#277) (#278) (@seabbs-bot)

  • ci: bump actions/checkout to v7 and julia-actions/cache to v3 (#275) (#280) (@seabbs-bot)

  • feat(scaffold): warn on stdlib deps used in tests but undeclared (#263) (#281) (@seabbs-bot)

  • fix(docs): benchmarks page reads clean on a single-revision package (#282) (#284) (@seabbs-bot)

  • ci: group Dependabot bumps into one PR per ecosystem (#249) (#285) (@seabbs-bot)

  • docs: document one NEWS.md convention, drop the hybrid-changelog framing (#288) (@seabbs-bot)

  • docs: correct STANDARD_README_SECTIONS order provenance (#289) (#291) (@seabbs-bot)

  • ci: let template-sync push workflow-file drift via an App token (#293) (@sbfnk-bot)

  • refactor!: rename scaffold_update to update, public-not-exported (#294) (#295) (@seabbs-bot)

  • fix: seed Chairmarks in the ad=true docs env for DIT 0.11 (#296) (@seabbs-bot)

  • fix: strip HTML comments from the generated docs index (#297) (#300) (@seabbs-bot)

  • fix: re-sync the kit's own managed files after #295/#293 (#302) (@seabbs-bot)

  • fix: signature-qualified @docs entries for extended generics (#290) (#303) (@seabbs-bot)

  • fix: make build_index's HTML-comment strip fenced-code-block-aware (#301) (#304) (@seabbs-bot)

  • feat: document and enforce eager validation of named options (#310) (#314) (@seabbs-bot)

  • ci(deps): bump the github-actions group with 9 updates (#316) (@dependabot[bot])

  • chore(deps): update JuliaFormatter requirement from =2.10.1 to =2.10.1, 2.11 in the julia group (#317) (@dependabot[bot])

  • fix: close five seabbs-bot defect reports (#306, #313, #315, #321, #322) (#323) (@seabbs-bot)

  • feat: run dependabot daily on both ecosystems (#312) (#326) (@seabbs-bot)

  • feat: give packages with extensions a docs nav group (#319) (#327) (@seabbs-bot)

  • ci(deps): bump the github-actions group with 8 updates (#330) (@dependabot[bot])

  • feat: scaffold a release-nudge caller workflow (#332) (@seabbs-bot)

  • fix: re-pin registrability seed ref to squash-merge SHA (#248) (#334) (@seabbs-bot)

  • fix: warn when a resync is about to drop a local-caller override (#325) (#338) (@seabbs-bot)

  • docs: add the package standards page (#331) (#342) (@seabbs-bot)

  • feat(quality): encode #292's README standard, plus three opt-in wording checks (#346) (@seabbs-bot)

Closed issues:

  • scaffold hardcodes MIT LICENSE as a managed file: add a license input + make LICENSE package-owned (sync reverts deliberate licences) (#14)

  • JET runner cannot analyse a DynamicPPL @model package cleanly (false positives on ~-assigned locals) (#16)

  • test_explicit_imports: check_no_implicit_imports is un-ignorable and breaks @reexport (#17)

  • test_doctest + @meta CurrentModule fails under TestItemRunner isolation (#18)

  • scaffolded test envs depend on EpiAwarePackageTools with no [sources] entry → can't resolve when unregistered (#19)

  • scaffold writes benchmark/ scripts but no benchmark/Project.toml — --project=benchmark has no env (#20)

  • scaffold ships no .gitignore → Manifest.toml committed, breaks lts CI + trips detect-secrets (#31)

  • scaffolded dependabot.yml sets reviewers/assignees to a bare org → GitHub can't assign (#32)

  • scaffold sets up plain Documenter, not DocumenterVitepress (the org docs standard) (#33)

  • coverage caller uses fail_ci_if_error: true → CI red out-of-the-box without CODECOV_TOKEN on a protected branch (#34)

  • scaffold ships no .github/CODEOWNERS or ISSUE_TEMPLATE/ (org standard has both) (#36)

  • scaffold-generated root Project.toml has no [workspace] stanza (#37)

  • scaffold-generated test/Project.toml has no [compat] block (#38)

  • scaffold ships no README template (org-standard badge table + capabilities section) (#46)

  • offer AD testing (per-backend workflows + README AD badges) as a scaffold option (opt-in/opt-out) (#49)

  • scaffold ships a managed benchmark harness (benchmark/run.jl + benchmarks.jl + Project.toml) but no CI workflow to run it (#50)

  • scaffolded docs workflow cancels the main deploy (cancel-in-progress) + lacks gh-pages deploy serialisation (#51)

  • CD-adoption readiness: kit gaps not covered by #37/#38/#46/#49/#50 (#52)

  • Managed .gitignore + codecov (ad=true) drop two settings CD needs (#56)

  • Style: lowercase structural ALL-CAPS emphasis in src + tests (match CD #513) (#57)

  • DRY: unify the lazy Base.require loader and the isolated-env subprocess runner (#58)

  • Scaffold/generate tests never instantiate or run the generated environments (#59)

  • Reproducibility: adopting envs pin the kit to a moving rev="main"; main test env not is_kit-aware (#60)

  • Managed .gitignore overwrites package-owned keep-rules on update (#65)

  • Manage standard README body sections (Contributing / Code of conduct) with package-owned content hooks (#67)

  • scaffold: set DocumenterVitepress deploy_url for the org custom-domain convention (docs CSS 404s otherwise) (#69)

  • update()/template-sync reverts code-owner handle to generic placeholder (CODEOWNERS + dependabot reviewers) (#72)

  • update() strips package-owned 'with:' inputs on managed CI callers (reverts a deliberate Julia floor/matrix) (#73)

  • JET: _resolve_docs_subdomain / DocsBuild type instability (4 findings) (#77)

  • Docs/README CD-parity gaps: getting-started split, CI-setup docs, citation, GitHub stars, self-as-example (#80)

  • Coverage CI red: codecov rejects upload — CODECOV_TOKEN secret needed (Token required, not valid tokenless upload) (#82)

  • Benchmarks should be opt-in: scaffold emits an empty Benchmarks docs page for packages with no suite (#84)

  • JuliaFormatter version skew: in-process quality check (v2.10.1) vs isolated test/formatter env (v2.5.5) (#89)

  • Local docs build silently truncates index.md and masks dead links under some node_modules/instantiate orderings (#91)

  • Investigate root cause of #91 docs-build node_modules/instantiate ordering race (#97)

  • Centralise using in the main module: hoist DocStringExtensions import out of docstrings.jl (#105)

  • StarUs.vue: adopt CD's compact icon-only mobile fallback (<560px) (#109)

  • pre-commit.yaml template is missing a concurrency: block (#110)

  • Bump pinned actions in scaffold templates: setup-julia v2→v3, create-pull-request v7→v8 (#112)

  • Formatter version skew: templates pin JuliaFormatter 2.10.1 but shared format-check.yml installs 2.5.5 (#114)

  • Scaffolded CI cannot pass while the kit is unregistered (lts/downgrade [sources] resolution; docs env missing the kit) (#115)

  • update(): with: preservation (#73) misses blocks when comments sit between uses: and with: (#117)

  • Shipped .secrets.baseline template is stale (detect-secrets 1.4.0); update() downgrades adopters (#118)

  • Managed test.yaml template needs a package-level opt-out for downgrade-compat (and to preserve with: input overrides) on template sync (#121)

  • Omitted reviewer leaks the bare org into the increment-version assignee default, breaking PR updates (#122)

  • update() silently reverts docs_subdomain, breaking custom-domain docs CSS (#123)

  • test_docstring_format cannot see submodule docstrings (public TestUtils gets a permanent @test_skip) (#124)

  • benchmark-history template: support unregistered packages (–url) and the pre-first-tag bootstrap (#125)

  • Scaffolded benchmark/comment/ (asv_comment) env is not wired to any workflow (#126)

  • Scaffold seeds the infrastructure/template-sync page under Getting started (#136)

  • build_benchmark_page splices the seeded HTML comment onto the rendered Benchmarks page (#145)

  • benchmark-history.yaml: parked push/tag triggers (unregistered [sources] dep) don't survive template-sync (#153)

  • Scaffolded document.yaml should allow setting the docs-build timeout_minutes (#154)

  • version-on-demand: comment body shell-injected into run: (functional failure on special chars + security) (#158)

  • DocsBuild API-page generator misses re-exported and public-only bindings (broken @refs in built docs) (#160)

  • update() strips adopter DOI badge — add _detect_doi to preserve it across update()/template-sync (#161)

  • test/ad/setup.jl force-managed clobbers package-owned AD driver on unmigrated ADFixtures (MethodError on category=) (#162)

  • update() rewrites managed make.jl/quality.jl to depend on package-owned config it never seeds for existing adopters (#163)

  • Docs kit's exported update collides with package-level update exports in Main during docs builds (#173)

  • build_docs must pass owning modules of re-exported bindings to makedocs' modules kwarg (#175)

  • Managed codecov.yml lists ext/ under ad-* flags, causing 0% extension coverage false-positives (#180)

  • Registrator (#181)

  • scaffold_update silently drops package overrides co-located in a job's already-non-empty with: block (#183)

  • scaffold_update never deletes retired managed files (benchmark/comment/ survives #157) (#185)

  • Kit seed ref lags EpiAware/.github head (dc919e0d vs 6fcdcde0) (#186)

  • scaffold_update writes managed files read-only when the kit is Pkg.add'ed (#187)

  • Guarded docs/QA config fallbacks are silent — warn when pages.jl/docs_config.jl or the readme config are missing (#188)

  • test_explicit_imports verdict depends on extension-load order (non-deterministic QA) (#189)

  • build_docs must pass for re-exported owning modules (follow-up to #179): MissingRemoteError breaks downstream docs builds (#190)

  • Managed runtests.jl filters testitems from nested worktrees but not @testsnippet name collisions (#191)

  • Benchmark history not embedded on docs page: managed docs build can't resolve the benchmarks branch (#192)

  • Benchmark history docs page is unreadable at realistic suite sizes (flat 200+-row table, hash columns, PNG wall) (#193)

  • Stop seeding kit meta-docs (customising/infrastructure/julia) into package doc sites; dedupe the install section (#194)

  • Managed README standard-sections block fails the kit's own README-section quality check (#201)

  • Benchmark docs: overall summary table + combined trend plot (on top of #192/#193) (#202)

  • Benchmark history embed can produce an anchored header with an empty anchor id (aborts DocumenterVitepress deploy builds) (#204)

  • build_docs: DocInventories empty-name AnchoredHeader ArgumentError crashes docs render on fresh doc-tooling resolution (#207)

  • scaffold() (managed_only=false) regenerates deliberately-removed package-owned meta-docs on an already-adopted repo (#208)

  • scaffold_update: with: key preservation (kit#197) drops or duplicates adjacent comments (#212)

  • Managed template-sync push on dependabot/PR branches silently reverts intentional package customisations (#214)

  • template-sync silently reverts package-owned overrides when it re-applies on non-sync branches (e.g. Dependabot PRs) (#215)

  • Benchmark infra cannot resolve unregistered [sources] deps (benchpkg temp env ignores a dependency's sources) (#216)

  • generate()/scaffold() seeds a fresh package's AD harness inconsistently across backends (#217)

  • Generalise the diverged-unmarked-managed-file warning beyond test/ad/setup.jl (#224)

  • scaffold: LoweredDistributions.jl was missing getting-started/customising.md + emits a docs-site-breaking CITATION.cff link (#226)

  • Benchmark history: timing and allocation rows are merged into one suite (duplicate labels + mixed-unit summary ratios) (#231)

  • DocsBuild: guard the vitepress inventory against empty anchor ids (generalise the per-repo warn-and-skip overrides) (#232)

  • scaffold_update resets the package-owned downstreams list in downstream.yaml (#234)

  • scaffold_update strips adopter LICENSE badge — add _detect_license to preserve it across scaffold_update()/template-sync (sibling of #161) (#235)

  • test_readme_sections order check fails when an adopter has a ## License section above the appended standard-sections block (follow-up to #201) (#236)

  • scaffold_update force-migrates docs/make.jl to build_docs, reversing a package's documented bespoke-make.jl opt-out with no marker to preserve it (#237)

  • docs: blank-named benchmark row emits an empty ### heading (empty anchor) and aborts the whole docs build (#241)

  • Opt-in EpiAware org branding in the managed docs footer (logo + org links) (#242)

  • Scaffolded packages break on Julia LTS (1.10): [sources] is ignored, so the registered kit v0.1.0 resolves without run_package_tests (#246)

  • Managed .gitignore ignores 'worktree-*' but not the 'worktrees/<name>' layout adopters actually use (#247)

  • Registrability caller pins a live PR-branch SHA of EpiAware/.github (GC risk after squash) (#248)

  • Review the CI-update model: template-sync can't push workflows + Dependabot fights kit-managed workflow files (#249)

  • pre-commit check-merge-conflict is inert outside a merge, so a stray conflict marker can reach main (#251)

  • Declared compat lower bounds were never validated on a supported Julia (downgrade ran on 1.10) (#253)

  • auto-version-increment misreads a pre-release '-DEV' version as released and bumps the patch, skipping the maiden version (#255)

  • template-sync's Dependabot-triggered leg errors under Dependabot's restricted token, so every Dependabot PR shows a spurious red 'sync' (#256)

  • Scaffolded test env repeatedly misses stdlib deps used by tests (LinearAlgebra, Statistics) (#263)

  • Bump actions/checkout to v7 and julia-actions/cache to v3 in the managed workflow templates (#275)

  • Managed StarUs stargazers loader hard-fails the docs build on a transient GitHub API error (e.g. 503) (#277)

  • Propagate the deploy_url https:// scheme fix (#264) to already-scaffolded subdomain packages (#279)

  • docs: benchmarks page shows empty ## Performance history heading + all-n/a summary on a single-revision package (#282)

  • STANDARD_README_SECTIONS order disagrees with its own cited gold-standard repo (#289)

  • build_api_pages: bare @docs entries pull in unrelated upstream MultiDoc text for extended generics (#290)

  • Move to Public not exported update vs scaffold_update (#294)

  • build_docs README-to-index transform renders the managed-section HTML comments as visible text (#297)

  • Org convention: the README/home page opens with a taster example and links to the overview (#298)

  • Split the benchmark report out of the shared ad-backends tutorial template (#299)

  • build_index's HTML-comment strip is not fenced-code-block-aware (#301)

  • build_index's comment strip doesn't recognise indented code blocks or inline code spans (#306)

  • Document and auto-enforce eager validation of named options (#310)

  • Manage dependabot setup so we get daily updates but grouped across deps (#312)

  • build_docs: checkdocs=:all always flags the module's own docstring as "not included" (#313)

  • Managed Taskfile coverage task never instruments the actual test run (#315)

  • Docs: optional "Extensions" dropdown in the scaffolded docs nav (#319)

  • Managed quality.jl never uses the pinned test/formatter env, so Quality: formatting floats with the Julia version (#321)

  • update re-renders a README section linking to CITATION.cff but never seeds the file, so pre-CITATION adopters get a 404 in linkcheck (#322)

  • Template sync silently reverts a caller repointed at a local reusable workflow (#325)

v0.1.0

Released 2026-08-03. Read it on GitHub.

Merged pull requests:

  • feat: add generic benchmark-reporting harness as Benchmarks submodule (#1) (@seabbs-bot)

  • ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#2) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#3) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#5) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#6) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#7) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#8) (@dependabot[bot])

  • feat: QA helpers, dev-config templates, and scaffold (#9) (@seabbs-bot)

  • rename package EpiAwareTestUtils -> EpiAwarePackageTools (#10) (@seabbs-bot)

  • Harden AD registry, formatter isolation, and @template docstrings for CD-main adoption (#11) (@seabbs-bot)

  • fix(qa): formatter env isolation + @template docstring reading (#12) (@seabbs-bot)

  • feat: AD opt-in, self-dogfooding, managed README badges, and CI fixes (#13) (@seabbs-bot)

  • feat: standard README section-structure check + docs index injection (#15) (@seabbs-bot)

  • ci(deps): bump julia-actions/setup-julia from 2 to 3 (#24) (@dependabot[bot])

  • ci(deps): bump julia-actions/cache from 2 to 3 (#28) (@dependabot[bot])

  • feat: DocumenterVitepress docs build + scaffold/helper fixes (closes #16-#20, #31-#34) (#35) (@seabbs-bot)

  • ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#39) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#40) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#41) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/documentation.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#42) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#43) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#44) (@dependabot[bot])

  • ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#45) (@dependabot[bot])

  • feat: DocumenterVitepress docs + ref-preserving sync, scheduled template-sync, org templates, docstrings (#47) (@seabbs-bot)

  • feat: dogfood the docstrings @template into the kit's own module (#48) (@seabbs-bot)

  • fix(docs): default to project-pages base (no DNS) + subdomain opt-in (#53) (@seabbs-bot)

  • fix(docs): deploy the kit's own docs to its DNS-wired subdomain (#54) (@seabbs-bot)

  • feat: full CensoredDistributions.jl parity (docs build, README badges, benchmark + version CI, Taskfile, [workspace], test compat) (#55) (@seabbs-bot)

  • fix: managed .gitignore ignores generated docs pages + ad=true codecov status gate (#56) (#61) (@seabbs-bot)

  • chore: auto-increment version to 0.1.1 (#62) (@github-actions[bot])

  • chore!: stop scaffolding org community health files (use EpiAware/.github) (#63) (@seabbs-bot)

  • style(docs): hide the default VitePress nav social links in the managed theme (#64) (@seabbs-bot)

  • feat(docs): extract docs build into a tested DocsBuild module + render benchmark history + keep content tables (#68) (@seabbs-bot)

  • fix: aggregate AD status badge + restore benchmark trigger paths (#71) (@seabbs-bot)

  • fix: .gitignore managed-block so package additions survive update (#74) (@seabbs-bot)

  • fix: persist reviewer handle across update()/template-sync (closes #72) (#76) (@seabbs-bot)

  • fix: invokelatest the Literate.DocumenterFlavor constructor (world-age) (#79) (@seabbs-bot)

  • fix: green the dogfooded JET check — type-stable docs-subdomain + docs-build root (closes #77) (#81) (@seabbs-bot)

  • test: instantiate generated scaffold environments (#83) (@seabbs-bot)

  • feat!: make benchmarks opt-in (gated flag + idempotent detection) (#85) (@seabbs-bot)

  • feat(docs): CD-parity docs/README — getting-started page, CI-sync docs, citation, stars widget (#80) (#88) (@seabbs-bot)

  • docs: drop dogfood jargon, add page-customise guidance, lighten kit README (#90) (@seabbs-bot)

  • fix: separate Customising page, CD-style README bullets, fix broken docs links (#92) (@seabbs-bot)

  • fix: README /dev docs links, registered install form, JuliaFormatter pin (#93) (@seabbs-bot)

  • feat: register-readiness scaffold cluster (Register.yml, checklist, NEWS, logo) (#94) (@seabbs-bot)

  • test: raise quality/qa/docs_build coverage, focused on the quality module (#95) (@seabbs-bot)

  • fix: preserve package-owned with: inputs on managed CI callers (#73) (#96) (@seabbs-bot)

  • fix: fail loudly on a silently truncated docs home page (#91) (#98) (@seabbs-bot)

  • refactor: DRY the lazy Base.require loader + isolated-env runner (#58) (#99) (@seabbs-bot)

  • style: lowercase structural ALL-CAPS emphasis in src/test (#57) (#100) (@seabbs-bot)

  • fix: invokelatest Pkg.activate/instantiate in _run_isolated_env (#58) (#101) (@seabbs-bot)

  • feat: skip the AD sweep on docs-only changes (ad.yaml paths-ignore) (#102) (@seabbs-bot)

  • feat: port CD's two-job benchmark.yaml architecture (gap 1, #821) (#104) (@seabbs-bot)

  • fix: render light tutorials under skip_notebooks, stub only heavy ones (#106) (@seabbs-bot)

  • feat: centralise using/import in the module file (#105) (#107) (@seabbs-bot)

  • feat!: make _AD_BACKENDS the single source of truth for AD infra (#108) (@seabbs-bot)

  • feat: force-stub specific heavy tutorials independent of skip_notebooks (#111) (@seabbs-bot)

  • fix: compare job resolves the kit from git, not benchmark/Project.toml (#113) (@seabbs-bot)

  • ci: bump pinned actions + add pre-commit concurrency block (#116) (@seabbs-bot)

  • feat: adopt compact icon-only mobile fallback in StarUs.vue (#119) (@seabbs-bot)

  • fix: compare job's scratch env also installs BenchmarkTools (#120) (@seabbs-bot)

  • fix: single-source JuliaFormatter version so CI matches the pinned hook (#114) (#127) (@seabbs-bot)

  • fix: regenerate .secrets.baseline with detect-secrets 1.5.0 (#118) (#137) (@seabbs-bot)

  • fix: omit increment-version assignee when no reviewer, never the bare org (#122) (#146) (@seabbs-bot)

  • fix: auto-detect docs_subdomain on update so hosting is not reverted (#123) (#147) (@seabbs-bot)

  • fix: preserve a caller with: block documented by comments across update() (#117) (#148) (@seabbs-bot)

  • fix: read submodule docstrings from their own meta in test_docstring_format (#124) (#149) (@seabbs-bot)

  • fix: seed the docs env with the kit so the docs build resolves (#115 part 3) (#150) (@seabbs-bot)

  • fix: benchmark-history supports unregistered packages + pre-first-tag bootstrap (#125) (#151) (@seabbs-bot)

  • feat: package-level downgrade-compat opt-out that survives template sync (#121) (#152) (@seabbs-bot)

  • fix: strip seed's leading HTML comment from rendered Benchmarks page (#145) (#155) (@seabbs-bot)

  • fix: seed infrastructure page in its own Development nav section (#136) (#156) (@seabbs-bot)

  • fix: drop unwired benchmark/comment (asv_comment) env from scaffold (#126) (#157) (@seabbs-bot)

  • fix: harden version-on-demand against comment-body shell injection (#158) (#159) (@seabbs-bot)

  • fix: preserve adopter DOI badge across update()/template-sync (#161) (#164) (@seabbs-bot)

  • fix: package-owned opt-out for the force-managed AD driver (#162) (#165) (@seabbs-bot)

  • fix: benchmark-history parked triggers survive template-sync (#153) (#166) (@seabbs-bot)

  • feat: configurable docs-build timeout on document.yaml (#154) (#167) (@seabbs-bot)

  • fix: API-page generator includes re-exported + public-only bindings (#160) (#168) (@seabbs-bot)

  • fix: managed docs/quality tolerate unseeded package-owned config (#163) (#169) (@seabbs-bot)

  • fix: guard the #160 public-binding test fixture for lts (Julia 1.10) (#171) (@seabbs-bot)

  • fix: gate the #160 rendered dep_public assertion for lts (#172) (@seabbs-bot)

  • docs: kit's own logo (dogfood) + test/benchmark/AD infrastructure reference pages (#174) (@seabbs-bot)

  • feat: manage README standard sections (Contributing/CoC/How-to-cite) + CITATION.cff (#67) (#176) (@seabbs-bot)

  • fix: link CITATION.cff via GitHub URL so docs linkcheck passes (#177) (@seabbs-bot)

  • refactor!: rename exported update/generate to scaffold_update/scaffold_generate (#178) (@seabbs-bot)

Closed issues:

  • scaffold hardcodes MIT LICENSE as a managed file: add a license input + make LICENSE package-owned (sync reverts deliberate licences) (#14)

  • JET runner cannot analyse a DynamicPPL @model package cleanly (false positives on ~-assigned locals) (#16)

  • test_explicit_imports: check_no_implicit_imports is un-ignorable and breaks @reexport (#17)

  • test_doctest + @meta CurrentModule fails under TestItemRunner isolation (#18)

  • scaffolded test envs depend on EpiAwarePackageTools with no [sources] entry → can't resolve when unregistered (#19)

  • scaffold writes benchmark/ scripts but no benchmark/Project.toml — --project=benchmark has no env (#20)

  • scaffold ships no .gitignore → Manifest.toml committed, breaks lts CI + trips detect-secrets (#31)

  • scaffolded dependabot.yml sets reviewers/assignees to a bare org → GitHub can't assign (#32)

  • scaffold sets up plain Documenter, not DocumenterVitepress (the org docs standard) (#33)

  • coverage caller uses fail_ci_if_error: true → CI red out-of-the-box without CODECOV_TOKEN on a protected branch (#34)

  • scaffold ships no .github/CODEOWNERS or ISSUE_TEMPLATE/ (org standard has both) (#36)

  • scaffold-generated root Project.toml has no [workspace] stanza (#37)

  • scaffold-generated test/Project.toml has no [compat] block (#38)

  • scaffold ships no README template (org-standard badge table + capabilities section) (#46)

  • offer AD testing (per-backend workflows + README AD badges) as a scaffold option (opt-in/opt-out) (#49)

  • scaffold ships a managed benchmark harness (benchmark/run.jl + benchmarks.jl + Project.toml) but no CI workflow to run it (#50)

  • scaffolded docs workflow cancels the main deploy (cancel-in-progress) + lacks gh-pages deploy serialisation (#51)

  • CD-adoption readiness: kit gaps not covered by #37/#38/#46/#49/#50 (#52)

  • Managed .gitignore + codecov (ad=true) drop two settings CD needs (#56)

  • Style: lowercase structural ALL-CAPS emphasis in src + tests (match CD #513) (#57)

  • DRY: unify the lazy Base.require loader and the isolated-env subprocess runner (#58)

  • Scaffold/generate tests never instantiate or run the generated environments (#59)

  • Managed .gitignore overwrites package-owned keep-rules on update (#65)

  • Manage standard README body sections (Contributing / Code of conduct) with package-owned content hooks (#67)

  • scaffold: set DocumenterVitepress deploy_url for the org custom-domain convention (docs CSS 404s otherwise) (#69)

  • update()/template-sync reverts code-owner handle to generic placeholder (CODEOWNERS + dependabot reviewers) (#72)

  • update() strips package-owned 'with:' inputs on managed CI callers (reverts a deliberate Julia floor/matrix) (#73)

  • JET: _resolve_docs_subdomain / DocsBuild type instability (4 findings) (#77)

  • Docs/README CD-parity gaps: getting-started split, CI-setup docs, citation, GitHub stars, self-as-example (#80)

  • Coverage CI red: codecov rejects upload — CODECOV_TOKEN secret needed (Token required, not valid tokenless upload) (#82)

  • Benchmarks should be opt-in: scaffold emits an empty Benchmarks docs page for packages with no suite (#84)

  • JuliaFormatter version skew: in-process quality check (v2.10.1) vs isolated test/formatter env (v2.5.5) (#89)

  • Local docs build silently truncates index.md and masks dead links under some node_modules/instantiate orderings (#91)

  • Centralise using in the main module: hoist DocStringExtensions import out of docstrings.jl (#105)

  • StarUs.vue: adopt CD's compact icon-only mobile fallback (<560px) (#109)

  • pre-commit.yaml template is missing a concurrency: block (#110)

  • Bump pinned actions in scaffold templates: setup-julia v2→v3, create-pull-request v7→v8 (#112)

  • Formatter version skew: templates pin JuliaFormatter 2.10.1 but shared format-check.yml installs 2.5.5 (#114)

  • update(): with: preservation (#73) misses blocks when comments sit between uses: and with: (#117)

  • Shipped .secrets.baseline template is stale (detect-secrets 1.4.0); update() downgrades adopters (#118)

  • Managed test.yaml template needs a package-level opt-out for downgrade-compat (and to preserve with: input overrides) on template sync (#121)

  • Omitted reviewer leaks the bare org into the increment-version assignee default, breaking PR updates (#122)

  • update() silently reverts docs_subdomain, breaking custom-domain docs CSS (#123)

  • test_docstring_format cannot see submodule docstrings (public TestUtils gets a permanent @test_skip) (#124)

  • benchmark-history template: support unregistered packages (–url) and the pre-first-tag bootstrap (#125)

  • Scaffolded benchmark/comment/ (asv_comment) env is not wired to any workflow (#126)

  • Scaffold seeds the infrastructure/template-sync page under Getting started (#136)

  • build_benchmark_page splices the seeded HTML comment onto the rendered Benchmarks page (#145)

  • benchmark-history.yaml: parked push/tag triggers (unregistered [sources] dep) don't survive template-sync (#153)

  • Scaffolded document.yaml should allow setting the docs-build timeout_minutes (#154)

  • version-on-demand: comment body shell-injected into run: (functional failure on special chars + security) (#158)

  • DocsBuild API-page generator misses re-exported and public-only bindings (broken @refs in built docs) (#160)

  • update() strips adopter DOI badge — add _detect_doi to preserve it across update()/template-sync (#161)

  • test/ad/setup.jl force-managed clobbers package-owned AD driver on unmigrated ADFixtures (MethodError on category=) (#162)

  • update() rewrites managed make.jl/quality.jl to depend on package-owned config it never seeds for existing adopters (#163)

Every release, including any older than those above, is listed on the releases page.