Commit Graph

68 Commits

Author SHA1 Message Date
Scott Anderson 7bb319fcad Enable the prefer-destructuring eslint rule (#1858)
## Description:

Enable the `prefer-destructuring` eslint rule.

## 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
2025-08-18 20:45:21 -04:00
Scott Anderson 1da46cfef2 Enable the @stylistic/ts/quotes eslint rule (#1850)
## Description:

Enable the `@stylistic/ts/quotes` eslint rule.

Fixes #1788

## 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
2025-08-17 21:00:16 -04:00
Scott Anderson 0a40bcebf0 Enable the sort-imports eslint rule (#1849)
## Description:

Enable the `sort-imports` eslint rule.

Fixes #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
2025-08-17 20:53:44 -04:00
Scott Anderson 5aacf5b5be Enable the @typescript-eslint/no-unsafe-member-access eslint rule (#1833)
## Description:

Enable the `@typescript-eslint/no-unsafe-member-access` eslint rule.

Fixes #1783

## 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
2025-08-15 22:11:09 -04:00
Scott Anderson 2dfd39f316 Enable the @typescript-eslint/no-unsafe-assignment eslint rule (#1832)
## Description:

Enable the `@typescript-eslint/no-unsafe-assignment` eslint rule.

Fixes #1781

## 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
2025-08-15 21:57:25 -04:00
Scott Anderson ef51adda6c Enable the @typescript-eslint/no-explicit-any eslint rule (#1830)
## Description:

Enable the `@typescript-eslint/no-explicit-any` eslint rule.

Fixes #1789

## 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
2025-08-15 21:25:02 -04:00
Scott Anderson 7e25f6b910 Enable @total-typescript/ts-reset (#1761)
## Description:

Enable `@total-typescript/ts-reset`

Fixes #1760

## 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).
2025-08-09 02:13:56 -04:00
Scott Anderson b56e380107 Enable the sort-keys eslint rule (#1746)
## Description:

Enable the `sort-keys` eslint rule.

Fixes #1629

## 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).
2025-08-07 19:13:42 -04: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
Scott Anderson 7b7cdfe19c Validate incoming parameters (#1371)
## Description:

Validate incoming parameters.

https://github.com/openfrontio/OpenFrontIO/security/code-scanning/17

## 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-08 12:40:36 -07:00
Scott Anderson 521ebff1c4 Validate incoming API data with zod (#891)
## Description:

Validate incoming API data with zod.

## 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

---------

Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
2025-06-02 13:33:47 -07:00
evanpelle bcf7a238c9 have master remove game id if it fails to fetch game from worker 2025-05-19 16:10:09 -07:00
Scott Anderson 70745faac4 Enable strictNullChecks, eqeqeq (#436)
## Description:

Improve type safety and runtime correctness by:
1. Enabling TypeScript's
[strictNullChecks](https://www.typescriptlang.org/tsconfig/#strictNullChecks)
compiler option.
2. Replacing all loose equality operators (`==` and `!=`) with strict
equality operators (`===` and `!==`).
3. Cleaning up of type declarations, null handling logic, and equality
expressions throughout the project.

Currently, the code allows implicit assumptions that `null` and
`undefined` are interchangeable, and relies on type-coercing equality
checks that can introduce subtle bugs. These practices make it difficult
to reason about when values may be absent and hinder the effectiveness
of static analysis.

Migrating to strict null checks and enforcing strict equality
comparisons will clarify intent, reduce bugs, and make the codebase
safer and easier to maintain.

Fixes #466 

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [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

---------

Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
Co-authored-by: evanpelle <openfrontio@gmail.com>
2025-05-15 16:39:40 -07:00
evan c5152f035f add endpoint to kick players from a game given admin token, game id & client id 2025-05-09 13:00:39 -07:00
evan cea6e0bc11 update & refactor MapPlaylist: remove big/small map distinction, ensure no map is repeated within 5 rounds, update how map is shuffled 2025-05-05 10:55:53 -07:00
evan 8c20e1f690 remove master metrics, we'll be using node exporter instead for system info 2025-05-02 12:25:55 -07:00
evanpelle ffc2fadc20 use otel for observability (#635)
## Description:

## Please complete the following:

- [ ] I have added screenshots for all UI updates
- [ ] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [ ] 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:

<DISCORD USERNAME>

Co-authored-by: evan <openfrontio@gmail.com>
2025-05-01 11:22:56 -07:00
evanpelle d6a412aa50 implement duos (#630)
## Description:
Implement Duos team mode.
Also assign teams to nations at the start instead of assigning them
randomly on spawn. This gives more consistent team sizes

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [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:

<DISCORD USERNAME>

Co-authored-by: evan <openfrontio@gmail.com>
2025-04-30 13:47:35 -07:00
Scott Anderson 5167f67b96 Allow up to seven teams for players (#445)
## Description:

- Allow up to seven teams for players, and one for bots.
- Add team count selection to the single player dialog.
- Select random number of teams in server rotation.

Fixes #456

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [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


![image](https://github.com/user-attachments/assets/cbc1ba82-9d06-4763-896c-abdce067a161)


![image](https://github.com/user-attachments/assets/9f82a0a5-c0bb-49b6-a714-2b13286a64ca)

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

fake.neo

---------

Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com>
2025-04-15 19:02:58 -07:00
Evan 58b151f585 remove slog, use winston instead. 2025-04-12 17:54:36 -07:00
Evan d1da506201 update win modal to link to patreon, create game mode rotation 2025-04-09 19:56:52 -07:00
Evan 5fe1d522de Make teams vs ffa 50/50 2025-04-06 10:44:41 -07:00
APuddle210 f94da14d1f Created MapPlaylist class (#405)
## Description:

Creates new MapPlaylist class, which contains the expanded may playlist
logic. Currently implements two distinct playlists, one for big maps,
and another for small. Designed with future need for more types of
playlist in mind.

It pulls from the big playlist two for every one time it pulls from the
small playlist.

Moved out of the Master.ts as requested.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [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:

aPuddle
2025-04-03 16:09:34 -07:00
Evan 118a826025 Add teams to public lobby 2025-04-02 13:46:11 -07:00
APuddle210 71ddeca7f0 Map Revisions, one Addition, and Adjustment to Lobby Max Player based on Map Sizes (#389)
## Description:

Implementation of separate lobby playlists, one for large maps another
for small, with the implementation framework being easily adjusted for
additional playlist categories in the future (such as fantasy maps).

Addition of new map 'Between Two Seas' a small map, replacing Black Sea
in the public lobby rotation (Black Sea retained for singleplayer or
private lobbies.

Adjustments to lobbyMaxPlayer configuration function. Broke out into
tranches by map pixel count, commented to communicate to other collabs
which tranch to place their map in. This change pairs well with the
adjustment to lobby map selection to alternate between big and small
maps. For the Potato (and mobile) players.

Revision to Mena, adding lakes and rivers.

Revisions to Japan, adding lakes and rivers, slight change of bounds to
include more mainland and less ocean.


![image](https://github.com/user-attachments/assets/434ad418-3ad4-40d4-841f-2ab71d13effd)


![image](https://github.com/user-attachments/assets/c46863b4-6a29-494f-82f0-d249c5017c1d)


![image](https://github.com/user-attachments/assets/c1e10fc4-b5e8-465a-a4eb-d325447df954)


The below no longer applies, I talked to Duwibi (Nikola123) who
explained the source of the issue is outside my control, but that he was
taking the action necessary to resolve.

The only issue still present after testing the the display of the map
name for Between Two Seas on the Public Lobby button. I've asked for
assistance with this issue on the Discord and will submit a fix as soon
as I can figure out its cause. Does not impact gameplay and its 3:30am
so hopefully this issue is not enough to prevent a merge as aside from a
quick fix PR, I don't think I'll be able to do any more work until after
this weekend.


## Please complete the following:

- [x] I have added screenshots for all UI updates
- [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:

aPuddle
2025-04-02 10:45:37 -07:00
Evan 8b6895d745 add prettier import plugin 2025-03-31 13:09:27 -07:00
APuddle210 d0e220c0a2 Revised maps, flags. (#382)
## Description:

- Revised 55 Flags (US States and Territories) to resolve aspect ratio
scaling issues in game. Has introduced some minor visual issues with
crosses drawing past the bounds of the flag, but this is a lesser issue
than misrproportioned scaling and is only obvious in menus.
 - Added 43 New flags made by N0ur 
- Revised countries.json to make the new flags available for users to
select
 - Revised 9 existing flags with ones made by N0ur
- New North America map (v3), which is 250,000 pixels smaller than v2,
significant additions of lakes and rivers, addressing complaints about
missing Ohio river and inaccurate Missouri river. West coast and
Central/South America now also have rivers. Updated Json to give most
bots flags.
- New South America map (v2), which has a fully realized Amazon river
system, two separate ocean exits. Southern Fjords turned up to 11.
- New Africa Map (v3), with more fleshed out river systems. size
decreased by 250,000 pixels. Great Rift lake now link up to the Congo
basin, and the rivers to their south, making most of Africa connected by
one river system with a Northern, Southern and Eastern Exit
- New Europe Map (v2), extended map bounds south, include entire North
African coast. bounds drawn in on the West, cutting off Iceland and much
ocean in favor of more detail on the continent. Rivers and lakes
implemented. Western-most edge of the Russia-Siberia massive river
network included (preview). Additional nation bots added to the map, to
fill empty areas. Coastline details significantly improved.
- Edits to the Gateway to the Atlantic json to add flags for most of the
Nation bots.

All maps were tested in game, flag selection menu item was visually
inspected for image loading issues.

![North America Early
Game](https://github.com/user-attachments/assets/5c9d638b-2e4e-4cec-8de2-9ad6640e8363)

![South America Early
Game](https://github.com/user-attachments/assets/238600ef-3a87-435e-8436-d93c9fe2a179)

![Africa v3 early
game](https://github.com/user-attachments/assets/cd9ccc76-223f-4ae6-be6e-eac573ff6095)

![Europe v2 Early
Game](https://github.com/user-attachments/assets/ddbb5bd2-f025-45d9-b4df-a9afa8254c23)



## Please complete the following:

- [x] I have added screenshots for all UI updates
- [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:

aPuddle
2025-03-31 10:31:51 -07:00
Evan f12d14fd22 bugfix: actually return 404 when game not found 2025-03-31 09:36:38 -07:00
Duwibi fe478c1395 Add Australia to map rotation (#377)
## Description:
I've added the Australia map to map rotation
<Nikola123>
2025-03-30 19:46:34 -07:00
MRH 9866dbb73a Added map Pangaea (#320)
This map was made by mashing up the world map and putting it in the
general shape of the super-continent
[Pangaea](https://en.wikipedia.org/wiki/Pangaea) It's not super accurate
but the continents are generally in the right places and the nations are
more or less the same as on World, placed in the general location where
they would have been. Hope this is good enough to be added into the
game; even if only among custom lobby maps!
2025-03-25 08:14:29 -07:00
Duwibi ab44751b08 Adding Iceland map (#323)
This is a map of Iceland. It has 8 nations - the 8 regions of Iceland.

![IcelandScreenshot](https://github.com/user-attachments/assets/1debe786-1dac-4274-85e2-9a0c090bd3b0)

![IcelandScreenshot1](https://github.com/user-attachments/assets/681e4a8f-4603-4434-9714-d76b49b82a6e)

![IcelandScreenshot2](https://github.com/user-attachments/assets/69841915-14f4-4e13-961f-c5e523668d41)

![IcelandScreenshot3](https://github.com/user-attachments/assets/51225d7a-c1df-4890-a56f-d459fe62a534)

![IcelandScreenshot4](https://github.com/user-attachments/assets/a5880022-765f-4e62-8f55-2b93d8b89f84)

![IcelandScreenshot5](https://github.com/user-attachments/assets/ec0d6efc-1056-45a1-ad03-152cb5a2baf6)

![IcelandScreenshot6](https://github.com/user-attachments/assets/56c8c8cb-2b3d-41e0-a55d-37b21b4442e3)

![IcelandScreenshot7](https://github.com/user-attachments/assets/b7a7833c-ef64-4067-a44f-c8a762bed0bc)

![IcelandScreenshot8](https://github.com/user-attachments/assets/d9edd402-7885-4e26-95c6-33d387493a80)
2025-03-24 15:44:57 -07:00
Readixyee e02361c2f4 Disable nukes option (#237)
This makes it possible to disable all nukes as well as missile silos
from the game in privat lobbies and singleplayer games
2025-03-21 13:52:36 -07:00
APuddle210 2cac950574 Add gateway map to rotation (#301)
Changes made via GitHub editor. I'll test as soon as I get home ~2.5-3
hours from now.
2025-03-21 10:19:59 -07:00
evanpelle 2c9fc7307e fix config circular dependency (#296) 2025-03-19 15:42:47 -07:00
evanpelle 6499569240 add winston logger (#289) 2025-03-18 14:36:30 -07:00
evanpelle bd2c270ba3 fixed inverted check for game start (#288) 2025-03-18 14:18:18 -07:00
Evan 5188792cf4 delete public lobby when greater than or equal. this was causing the lobby to overfill when 2 clients joined within 250ms 2025-03-18 12:04:09 -07:00
Evan b20b6a6ba7 Merge branch 'main' of github.com:openfrontio/OpenFrontIO 2025-03-18 09:57:31 -07:00
Evan 388aafbbf5 add more aggressive headers to prevent caching the root. 2025-03-18 09:57:28 -07:00
evanpelle 70e348c94b Export prometheus metrics (#286) 2025-03-18 09:00:05 -07:00
Evan 8cd8d5bf60 add Britannia, reduce world & europe frequency 2025-03-15 18:24:26 -07:00
Evan 364387578b fix lobby duration at 60s now that we limit lobby size. remove "high traffic time" 2025-03-15 17:22:15 -07:00
Ilan Schemoul b9dad022fc fix timer (#239)
- **improve and fix dynamic lobby**
- **Revert "Change BorderTiles from Array to Set (#230)"**

I'm obviously forced to include the revert patch otherwise I can't
compile. but you should first merge PR dedicated to revert before tthis
2025-03-13 17:03:38 -07:00
Ilan Schemoul 07ad7912bc feat: timer starts if enough player or enough time (#229)
Avoid these huge lobbies
2025-03-12 14:18:34 -07:00
evanpelle ea628570b2 have nginx cache index for 1s. (#224)
This is required for A B deployments, the browser wasn't updating due to
conditional caches
2025-03-12 11:03:28 -07:00
Evan 2b8cc2cf28 add mars map to rotation 2025-03-07 21:43:32 -08:00
BeGj 619891741f linting 2025-03-07 16:53:10 +00:00
Evan 56e84c3679 copy .env file to instance 2025-03-06 20:49:59 -08:00
Evan edcfac2fe7 give public lobbies smoother countdown, use admin token in server. 2025-03-06 19:43:56 -08:00
Evan fc73ed46cb remove oceania from map rotation 2025-03-06 16:16:41 -08:00