Skip to content

Versions and Upgrading

m4bwav edited this page Oct 4, 2026 · 1 revision

Releases

Version On nuget.org (UTC) CHANGELOG date Listed Deprecated Downloads
1.0.0 2026-10-04 2026-10-03 yes no 0
1.0.0-beta.1 2026-10-03 2026-10-03 yes no 0

Registry figures read from nuget.org on 2026-10-04 at 03:47 UTC, minutes after 1.0.0 was pushed. 1.0.0 was released in the evening of 2026-10-03 in US Central time, which was already 2026-10-04 in UTC; the CHANGELOG uses the release day in the maintainer's time zone, nuget.org uses UTC.

Both releases were published from GitHub Actions through nuget.org Trusted Publishing, with a GitHub build attestation for the nupkg and a GitHub Release holding the nupkg and the snupkg (symbols). gh attestation verify UniverseGenerator.1.0.0.nupkg -R m4bwav/UniverseGenerator verifies the file attached to the GitHub Release; the file downloaded from nuget.org has a different hash, because nuget.org adds its repository signature.

1.0.0 (the first stable release)

Everything in 1.0.0-beta.1, plus (from the CHANGELOG):

  • Option codes and links: GeneratorOptions.ToCode(), GeneratorOptions.FromCode(code), Universe.Link(address, options), and links accepted by Universe.At.
  • Presets Pocket, Roguelike, Cozy and Epic, and the options Arms, ExtraLanes and DangerShift.
  • ToJson(indented, children) on every level.
  • Orbital elements: Planet.Eccentricity, Inclination and PeriapsisAngle.
  • GeneratorOptions.Names: catalogue or invented names.
  • Units.Convert and Units.Map with LengthUnit, MassUnit, TemperatureUnit and TimeUnit.
  • Soft problems reported as values: GeneratorOptions.Check() and Galaxy.Warnings (GeneratorWarning, WarningCode).
  • Galaxy shapes Colliding, Starburst and Clustered, by name only.
  • Guarantees: GeneratorOptions.Require with Guarantee flags.
  • GeneratorHooks and Custom fields on every level.
  • Editable weight tables: GeneratorTables, WeightTable, WeightEntry and GeneratorOptions.Tables.
  • In the Unity package only: the UniverseGenerator.Unity assembly with TablesAsset and UnityVectors.

The API reference marks each of the 128 members that 1.0.0 added with "1.0.0" (counted by comparing the public surfaces of the two published DLLs).

Moving from 1.0.0-beta.1 to 1.0.0

Change the version number; nothing else is needed. 1.0.0 removed or changed no public member of 1.0.0-beta.1 (the same comparison), and no seed's output changed: the CHANGELOG says every golden file of 1.0.0-beta.1 is unchanged, and the run below shows it for one galaxy. The same program on both versions:

using System.Security.Cryptography;
using System.Text;
using UniverseGeneration;

var galaxy = Galaxy.Generate("my-seed");
var text = string.Join("\n", galaxy.Systems.Select(s =>
    $"{s.Name} {s.Star.SpectralType} {s.Danger} {s.Descriptor} | " + string.Join(" | ", s.Planets.Select(p => p.Summary))));
using var sha = SHA256.Create();
var hash = BitConverter.ToString(sha.ComputeHash(Encoding.UTF8.GetBytes(text))).Replace("-", "").Substring(0, 16);
Console.WriteLine($"{galaxy.Systems.Count} systems, {text.Length} characters, SHA-256 {hash}...");
Console.WriteLine(galaxy.Systems[0].Planets[0].Summary);

prints on 1.0.0-beta.1 (.NET 10) and on 1.0.0 (.NET 10 and .NET Framework 4.8) alike:

60 systems, 20910 characters, SHA-256 8D325689851D2D82...
1.5 g, thin carbon dioxide air at 0.099 bar, 190 °C by day, -13 °C by night, tidally locked; hazard 3

What you may notice after upgrading:

  • New fields on records. Planets have orbital elements and every record has Custom. Code that builds records with object initialisers keeps compiling; the new properties take their defaults.
  • Galaxies made with the new options are new galaxies. DangerShift, ExtraLanes, Arms, Names, Require and Tables at their defaults give exactly the 1.0.0-beta.1 output; set to anything else, they give a different galaxy from the same seed.
  • Addresses saved from 1.0.0-beta.1 still regenerate the same objects on 1.0.0, with the same options passed.

The seed promise across 1.x

From 1.0.0, a seed, the options and the generator version give the same output for the whole 1.x line. Later 1.x releases add features without moving any seed: the feature matrix lists what is planned. A change that would alter any seed's output would add a generator version (v2- addresses) and keep version 1 selectable (Same seed, same galaxy).

Clone this wiki locally