# Changelog

All notable changes to ViceSky are documented here.

## [1.0.0]

### Added

- Equirectangular preview PNGs in `dist/previews/` for day, sunset, night, thunder, and rain.
- Single source of truth for version (`scripts/_version.py`).
- Single source of truth for skybox config — OptiFine `.properties` and Nuit JSON are now both regenerated by `scripts/generate_properties.py`.
- Night rain and night thunder variants (sky6 / sky7, `vicesky_rain_night.*`, `vicesky_thunder_night.*`).
- Overcast cloud variant for Nuit (`vicesky_overcast.png` / `vicesky_overcast_clouds.png`).
- Procedural lightning flash overlay baked into the thunder sky layers.
- Stricter teal saturation in the rain palette.
- Faint cloud-sheet fallback in `clouds.png` instead of a fully transparent texture.
- Regenerated `moon_phases.png` (512x256) covering all eight phases, with matching per-phase discs in `celestial/moon/`.
- SHA-256 checksum files emitted next to every pack zip.
- GitHub Actions build matrix (Ubuntu + Windows) in `.github/workflows/build.yml`.
- Standard smoke tests in `tests/test_smoke.py`.

### Changed

- `pack_format` set to 75 with `supported_formats` covering 15..88 so OptiFine 1.21.11, vanilla 1.20.1, and Fabric 26.2 all accept the pack.
- Top-face zenith seam feathered with a 24px alpha ring so the cube edges blend.
- Night cloud palette broken into two altitude bands for cleaner separation.
- Sun generator emits a clean disc; the 32x32 modern sun path no longer inherits scanline stripes.
- Sun glow bands are now per-band integer-blendable (`int(color * peak)`), no off-palette tints.
- Every randomized helper (`add_stars`, `add_retro_stars`, `add_nebula_haze`, `add_noise`, `add_sunset_god_rays`, `add_lightning_flash`, `generate_tileable_noise`) now uses a per-feature `random.Random(RNG_SEED + offset)` instead of mutating the global seed.
- Documentation rewritten in plain voice.
- Validator cross-references every Nuit `texture:` path against an existing PNG and verifies that `weather.entries` values are valid.
- Validator accepts any `pack_format` or `supported_formats` covering 15..88 instead of requiring exact 15.
- `EXPECTED_PNG_SIZES` enumerates every PNG so silent size drift fails fast.

### Fixed

- `scripts/print_tree.py` no longer hardcodes `/home/z/my-project/ViceSky`; it derives the root from its own location.
- `add_sunset_god_rays` no longer relies on the global seed.
- `moon_phases.png` parity with the 8-phase disc table.
- Nuit JSON now uses `conditions.weathers` (plural) and a `worlds` restriction to `overworld`, matching Nuit's `Conditions` class.
- File `pack.mcmeta` declares both `pack_format` and `min_format` / `max_format` so 1.21.9+ clients and older loaders agree.

### Removed

- Dead helpers (`interpolate_palette`, `seam_blend_horizontal`, `generate_sun_with_scanlines`, dead `GLOBAL_RNG`).
- All Python comments and docstrings from project scripts.
- Hand-edited OptiFine `.properties` files.
- Legacy `vicesky_weather*.json` copies.
- Duplicated `RGB→RGBA` conversions in the skybox assembler.

## [0.1.1]

### Added

- Per-pixel alpha controls on the cloud renderer so the rotating overlay does not punch on top of the base layer.
- `--force` flag on `build_zip.py` for clean rebuilds.

### Changed

- Cloud coverage dropped roughly in half across all moods in response to early feedback.
- `clouds.png` blob count and alpha cap reduced.
- README and CHANGELOG rewritten for clarity.

## [0.1.0] - 2026-06-27

### Added

- Initial release of ViceSky.
- OptiFine custom sky support.
- Nuit JSON skybox support.
- Procedurally generated sky, sun, moon, and pack icon textures.
- Build and validation scripts.
