Added class-level javadoc to ~90 evolution-tier spec files: substitution models, likelihood, tree operators, branch rate models, speciation, coalescent, distributions, site model, tree types, loggers, and utility classes.
Write a guide covering:
- How to write a custom Operator (lifecycle, proposal, Hastings ratio)
- How to write a custom Distribution (ScalarDistribution / TensorDistribution)
- Type system patterns (RealScalar vs RealVector, domain propagation, casting utilities)
- Service registration (@ServiceProvider vs module-info.java provides vs version.xml)
- Testing patterns for custom components
mvn javadoc:javadoc -pl beast-base now runs with 0 errors (was 100+).
Set up GitHub Pages (or similar) to host generated javadoc, and link from README.
Created CHANGELOG.md covering build/tooling, spec type system, new distributions &
operators, API removals, package system, dependency updates, BEAUti/templates, and testing.
Cross-references scripts/migration-guide.md for detailed class mappings.
Fixed dead README links, removed unnecessary surefire --add-reads flags, corrected XML
version attribute. Skeleton compiles, all 4 tests pass, no warnings.
Currently 2.8.0-SNAPSHOT. Decide whether to cut a release or tag before the call so
package developers have a stable version to build against.
Several beast-fx tests are disabled pending deeper fixes:
- Port StarBeast.xml template to BEAST 3 (enables BeautiStarBeastTest, BeautiCLITest.testStarBeastBatchMode, LinkUnlinkTest.starBeastLinkTreesAndDeleteTest)
- Port Relaxed Clock subtemplates (Exponential, Log Normal) to ClockModels.xml (enables SimpleClockModelTest, CloneTest.simpleClockModelCloneTest)
- Fix BEAUti partition deletion to clean up tree priors and clock priors for deleted partitions (enables 6 LinkUnlinkTest methods: linkTreesAndDeleteTest2a/2b/3, linkSiteModelsAndDeleteTest/2, linkClocksSitesAndDeleteTest)
- Fix SimplexParam cloning across partitions — freqParameter dimension gets multiplied when site model is cloned (enables CloneTest.simpleSiteModelCloneTest)
- Update assertParameterCountInPriorIs in BeautiBase to handle new spec distributions (Gamma, Beta, etc.) which are not
instanceof beast.base.inference.distribution.Prior - Investigate testBSP.xml intermittent failure — passes in isolation but fails in full suite due to Randomizer state pollution from BEAUti JavaFX threads
9. Maven Central package distribution (#40)
Enable external BEAST packages to be distributed as plain Maven Central JARs instead of (or in addition to) ZIP archives. Roadmap:
Step 1: Load fxtemplates from JAR resourcesDONE —BeautiDoc.processTemplate()now scans JPMS module resources in addition to filesystem directoriesStep 2: Maven-based package resolutionDONE —MavenPackageResolverresolves Maven coordinates to local JAR paths via Apache Maven Resolver;PackageManagerloads, installs, and uninstalls Maven packages alongside ZIP packages; config persisted inmaven-packages.xmlStep 3: Package manager UIDONE — "Install from Maven" button added to BEAUti package manager dialogStep 4: Migrate existing packagesDONE — beast-package-skeleton updated with Maven Central metadata, release profile, version.xml JAR embedding, and publishing docs; morph-models updated with io.github.compevol groupId, release profile, and version.xml JAR embedding
Moved beast-fx fxtemplates to module-unique path beast.fx/fxtemplates/. Updated
BeautiDoc module resource scanner to match */fxtemplates/*.xml (namespaced) and
fxtemplates/*.xml (legacy). loadResourceFromModules() tries namespaced path first
with legacy fallback. External packages use their own namespace (e.g.
beast.morph.models.fx/fxtemplates/) to avoid JPMS split-package conflicts.
11. Reconcile trace analysis implementations (#42)
Trace utilities moved from test tree to beast.base.trace (done). Remaining work:
- Extract
computeACTas public static method onTraceStatistics; haveESS.ACT()delegate to it (exact batch algorithm replaces incremental approximation) - Move core log reading/stats from
beastfx.app.tools.LogAnalyserintobeast.base.trace; make thebeast-fxclass a thin CLI/GUI wrapper - Rework
LogCombiner(currently extendsbeastfx.app.tools.LogAnalyser) to use composition - Update
LogComparatorto depend onbeast.base.tracetypes
The current domain system (Real, PositiveReal, etc.) is a closed set of enum-like classes. Document the recommended approach for packages that need custom domains (e.g., correlation matrices, probability simplices with specific constraints).