diff --git a/doc/changes/auxiliary/mr.255.md b/doc/changes/auxiliary/mr.255.md
index 033aafdec..ed2f23188 100644
--- a/doc/changes/auxiliary/mr.255.md
+++ b/doc/changes/auxiliary/mr.255.md
@@ -1 +1,2 @@
-tracking: Add image undistort/normalize cache mechanism, to avoid needing to remap every frame.
+tracking: Add image undistort/normalize cache mechanism, to avoid needing to
+remap every frame.
diff --git a/doc/changes/auxiliary/mr.266.4.md b/doc/changes/auxiliary/mr.266.4.md
index 089027a82..89e266d9f 100644
--- a/doc/changes/auxiliary/mr.266.4.md
+++ b/doc/changes/auxiliary/mr.266.4.md
@@ -1 +1,2 @@
-tracking: Remove all path hardcoded calibration data loading and saving functions.
+tracking: Remove all path hardcoded calibration data loading and saving
+functions.
diff --git a/doc/changes/auxiliary/mr.278.md b/doc/changes/auxiliary/mr.278.md
index ad3f1dc3d..39095d215 100644
--- a/doc/changes/auxiliary/mr.278.md
+++ b/doc/changes/auxiliary/mr.278.md
@@ -1 +1,2 @@
-threading: New helper functions and structs for doing threaded work, these are on a higher level then the one in os wrappers.
+threading: New helper functions and structs for doing threaded work, these are
+on a higher level then the one in os wrappers.
diff --git a/doc/changes/big/mr.306.md b/doc/changes/big/mr.306.md
index 61d6272a2..9af0ced30 100644
--- a/doc/changes/big/mr.306.md
+++ b/doc/changes/big/mr.306.md
@@ -1 +1,7 @@
-Support optional systemd socket-activation: if not disabled at configure time, `monado-service` can be launched by systemd as a service with an associated socket. If the service is launched this way, it will use the systemd-created domain socket instead of creating its own. (If launched manually, it will still create its own as normal.) This allows optional auto-launching of the service when running a client (OpenXR) application. Associated systemd unit files are also included.
+Support optional systemd socket-activation: if not disabled at configure time,
+`monado-service` can be launched by systemd as a service with an associated
+socket. If the service is launched this way, it will use the systemd-created
+domain socket instead of creating its own. (If launched manually, it will still
+create its own as normal.) This allows optional auto-launching of the service
+when running a client (OpenXR) application. Associated systemd unit files are
+also included.
diff --git a/doc/changes/compositor/mr.257.md b/doc/changes/compositor/mr.257.md
index 255f2a126..2eefd2562 100644
--- a/doc/changes/compositor/mr.257.md
+++ b/doc/changes/compositor/mr.257.md
@@ -1 +1 @@
-Fix XCB memory leaks and correctly use XCB/Xlib interop.
+main: Fix XCB memory leaks and correctly use XCB/Xlib interop.
diff --git a/doc/changes/compositor/mr.259.md b/doc/changes/compositor/mr.259.md
index 0e83fbf30..ebf3e5a66 100644
--- a/doc/changes/compositor/mr.259.md
+++ b/doc/changes/compositor/mr.259.md
@@ -1 +1 @@
-Shorten Vulkan initializers.
+main: Shorten Vulkan initializers.
diff --git a/doc/changes/compositor/mr.262.md b/doc/changes/compositor/mr.262.md
index 928816e7e..02e7bee5a 100644
--- a/doc/changes/compositor/mr.262.md
+++ b/doc/changes/compositor/mr.262.md
@@ -1 +1 @@
-Port XCB and direct mode back ends to plain C.
+main: Port XCB and direct mode back ends to plain C.
diff --git a/doc/changes/compositor/mr.263.md b/doc/changes/compositor/mr.263.md
index 41945b2f6..aafd0f527 100644
--- a/doc/changes/compositor/mr.263.md
+++ b/doc/changes/compositor/mr.263.md
@@ -1 +1,2 @@
-Add support for Vive Pro, Valve Index, Oculus DK1, DK2 and CV1 to NVIDIA direct mode.
+main: Add support for Vive Pro, Valve Index, Oculus DK1, DK2 and CV1 to NVIDIA
+direct mode.
diff --git a/doc/changes/compositor/mr.271.md b/doc/changes/compositor/mr.271.md
index a92ed4337..b5d0cfc9e 100644
--- a/doc/changes/compositor/mr.271.md
+++ b/doc/changes/compositor/mr.271.md
@@ -1 +1 @@
-Split RandR and NVIDIA direct mode window back ends.
+main: Split RandR and NVIDIA direct mode window back ends.
diff --git a/doc/changes/compositor/mr.277.md b/doc/changes/compositor/mr.277.md
index df20bee4f..cf1da8760 100644
--- a/doc/changes/compositor/mr.277.md
+++ b/doc/changes/compositor/mr.277.md
@@ -1 +1 @@
-Improve synchronization and remove redundant vkDeviceWaitIdle calls.
+main: Improve synchronization and remove redundant vkDeviceWaitIdle calls.
diff --git a/doc/changes/compositor/mr.278.md b/doc/changes/compositor/mr.278.md
index 8f63c9d70..d490a68d8 100644
--- a/doc/changes/compositor/mr.278.md
+++ b/doc/changes/compositor/mr.278.md
@@ -1 +1,2 @@
-main: Delay the destruction of swapchains until a time where it is safe, this allows swapchains to be destroyed from other threads.
+main: Delay the destruction of swapchains until a time where it is safe, this
+allows swapchains to be destroyed from other threads.
diff --git a/doc/changes/compositor/mr.282.1.md b/doc/changes/compositor/mr.282.1.md
index 69cff0749..a89de7003 100644
--- a/doc/changes/compositor/mr.282.1.md
+++ b/doc/changes/compositor/mr.282.1.md
@@ -1 +1,2 @@
-client: Propegate the supported formats from the real compositor to the client ones.
+client: Propegate the supported formats from the real compositor to the client
+ones.
diff --git a/doc/changes/compositor/mr.340.1.md b/doc/changes/compositor/mr.340.1.md
new file mode 100644
index 000000000..c2d1da9e9
--- /dev/null
+++ b/doc/changes/compositor/mr.340.1.md
@@ -0,0 +1 @@
+main: Add support for multiple projection layers.
diff --git a/doc/changes/compositor/mr.340.2.md b/doc/changes/compositor/mr.340.2.md
new file mode 100644
index 000000000..ac66cdf80
--- /dev/null
+++ b/doc/changes/compositor/mr.340.2.md
@@ -0,0 +1 @@
+main: Implement quad layers.
diff --git a/doc/changes/compositor/mr.340.md b/doc/changes/compositor/mr.340.md
deleted file mode 100644
index 6464a274d..000000000
--- a/doc/changes/compositor/mr.340.md
+++ /dev/null
@@ -1,2 +0,0 @@
-Implement quad layers.
-Add support for multiple projection layers.
diff --git a/doc/changes/drivers/mr.242.md b/doc/changes/drivers/mr.242.md
index 34092ed87..dbec5fa3b 100644
--- a/doc/changes/drivers/mr.242.md
+++ b/doc/changes/drivers/mr.242.md
@@ -1 +1 @@
-Add a driver for the Google Daydream View controller.
+dd: Add a driver for the Google Daydream View controller.
diff --git a/doc/changes/drivers/mr.249.md b/doc/changes/drivers/mr.249.md
index 5c31f91e2..326418a3a 100644
--- a/doc/changes/drivers/mr.249.md
+++ b/doc/changes/drivers/mr.249.md
@@ -1 +1 @@
-Use new pre-filter and 3-DoF filter in drivers.
+all: Use new pre-filter and 3-DoF filter in drivers.
diff --git a/doc/changes/drivers/mr.251.md b/doc/changes/drivers/mr.251.md
index 791516f60..0a0b081ee 100644
--- a/doc/changes/drivers/mr.251.md
+++ b/doc/changes/drivers/mr.251.md
@@ -1 +1,2 @@
-Added a Arduino based flexible input device driver, along with Arduino C++ code for it.
+arduino: Added a Arduino based flexible input device driver, along with Arduino
+C++ code for it.
diff --git a/doc/changes/drivers/mr.281.md b/doc/changes/drivers/mr.281.md
index 5f665e38e..1f2f8b7f1 100644
--- a/doc/changes/drivers/mr.281.md
+++ b/doc/changes/drivers/mr.281.md
@@ -1,2 +1,2 @@
-Add basic 3DOF driver for Vive Wand Controller with full input support and
+vive: Add basic 3DOF driver for Vive Wand Controller with full input support and
 Valve Index Controller with partial input support.
diff --git a/doc/changes/misc_features/mr.233.md b/doc/changes/misc_features/mr.233.md
index e8b744e2f..8486fb300 100644
--- a/doc/changes/misc_features/mr.233.md
+++ b/doc/changes/misc_features/mr.233.md
@@ -3,4 +3,5 @@
 - mr.238
 - mr.240
 ---
-Refactor CMake build system to make static (not object) libraries and explicitly describe dependencies.
+build: Refactor CMake build system to make static (not object) libraries and
+explicitly describe dependencies.
diff --git a/doc/changes/misc_features/mr.242.2.md b/doc/changes/misc_features/mr.242.2.md
index c3db5560d..6b22dc03c 100644
--- a/doc/changes/misc_features/mr.242.2.md
+++ b/doc/changes/misc_features/mr.242.2.md
@@ -1 +1,2 @@
-util: Add some bit manipulation helper functions in `util/u_bitwise.c` and `util/u_bitwise.c`.
+util: Add some bit manipulation helper functions in `util/u_bitwise.c` and
+`util/u_bitwise.c`.
diff --git a/doc/changes/misc_features/mr.242.md b/doc/changes/misc_features/mr.242.md
index 4640689f3..f82b1c1d2 100644
--- a/doc/changes/misc_features/mr.242.md
+++ b/doc/changes/misc_features/mr.242.md
@@ -1 +1,2 @@
-os: Add utility functionality for accessing Bluetooth Low-Energy (Bluetooth LE or BLE) over D-Bus, in `os/os_ble.h` and `os/os_ble_dbus.c`.
+os/ble: Add utility functionality for accessing Bluetooth Low-Energy (Bluetooth
+LE or BLE) over D-Bus, in `os/os_ble.h` and `os/os_ble_dbus.c`.
diff --git a/doc/changes/misc_features/mr.245.md b/doc/changes/misc_features/mr.245.md
index 83fafcad3..ac8ccb752 100644
--- a/doc/changes/misc_features/mr.245.md
+++ b/doc/changes/misc_features/mr.245.md
@@ -1 +1,2 @@
-tracking: Make stereo_camera_calibration reference counted, and have the prober, not the calibration, call the save function.
+tracking: Make stereo_camera_calibration reference counted, and have the prober,
+not the calibration, call the save function.
diff --git a/doc/changes/misc_features/mr.249.md b/doc/changes/misc_features/mr.249.md
index e72d297f6..c92aaf902 100644
--- a/doc/changes/misc_features/mr.249.md
+++ b/doc/changes/misc_features/mr.249.md
@@ -1 +1,2 @@
-math: Expand algebraic math functions in `math/m_api.h`, `math/m_vec3.h` and `math/m_base.cpp`.
+math: Expand algebraic math functions in `math/m_api.h`, `math/m_vec3.h` and
+`math/m_base.cpp`.
diff --git a/doc/changes/misc_features/mr.252.2.md b/doc/changes/misc_features/mr.252.2.md
index dfd0011bc..d8dc18a58 100644
--- a/doc/changes/misc_features/mr.252.2.md
+++ b/doc/changes/misc_features/mr.252.2.md
@@ -1 +1 @@
-Unify inputs for generated files between CMake and Meson builds.
+build: Unify inputs for generated files between CMake and Meson builds.
diff --git a/doc/changes/misc_features/mr.252.md b/doc/changes/misc_features/mr.252.md
index 28f2c461a..a2bf9ebab 100644
--- a/doc/changes/misc_features/mr.252.md
+++ b/doc/changes/misc_features/mr.252.md
@@ -1 +1 @@
-Enable the build system to install `monado-cli` and `monado-gui`.
+build: Enable the build system to install `monado-cli` and `monado-gui`.
diff --git a/doc/changes/misc_features/mr.284.md b/doc/changes/misc_features/mr.284.md
index 8f0748ffe..0e9ed391a 100644
--- a/doc/changes/misc_features/mr.284.md
+++ b/doc/changes/misc_features/mr.284.md
@@ -1,4 +1,4 @@
 ---
 - issue.62
 ---
-Support building with system cJSON instead of bundled copy.
+build: Support building with system cJSON instead of bundled copy.
diff --git a/doc/changes/misc_features/mr.292.md b/doc/changes/misc_features/mr.292.md
index 22d520ce5..eb4df68d0 100644
--- a/doc/changes/misc_features/mr.292.md
+++ b/doc/changes/misc_features/mr.292.md
@@ -1 +1,3 @@
-ci: Perform test builds using the Android NDK (for armeabi-v7a and armv8-a). This is not a full Android port (missing a compositor, etc) but it ensures we don't add more Android porting problems.
+ci: Perform test builds using the Android NDK (for armeabi-v7a and armv8-a).
+This is not a full Android port (missing a compositor, etc) but it ensures we
+don't add more Android porting problems.
diff --git a/doc/changes/misc_fixes/issue.65.md b/doc/changes/misc_fixes/issue.65.md
index 49b0ef6c6..8244259ac 100644
--- a/doc/changes/misc_fixes/issue.65.md
+++ b/doc/changes/misc_fixes/issue.65.md
@@ -2,4 +2,5 @@
 - issue.64
 - mr.265
 ---
-Check if `org.bluez` name is available before calling in `os/os_ble_dbus.c`.
+os/ble: Check if `org.bluez` name is available before calling in
+`os/os_ble_dbus.c`.
diff --git a/doc/changes/misc_fixes/mr.230.md b/doc/changes/misc_fixes/mr.230.md
index be5ae172e..387ffe8e2 100644
--- a/doc/changes/misc_fixes/mr.230.md
+++ b/doc/changes/misc_fixes/mr.230.md
@@ -1 +1 @@
-Fix build issues and build warnings when 32-bit.
+build: Fix build issues and build warnings when 32-bit.
diff --git a/doc/changes/misc_fixes/mr.247.md b/doc/changes/misc_fixes/mr.247.md
index b463b66fb..5536f359f 100644
--- a/doc/changes/misc_fixes/mr.247.md
+++ b/doc/changes/misc_fixes/mr.247.md
@@ -1 +1,2 @@
-os/ble: Fix crash due to bad dbus path, triggered by bad return checking when probing for BLE devices.
+os/ble: Fix crash due to bad dbus path, triggered by bad return checking when
+probing for BLE devices.
diff --git a/doc/changes/misc_fixes/mr.249.md b/doc/changes/misc_fixes/mr.249.md
index 24350e3d4..9fd1ead28 100644
--- a/doc/changes/misc_fixes/mr.249.md
+++ b/doc/changes/misc_fixes/mr.249.md
@@ -1 +1 @@
-Use the correct time delta in DayDream driver.
+d/dd: Use the correct time delta in DayDream driver.
diff --git a/doc/changes/misc_fixes/mr.253.md b/doc/changes/misc_fixes/mr.253.md
index c5691e5e4..712ac08b0 100644
--- a/doc/changes/misc_fixes/mr.253.md
+++ b/doc/changes/misc_fixes/mr.253.md
@@ -1 +1 @@
-Stop changelog snippets from showing up in 'Related Pages'
+doc: Stop changelog snippets from showing up in 'Related Pages'
diff --git a/doc/changes/misc_fixes/mr.258.md b/doc/changes/misc_fixes/mr.258.md
index 610aa1261..a583c09de 100644
--- a/doc/changes/misc_fixes/mr.258.md
+++ b/doc/changes/misc_fixes/mr.258.md
@@ -1 +1 @@
-Fix meson warnings, increase compiler warning level.
+build: Fix meson warnings, increase compiler warning level.
diff --git a/doc/changes/misc_fixes/mr.264.md b/doc/changes/misc_fixes/mr.264.md
index c85143175..cf8652e11 100644
--- a/doc/changes/misc_fixes/mr.264.md
+++ b/doc/changes/misc_fixes/mr.264.md
@@ -1 +1 @@
-Fix leak in `os/os_ble_dbus.c` code when failing to find any device.
+os/ble: Fix leak in `os/os_ble_dbus.c` code when failing to find any device.
diff --git a/doc/changes/misc_fixes/mr.265.md b/doc/changes/misc_fixes/mr.265.md
index 0a2d484d6..06ecbf55d 100644
--- a/doc/changes/misc_fixes/mr.265.md
+++ b/doc/changes/misc_fixes/mr.265.md
@@ -1 +1 @@
-Make ble code check for some error returns in `os/os_ble_dbus.c`.
+os/ble: Make ble code check for some error returns in `os/os_ble_dbus.c`.
diff --git a/doc/changes/misc_fixes/mr.268.md b/doc/changes/misc_fixes/mr.268.md
index 2f9f9c6f1..450ef7654 100644
--- a/doc/changes/misc_fixes/mr.268.md
+++ b/doc/changes/misc_fixes/mr.268.md
@@ -1 +1,2 @@
-Fix warnings in `util/u_hashset.h` after pedantic warnings were enabled for C++.
+u/hashset: Fix warnings in `util/u_hashset.h` after pedantic warnings were
+enabled for C++.
diff --git a/doc/changes/misc_fixes/mr.284.2.md b/doc/changes/misc_fixes/mr.284.2.md
index 8b0574f5b..e1150380f 100644
--- a/doc/changes/misc_fixes/mr.284.2.md
+++ b/doc/changes/misc_fixes/mr.284.2.md
@@ -1 +1,2 @@
-Mark OpenXR runtime target in CMake as a MODULE library, instead of a SHARED library.
+build: Mark OpenXR runtime target in CMake as a MODULE library, instead of a
+SHARED library.
diff --git a/doc/changes/misc_fixes/mr.284.md b/doc/changes/misc_fixes/mr.284.md
index 2f2af148e..c4931d9b8 100644
--- a/doc/changes/misc_fixes/mr.284.md
+++ b/doc/changes/misc_fixes/mr.284.md
@@ -1 +1 @@
-Fix failure to build from source on ppc64 and s390x.
+build: Fix failure to build from source on ppc64 and s390x.
diff --git a/doc/changes/misc_fixes/mr.314.md b/doc/changes/misc_fixes/mr.314.md
index 6166c0be5..82b612505 100644
--- a/doc/changes/misc_fixes/mr.314.md
+++ b/doc/changes/misc_fixes/mr.314.md
@@ -1,6 +1,6 @@
-Way way back when Gallium was made `auxiliary` was named `aux` but then it was
-ported to Windows and it was renamed to `auxiliary` since Windows is [allergic to
-filenames that match its device names](https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions)
-(e.g., `AUX`, `CON`, `PRN`, etc.). Through the ages, this knowledge was lost
-and so we find ourselves with the same problem. Although
-Monado inherited the correct name, the same old mistake was made in docs.
+windows: Way way back when Gallium was made `auxiliary` was named `aux` but then
+it was ported to Windows and it was renamed to `auxiliary` since Windows is
+[allergic to filenames that match its device names](https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions)
+(e.g., `AUX`, `CON`, `PRN`, etc.). Through the ages, this knowledge was lost and
+so we find ourselves with the same problem. Although Monado inherited the
+correct name, the same old mistake was made in docs.
diff --git a/doc/changes/misc_fixes/mr.327.md b/doc/changes/misc_fixes/mr.327.md
index d7c2df75a..8d95deb58 100644
--- a/doc/changes/misc_fixes/mr.327.md
+++ b/doc/changes/misc_fixes/mr.327.md
@@ -1 +1,3 @@
-CMake build: Rename (nearly) all build options so they begin with `XRT_` and match the defines used in the source. You will probably want to clear your build directory and reconfigure from scratch.
+build: For CMake rename (nearly) all build options so they begin with `XRT_` and
+match the defines used in the source. You will probably want to clear your build
+directory and reconfigure from scratch.
diff --git a/doc/changes/misc_fixes/mr.4.md b/doc/changes/misc_fixes/mr.4.md
index 97e34943d..eff089624 100644
--- a/doc/changes/misc_fixes/mr.4.md
+++ b/doc/changes/misc_fixes/mr.4.md
@@ -1 +1,3 @@
-Added information to the README containing OpenHMD version requirement and information regarding the requirement of `GL_EXT_memory_object_fd` and limitations on Monado's compositor.
+README: Added information to the README containing OpenHMD version requirement
+and information regarding the requirement of `GL_EXT_memory_object_fd` and
+limitations on Monado's compositor.
diff --git a/doc/changes/state_trackers/issue.63.md b/doc/changes/state_trackers/issue.63.md
index f34aacd85..495f4391f 100644
--- a/doc/changes/state_trackers/issue.63.md
+++ b/doc/changes/state_trackers/issue.63.md
@@ -3,4 +3,4 @@
 - mr.256
 ---
 
-Fix compilation issue in `st/gui` when building without OpenCV.
+gui: Fix compilation issue in `st/gui` when building without OpenCV.
diff --git a/doc/changes/state_trackers/mr.261.md b/doc/changes/state_trackers/mr.261.md
index 5dcfcbd27..8217547de 100644
--- a/doc/changes/state_trackers/mr.261.md
+++ b/doc/changes/state_trackers/mr.261.md
@@ -1 +1 @@
-Print more information from the prober when spewing.
+prober: Print more information from the prober when spewing.
diff --git a/doc/changes/xrt/mr.266.md b/doc/changes/xrt/mr.266.md
index 5a3f233ea..201283750 100644
--- a/doc/changes/xrt/mr.266.md
+++ b/doc/changes/xrt/mr.266.md
@@ -1 +1,2 @@
-Add a new settings interface for transporting camera settings, in `xrt/xrt_settings.h`.
+Add a new settings interface for transporting camera settings, in
+`xrt/xrt_settings.h`.
diff --git a/doc/changes/xrt/mr.294.md b/doc/changes/xrt/mr.294.md
index 2133c51d5..bd2d79ef0 100644
--- a/doc/changes/xrt/mr.294.md
+++ b/doc/changes/xrt/mr.294.md
@@ -1 +1,3 @@
-Add `XRT_CAST_PTR_TO_OXR_HANDLE` and `XRT_CAST_OXR_HANDLE_TO_PTR` macros to perform warning-free conversion between pointers and OpenXR handles, even on 32-bit platforms. They should be used instead of raw casts.
+Add `XRT_CAST_PTR_TO_OXR_HANDLE` and `XRT_CAST_OXR_HANDLE_TO_PTR` macros to
+perform warning-free conversion between pointers and OpenXR handles, even on
+32-bit platforms. They should be used instead of raw casts.
diff --git a/doc/changes/xrt/mr.347.md b/doc/changes/xrt/mr.347.md
index b2880b272..5336429be 100644
--- a/doc/changes/xrt/mr.347.md
+++ b/doc/changes/xrt/mr.347.md
@@ -1 +1,3 @@
-Remove declaration and implementations of `xrt_prober_create`: the minimal functionality previously performed there should now be moved to `xrt_instance_create`.
+Remove declaration and implementations of `xrt_prober_create`: the minimal
+functionality previously performed there should now be moved to
+`xrt_instance_create`.