diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7e25ccc..87cd619 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,8 @@ because it turns other people's test suites red.
## [Unreleased]
+## [0.3.0-rc1] - 2026-09-03
+
### Breaking
- **A generated `.csv` quotes only the fields that need it, so its bytes are
@@ -1019,6 +1021,7 @@ because it turns other people's test suites red.
Initial release.
-[Unreleased]: https://github.com/donislawdev/TestingFilesGenerator/compare/v0.2.0...HEAD
+[Unreleased]: https://github.com/donislawdev/TestingFilesGenerator/compare/v0.3.0-rc1...HEAD
+[0.3.0-rc1]: https://github.com/donislawdev/TestingFilesGenerator/compare/v0.2.0...v0.3.0-rc1
[0.2.0]: https://github.com/donislawdev/TestingFilesGenerator/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/donislawdev/TestingFilesGenerator/releases/tag/v0.1.0
diff --git a/cmd/tfg-gui/rsrc_windows_amd64.syso b/cmd/tfg-gui/rsrc_windows_amd64.syso
index 442b0cb..bb0c063 100644
Binary files a/cmd/tfg-gui/rsrc_windows_amd64.syso and b/cmd/tfg-gui/rsrc_windows_amd64.syso differ
diff --git a/cmd/tfg/rsrc_windows_amd64.syso b/cmd/tfg/rsrc_windows_amd64.syso
index ead00d8..8d2748f 100644
Binary files a/cmd/tfg/rsrc_windows_amd64.syso and b/cmd/tfg/rsrc_windows_amd64.syso differ
diff --git a/cmd/tfg/tfg.rc b/cmd/tfg/tfg.rc
index 089b066..4432202 100644
--- a/cmd/tfg/tfg.rc
+++ b/cmd/tfg/tfg.rc
@@ -39,8 +39,8 @@
1 ICON "../../internal/gui/icon/chickpea.ico"
1 VERSIONINFO
-FILEVERSION 0,2,0,0
-PRODUCTVERSION 0,2,0,0
+FILEVERSION 0,3,0,0
+PRODUCTVERSION 0,3,0,0
FILEOS 0x40004L
FILETYPE 0x1L
BEGIN
@@ -50,12 +50,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "DonislawDev"
VALUE "FileDescription", "Generates test files for QA, from the command line"
- VALUE "FileVersion", "0.2.0"
+ VALUE "FileVersion", "0.3.0-rc1"
VALUE "InternalName", "tfg"
VALUE "LegalCopyright", "Copyright (C) 2026 DonislawDev. GNU GPL version 3."
VALUE "OriginalFilename", "tfg.exe"
VALUE "ProductName", "Testing Files Generator"
- VALUE "ProductVersion", "0.2.0"
+ VALUE "ProductVersion", "0.3.0-rc1"
END
END
BLOCK "VarFileInfo"
diff --git a/internal/guard/testdata/screens/about.png b/internal/guard/testdata/screens/about.png
index b855c6d..7c6dd7a 100644
Binary files a/internal/guard/testdata/screens/about.png and b/internal/guard/testdata/screens/about.png differ
diff --git a/internal/guard/testdata/screens/about.xml b/internal/guard/testdata/screens/about.xml
index 48e0157..408a651 100644
--- a/internal/guard/testdata/screens/about.xml
+++ b/internal/guard/testdata/screens/about.xml
@@ -30,7 +30,7 @@
- Testing Files Generator 0.2.0
+ Testing Files Generator 0.3.0-rc1
diff --git a/internal/gui/icon/chickpea.rc b/internal/gui/icon/chickpea.rc
index 83bc89f..47744c8 100644
--- a/internal/gui/icon/chickpea.rc
+++ b/internal/gui/icon/chickpea.rc
@@ -38,8 +38,8 @@
* the fourth number of FILEVERSION is a zero rather than a build counter.
*/
1 VERSIONINFO
-FILEVERSION 0,2,0,0
-PRODUCTVERSION 0,2,0,0
+FILEVERSION 0,3,0,0
+PRODUCTVERSION 0,3,0,0
FILEOS 0x40004L
FILETYPE 0x1L
BEGIN
@@ -49,12 +49,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "DonislawDev"
VALUE "FileDescription", "Generates test files for QA"
- VALUE "FileVersion", "0.2.0"
+ VALUE "FileVersion", "0.3.0-rc1"
VALUE "InternalName", "tfg-gui"
VALUE "LegalCopyright", "Copyright (C) 2026 DonislawDev. GNU GPL version 3."
VALUE "OriginalFilename", "tfg-gui.exe"
VALUE "ProductName", "Testing Files Generator"
- VALUE "ProductVersion", "0.2.0"
+ VALUE "ProductVersion", "0.3.0-rc1"
END
END
BLOCK "VarFileInfo"
diff --git a/internal/version/version.go b/internal/version/version.go
index 43dc2fd..b1bfaf6 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -7,17 +7,25 @@ package version
// Version is written into every manifest. A manifest without it cannot
// explain a hash mismatch after an upgrade.
//
-// Set to 0.1.0 by the owner on 2026-08-02 and raised to 0.2.0 by the owner on
-// 2026-08-28. It stopped being an internal number the day 0.1.0 was published:
-// this is what somebody compares their build against when a hash they stored
-// months ago does not match.
-//
-// A minor bump rather than a major one, and here that is a claim about other
-// people's CI rather than a habit - D11 and immutable rule 3. What changed
-// under Breaking is which names and sizes this tool AGREES to produce, not what
-// it writes once it agrees. The machine answer to that is the golden hashes in
-// internal/guard/testdata, which are byte for byte the ones 0.1.0 shipped with.
-const Version = "0.2.0"
+// Set to 0.1.0 by the owner on 2026-08-02, raised to 0.2.0 on 2026-08-28 and
+// to 0.3.0-rc1 on 2026-09-03, every one of them by the owner. It stopped being
+// an internal number the day 0.1.0 was published: this is what somebody
+// compares their build against when a hash they stored months ago does not
+// match.
+//
+// 0.2.0 was a minor bump that moved no bytes. This one moves them, and before
+// 1.0 the minor is where that goes - D11 and immutable rule 3 ask for a bump,
+// not for a particular digit. Six formats have different bytes under Go 1.27,
+// a log advances through time, a GIF moves, and a CSV quotes only the fields
+// that need it. The changelog lists each one and says whether there is a way
+// back to the old bytes.
+//
+// The suffix is not decoration and it is not spelled freely. The release
+// workflow marks a release as a prerelease when the TAG NAME carries a hyphen,
+// so 0.3.0rc1 would have gone out as the latest stable release. The changelog
+// section has to be spelled the same way, because the workflow greps for a
+// heading naming exactly this string before it will build anything.
+const Version = "0.3.0-rc1"
// LicenceNotice is what "tfg license" prints and what the window's about
// screen shows.
diff --git a/web/public/404.html b/web/public/404.html
index 67085ba..ebfca55 100644
--- a/web/public/404.html
+++ b/web/public/404.html
@@ -56,7 +56,7 @@
That page is not here
The address you followed does not