earths 0.0.4

High-fidelity Earth simulation engine — orbit, atmosphere, geology, hydrology, biosphere, terrain, lighting, rendering, satellites, and temporal systems with full scientific coupling
Documentation
# Changelog

All notable changes to the `earths` crate are documented in this file.

Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [0.0.3] - 2026-04-04

### Added
- Rendering module: `mesh.rs` (icosphere generation with Low/Medium/High LOD, `Vertex` and `MeshData` structs), `lod.rs` (pixel-precise `LodConfig`), `materials.rs` (PBR material structs), `shaders.rs` (shader parameter structs)
- `atmosphere_scattering.rs`, `clouds.rs`, `ocean_rendering.rs` rendering sub-modules
- Re-exported `rendering` module in `lib.rs`

## [0.0.2] - 2026-04-04

### Added
- `documentation` and `homepage` fields in Cargo.toml
- Celestial project link in README.md

### Fixed
- Large normalization and recabling pass across src, tests, and examples after identifier cleanup
- Fixed renamed module paths and imports to match current workspace layout
- Standardized Rust/std/sciforge API usage
- Removed underscore-based warning-masking patterns and rewired affected code paths explicitly
- Repaired tests and examples after refactors: macros, tuple destructuring, enum pattern matches, closure signatures
- Validation: cargo fmt, clippy, test, check --examples — all clean

## [0.0.1] - 2025-03-31

### Added
- Initial release of the `earths` crate
- ~8,500 lines across 11 modules: atmosphere, hydrology, geology, biosphere, geodata, terrain, rendering, physics, satellites, temporal, lighting
- 275+ public functions, structs and enums
- `Earth` struct with unified `tick()` loop and 60 Hz runtime loop
- 347 unit/integration tests covering all subsystems
- Scientific models: Keplerian orbits (Newton–Raphson), IAU-based rotation and solar position, Rayleigh/Mie scattering, Ekman/geostrophic winds, Stefan–Boltzmann energy balance, Manning flow, Farquhar photosynthesis, Glen's flow law, tidal forcing with Love numbers, Lotka–Volterra (RK4)
- sciforge dependency for physical, atomic and astronomical constants

---

## What is solid

- Core physics modules implemented with research-grade formulae and cross-checked with unit tests
- `main.rs` integrates subsystems with explicit feedback loops (CO₂ ↔ NPP, clouds ↔ irradiance, sea level ↔ biome)
- No `todo!()` or `unimplemented!()` remain in public code
- IPC fallback: external planet binaries when available, internal simulation otherwise

## Points to watch

- Six modules required extended testing coverage (biosphere, geodata, lighting, satellites, temporal, terrain) — monitor for integration gaps
- Numerical stability: predator–prey model uses RK4; validate for multi-century simulations
- Edge cases: division-by-zero guards (rivers, Ekman depth, Rossby radius) must remain enforced

## Verdict

The engine core is research-quality and integrative. Remaining work: higher-resolution data pipelines, optional dataset importers, and endpoint-driven visualization integration. No visual assets shipped — visualization is handled externally via endpoints.

---

## Development notes

- crates.io has `0.0.1` and `0.0.2` published
- Workspace tracks `0.0.3` as current release state
- See `ComingSoon.md` for the detailed roadmap