v0.16.0
Added
- Reference-grade precise orbit determination, cross-validated against real
agency products. A new batch least-squares estimator (src/precise_od.rs)
with a variational state-transition matrix and outlier editing, driven by a
full force model (PreciseForceModel: EGM2008 geopotential, third bodies,
solid + ocean + atmospheric tides, and empirical CPR/2-per-rev accelerations),
fed by a real IERSfinals2000AEarth-orientation parser. Validated against
published reference orbits: Galileo MEO to 13 cm post-fit, ESA Swarm-A
LEO, and LRO lunar (selenocentric, GRAIL gravity, IAU-2015 body frame —
reduced-dynamic 6.6 m, honestly above the 5 m target on the open path; the
DE-grade ANISE/DE440 path that reaches it is a workspace-excluded crate). spoof-detectscenario — an integrated multi-layer spoofing detector
combining per-epoch RAIM parity, AGC and signal-quality (SQM) monitors and a
fused decision, validated against the published TEXBAT scenario parameters
(Humphreys et al., ION GNSS 2012), including the carrier-aligned hard case.ephemerisscenario — state, frames, ground track and Doppler. Propagate
one satellite (TLE→SGP4 or an analytic orbit) and emit, per step, the inertial
TEME and GCRS state (position and velocity), the Earth-fixed ITRF/ECEF
position, the WGS-84 sub-satellite ground track (latitude / longitude /
altitude), and the topocentric azimuth / elevation / range with range-rate and
Doppler from a ground station. Reachable from the CLI, Python, WASM and the
MCP server, and shipped as the "Ground track" preset in the web playground,
where the track is drawn over a real world map (Natural Earth 1:110m
coastlines, embedded — no network or external dependency).- CCSDS OEM export (
--export-oem/export_oem = true) — the
velocity-carrying Orbit Ephemeris Message consumed by GMAT / Orekit / STK, at
parity with the existing SP3 and OMM exporters. - Solid, ocean (FES2004) and atmospheric (Ray 2001 S2) Earth tides on the
geopotential (IERS Conventions Ch. 6), wired into the force model. - ARM64 wheels — the PyPI build now also produces Linux aarch64
(manylinux_2_28), macOS arm64 and Windows arm64 wheels. - Extended technical report (preprint) linked from the README, and the JOSS
paper made submittable (author ORCID, compiled to PDF in CI on every change).
Changed
- Frames validated to the millimetre against published Vallado vectors. The
TEME→PEF/ITRF reduction, the full CIO IAU 2006/2000A GCRS→ITRS chain and the
ECEF→geodetic WGS-84 conversion are now pinned to the worked example in Vallado
et al. (AIAA 2006-6753) with its IERS EOP, not just to internal self-consistency. - Independent time-scale cross-checks. ERA and the UTC/TAI/TT scales agree
withhifitimeto < 1 µs, and the DE440 planetary ephemeris agrees with JPL
Horizons (Moon/Sun geocentric positions), both as always-on CI gates. - The web playground hides the figures-of-merit tab when a result carries no
figure-of-merit rows, so chart-only packs (ephemeris, RAIM, spoof) open on
their chart — for ephemeris, the ground track — instead of an empty table. - The playground's guided sliders and parameter sweep now work for the
ephemeris / ground-track scenario: its knobs (station latitude / longitude,
time step, duration, UT1−UTC) are tunable, and a sweep can plot pass geometry
(max elevation, peak Doppler, altitude, speed) against any of them — e.g. max
elevation vs station latitude. The Sweep tab is now shown only when a scenario
is actually sweepable, so no pack offers a control that plots nothing. - Documented the SGP4
DUT1 ≈ 0approximation at the GMST call site (a ≤ ~13″
rotation error, well inside SGP4's own model error) and refreshedCAPABILITY.md.
Get this release
Download — attached below, prebuilt (no toolchain needed); each artifact carries
SLSA build-provenance (verify with gh attestation verify <file> --repo AshfordeOU/kshana):
kshana— the simulator CLI / engine (Linux x86-64)kshana-mcp— the Model Context Protocol server (Linux x86-64)kshana-sbom.cdx.json— CycloneDX SBOMkshana-validation-summary.html— the per-release validation summary
On macOS or Windows, install from a registry below — the PyPI wheels, the npm/WASM
package, and the Docker image are all cross-platform.
Install from a package registry:
| Channel | Get it |
|---|---|
| crates.io | cargo install kshana · cargo install kshana-mcp |
| PyPI | pip install kshana |
| npm | npm install kshana |
| ghcr.io | docker run -i ghcr.io/ashfordeou/kshana-mcp:0.16.0 |
| MCP registry | io.github.ashfordeOU/kshana-mcp (auto-discovered by MCP clients) |
| JetBrains Marketplace | search "Kshana" in your IDE → Plugins |
No install: run it in your browser at kshana.dev · Cite: DOI 10.5281/zenodo.20528627
Full changelog: CHANGELOG.md · Docs: README