3.0 KiB
3.0 KiB
Release checklist
Before v0.1.0
The record API lands first, so the data update can use it.
Record API
- Typed columns — a column declares its type, so
jsonwrites42rather than"42"andsqlan unquoted literal: string, integer, number, boolean, and a way to write null. A template that can render a value its type rejects is a load error. The option key is reserved from then on, so a common column name liketypeis a poor pick. - Struct-filling — fill a Go struct from
fake:"…"tags holding a path or an inline template, for parity with gofakeit and go-faker. The field's Go type is the column type, through the same conversion and load checks as typed columns, and a nested struct is its own draw group. Revise the Decision "A record is a template seen as columns, not a second schema format" with that reason. - Draw groups — references into one category share one draw per render (one
record, or one
Fake) in both views; eachrepeatiteration draws anew, and a bare reference draws each time. An option naming a draw group splits a render into several entities. Replaces the Decision "A record shares one reference draw per category". Each expectation becomes a test:first,lastandemailreadingperson→ one personfrom_first/from_lastgroupedfrom,to_first/to_lastgroupedto→ two peoplehost, plusguestsrepeated 3 times → four peoplecodeandsymbolsibling fields readingcurrency, as{code} {symbol}→ a matching pair{a} & {b}, each readingperson→ one person, or two whenaandbname different groups- two bare
{/sv_SE.word}→ two words
Data
- Major data update. Shipped categories render as records with their building
blocks as columns (
sv_SE.person→femalefirst,malefirst;misc.uuid→variant), andsv_SE.addressdraws its postal code apart from its locality. It also settles what a version promises about shipped data: its paths, its record columns, and whether a seed renders the same output across versions. email.localandusernameshare their handle lists, while their name variants differ on purpose. Share the lists only if that is a clean win.
Release
- Versioning — semver tags, starting at
v0.1.0;v1.0.0once the grammar settles. From v2 the module path carries/vN(go.mod, imports, the README's install lines), so fences ship batched into as few majors as possible. Reword the Decision "After the first tag, a new fence is a major version" to match: beforev1.0.0a fence ships in a minor. - Changelog —
CHANGELOG.md, started withv0.1.0; the fence Decision's "changelog" links there. - CLI without Go — investigate prebuilt binaries: GoReleaser publishing to Gitea releases, a container image, Homebrew and Scoop.
- Homepage — a simple page for fejkdata with an in-browser generator: the library compiled to WebAssembly, so visitors generate as much data as they like in their own browser.