# Changelog
All notable changes to this package will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [1.1.0] - 2026-05-10

- **`MockRandom` facade** – seedable wrapper around `System.Random` that every generator now routes through. New entry points: `MockRandom.Seed(int)`, `MockRandom.ResetSeed()`, `MockRandom.UniqueIndex`, `MockRandom.Gaussian`, `MockRandom.Pick`, `MockRandom.PickWeighted`, `MockRandom.Shuffle`, `MockRandom.Subset`. `Mock.Seed(int)` and `Mock.ResetSeed()` forward to it for convenience.
- **Symbol replacer** – `Mock.Format("###-##-####")` with `#` = digit, `?` = lowercase letter, `*` = alphanumeric. `Mock.Phone`, `Mock.Ssn`, `Mock.ZipCode` and `Mock.MacAddress` internals now use it.
- **String-shape helpers** – `Mock.Hash`, `Mock.Hexadecimal`, `Mock.AlphaNumeric`, `Mock.Letters`, `Mock.ClampString`.
- **Template tokenizer** – `Mock.Parse("{{firstName}} <{{email}}> id={{unique}}")`. Every `SimpleDataType` has a built-in token, plus `{{unique}}`. Unknown tokens are left in place for debugging.
- **Community extension seam** – `Mock.RegisterToken(name, Func<string>)`, `Mock.RegisterGenerator<T>(name, Func<T>)`, `Mock.Get<T>(name)`, `Mock.UnregisterToken`, `Mock.HasToken`. Registered names double as tokens inside `Mock.Parse`.
- **`OrNull` / `OrNullable` / `OrDefault` extensions** – drop-in probabilistic nullability: `Mock.Phone().OrNull(0.3f)` for reference types, `Mock.Integer().OrNullable(0.3f)` for value types (`T` → `T?`), or `OrDefault` for either.
- **`MockPerson`** – internally consistent aggregate (name, email, username, age, DOB, address, job, avatar URL).
- **`MockOf<T>` builder** – delegate-based fluent object builder with `Set`, `Finish`, `UseSeed`, `Generate`, `GenerateLazy` and implicit conversion to `T`. No reflection, no expression trees.
- **`SeriesPattern.GaussianNoise`** and `MockSeries.GaussianNoise(...)` convenience – noise drawn from a normal distribution.
- **Gaussian-backed `Mock.Age()`** – normal distribution (mean 38, σ 14) clamped to 18-85 replaces the three-uniform hack.
- **Image / placeholder helpers** – `Mock.ImageUrl` (Picsum), `Mock.PlaceholderImageUrl` (placehold.co), `Mock.SvgDataUri` (offline data URI).
- **Themed text** – `Mock.HackerAdjective/Noun/Verb/IngVerb/Phrase` and `Mock.Review` for activity-log and e-commerce mocks.
- **`SimpleDataType` additions** (append-only, ordinals of existing values unchanged) – `Hash`, `ImageUrl`, `HackerPhrase`, `Review`. Each one is also registered as a token so `Mock.Parse("{{hash}}")` / `{{imageUrl}}` / `{{hackerPhrase}}` / `{{review}}` work out of the box.
- `Mock.Id()` now uses `MockRandom.UniqueIndex` so IDs respect the shared seed.
- `MockSeries` and `MockStream` route all randomness through `MockRandom` instead of `UnityEngine.Random`.
- `Mock.Guid()` now respects `Mock.Seed`: when a seed is active the GUID is built from `MockRandom` so seeded runs are reproducible; unseeded runs still use `System.Guid.NewGuid()` for full uniqueness. Format (`8-4-4-4-12` lower-case hex) is unchanged.
- **Mock Magic Generator window** – the seed toolbar now exposes two explicit modes: **Random** (fresh randomness every regenerate; toolbar is just the mode toggle) and **Stable** (reproducible output; reveals a single Seed field that re-seeds and regenerates on commit). The active mode and seed value are persisted via `EditorPrefs`.

## [1.0.1] - 2026-04-21

- Static helpers for common fake values: identities (GUIDs, sequential IDs), people and orgs (names, emails, phones, addresses, companies, jobs), dates and times, text (lorem, sentences, paragraphs), numbers and money, network strings (URLs, IPs, MACs, user agents), product-style data (names, prices, ratings), and assorted extras (passwords, credit-card-shaped numbers with Luhn, ISBN-13, enums, and more). 
- Use Mock.Generate(SimpleDataType) for a single switch-style API.
- Labeled numeric series with presets (months, quarters, regions, etc.) and patterns (linear, exponential, seasonal, random walk, bell curve, and others), including multi-series generation.
- Push mock data on a schedule (constant, random, burst, drip) to listeners; works in Play Mode and Edit Mode.
- Turn MockDataPoint series into plain text, CSV, JSON, or C# array snippets.
