diff --git a/ChangeLog b/ChangeLog
index 3f18b6b..29e387f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+1.0 - 2025-05-11
+ - FU::Util: Fix parsing of empty sections in query_decode()
+ - FU::Util: Fix buffer overflow in json_format() float formatting
+ - FU::Util: Reject `0x1f` in utf8_decode()
+ - FU::Pg: Add perl<->text and bin<->text type conversion methods
+ - FU::Validate: Improved error messages
+ - FU::MultipartFormData: Various parser fixes
+ - FU: Include request body in verbose error logs
+ - FU: Add fu->log_verbose()
+ - FU: Extend debug_info pages with request body, response body, 'fu'
+ object dump, expandable query parameters and interpolated SQL queries
+ - FU: Improve styling of debug_info pages
+ - FU: Preserve headers on fu->redirect
+ - FU: Ignore HTTP_CONTENT_LENGTH and HTTP_CONTENT_TYPE FastCGI parameters
+ - FU: Suppress warning about missing files in FU::monitor_path
+ - FU: Reject hash character and newlines in request path
+ - Fix creating read-only undef/true/false in json_parse() and FU::Pg
+ - Benchmark updates
+
0.5 - 2025-04-24
- FU::Util: Set O_CLOEXEC on fds received through `fdpass_recv()`
- FU::Util: Fix interpretation of false options in `json_format()` and
diff --git a/FU.pm b/FU.pm
index 106322e..440a14c 100644
--- a/FU.pm
+++ b/FU.pm
@@ -1,4 +1,4 @@
-package FU 0.5;
+package FU 1.0;
use v5.36;
use Carp 'confess', 'croak';
use IO::Socket;
@@ -978,14 +978,6 @@ __END__
FU - A Lean and Efficient Zero-Dependency Web Framework.
-=head1 EXPERIMENTAL
-
-This module is still in development: it's missing important functionality and
-there will likely be a few breaking API changes. This framework currently
-powers manned.org as a test. I'll do a stable 1.0 release once FU is used in
-production for vndb.org, which will take a few months in the best case
-scenario.
-
=head1 SYNOPSIS
use v5.36;
@@ -1011,6 +1003,11 @@ scenario.
=head1 DESCRIPTION
+FU is the backend web framework developed for L and
+L, but is also perfectly suitable for other
+projects. Besides a web framework, this distrubion also includes a bunch of
+handy utility functions and modules.
+
=head2 Distribution Overview
This top-level C module is a web development framework. The C
diff --git a/FU/Benchmarks.pod b/FU/Benchmarks.pod
index 37415ff..0762c7a 100644
--- a/FU/Benchmarks.pod
+++ b/FU/Benchmarks.pod
@@ -30,7 +30,7 @@ The following module versions were used:
=item L 3.18.0
-=item L 0.5
+=item L 1.0
=item L 1.08
diff --git a/FU/DebugImpl.pm b/FU/DebugImpl.pm
index 88e0bb5..ebf8c80 100644
--- a/FU/DebugImpl.pm
+++ b/FU/DebugImpl.pm
@@ -1,5 +1,5 @@
# Internal module used by FU.pm
-package FU::DebugImpl 0.5;
+package FU::DebugImpl 1.0;
use v5.36;
use utf8;
use experimental 'for_list';
diff --git a/FU/Log.pm b/FU/Log.pm
index e2da4a2..9606326 100644
--- a/FU/Log.pm
+++ b/FU/Log.pm
@@ -1,4 +1,4 @@
-package FU::Log 0.5;
+package FU::Log 1.0;
use v5.36;
use Exporter 'import';
use POSIX 'strftime';
@@ -65,11 +65,6 @@ __END__
FU::Log - Extremely Basic Process-Wide Logging Infrastructure
-=head1 EXPERIMENTAL
-
-This module is still in development and there will likely be a few breaking API
-changes, see the main L module for details.
-
=head1 SYNOPSIS
use FU::Log 'log_write';
diff --git a/FU/MultipartFormData.pm b/FU/MultipartFormData.pm
index 7d9d77e..48ebb77 100644
--- a/FU/MultipartFormData.pm
+++ b/FU/MultipartFormData.pm
@@ -1,4 +1,4 @@
-package FU::MultipartFormData 0.5;
+package FU::MultipartFormData 1.0;
use v5.36;
use Carp 'confess';
use FU::Util 'utf8_decode';
diff --git a/FU/Pg.pm b/FU/Pg.pm
index ff88d60..4732daf 100644
--- a/FU/Pg.pm
+++ b/FU/Pg.pm
@@ -1,4 +1,4 @@
-package FU::Pg 0.5;
+package FU::Pg 1.0;
use v5.36;
use FU::XS;
@@ -35,11 +35,6 @@ __END__
FU::Pg - The Ultimate (synchronous) Interface to PostgreSQL
-=head1 EXPERIMENTAL
-
-This module is still in development and there will likely be a few breaking API
-changes, see the main L module for details.
-
=head1 SYNOPSYS
use FU::Pg;
diff --git a/FU/SQL.pm b/FU/SQL.pm
index 2f8566d..db8aff1 100644
--- a/FU/SQL.pm
+++ b/FU/SQL.pm
@@ -1,4 +1,4 @@
-package FU::SQL 0.5;
+package FU::SQL 1.0;
use v5.36;
use Exporter 'import';
use Carp 'confess';
@@ -103,11 +103,6 @@ __END__
FU::SQL - Small and Safe SQL Query Builder
-=head1 EXPERIMENTAL
-
-This module is still in development and there will likely be a few breaking API
-changes, see the main L module for details.
-
=head1 SYNOPSIS
use FU::SQL;
diff --git a/FU/Util.pm b/FU/Util.pm
index 18db781..922747d 100644
--- a/FU/Util.pm
+++ b/FU/Util.pm
@@ -1,4 +1,4 @@
-package FU::Util 0.5;
+package FU::Util 1.0;
use v5.36;
use FU::XS;
@@ -98,11 +98,6 @@ __END__
FU::Util - Miscellaneous Utility Functions
-=head1 EXPERIMENTAL
-
-This module is still in development and there will likely be a few breaking API
-changes, see the main L module for details.
-
=head1 SYNOPSIS
use FU::Util qw/json_format/;
diff --git a/FU/Validate.pm b/FU/Validate.pm
index 2741ee6..a4544bf 100644
--- a/FU/Validate.pm
+++ b/FU/Validate.pm
@@ -1,4 +1,4 @@
-package FU::Validate 0.5;
+package FU::Validate 1.0;
use v5.36;
use experimental 'builtin', 'for_list';
@@ -447,11 +447,6 @@ __END__
FU::Validate - Data and form validation and normalization
-=head1 EXPERIMENTAL
-
-This module is still in development and there will likely be a few breaking API
-changes, see the main L module for details.
-
=head1 DESCRIPTION
This module provides an easy and simple interface for data validation. It can
diff --git a/FU/XMLWriter.pm b/FU/XMLWriter.pm
index 1e9bb90..fe755f1 100644
--- a/FU/XMLWriter.pm
+++ b/FU/XMLWriter.pm
@@ -1,4 +1,4 @@
-package FU::XMLWriter 0.5;
+package FU::XMLWriter 1.0;
use v5.36;
use Carp 'confess';
use Exporter 'import';
@@ -83,11 +83,6 @@ __END__
FU::XMLWriter - Convenient and efficient XML and HTML generator.
-=head1 EXPERIMENTAL
-
-This module is still in development and there will likely be a few breaking API
-changes, see the main L module for details.
-
=head1 SYNOPSIS
use FU::XMLWriter ':html5_';
diff --git a/FU/XS.pm b/FU/XS.pm
index 52cc757..b583e00 100644
--- a/FU/XS.pm
+++ b/FU/XS.pm
@@ -1,5 +1,5 @@
# This module is for internal use by other FU modules.
-package FU::XS 0.5;
+package FU::XS 1.0;
use Carp; # may be called by XS.
use XSLoader;
XSLoader::load('FU');
diff --git a/README.md b/README.md
index d29e00c..8f25140 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,6 @@ collection of handy utility modules.
*Contributing:* Refer to my [contribution guidelines](https://dev.yorhel.nl/contributing).
-## Project Status
-
-**EXPERIMENTAL**; expect breaking changes.
-
## Build & Install
```sh