diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8e443bea35..6b456056c9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -23,7 +23,7 @@ env:
OPENRCT2_BUILD_SERVER: GitHub
OPENRCT2_ORG_TOKEN: ${{ secrets.OPENRCT2_ORG_TOKEN }}
BACKTRACE_IO_TOKEN: ${{ secrets.BACKTRACE_IO_TOKEN }}
- OPENRCT2_VERSION: 0.4.11
+ OPENRCT2_VERSION: 0.4.12
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
concurrency:
diff --git a/debian/changelog b/debian/changelog
index defa395eba..73bbc575cd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,63 @@
-openrct2 (0.4.11-develop-1) unstable; urgency=medium
+openrct2 (0.4.12-develop-1) unstable; urgency=medium
+
+ * Feature: [#622] Add option to align the top toolbar buttons horizontally centred (off by default).
+ * Feature: [#20263] Ability to increase the size of the map in the (0, 0) direction.
+ * Feature: [#21714] [Plugin] Costume assignment is now tailored to each staff type.
+ * Feature: [#21853] Enlarged UI mode.
+ * Feature: [#21893, #22065] On launch, the game now indicates what system is being initialised.
+ * Feature: [#21913] [Plugin] Allow precise and safe control of peep animations.
+ * Feature: [#22046] [Plugin] Add interface for crashed vehicle particle.
+ * Feature: [#22085] [Plugin] The result of actions that create banners now includes the bannerIndex.
+ * Feature: [#22087] [Plugin] Expose guests’ favourite rides to the plugin API.
+ * Feature: [#22090] [Plugin] Allow writing of paused state in non-networked settings.
+ * Feature: [#22140] Add option to automatically close dropdown menus if Enlarged UI is enabled.
+ * Feature: [#22150] [Plugin] Expose monthly expenditure history to the plugin API.
+ * Feature: [#22210] [Plugin] Peeps can now be made stationary or completely frozen.
+ * Feature: [#22210] [Plugin] The direction in which a peep is facing can now be manipulated.
+ * Improved: [#19870] Allow using new colours in UI themes.
+ * Improved: [#21774] The Alpine Coaster now supports using the alternative colour schemes.
+ * Improved: [#21853] Dropdowns now automatically use multiple columns if they are too tall for the screen.
+ * Improved: [#21981] Rendering performance of the map window has been improved considerably.
+ * Improved: [#21981] The map window now defaults to showing as much of the map as fits the screen.
+ * Improved: [#21983] Taking a screenshot now shows a message again, closing when taking another.
+ * Improved: [#22026] The options window now stays centred when window scaling is changed.
+ * Improved: [#22060] [Plugin] The scroll wheel can now be used to modify spinner widget values in custom/script windows.
+ * Improved: [#22065] Joining a network game now indicates progress using coaster trains.
+ * Improved: [#22075] [Plugin] Plugins can now use G1 Icons.
+ * Improved: [#22084] The game now temporarily pauses while the load/save window is open.
+ * Improved: [#22217] See-through items are ignored again in viewport/pointer interaction.
+ * Improved: [objects#238] Add preview image for invisible queue.
+ * Improved: [objects#329] Add RCT1AA lay-down coaster trains (for import only).
+ * Change: [#7248] Small mini-maps are now centred in the map window.
+ * Change: [#20240] Heavy snow and blizzards now make guests buy and use umbrellas.
+ * Change: [#21043] The new music styles are no longer added to old parks automatically.
+ * Change: [#21214] Wacky Worlds and Time Twister’s scenario names now match their park names.
+ * Change: [#21991] UI themes JSON now use colour names and a translucency bool, instead of a number (old themes still work).
+ * Change: [#22057] Reorder Time Twister’s scenarios and adjust their difficulty classification.
+ * Change: [#22173] Patrol path selection is visible over existing patrol paths.
+ * Change: [#22196] Make track navigation buttons holdable.
+ * Change: [#22227] [Plugin] Ride prices are now constrained for plugins as well.
+ * Fix: [#13234] Vehicle weight sometimes wrong after using Remove All Guests cheat.
+ * Fix: [#13294] Map corners are cut off in some directions (original bug).
+ * Fix: [#14630] Non-ASCII thousands and decimal separators not processed correctly.
+ * Fix: [#21496] Some RCT1 scenery is hidden after saving and reloading.
+ * Fix: [#21533] Support glitches on Hybrid Coaster.
+ * Fix: [#21974] No reason specified when attempting to place benches, lamps, or bins on path with no unconnected edges (original bug).
+ * Fix: [#21987] [Plugin] API cannot handle negative removal prices.
+ * Fix: [#22008] Uninverted Lay-down roller coaster uses the wrong support type.
+ * Fix: [#22012] [Plugin] Images on ImgButton widgets cannot be updated.
+ * Fix: [#22121] Some news items in the “Recent Messages” window have the wrong text colour.
+ * Fix: [#22152] [Plugin] Negative signed integers are truncated.
+ * Fix: [#22161] Using arrow keys in textboxes crashes the game.
+ * Fix: [#22174] Cheats are reset when starting a server.
+ * Fix: [#22185] Intensity and nausea are incorrectly sorted in the rides list after ratings invalidation.
+ * Fix: [#22226] Red traffic light shows incorrect sprite when pressed.
+ * Fix: [objects#323] Incorrect wall boundaries on large WW/TT scenery objects.
+ * Fix: [objects#331] Incorrect hover car capacity string.
+ * Fix: [objects#334] Incorrect school bus capacity string.
+ * Fix: [objects#337] Swan Boats use an incorrect third remap colour (original bug).
+
+ openrct2 (0.4.11-develop-1) unstable; urgency=medium
* Feature: [#11512] Coloured usernames by group on multiplayer servers.
* Feature: [#21734] Park admittance price can now be set via text input.
diff --git a/distribution/changelog.txt b/distribution/changelog.txt
index 70453e11d4..f0e0ef809a 100644
--- a/distribution/changelog.txt
+++ b/distribution/changelog.txt
@@ -1,4 +1,4 @@
-0.4.12 (in development)
+0.4.12 (2024-07-07)
------------------------------------------------------------------------
- Feature: [#622] Add option to align the top toolbar buttons horizontally centred (off by default).
- Feature: [#20263] Ability to increase the size of the map in the (0, 0) direction.
diff --git a/distribution/linux/openrct2.appdata.xml b/distribution/linux/openrct2.appdata.xml
index 0a613a14ab..9f404ab534 100644
--- a/distribution/linux/openrct2.appdata.xml
+++ b/distribution/linux/openrct2.appdata.xml
@@ -69,6 +69,9 @@
none
+
+ https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.12
+
https://github.com/OpenRCT2/OpenRCT2/releases/tag/v0.4.11
diff --git a/distribution/macos/Info.plist b/distribution/macos/Info.plist
index 71152095f9..85f1fc7c8b 100644
--- a/distribution/macos/Info.plist
+++ b/distribution/macos/Info.plist
@@ -13,7 +13,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 0.4.11
+ 0.4.12
CFBundleSignature
ORCT
LSMinimumSystemVersion
diff --git a/distribution/readme.txt b/distribution/readme.txt
index f5b4bbe018..0942ace55c 100644
--- a/distribution/readme.txt
+++ b/distribution/readme.txt
@@ -1,5 +1,5 @@
-Last updated: 2024-05-05
-Release version: 0.4.11
+Last updated: 2024-07-07
+Release version: 0.4.12
------------------------------------------------------------------------
diff --git a/readme.md b/readme.md
index bab07a2242..a57de2f4c6 100644
--- a/readme.md
+++ b/readme.md
@@ -19,7 +19,7 @@
### Download
| Latest release | Latest development build |
|-----------------------------------------------------------------------------------------------------------------------|--------------------------|
-| [](https://openrct2.org/downloads/master/latest) | [](https://openrct2.org/downloads/develop/latest) |
+| [](https://openrct2.org/downloads/master/latest) | [](https://openrct2.org/downloads/develop/latest) |
---
diff --git a/scripts/setenv b/scripts/setenv
index 880a95ab42..094164af76 100755
--- a/scripts/setenv
+++ b/scripts/setenv
@@ -6,7 +6,7 @@ set -e
# It should be dot sourced into your environment
if [[ "$GITHUB_ACTIONS" != "true" ]]; then
export OPENRCT2_BUILD_SERVER=$(hostname)
- export OPENRCT2_VERSION=0.4.11
+ export OPENRCT2_VERSION=0.4.12
GITHUB_REF=$(git rev-parse --symbolic-full-name HEAD)
GITHUB_SHA=$(git rev-parse HEAD)
fi
diff --git a/src/openrct2-android/app/build.gradle b/src/openrct2-android/app/build.gradle
index 4e5428fa91..77c091c1dc 100644
--- a/src/openrct2-android/app/build.gradle
+++ b/src/openrct2-android/app/build.gradle
@@ -11,7 +11,7 @@ android {
targetSdkVersion 28
versionCode 2
- versionName '0.4.11'
+ versionName '0.4.12'
externalNativeBuild {
cmake {
arguments '-DANDROID_STL=c++_shared'
diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h
index 8b35723fc1..030baf0ec0 100644
--- a/src/openrct2/Version.h
+++ b/src/openrct2/Version.h
@@ -14,7 +14,7 @@
#include
#define OPENRCT2_NAME "OpenRCT2"
-#define OPENRCT2_VERSION "0.4.11"
+#define OPENRCT2_VERSION "0.4.12"
#if defined(__amd64__) || defined(_M_AMD64)
# define OPENRCT2_ARCHITECTURE "x86-64"
diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp
index 07cd6958d8..7a09220e6a 100644
--- a/src/openrct2/network/NetworkBase.cpp
+++ b/src/openrct2/network/NetworkBase.cpp
@@ -47,7 +47,7 @@ using namespace OpenRCT2;
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
-constexpr uint8_t kNetworkStreamVersion = 3;
+constexpr uint8_t kNetworkStreamVersion = 0;
const std::string kNetworkStreamID = std::string(OPENRCT2_VERSION) + "-" + std::to_string(kNetworkStreamVersion);