## Description:
New FX on building destruction
Icon level:
https://github.com/user-attachments/assets/0ba5e557-a5d7-436f-8a58-2843d4c99332
Pixel art level:
https://github.com/user-attachments/assets/12002df6-eb46-4853-b84f-4f81ce7c3528
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
IngloriousTom
---------
Co-authored-by: Evan <evanpelle@gmail.com>
## Description:
When a team owns 100% of the land, it would show "1.0e2%" because of
toPrecision(2). Fix this by keeping the same precision as for other
numbers, but just returning 100 for 100%.
It probably wasn't really noticed before since full land ownership
doesn't occur much. Chances of 100% in team stats are a bit higher since
fallout is now taken into account.
Only a picture of the before situation:
<img width="725" height="84" alt="100 percent"
src="https://github.com/user-attachments/assets/f45edbc5-e740-4157-8a0b-cdc2981ced24"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
tryout33
## Description:
Cleanup code & small perf improvement
Gave it v26 milestone because it gives a little perf bump at no cost,
all the removed code isn't used anywhere so can be safely deleted.
Triple checked.
- Remove 'setFocusedPlayer' and 'checkTileUnderCursor' (not to be
confused by still in use 'getTileUnderCursor') from ClientGameRunner,
'_focusedPlayer' and 'setFocusedPlayer' (not to be confused with
still-in-use 'focusedPlayer') from GameView, and 'setFocusedPlayer' from
TransformHander.
These are remnants of PR #304, the first one that added highlighting
territory. The remants are still ran for every mouse-move, costing some
performance for no reason. _focusedPlayer is never used anywhere
anymore, only calculated and set.
It was later adapted from #387. But ultimately almost completely
disabled because it was too performance-costly, from commits 15c2cc1 and
then ec895af.
The thing that remained was permanent highlight of the player's own
border. For that, function 'focusedPlayer' in GameView is still used by
'drawFocusedPlayerHighlight' in TerritoryLayer. But it simply returns
myPlayer instead of the obsolete _focusedPlayer that it returned
earlier. Function 'focusedPlayer' still had the annotation "// TODO:
renable when performance issues are fixed." which i removed. Because
another PR for highlighting other's territory already followed it up
with its own functions, so chances of needing to change 'focusedPlayer'
back are very slim.
Later PR #1320 introduced a new attempt for highlighting territory in
the alternate view. It used its own equivalent functions in
TerritoryLayer for MouseOver and updateHighlightedTerritory (the latter
being the equivalent of the old checkTileUnderCursor in
ClientGameRunner). That was also disabled in part due to perfomance
cost, and now only shows border color changes. All this to say: the
remnants of PR 320 and 387 have long been redundant.
- Main: removed uncommented chatModal code, which was never used and
leftover from tests during development probably.
- PlayerActionHandler: removed handleQuickChat and the
sendQuickChatEvent import it needed. It was added in PR Multi-level
radial menu #1018. But the new Radial menu in the meantime moved to
using ChatIntegration.ts to send the chat event, or from there opened
the original Chat Modal which then sent the chat event. Later on, chat
was even removed from the Radial menu. 'handleQuickChat' is used nowhere
anymore and isn't needed. This is maybe also the case for
ChatIntegration, but i didn't remove it because it may still be enabled
again in the future for UI changes or something.
- OptionsMenu: removed, also from index.html (options-menu). This menu
has been succeeded by GameRightSidebar (game-right-sidebar for
index.html) for awhile now.
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
tryout33
## Description:
- Fixes#1790
- Fixed the codebase:
- expressions short-circuiting with `&&` changed to proper `if`
statements
- `A instanceof B;` expressions now emit warnings
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
michal7952
---------
Co-authored-by: Evan <evanpelle@gmail.com>
## Description:
Put ads on the left and right gutters
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
## Description:
In Teams games, the Leaderboard for individual players shows a different
Owned % than the Team stats next to it. This is because Leaderboard
correctly takes fallout/nuked territory into account (lines 99 and 113).
But Team stats doesn't.
It's only visual because the win condition for 95% of the land is also
already calculated correctly in WinCheckCondition (lines 78-80).
There is still a difference where Leaderbord uses toFixed(1) and
TeamStats does toPrecision(2). Didn't touch that because i don't know
the reason for it.
BEFORE:
<img width="699" height="206" alt="Team stats owned not taking fallout
into consideration"
src="https://github.com/user-attachments/assets/3bd03671-e32a-4c7a-b097-cfd8201c4299"
/>
AFTER:
<img width="892" height="453" alt="image"
src="https://github.com/user-attachments/assets/10c3eae8-8292-404f-83d5-820d10279367"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
tryout33
## Description:
Fix the ghost unit turning green when hovering an ennemy structure
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
DISCORD_USERNAME
## Description:
Issue:
With low resolution screens, or simply by resizing the window, the build
menu can be drawn above the event logs:
<img width="513" height="180" alt="image"
src="https://github.com/user-attachments/assets/01c62002-467d-47c0-b3a1-b46446d4dbc9"
/>
Changes:
- use larger responsive Tailwind classes:
https://github.com/user-attachments/assets/e583b70e-235a-4f5b-b10d-d032ac621984
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
IngloriousTom
Co-authored-by: evanpelle <evanpelle@gmail.com>
## Description:
Make the railroads fade before disappearing
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
Mr. Box
## Description:
Retreating naval invasions spams the target FX each frames.
Changes: filter out retreating invasions.
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
IngloriousTom
## Description:
The PR that added a highlight ring, broke highlights for other player
spawns. This PR fixes that, and makes the highlight ring more visible.
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
## Description:
Forgot to show cross cursor for mirv
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
Mr.Box
## Description:
Fix blurry icons and add mirv to build bar
<img width="792" height="101" alt="image"
src="https://github.com/user-attachments/assets/a46c4724-c99b-4541-b56b-92ec662c8ec5"
/>
<img width="176" height="275" alt="image"
src="https://github.com/user-attachments/assets/dbcd2ed4-0f21-4065-9a52-9b16e9043270"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
DISCORD_USERNAME
## Description:
Fixes#2149
Losing a game now causes the "Keep playing" button to say "Spectate"
instead.
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
FloPinguin
Nations will now send emoji when declining assistance requests.
- [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
Cancel alliance requests if the recipient attacks (#1733)
Problem: attacking a player right before accepting an alliance request
is very effective since the requester can't fight back or reclaim his
territory without canceling the alliance and being penalized with the
traitor debuff.
Change:
- Attacking a player after he requested an alliance automatically
rejects the request
- No changes to existing attacks in both directions, only new attacks
affect the request
- [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).
regression is found:
IngloriousTom
## Description:
### ✅ Summary of Changes
This PR enables the ESLint rule **`@typescript-eslint/no-unused-vars`**
as requested in the issue and applies the necessary code adjustments
across the project.
#### 🔧 What was done:
- Activated the rule `@typescript-eslint/no-unused-vars` in the ESLint
config.
- Updated ~70 files to comply with the rule:
- Replaced unused variables with a `_` prefix where appropriate.
- Added inline ESLint disable comments (`eslint-disable-next-line`) for
specific cases where the variable or code block seemed important for
context, readability, or future use.
- Ensured no linting errors remain related to this rule.
---
### ❓ Clarification
Some cases were handled with inline disable comments instead of removing
the variable entirely, to avoid accidental breaking changes or loss of
intent.
If a different approach is preferred (e.g., stricter removal or
alternative handling), I’m happy to adjust the implementation
accordingly — just let me know!
---
### 🙌 Next Steps
Please review and let me know if:
- Any file should be handled differently.
- You prefer removal instead of disabling in certain areas.
- Additional rules should be enforced or reverted.
I’m available to make any follow-up improvements needed.
---
### 🎃 Hacktoberfest Note
I'm participating in **Hacktoberfest**, so if this PR is accepted,
please add the label:
`hacktoberfest-accepted`
Thank you!
#1784
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
DISCORD_USERNAME
## Description:
Fixes#2015
Improved the Player Panel UI for better usability and appearance.
**Screenshots**
<img width="334" height="523" alt="2"
src="https://github.com/user-attachments/assets/bd0afaac-07df-4abc-a20f-208a0783e558"
/>
<img width="337" height="523" alt="3"
src="https://github.com/user-attachments/assets/f712ad77-4546-487b-9a9c-2c535b8a45f7"
/>
**Future Plan**
Add a modal for sending gold and troops to other players from the Player
Panel.
<img width="343" height="494" alt="sending troops"
src="https://github.com/user-attachments/assets/9c9c21db-e13a-426f-93e9-b477a9db442a"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
abodcraft1
---------
Co-authored-by: evanpelle <evanpelle@gmail.com>
## Description:
Resize the target fx.
It's still a little too big in my opinion, but it becomes very blurry
when shrinked down.
https://github.com/user-attachments/assets/c3cda98d-ed57-4933-93b4-1cc7f1cb8e50
The UI Layer should probably not be bound to the zoom level so we can
have a sharper UI.
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
IngloriousTom
## Description:
When zoomed out the tracks don't alias well and makes the map too busy.
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
## Description:
Building off of [this
PR](https://github.com/openfrontio/OpenFrontIO/pull/2090) which
implemented music, I extend this functionality to add sound effects.
Diff will be reduced if and when that PR gets merged!
I think the game would benefit from more sound effects, and adding a
"ka-ching" sound effect on kill seems like an easy place to start.
The ka-ching sound effect was found
[here](https://freesound.org/people/AKkingStudio/sounds/684165/) and is
licensed under Creative Commons.
## 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
Demo video with sound:
https://github.com/user-attachments/assets/18c857a4-a741-492a-bbc1-68d4f3ba38da
## Please put your Discord username so you can be contacted if a bug or
regression is found:
basedgob
---------
Co-authored-by: icslucas <carolinacarazolli@gmail.com>
## Description:
Make the unit display bar a proper unit build bar
Add shortcuts for all structures and units
Add ranges for ranged structures and units
Changed the shortcuts to use the key instead of the code for
internationalization purposes

<img width="285" height="517" alt="image"
src="https://github.com/user-attachments/assets/91bb01e6-e48c-4255-ace1-306af9cdc25b"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
Mr.Box
---------
Co-authored-by: evanpelle <evanpelle@gmail.com>
Co-authored-by: icslucas <carolinacarazolli@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
## Description:
CrazyGames doesn't allow purchase (must be integrated into their sdk),
so disable it on iframe for now.
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
## Description:
add music to the game
Describe the PR.
add music
<img width="549" height="770" alt="image"
src="https://github.com/user-attachments/assets/d8457d85-6f63-4024-8b69-572f8c9bb225"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
Lucas
## Description:
This PR enables the ESLint rule `no-case-declarations`.
Fixes#1791
The issue was already assigned, but since there hasn’t been any activity
for about a month, I decided to open this 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
aotumuri
## Description:
Update leaderboard logic to exclude dead players.
Players (including myPlayer) are only shown if alive.
https://github.com/user-attachments/assets/0a5c0422-4844-41ae-ae0b-3d7d8473491c
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
aotumuri
## Description:
I have found most attack information to not be very useful, particularly
during the late game when MIRVs are flying and cities and ports are
being gained/lost by the hundreds.
However, even in these circumstances I would still like to see incoming
nuke messages.
Attacks filtered out, incoming atom bomb message still appears:
<img width="425" height="166" alt="Screenshot 2025-09-24 at 12 13 07 AM"
src="https://github.com/user-attachments/assets/242f4552-4509-487a-8ac2-bdd7f9cd1d40"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
JohnnyBravo13
## Description:
- Adds warship count, transport count (deployed out of maximum) to unit
display
- Adds a target that appears when a boat attack is dispatched, which
disappears when the boat attack arrives
- Updates the unit display alt text to pass through translation
## Please complete the following:
- [X] I have added screenshots for all UI updates (see below)
- [X] I process any text displayed to the user through translateText()
and I've added it to the en.json file (in this case it is only alt-text)
- [X] I have added relevant tests to the test directory (n/a, fully
visual)
- [X] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
See new target effect and addition to units display
As each transport ship arrives, the target draw stops, together with the
effect for the trail.
https://github.com/user-attachments/assets/c36c57d3-e2b7-456e-85ab-1e786bd28a07
## Please put your Discord username so you can be contacted if a bug or
regression is found:
@dxtron_28992 (my invite is still pending to dev discord)
## Description:
Fixed terrain layer not rendering properly in Firefox.
- Resize the canvas before working with pixel data
- Changing canvas size (even to the same size) clears the buffer, so
getImageData() taken before resize isn’t valid for putImageData()
(Firefox seems to be more strict in enforcing this than Chrome)
- Replaced getImageData() with createImageData() since the cleared
canvas has no pixel data to read anyway
Before:
<img width="1911" height="1289"
alt="{39DC7F5A-A01C-4D1A-94C5-6DE7A73E6F66}"
src="https://github.com/user-attachments/assets/23f80289-5331-429a-85df-7c330cf8b42b"
/>
After:
<img width="1898" height="1286"
alt="{4D330565-E6F2-4AFC-8191-7E7DB36E065B}"
src="https://github.com/user-attachments/assets/acf62391-3123-4d55-a5ca-fb20f48f2d41"
/>
## 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 **(not
relevant)**
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
## Please put your Discord username so you can be contacted if a bug or
regression is found:
franz4557
## Description:
Skins with custom colors sometimes have lighter secondary color making
the structure icons hard to read. so instead we keep the lighter color
as structure background
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
## Description:
Add support for colored territory patterns/skins
* Refactored & updated territory pattern rendering to render colored
skins
* rename public from pattern to skin (keep pattern name internally, too
difficult to rename)
* Moved all territory color logic to PlayerView
* Updated WinModal to show colored skins
* Refactored decode logic into a separate function: decodePatternData
* Refactored/updated how cosmetics are sent to server. Players now send
a PlayerCosmeticRefsSchema in the ClientJoinMessage.
PlayerCosmeticRefsSchema just contains names of the cosmetics, and the
server replaces the names/references with actual cosmetic data
* Refactored PastelThemeDark: have it extend Pastel theme so duplicate
logic can be removed.
*
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
## Description:
Player names are hidden, except small sized fonts, when zoomed in too
much(near max), improving user experience by allowing users to see
structures clearly without the obstruction of text
## 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(no need)
- [x] I have added relevant tests to the test directory(n/a)
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
## Video
[video](https://streamable.com/e/mlrfqo?)
## Please put your Discord username so you can be contacted if a bug or
regression is found:
_federalagent
## Description:
Redesign the player info panel to match the bottom panel.
Changes:
- Added alliance timeout
- Various css restyling
Old:
<img width="180" height="276" alt="image"
src="https://github.com/user-attachments/assets/4ae8994b-868c-4eb8-b42a-85f0f0ec2f96"
/>
New:
<img width="179" height="239" alt="image"
src="https://github.com/user-attachments/assets/c29c34e5-5bfd-468e-9947-e0ac319fbccf"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
IngloriousTom
---------
Co-authored-by: evanpelle <evanpelle@gmail.com>
## Description:
Noticed many people are struggling to see where they choose to spawn or
forget where they chose , what leads to confusion.
solved it with this animation around the spawning player cell.

<img width="231" height="265" alt="image"
src="https://github.com/user-attachments/assets/22e157a5-301d-4d41-8f2c-21a9dd09a1f6"
/>
ALSO: Added a missing translation for hebrew
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
boostry
Co-authored-by: evanpelle <evanpelle@gmail.com>
## Description:
Move assets out of non-commercial so they can be relicensed to Creative
Commons BY-SA 4.0 in a follow up 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
evan
Derived from [LeviathanLevi
PR](https://github.com/openfrontio/OpenFrontIO/pull/1847)
Connect stations over water by automatically building bridges
Changes:
- Railroad construction to water is allowed from shore lines
- Railroad construction from water is allowed to shore lines too
This creates bridges a few tiles long.
<img width="1058" height="680" alt="image"
src="https://github.com/user-attachments/assets/493737b9-7aff-4ee2-88ea-7638f6af7c91"
/>
<img width="361" height="317" alt="image"
src="https://github.com/user-attachments/assets/24a71a7a-1ba1-4c88-a89e-876127024148"
/>
fixes#1837
- [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
regression is found:
IngloriousTom
## Description:
Close https://github.com/openfrontio/OpenFrontIO/issues/1844
Fix `src/client/graphics/layers/EventsDisplay.ts` translation logic that
prevented messages without parameters from being translated.
Now it shows the message correctly:
<img width="383" height="179" alt="image"
src="https://github.com/user-attachments/assets/22a4dac5-ae68-40e1-bd11-f0f13e93b5fd"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
yumika8269
## Description:
Sometimes I found it interesting to know what flag players choose, now
its possible with this new feature.
Feature added to the players panel.
- Added the Full flag name
- Added the flag svg
- countries with no flag, the whole section will be hidden
<img width="250" height="388" alt="My own Flag"
src="https://github.com/user-attachments/assets/69eda520-83f7-4864-8cc1-f19419f13143"
/>
<img width="250" height="388" alt="Bot with flag"
src="https://github.com/user-attachments/assets/1d4e9fbd-1b63-4dae-8bf7-38d3e78a3c80"
/>
<img width="250" height="388" alt="Bot with no flag"
src="https://github.com/user-attachments/assets/7ae06b30-4e26-49d6-a136-23d82c11b1f6"
/>
## 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 ( Made local
tests seems to all work with long or short names)
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
## My discord:
boostry
---------
Co-authored-by: evanpelle <evanpelle@gmail.com>
## Description:
Closes#883
Adds the ability to see combined Launchers, SAMS, Warships & Cities per
team on the TeamStats component
<img width="252" height="267" alt="Skærmbillede 2025-08-17 112010"
src="https://github.com/user-attachments/assets/96efb350-cd08-450b-9c8f-771f64c91236"
/>
<img width="415" height="257" alt="Skærmbillede 2025-08-17 112122"
src="https://github.com/user-attachments/assets/3cdb8fce-a9dc-489a-a72c-9bb343f0677a"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
Killersoren
---------
Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
## Description:
This PR ensures the radial menu is within the viewport.
When clicking right next to the edge of the screen in the browser, the
menu will now use transition to ease itself into the viewport, so the
menu will stay visible at all times.
Issue: https://github.com/openfrontio/OpenFrontIO/issues/1596
<img width="666" height="571" alt="image"
src="https://github.com/user-attachments/assets/a1663b62-96a3-4bfd-830d-8ee2424834ed"
/>
## 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
## Please put your Discord username so you can be contacted if a bug or
regression is found:
WoodyDRN
## Description:
Describe the PR.
This PR makes the playerInfoOverlay collapsible by clicking on the
player name.
This overlay was covering a decent chunk of the mobile screen.

Now the details can be toggled by just clicking on the name freeing a
lot of the screen 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 agreement (only required once).
## Please put your Discord username so you can be contacted if a bug or
regression is found:
DISCORD_USERNAME
tls_15
Co-authored-by: Drills Kibo <59177241+drillskibo@users.noreply.github.com>
## Description:
Since the in-game Settings became their own modal in v24, it blocks game
control but the game goes on in the background. On mobile it is full
screen so you don't even notice the game still playing in the
background.
Of course players understand that a Multiplayer game will move on. But
for Single Player, the game mode played by beginners too, you'd expect
the game to be paused and are surprised when it isn't. Same goes for
Replays.
This PR fixes it:
- Pause when opening the in-game Settings modal during replay or single
player game.
- Unpause again when closing the Settings modal (if not already paused
before opening the Settings).
- The icon for pause/unpause isn't switched in GameRightSideBar during
this, as the sidebar is blurred in the background anyway.
## 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:
tryout33
---------
Co-authored-by: Drills Kibo <59177241+drillskibo@users.noreply.github.com>
Problem: attacking a player right before accepting an alliance request
is very effective since the requester can't fight back or reclaim his
territory without canceling the alliance and being penalized with the
traitor debuff.
Change:
- Attacking a player after he requested an alliance automatically
rejects the request
- No changes to existing attacks in both directions, only new attacks
affect the request
- [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).
regression is found:
IngloriousTom