diff --git a/changes/bundle-app-native.md b/changes/bundle-app-native.md
new file mode 100644
index 00000000..315e30be
--- /dev/null
+++ b/changes/bundle-app-native.md
@@ -0,0 +1,5 @@
+bump: minor
+type: feat
+**`app native "
"` in `package.ludic`** — `ludic bundle` on Windows copies that directory's files beside
+the executable: native libraries loaded at run time (NVIDIA Streamline's DLLs, say) and their licence texts,
+which cannot live in the pack.
diff --git a/changes/grass-vulkan-fix.md b/changes/grass-vulkan-fix.md
new file mode 100644
index 00000000..5b402e9a
--- /dev/null
+++ b/changes/grass-vulkan-fix.md
@@ -0,0 +1,5 @@
+bump: patch
+type: fix
+**The meadow's grass draws on the Vulkan renderer again** — the chunked grass path uploaded its `vec4` tile
+table with `u_fv`, which on Vulkan copies one float per array element, so every tile had no blades.
+`u_f4v` uploads arrays of `vec4`.
diff --git a/changes/hdr-output.md b/changes/hdr-output.md
new file mode 100644
index 00000000..3e8c2040
--- /dev/null
+++ b/changes/hdr-output.md
@@ -0,0 +1,9 @@
+bump: minor
+type: feat
+**HDR10 output on the Vulkan renderer** — `r3d_hdr(on)` asks for an ST 2084 / BT.2020 swapchain where the
+display offers one.
+
+The tonemap's HDR10 variant keeps the SDR picture up to a 200-nit paper white and rolls highlights on to
+1000 nits; the overlay converts the interface to the same white; HDR metadata is set where the loader has
+the command. The screen and LDR images are 10-bit while it is on, and screenshots refuse rather than write
+a PQ image as SDR. OpenGL and the Vulkan SDR frame are unchanged. `R3D_HDR` overrides the setting.
diff --git a/changes/mesh-grass.md b/changes/mesh-grass.md
new file mode 100644
index 00000000..63f6f59e
--- /dev/null
+++ b/changes/mesh-grass.md
@@ -0,0 +1,9 @@
+bump: minor
+type: feat
+**Mesh-shader grass** — on a card with `VK_EXT_mesh_shader`, `r3d_mesh_grass(on)` draws each chunk of grass
+tiles as one mesh-shader dispatch, and a blade that is culled emits no vertices at all.
+
+- **`ludic-dev shaders`** — a variant whose first file is `*.mesh` compiles that stage as a Vulkan 1.3 mesh
+ shader; its SPIR-V keeps the `.vert` name, so the manifest is unchanged.
+- **The seam** — `gpu_has_mesh()` and `gpu_draw_mesh_tasks(x, y, z)`; a mesh program's pipeline has no
+ vertex input and its bindings the mesh stage. The device enables `meshShader` and `maintenance4`.
diff --git a/changes/streamline-dlss-reflex.md b/changes/streamline-dlss-reflex.md
new file mode 100644
index 00000000..50cc194d
--- /dev/null
+++ b/changes/streamline-dlss-reflex.md
@@ -0,0 +1,13 @@
+bump: minor
+type: feat
+**NVIDIA DLSS super resolution and Reflex on the Vulkan renderer** — through NVIDIA Streamline 2.14.1.
+
+- **The loader** — on Windows `Vk.open()` takes `sl.interposer.dll` beside the executable in place of
+ `vulkan-1.dll` when a program asks (`Vk.sl_prefer`), falling back to plain Vulkan without it; the `sl*`
+ exports and feature functions are reachable from Ludic.
+- **render3d** — `r3d_dlss(mode)` upscales the lit HDR frame before bloom and the tonemap, jittered on a
+ Halton cycle, with preset K in every mode (the default M cost 18 ms a frame at 4K on an RTX 3070 Ti);
+ `r3d_dlss_render_w/h` give the size to render at. `r3d_reflex(mode)` sleeps each frame and marks
+ simulation, submit and present. `R3D_DLSS`, `R3D_REFLEX`, `R3D_DLSS_PRESET`, `R3D_SL_LOG` for tests.
+- **Commands the interposer lacks** — it exports no `vkSetHdrMetadataEXT`, `vkCmdDrawMeshTasksEXT` or
+ acceleration-structure command; `Vk.has` checks one and `vkGetDeviceProcAddr` reaches it.