Repository navigation
Changelog
All notable changes to ModelPNPS are documented in this file.
The format follows Keep a Changelog, and the
project adheres to Semantic Versioning.
Unreleased
[0.1.0] - "2026-08-31"
Added
-
A reference to the paper the package was built for — Travers & Brahms, Extreme
ultrashort pulse retrieval with differentiable physical forward models (in
preparation; the reference is a placeholder until publication) — in the README and
throughout the manual, together with two figures generated from that paper's
simulation data: the 1 fs substrate-thickness trace series (README and manual
front page) and the single-cycle RDW trace with its injected pulse (input-pulses
page). The manual pages now point at the paper's quantitative findings where they
bear on a feature: the Raman trace-versus-pulse bound on the nonlinear-response
page, and the envelope-exoneration measurement on the field-mode page. -
Two curated example scripts replacing the previous contents of
examples/:
tgfrog_window_series.jl, a production-scale delay scan for a SLURM cluster with
a collection-window series and a substrate-thickness ladder, and
tgfrog_window_series_gpu.jl, the same measurement on a single GPU with a
chirped input. Both explain the physics they exercise and carry no
site-specific configuration. -
Manual pages for the features that had no documentation outside their docstrings:
data-driven input pulses, the Kerr and Raman responses, field-resolved mode,
running on a GPU, and accuracy/validation. The self-diffraction geometry is now
described in the trace-simulation chapter. -
README badges for CI, documentation, coverage, Aqua, JET and Runic, and the CI
jobs behind them: coverage upload to Codecov, a standaloneQualitygroup job,
and a Runic formatting check. -
CITATION.cffand.zenodo.json, so the archived record and GitHub's "Cite
this repository" carry real names, ORCIDs and affiliations rather than account
handles. -
codecov.yml, reporting coverage informationally rather than as a gate, since a
suite that deliberately skips the propagation step cannot meet a line-coverage
target that would mean anything. -
An explicit
slugon the Codecov upload, which an organisation-wide upload token
requires and a repository token ignores. This does not by itself enable coverage:
the repository must also be activated on Codecov, without which uploads are
rejected as "Repository not found". -
A
[sources]entry resolving Luna from themodal-fixedbranch. The package is
written against Luna APIs that are not in a registered release and does not load
without them, so CI had never been able to pass; it now resolves the branch the
same way a clone of this repository does. -
TODO.md, recording deferred work — theexamples/cleanup, the absence of
executable manual examples and doctests, the boxcar-specific SD diagnostics, and
the CI services still to be enabled. -
build_setupandoptimal_spatial_gridnow reject an unknowngeometry, and
build_setuprejectsgeometry = :sdfor a beam model whose builder only ever
places three beams. Both cases previously produced a boxcar run with no diagnostic.
Fixed
- The documentation build, which died at
import ModelPNPSon a cold runner.
Luna loads PyPlot unconditionally, so the build needs matplotlib; PyCall was
binding to the runner's system python, which has none. Both workflows now set
PYTHON = ""so PyCall uses its own Conda python and PyPlot installs matplotlib
itself. CI had been passing only because its depot cache happened to carry a
working PyCall. - Installation instructions. They presented the
modal-fixedLuna branch as a GPU
extra, but it is required for the package to load at all, and Luna has to be added
before ModelPNPS so the resolver sees the branch first.
Removed
- The operator and campaign scripts that had accumulated in
examples/— cluster
submission wrappers, GPU benchmarks, verification drivers and their shell scripts —
along withGPU-TODO.md. They referenced private hostnames, scratch paths and
internal working notes, and they documented one research campaign rather than the
package. The still-open GPU work is distilled into aGPUsection ofTODO.md,
and source comments that pointed at internal notes now state their content
directly.
Changed
- A prose pass over the README and manual: plainer statements, less selling, and
the paper carrying the motivation. The README's quick start, installation and
feature content is unchanged. - Set the version to 0.1.0. The package is usable but still moving —
TODO.md
records the self-diffraction diagnostics being boxcar-specific and the examples
not yet meeting the project's own standards — so 1.0.0 would claim a stability
that is not there yet. - Raised the minimum supported Julia version to 1.12 and replaced the unbounded Luna
compatibility entry with the tested 0.6.2 series. - Applied Runic formatting across the source, tests, and documentation build script.
- Split the package implementation into domain-focused source files while preserving the
public API. - Reworked the test entry point into isolated
Core,Physics,Quality, andDocs
groups, with package-hygiene, import-hygiene, JET, and doctest coverage. - Replaced generic
ErrorExceptionfailures with specific argument, dimension, and
invariant exceptions. - Tightened setup field types so callable storage remains inferable.
- Pointed the badges, documentation URLs and Documenter deploy target at
LupoLab/ModelPNPS.jl, the actual repository, instead ofjtravs/ModelPNPS.jl. - Documentation links now use the organisation's custom domain,
lupo-lab.com/ModelPNPS.jl, which is whatlupolab.github.ioredirects to. - CI now tests Julia 1.12 and current stable, matching
[compat] julia; it
previously included 1.10, which cannot resolve the project. - Brought the hand-written docstring signature lines back in line with the code, and
documented the keywords they had drifted away from (geometry,fftsize,
arraytype,beamlets_on_host, and therun_scanandsimulate_delay_point
solver keywords).