Changelog

Die letzten Änderungen an "Return to the Roots"
b3c0769 s25client 23.01.2026 18:14 Jan ?imek Capture spacebar under Wayland (#1855)
af47028 s25client 23.01.2026 13:22 Flamefire Workaround GCC 9 issue with comparing `std::optional` in `BOOST_TEST`

The comparison is ambiguous, fixed in GCC 10.
4066a8b s25client 23.01.2026 12:41 Flamefire Update translations and fix test

Includes https://github.com/Return-To-The-Roots/languages/pull/41
fixing a crash where the German translation was missing a format string.

Adapt the test to catch this:
If we don't "translate" something in the `en_GB` file it won't show up
in the `.mo` file and won't be checked.

As the test checks all translated strings (see the `continue`) anyways
iterate over the translation file instead, backreferencing the "gold"
entries.
5f65bad s25client 23.01.2026 11:50 Flamefire Make TestServer_Works on CI more reliable
cde6f73 languages 23.01.2026 02:21 Farmer_Markus Fixed game crashing when game files failed to load (again)
d88cc07 s25client 21.01.2026 15:23 Flamefire Merge pull request #1738 from kubaau/cheat_enemy_productivity
c793e0a s25client 21.01.2026 13:47 Flamefire Check cheat visibility only once outside the loop
fdb4c0b s25client 21.01.2026 13:39 Flamefire Change order of checks in test
015e6c0 s25client 21.01.2026 13:35 Flamefire Factor constants out of loop
b87e768 s25client 21.01.2026 11:55 Flamefire Merge pull request #1804 from Farmer-Markus/android
125ab78 s25client 21.01.2026 11:03 Farmer_Markus Disable mouse-click fix for touch controls
14c951b s25client 20.01.2026 11:24 Flamefire Merge pull request #1867 from Shawn8901/fix-nix-shell
12da8bf s25client 20.01.2026 11:23 Flamefire Use some texture for all buttons
67502cb s25client 19.01.2026 21:39 Shawn8901 fix nix-shell for recent nixpkgs versions
696db30 s25client 19.01.2026 17:08 Flamefire Introduce constant for max radius
e9947dc s25client 19.01.2026 13:34 Flamefire Add test for stuck attacker (#1863)
48e7f51 s25client 19.01.2026 10:47 Flamefire Add TODOs for Replay breaking enhancements

The point can be considered invalid if it is too far and the attacker
would abort on the next event handling.
Defenders with now missing attackers will still come out of the
building and go right back in which looks weird.
4c7ed68 s25client 17.01.2026 20:36 Flamefire Fix waiting attackers becoming stuck when target flag becomes unreachable.

When the defender kills the current attacker (at the flag)
`FindAttackerNearBuilding` is used to get the next one for the defender
to fight. This takes the closest attacker that is ready, i.e. waiting
around the flag and calls `AttackDefenderAtFlag` which usually causes
the attacker to start walking to the flag. However if there is no path
to the flag (anymore, e.g. after destroying a road) the attacker won't
do anything and the function returns `false`.

As this isn't checked the defender will keep waiting for it.

This can lead to use-after-free if the attacker is destroyed (defeated
in free fight, went back home, ...) as the defender will then have a
dangling pointer to it.

Fixes #1863
8e5821d s25client 17.01.2026 16:04 Flamefire Add simple test
0e0db2b s25client 17.01.2026 14:10 Flamefire Add Korean glyphs

Contributed by @rasberryrabbit
Closes #1860
6471ed4 s25client 17.01.2026 12:51 Flamefire Encode GFs directly in ID
413ba23 s25client 16.01.2026 16:40 Flamefire Add option to jump by specific number of GFs to jump window

Closes #1861
705ba23 s25client 13.01.2026 15:21 Flamefire Merge pull request #1858 from Flamefire/wording
5452ee9 s25client 13.01.2026 09:57 Flamefire Fix clang-tidy warning
62e6564 s25client 12.01.2026 21:44 anon569 Add missing Hungarian accented glyphs to font

This PR adds a small number of missing Hungarian accented characters to the font.
91be7ad s25client 12.01.2026 16:53 Flamefire Assert wh and flag exists for warehouse worker
4459c1a languages 12.01.2026 13:50 Flamefire Fix format strings
2d433b9 languages 12.01.2026 13:50 Flamefire Fix format strings
5177b71 languages 12.01.2026 11:41 Flamefire Import from launchpad
16052f2 s25client 12.01.2026 11:16 Flamefire Update translations

Fixes #1856
9584adf languages 12.01.2026 11:14 Flamefire Update translations from source
cf0223b languages 12.01.2026 11:14 Flamefire Update translations from source
771c605 s25client 12.01.2026 10:54 Flamefire Show donkey icon for donkey breeder

Refactor `BLD_WORK_DESC` to use a variant so we can signify producing a
job type and set the to donkeys for the donkey breeder.
d0cc796 languages 12.01.2026 10:41 Flamefire Replace names by S2 names
173b5f9 languages 12.01.2026 10:41 Flamefire Replace names by S2 names
a4f39fb s25client 12.01.2026 10:09 Flamefire Add tooltips for temple and shipyard production toggle buttons

Closes #1837
c2d6657 s25client 12.01.2026 10:06 Flamefire Replace names by S2 names
c5fdb72 s25client 06.01.2026 14:53 Flamefire Order nations in game lobby as in original S2

Use an array for the order to avoid changing the enum which breaks
savegames and replays.

Closes #1853
9196754 s25client 04.01.2026 13:53 Flamefire Translate comments in nobHarborBuilding
8901626 s25client 04.01.2026 13:52 Flamefire Correctly handle wares carried into harbors with no path to goal

When the goal for a ware becomes unreachable while it is carried into a harbor
`RecalcRoute` will call `FindRouteToWarehouse`.
Usually the selected warehouse will be the harbor as it is trivially the closest.
However when the harbor does not accept this ware type another one might be chosen
and the ware needs to be moved out instead of stored.

But `FindRouteToWarehouse` does NOT set `next_dir` while the ware is carried even when
called from `RecalcRoute` where the caller assumes it is set.
Changing this causes replays to go async, so work around it by calling `RecalcRoute` again
which now succeeds as it reached the goal in the previous call.

This bug also affects `WantInBuilding` which also calls `RecalcRoute` assuming it does so in all cases.

Fixes #1843
755e326 s25client 04.01.2026 13:42 Flamefire Factor out BuildRoadForBlds to test GCExecutor
30f8289 s25client 04.01.2026 13:37 Flamefire Simplify condtions for putting down ware at warehouse

The check `GetGoal() != GetLocation()` is always met because
the location is the flag and the goal is NULL if it was destroyed while
the ware is being carried out.
c28aeaa s25client 04.01.2026 13:36 Flamefire Translate some comments
109e772 s25client 31.12.2025 13:49 Flamefire Merge pull request #1849 from Flamefire/wraparoundspeed
1eed84b s25client 29.12.2025 20:47 Farmer_Markus Use cmakedefine in openglCfg
d98c92f s25client 27.12.2025 16:28 Flamefire Add option for window pinning to settings screen

Also make layout more adaptive
258c12a s25client 27.12.2025 15:19 Flamefire Fix wrongly detected clicks on title bar of ingame windows

When moving the mouse to the button while holding the left mouse button
the click should not be registered, nor should the button show as pressed.
ac13d10 s25client 27.12.2025 15:00 Flamefire Refactor handling of mouse messages

- Unify selection if active window.
- Always use `Relay*` where possible
- Stop handling if any control handled it
207e98f s25client 27.12.2025 12:46 Flamefire Enhance comments
2ff742f s25client 26.12.2025 12:15 Flamefire Wrap around from highest to lowest speed with "V" key

Fixes #1828 after regression in #1829