feat: include project root files in packaged toolbox - #61
Merged
Conversation
ToolboxOptions only packages files below the source folder, so files like LICENSE that conventionally live in the project root were left out of the .mltbx. Root files are now staged into the source folder before packaging and cleaned up afterwards. The files to include are declared in a top-level RootFilesToPackage list in MLToolboxInfo.json, defaulting to LICENSE. Explicitly listed files that are missing trigger a warning, as does a root file shadowed by an identically named file in the source folder. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
Test Results23 tests 23 ✅ 18s ⏱️ Results for commit dc8009b. ♻️ This comment has been updated with latest results. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #61 +/- ##
==========================================
+ Coverage 42.02% 43.29% +1.26%
==========================================
Files 59 61 +2
Lines 1468 1522 +54
==========================================
+ Hits 617 659 +42
- Misses 851 863 +12 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
ehennestad
added a commit
that referenced
this pull request
Jul 16, 2026
Covers the feature merged in #61: project root files declared in MLToolboxInfo.json (default LICENSE) are included in the packaged toolbox. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ehennestad
added a commit
that referenced
this pull request
Jul 16, 2026
Uses the RootFilesToPackage mechanism from #61 so the license and third-party notices ship inside packaged toolbox releases, covering the binary-redistribution condition of the climatedatastore license. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ehennestad
added a commit
that referenced
this pull request
Jul 16, 2026
* docs: add CI section to README and CI configuration guide Document how to set up GitHub Actions CI for toolbox repositories using the matbox-actions reusable workflows: testing, code analysis, spell checking, the release pipeline, badge behavior, and coverage. Closes #42 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: make README intro benefit-oriented Lead with the problems MatBox solves (no package manager, CI report formats, manual packaging) and pair each capability with the concrete command and artifact, replacing the abstract feature list. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: point to example repositories from README intro Real repositories show MatBox-produced badges, CI runs, and releases live, serving as concrete demonstrations of the toolbox in use. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Update README.md * docs: soften README problem statement re modern MATLAB tooling MATLAB R2023b+ buildtool tasks can produce JUnit and Cobertura reports, and R2025a integrates toolbox packaging with projects, so 'no standard way' overclaimed. The durable gaps are dependency installation and the per-repository glue, which is what the intro now claims. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: document RootFilesToPackage packaging option Covers the feature merged in #61: project root files declared in MLToolboxInfo.json (default LICENSE) are included in the packaged toolbox. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Update GitHub badges * docs: restructure README intro as problem-solution statements One-sentence factual summary, then a problem/solution bullet per capability, with the example repositories as bullets instead of inside a sentence. Drops the duplicate Example Repositories section and the remaining marketing phrasing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: polish README summary and example-repo lead-in Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: use 'See' for example-repo lead-in Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
ehennestad
added a commit
that referenced
this pull request
Jul 16, 2026
* docs: add third-party notices for climatedatastore-derived code Several task and utility functions plus the release workflow were adapted from mathworks/climatedatastore, whose license requires retaining the copyright notice, conditions, and disclaimer with redistributed source, and keeps derivatives under its own terms rather than MIT. - Add THIRD_PARTY_NOTICES.md listing the adapted files and reproducing the climatedatastore license verbatim - Scope the MIT grant in LICENSE to exclude the adapted portions - Normalize per-file attribution headers to name the specific source file and point at THIRD_PARTY_NOTICES.md, adding headers to codecheckToolbox.m and testToolbox.m which lacked them Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat: package LICENSE and THIRD_PARTY_NOTICES.md into the mltbx Uses the RootFilesToPackage mechanism from #61 so the license and third-party notices ship inside packaged toolbox releases, covering the binary-redistribution condition of the climatedatastore license. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Update GitHub badges * docs: make notices reference distribution-agnostic 'Repository root' is wrong for users who installed the .mltbx, where THIRD_PARTY_NOTICES.md sits at the installed toolbox root instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Update GitHub badges * Update GitHub badges --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ToolboxOptionsonly packages files below the source folder, so files likeLICENSEthat conventionally live in the project root were left out of packaged.mltbxreleases.matbox.tasks.packageToolboxnow stages selected project root files into the source folder before packaging and removes the copies afterwards (viaonCleanup, so they are cleaned up even on error)"RootFilesToPackage"list inMLToolboxInfo.json, e.g."RootFilesToPackage": ["LICENSE", "THIRD_PARTY_NOTICES.md"]. When the field is absent, the default isLICENSELICENSEis skipped silently (avoids noise for projects using e.g.LICENSE.txt), while a missing explicitly listed file warns (MatBox:Package:RootFileNotFound). A root file shadowed by an identically named file in the source folder also warns (MatBox:Package:RootFileShadowed) and is not overwrittenTests
TasksTestnow verifies that the packaged.mltbxcontains the rootLICENSEby default (and that the staged copy is cleaned up), that an explicitRootFilesToPackagelist packages the listed files and warns on missing ones, and that a shadowing source-folder file wins with a warning and survives cleanup.Once #60 (third-party notices) is merged, MatBox's own
MLToolboxInfo.jsoncan list["LICENSE", "THIRD_PARTY_NOTICES.md"]so the notices ship in the.mltbx, closing that PR's follow-up.🤖 Generated with Claude Code