v1.0.0

diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc9c858..0389b0d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,12 @@
 
 ## [Unreleased]
 
+## [1.0.0] - 2023-08-24
+
+With the 1.0.0 release, the ABI will be more stable from now on. Please note
+the allocation and initialization requirements for avifImage, avifDecoder,
+avifEncoder, and avifRGBImage in the "avif/avif.h" header.
+
 List of incompatible ABI changes in this release:
 
 * The clli member was added to the avifImage struct.
@@ -36,23 +42,33 @@
   should be updated to set quality (and qualityAlpha if applicable) and leave
   minQuantizer, maxQuantizer, minQuantizerAlpha, and maxQuantizerAlpha
   initialized to the default values.
-* The --targetSize flag in avifenc was added to adapt the quality so that the
+* The --target-size flag in avifenc was added to adapt the quality so that the
   output file size is as close to the given number of bytes as possible.
 * Add the public API function avifImageIsOpaque() in avif.h.
+* Add the public API functions avifImagePlane(), avifImagePlaneRowBytes(),
+  avifImagePlaneWidth(), and avifImagePlaneHeight() in avif.h.
 * Add experimental API for progressive AVIF encoding.
 * Add API for multi-threaded YUV to RGB color conversion.
 * Add experimental support for AV2 behind the compilation flag AVIF_CODEC_AVM.
   AVIF_CODEC_CHOICE_AVM is now part of avifCodecChoice.
+* Add experimental YCgCo-R support behind the compilation flag
+  AVIF_ENABLE_EXPERIMENTAL_YCGCO_R.
 * Allow lossless 4:0:0 on grayscale input.
 * Add avifenc --no-overwrite flag to avoid overwriting output file.
+* Add avifenc --clli flag to set clli.
 * Add support for all transfer functions when using libsharpyuv.
 
 ### Changed
+* Enable the libaom AV1E_SET_SKIP_POSTPROC_FILTERING codec control by default.
+* Use the constant rate factor (CRF) instead of the constant quantization
+  parameter (CQP) rate control mode with the SVT-AV1 encoder.
 * Exif and XMP metadata is exported to PNG and JPEG files by default,
   except XMP payloads larger than 65502 bytes in JPEG.
 * The --grid flag in avifenc can be used for images that are not evenly divided
   into cells.
 * Apps must be built with libpng version 1.6.32 or above.
+* Change the encoder to write the boxes within the "stbl" box in the order of
+  stsd, stts, stsc, stsz, stco, stss.
 * avifImageCopy() no longer accepts source U and V channels to be NULL for
   non-4:0:0 input if Y is not NULL and if AVIF_PLANES_YUV is specified.
 * The default values of the maxQuantizer and maxQuantizerAlpha members of
@@ -81,7 +97,13 @@
   memory allocation failures.
 * avifReadImage(), avifJPEGRead() and avifPNGRead() now remove the trailing zero
   byte from read XMP chunks, if any. See avifImageFixXMP().
+* Force keyframe for alpha if color is a keyframe.
+* Write primaries and transfer characteritics info in decoded PNG.
+* Add support for reading PNG gAMA, cHRM and sRGB chunks.
 * The 'mode' member of the avifImageMirror struct was renamed 'axis'.
+* Change the type of the 'depth' parameter from int to uint32_t in
+  avifFullToLimitedY(), avifFullToLimitedUV(), avifLimitedToFullY(), and
+  avifLimitedToFullUV().
 
 ## [0.11.1] - 2022-10-19
 
@@ -951,7 +973,8 @@
 - Constants `AVIF_VERSION`, `AVIF_VERSION_MAJOR`, `AVIF_VERSION_MINOR`, `AVIF_VERSION_PATCH`
 - `avifVersion()` function
 
-[Unreleased]: https://github.com/AOMediaCodec/libavif/compare/v0.11.1...HEAD
+[Unreleased]: https://github.com/AOMediaCodec/libavif/compare/v1.0.0...HEAD
+[1.0.0]: https://github.com/AOMediaCodec/libavif/compare/v0.11.1...v1.0.0
 [0.11.1]: https://github.com/AOMediaCodec/libavif/compare/v0.11.0...v0.11.1
 [0.11.0]: https://github.com/AOMediaCodec/libavif/compare/v0.10.1...v0.11.0
 [0.10.1]: https://github.com/AOMediaCodec/libavif/compare/v0.10.0...v0.10.1
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aa89c87..c39ab1c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,7 @@
 # Specify search path for CMake modules to be loaded by include() and find_package()
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
 
-project(libavif LANGUAGES C VERSION 0.11.1)
+project(libavif LANGUAGES C VERSION 1.0.0)
 
 # Set C99 as the default
 set(CMAKE_C_STANDARD 99)
@@ -23,9 +23,9 @@
 #     Increment MINOR. Set PATCH to 0
 #   If the source code was changed, but there were no interface changes:
 #     Increment PATCH.
-set(LIBRARY_VERSION_MAJOR 15)
+set(LIBRARY_VERSION_MAJOR 16)
 set(LIBRARY_VERSION_MINOR 0)
-set(LIBRARY_VERSION_PATCH 1)
+set(LIBRARY_VERSION_PATCH 0)
 set(LIBRARY_VERSION "${LIBRARY_VERSION_MAJOR}.${LIBRARY_VERSION_MINOR}.${LIBRARY_VERSION_PATCH}")
 set(LIBRARY_SOVERSION ${LIBRARY_VERSION_MAJOR})
 
diff --git a/include/avif/avif.h b/include/avif/avif.h
index 6122353..b0cfa98 100644
--- a/include/avif/avif.h
+++ b/include/avif/avif.h
@@ -55,10 +55,10 @@
 // and non-zero during development of the next release. This should allow for
 // downstream projects to do greater-than preprocessor checks on AVIF_VERSION
 // to leverage in-development code without breaking their stable builds.
-#define AVIF_VERSION_MAJOR 0
-#define AVIF_VERSION_MINOR 11
-#define AVIF_VERSION_PATCH 1
-#define AVIF_VERSION_DEVEL 1
+#define AVIF_VERSION_MAJOR 1
+#define AVIF_VERSION_MINOR 0
+#define AVIF_VERSION_PATCH 0
+#define AVIF_VERSION_DEVEL 0
 #define AVIF_VERSION \
     ((AVIF_VERSION_MAJOR * 1000000) + (AVIF_VERSION_MINOR * 10000) + (AVIF_VERSION_PATCH * 100) + AVIF_VERSION_DEVEL)