Commit Graph

1238 Commits

Author SHA1 Message Date
icslucas 43ec8c5282 Update Main.ts 2025-07-30 20:36:50 +02:00
Duwibi 9d8bf329ad Fix inconsistent host lobby join URL (#1634)
## Description:
Fixes inconsistent host lobby join URL by adding a / before the #

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [ ] I have read and accepted the CLA agreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

DISCORD_USERNAME
Nikola123
2025-07-30 11:15:47 -07:00
Antoine dc1f79d090 Fix all strict errors in /client (#1489)
## Description:

Second PR to fix issues in order to enable strict mode.

## Specifics

1. Most important change: Turned off errors for Class variables not
initialized in constructor. I've noticed that pretty much all Classes in
the project have at least one occurence of that issue. And fixing it
properly would require a large refactor across the whole project. So
disabling the rule seems like a good solution in this case.

#1075 

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

azlod
2025-07-29 16:24:52 -04:00
Tyler Hanavan 0726449b6e Don't become traitor when betraying inactive player (#1610)
## Description:

Don't become traitor when betraying inactive player

This PR makes the following changes
- Do not mark the attacking player as a traitor, if they attack/betray
an ally who is disconnected from the game
- Do not send the attacking player the betrayal message (traitor debuff
applied message), if they attack/betray an ally who is disconnected from
the game
- Add test case for traitor debuff being applied if the attacking player
attacks an ally who is still connected to the game
- Add test case for traitor debuff NOT being applied if the attacking
player attacks an ally who is disconnected from the game


I also tested this manually with nuking an allied player who is
connected and nuking an allied player who is disconnected. The logic
worked as expected.

This PR was made in regards to the following issue: #1599 

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA agreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

slyty
2025-07-28 11:22:07 -07:00
Scott Anderson 2a3898043c Merge main into v25 2025-07-27 15:25:29 -04:00
Aotumuri 866ea17bb4 Change variable name from dKeyPressed to debugKeyPressed in LangSelector (#1583)
## Description:

Renamed dKeyPressed to debugKeyPressed to better reflect the actual key
used for debug mode activation.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA agreement (only required once).
2025-07-26 20:02:20 -04:00
Duwibi fb1e0585ab Yenisei map (#1517)
## Description:
This is a map of the Yenisei Bay in Russia. It contains 6 nations and
should be all compatable with all of the new map stuff. It has a size of
2000x2500 (which also means that it's larger vertically)

Describe the PR.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [ ] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

DISCORD_USERNAME
Nikola123
2025-07-26 14:24:55 -04:00
qunash 13a5349b21 Add Circassian nation (#1577)
## Description:

Adds Circassia as a nation to the `Black Sea` and `Between two seas`
maps. Circassia was a significant country and a historical region in the
North Caucasus that controlled the northeastern Black Sea coast. More
info on Wikipedia: https://en.wikipedia.org/wiki/Circassia

<img width="508" height="315" alt="image"
src="https://github.com/user-attachments/assets/3034c98c-5123-4e28-901f-b194a3f74c46"
/> <img width="504" height="378" alt="image"
src="https://github.com/user-attachments/assets/f63bd6c2-c44a-4620-aac5-c89f3694083a"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA agreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

qunash
2025-07-26 17:44:39 +02:00
Aotumuri 543d97a69d mls (v4.3) (#1578)
## Description:

mls for v24
Version identifier within MLS: v4.3

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

Aotumuri
2025-07-26 00:05:02 -04:00
floriankilian 48632cc0e0 Add private lobby ID visibility toggle (#1382)
## Description:
Added an eye icon to the lobby ID button so users can hide/show their
lobby ID for privacy. When hidden, it shows dots (••••••••) instead of
the actual ID. Also added a setting in the user settings to control the
default behavior.

**Fixes #1091**

### What's new:
- Click the eye icon to toggle lobby ID visibility
- Global preference in User Settings modal
- Creating a new Lobby will take the set preference from User Settings
- Copy function still works when hidden


![image](https://github.com/user-attachments/assets/3f0b0299-cf49-492a-a1eb-51ec73ba1827)

![image](https://github.com/user-attachments/assets/77c48a89-1910-4bd4-988d-d86d5f3cbf4a)

![image](https://github.com/user-attachments/assets/5d4e16d8-0e91-4cb4-a343-4529172a766e)


## Please complete the following:
- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [ ] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:
[UN]nvm
2025-07-26 00:00:47 -04:00
djmrFunnyMan a743b768a4 Add the Pluto map (#1442)
## Description:
Redoing this PR because the previous one was just a mess. ~~Now
everything is in 1 commit.~~ not anymore

I have added the map of Pluto, based on the discord suggestion that has
41 upvotes.

<img width="2100" height="1300" alt="pluto_final_clean"
src="https://github.com/user-attachments/assets/9eaa44f9-c18e-48ca-89e4-ac59273859f7"
/>

The map looks like this ^

The map doesn't cover all of Pluto, because we simply don't have the
data about the other side. Instead this map covers most of the mapped
area which has high quality height data.

<img width="2438" height="1219" alt="image"
src="https://github.com/user-attachments/assets/c5adfd52-0e92-4cb9-b97b-afd7df822588"
/>


## Please complete the following:
- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aceralex
2025-07-25 23:43:00 -04:00
evanpelle 58fa523c52 move ally button back to root radial (#1575)
## Description:

The ally slot was removed in v24, add it back

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA agreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-25 17:17:38 -07:00
DevelopingTom c738648460 Add conquest FX (#1390)
## Description:

Add an animation when the player conquer another one.
The FX consists of two parts: short animation, and the gold won.

It is only displayed to the conquering player, so everybody knows who
won the money if multiple people fighted over the last pixel of a
player.

Changes:
  - Add new update `ConquestUpdate`
  - Add new fx `ConquestFx`
  - Merge conquest logic in `Game`


https://github.com/user-attachments/assets/9f985e41-baa4-48a6-927e-3216274f758c

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

IngloriousTom
2025-07-25 19:52:05 -04:00
maxime.io 71fe6a81a0 Improve the alternate view by adding geopolitical colors for territories and hover-based highlighting (#1320)
## Description:

Improve existing alternate view (space bar).
It now displays territories in different colours based on their status
(enemy, allied, or your own).
Hovering over a territory highlights it. I tested several approaches,
and this one delivers excellent performance (on mobile too).
![VERT_OpenFront (ALPHA)
(6)](https://github.com/user-attachments/assets/40eeb4cd-e1dc-4daf-9165-b41f8693494c)


![image](https://github.com/user-attachments/assets/53a24369-698d-4213-9b4c-cb736feee22d)

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors


Related issue:
https://github.com/openfrontio/OpenFrontIO/issues/900
https://github.com/openfrontio/OpenFrontIO/issues/484

## Please put your Discord username so you can be contacted if a bug or
regression is found:

devalnor
2025-07-25 19:50:26 -04:00
DevelopingTom afc5709a1b Add missing factory in player info panel (#1507)
## Description:

The player info panel is missing the factory count. Also only displays
the units available in the current game.
 
Every unit:
<img width="185" height="238" alt="image"
src="https://github.com/user-attachments/assets/52eca7c8-99e0-4234-98d4-8efe1644a92c"
/>

City only:
<img width="186" height="142" alt="image"
src="https://github.com/user-attachments/assets/87aef9f8-697c-4aa0-8bc5-92f016886a9d"
/>


## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

IngloriousTom
2025-07-25 23:47:54 +00:00
Scott Anderson 9b6c290ec7 Merge main into v0.25.x 2025-07-25 18:56:22 -04:00
evanpelle 1cca6e2ebc fix player overview overlay on mobile (#1572)
## Description:

Regression in v24 that prevented the player overlay from showing when
clicking on mobile.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [ ] I have added relevant tests to the test directory
- [ ] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [ ] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-25 12:01:06 -07:00
Aotumuri 1c6aa2bfc3 Improve language code matching logic for locale fallback (#1534)
## Description:

This pull request improves the logic for matching language codes to
supported languages.
Now, the function tries to find the most specific language by splitting
the input code with “-” or “_”, and searching from the longest
combination to the shortest.
If no direct match is found, it searches for all supported language
codes that start with the same base (first two letters) and chooses the
most specific one.
If nothing matches, it defaults to English.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aorumuri
2025-07-25 14:08:35 -04:00
VariableVince ff17d321c7 Fix: display actual Alliance extension message instead of translation key (#1532)
## Description:

On Alliance extension, the key "events_display.alliance_renewed" is
displayed in the Event Panel. Reported in
https://discord.com/channels/1284581928254701718/1397197460085932184

Since displayMessage doesn't expect or do translations, just puts out
hardcoded English messages so far, it doesn't do anything with the
recieved key and just puts it in the Event Panel as is. This PR fixes it
as a follow-up of #1359.

With this, it also introduces a base which can be used to translate
hardcoded messages coming from other Executions. That is out of the
scope of this PR.

PRs #1532 and #1536 both fix issues with Alliance Renewal in v24. If
possible approve 1532 (this one) first and then 1536 not too far after
if github can indeed merge them.

BEFORE:
<img width="533" height="353" alt="alliancerenewbefore"
src="https://github.com/user-attachments/assets/b97f7279-8daf-4049-96fb-1d5a1e360ec4"
/>

AFTER: 
(tested locally with Nations by not checking their answer; they normally
don't answer to alliance renewal request which is another issue)

<img width="787" height="406" alt="After fix"
src="https://github.com/user-attachments/assets/9fc3a0e2-b151-486f-b6ef-692177e387ad"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

tryout33
2025-07-23 18:44:57 +00:00
VariableVince 563d054ea5 Zod v4 update (#1546)
## Description:

This contains the update from zod 3.25 to 4. Change imports back from
zod/v4 to just zod. No errors in VSCode.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

tryout33
2025-07-23 14:28:38 -04:00
Scott Anderson 0489c63f4b Validate spawn tile (#1512)
## Description:

Enforce valid tile during spawn, to prevent the game from crashing for
all players.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [ ] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [ ] I have read and accepted the CLA aggreement (only required once).
2025-07-20 20:17:29 -07:00
Aotumuri e31495645f Fix language code mismatch during language switching (2) (#1511)
## Description:
Fix casing issues in language file imports and mapping keys for pt_BR,
sv_SE, and zh_CN
These mismatches were causing translation loading issues in environments
with case-sensitive file systems.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
2025-07-20 19:43:11 -04:00
Aotumuri b7cfdb7376 Make SpawnAd loading text translatable using translateText (#1393)
## Description:
Replaced the hardcoded "loading" text in the SpawnAd component with
`translateText("spawn_ad.loading")` for proper localization.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
2025-07-20 07:23:12 +00:00
Aotumuri 20821e99aa Fix issue where territory-patterns-modal is occasionally not translated (#1505)
## Description:

Fixes a problem where the territory-patterns-modal sometimes appears in
the previous language if it is opened immediately after changing the
language.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:
aotumuri
2025-07-20 07:20:07 +00:00
Scott Anderson 123787e299 Attempt to fix bigint serialization issue (#1501)
## Description:

Attempt to fix bigint serialization issue

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [ ] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [ ] I have read and accepted the CLA aggreement (only required once).
2025-07-19 18:35:57 -07:00
Aotumuri 11e92246f2 Fix modal not closing when game starts (#1504)
## Description:
When a player joins a public game and opens a modal (such as the news
modal) while waiting for the game to start, the modal is not dismissed
when the game begins. This leaves the modal visible even after the match
has started.

<img width="1374" height="841" alt="スクリーンショット 2025-07-20 10 25 16"
src="https://github.com/user-attachments/assets/e7170e79-0f4c-442a-bbb9-cce23aa676e7"
/>

This PR fixes the bug described above.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
2025-07-19 18:27:52 -07:00
Aotumuri cf2b6494ff Make footer links translatable (#1417)
## Description:

This PR makes the footer link labels ("Privacy Policy" and "Terms of
Service") translatable via the i18n system.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
2025-07-19 18:14:25 +00:00
Aotumuri 705c1ff00c mls (v4.2) (#1492)
## Description:

mls for v24
Version identifier within MLS: v4.2

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
2025-07-18 18:48:44 -04:00
evanpelle cef2a853dc increase player panel z index so it is on top of spawn timer (#1488)
## Description:

The spawn timer menu was blocking the exit button of the player panel on
mobile

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-18 10:55:21 -07:00
DevelopingTom 7b2a204b8e Add close button to emoji table (#1479)
## Description:

Add a close button for the Emoji table, and switch the modal to
TailWind.

<img width="698" height="1161" alt="image"
src="https://github.com/user-attachments/assets/45c998d8-e584-4d83-9177-036679828586"
/>




https://github.com/user-attachments/assets/999baf1b-1cdb-409c-a1f0-12d8298dc638



## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

IngloriousTom
2025-07-18 13:46:30 -04:00
Aotumuri 028f1cad87 Fix language code mismatch during language switching (#1416)
## Description:
fixes #1413 
https://github.com/openfrontio/OpenFrontIO/issues/1413
## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors
2025-07-18 17:41:28 +00:00
evanpelle 58cad61041 fix pop & gold not showing up on mobile UI (#1484)
## Description:

The Pop & gold was not visible on mobile devices.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-18 09:16:39 -07:00
Aotumuri 2292993995 bug fix?: Hide UnitDisplay frame when all unit types are disabled (#1392)
## Description:

This PR updates the UnitDisplay component so that when all unit types
(City, Factory, Port, Defense Post, Missile Silo, SAM Launcher) are
disabled in the game config, the UI frame itself will also be hidden.

This is a box that shows how many and what types of units the player
currently owns.
There’s a feature where, if unit types are disabled in the settings, the
corresponding parts of the UI will disappear.

However, if all unit types are disabled, for some reason the outer
container still remains visible.
While this might not be a critical issue, I feel it’s unnecessary and
redundant, so I’d like to remove it.

Alternatively, we could consider keeping the box as a kind of
placeholder to indicate that some kind of menu might appear there.
But since it serves no purpose during gameplay in that state, I think it
would just be meaningless UI.

before
<img width="1049" alt="スクリーンショット 2025-07-10 12 49 37"
src="https://github.com/user-attachments/assets/b0cf12ba-0c20-4b21-bf9f-cb17fec6817b"
/>
<img width="44" alt="スクリーンショット 2025-07-10 12 49 47"
src="https://github.com/user-attachments/assets/61e1960b-56d4-4dc8-80e7-27e49cb2d0e3"
/>

after
<img width="967" alt="スクリーンショット 2025-07-10 12 48 08"
src="https://github.com/user-attachments/assets/dfc90243-e4d6-4663-bff5-5be34453e80b"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

aotumuri
2025-07-18 08:55:55 -07:00
evanpelle 259b73e58d fix build menu not showing correct # units 2025-07-18 08:51:57 -07:00
evanpelle d4755a71fe remove spawn ad (#1482)
## Description:

It is not being destroyed on start for some users.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-18 08:47:46 -07:00
evanpelle 9fca546745 alert on ws 1002 error (#1472)
## Description:

Alert the error when a user is unauthorized to join a game. Previously
it would just log an error and the user would have no idea why they
couldn't join a game (if for example they were using a restricted
pattern). Now the user gets an alert. We should make this a proper modal
in the future.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-17 16:03:01 -07:00
evanpelle 1d5d721c50 fix control panel & events display scaling on mobile (#1471)
## Description:

The Control panel & events display were not scaling properly on mobile,
now when screen is small enough they take the entire width, this keeps
the behavior in line with v23.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-17 14:57:38 -07:00
evanpelle d89babea04 leaderboard bugfix: show by default for medium to large screens. (#1470)
## Description:

removes the unnecessary check in tick() which was causing the
leaderboard to not be shown by default on smaller screens.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-17 11:19:58 -07:00
evanpelle 6bad34a2a3 fix team leaderboard margin (#1469)
## Description:

The team leaderboard had a large top margin. This PR aligns the team
leaderboard with the player leaderboard.

<img width="758" height="541" alt="Screenshot 2025-07-17 at 8 55 04 AM"
src="https://github.com/user-attachments/assets/9c9b6b67-e448-4419-8625-644e6e8584c7"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I have read and accepted the CLA aggreement (only required once).

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-17 09:00:20 -07:00
VariableVince 161f7dbd00 Fix: attack on ally even with greyed out button (#1460)
## Description:

Bugfix for: when clicking the central radial menu button (attack button)
on an ally, the ally would be attacked. And you'd inadvertently get a
traitor debuff. Even if the button was greyed out (#1426), the attack
would still happen.

BEFORE:

https://github.com/user-attachments/assets/833bf587-211f-4e6e-86b8-6374ca6f3d6c

AFTER:

https://github.com/user-attachments/assets/38e4ae6d-caac-47c9-9b0d-57bacdd7a846

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [ ] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

tryout
2025-07-16 18:53:57 -07:00
VariableVince c7af6c04c5 Fix: "Game speed" not "Replay speed" during Single player game (#1457)
## Description:

Fix for regression. In #1145, "Game speed" was added to show in Single
player instead of "Replay speed", and then in #1243 again. But after the
changes in #1415 it no longer worked, although some code remained.

Before:
<img width="417" height="161" alt="Replay speed when in single player
game"
src="https://github.com/user-attachments/assets/ff9aac99-6948-4c10-bb30-36ba5973c12e"
/>

After:
<img width="392" height="178" alt="Game speed instead of Replay speed"
src="https://github.com/user-attachments/assets/3beb712a-2539-46c5-a50a-eda593a5417c"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

tryout33
2025-07-16 20:35:16 -04:00
VariableVince af3dcb77bd Fix: anonymized name isn't used in chat message (#1265)
## Description:

Bugfix:
- Anonymized name isn't used in Event Panel message, instead actual
player name is displayed even if "Hidden names" is enabled. Neither for
the 'P1' name in the chat message, nor for the name in "From name:
message" and "Sent name: message". Fix: in QuickChatExecution, instead
of sender.name() and recipient.name(), send their id(). In
EventsDisplay, from that PlayerID get their displayName.

- There was more in this PR to try to improve readibility and remove
some unused/uncommented code. This was moved later to #1275, which may
be re-opened and brought up-to-date after this PR is merged.

Example screenshot of the bug before the fix, send chat to anonymized
name 'Norwegian Sisterhood' but in Event Panel real name 'Mister Goo'
was displayed:
![Sent Mister Goo instead of anonymous Norwegian
Brotherhood](https://github.com/user-attachments/assets/197e2808-aa85-4271-9c96-c53fe10f6546)

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [ ] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors
2025-07-15 19:43:31 -04:00
evanpelle 5dd7826192 make radial menu thicker (#1446)
## Description:

The root radial elements had a dead space, causing accidental misclicks.
This PR makes the wider. It also shrinks the back button to prevent
overlap.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-15 12:08:07 -07:00
evanpelle d4794840f6 Have radial menu refresh when open (#1437)
## Description:

There was a regression where the radial menu would not refresh while
open (eg open radial menu, then get enough gold to build something, the
radial wouldn't update).

Also refactored a bit

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-15 11:54:33 -07:00
g-santos-m 31381f67f4 Enable @typescript eslint/prefer nullish coalescing eslint rule (#1420)
## Description:

Fixes #952 
Enabled @typescript-eslint/prefer-nullish-coalescing rule and worked
through every error, introducing ?? and ??= operators or disabling
errors with inline comments where appropriate, to the best of my
ability.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

g_santos_m
2025-07-15 03:00:06 +00:00
floriankilian 211c2ff49d Followup: news-button: blue-glow; simpler localStorage (#1431)
## Description:

Changed the localStorage key from "news-button-last-seen-version" to a
simpler "version" in the NewsButton component.
And reverting a coderabbit recommendation in the css file, that
eliminated the blue glow effect.

Follow-up to #1385

<img width="808" height="845" alt="Screenshot 2025-07-14 205018"
src="https://github.com/user-attachments/assets/8c26c36c-ee2e-4a53-af61-f371eefd102a"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

[UN]nvm
2025-07-14 15:12:12 -04:00
DevelopingTom 29b587cdae Factory spawns trains (#1408)
## Description:

- Change trains so it spawns from factories only
- Increase train frequency as they will now spawn from a single
structure.
- Factory will spawn more trains depending on its level
- Fix port to connect to nearby railroads
- Add factory description

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

IngloriousTom

---------

Co-authored-by: Tom Rouillard <trouilla@mathworks.com>
Co-authored-by: evanpelle <evanpelle@gmail.com>
2025-07-14 08:59:51 -07:00
evanpelle 1e73293d4f remove radial animation, fix back button (#1427)
## Description:

Removed the animation from the radial menu, it now pops up instantly
Also fixed bug where back button was grayed out

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-14 08:57:38 -07:00
evanpelle 79505c41c8 radial menu attack self bugfix (#1426)
## Description:

bugfix where the radial center button was active when clicking on your
own territory.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-13 18:09:41 -07:00
evanpelle da8aeedd8b Leaderboard improvements (#1424)
## Description:

1. Made leaderboard smaller
2. replaced show top 5/show all with a +/- to save space
3. show leaderboard by default on larger screens

<img width="458" height="393" alt="Screenshot 2025-07-13 at 5 27 10 PM"
src="https://github.com/user-attachments/assets/c18c732b-8b1e-4b71-89aa-b807ceb91e30"
/>

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
2025-07-13 17:48:04 -07:00