Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
6f96788
fix: traitor bug when attacking immediately after initiating an allia…
abdallahbahrawi1 Sep 13, 2025
2b29dfb
show steam wishlist on WinModal 25% of the time
evanpelle Sep 26, 2025
6f0c1d3
Fix wrong og:image path (#2099)
Aotumuri Sep 27, 2025
0843f99
use pull_request_target for auto-assign (#2100)
Aotumuri Sep 27, 2025
c2cf2ce
Record player deaths (#2102)
DevelopingTom Sep 27, 2025
f744788
create proprietary directory (#2112)
evanpelle Sep 29, 2025
623d655
Add Japan map (#2106)
Aotumuri Sep 29, 2025
30a67b6
Remove duplicate CSS rules to improve maintainability (#2111)
Aotumuri Sep 29, 2025
f9cee20
Add missing translation keys for performance overlay enabled/disabled…
Aotumuri Sep 29, 2025
62e223a
Keep Lobby ID bar sticky at top of modal (#2108)
Aotumuri Sep 29, 2025
2450ef2
remove unused map-generator/generated directory (#2107)
Aotumuri Sep 29, 2025
d16acca
Revoking alliances request during nuke (#2101)
DanyPops Sep 29, 2025
e96d58a
Hide dead players from the leaderboard (#2114)
Aotumuri Sep 30, 2025
9e9d689
mls (v4.6) (#2120)
Aotumuri Sep 30, 2025
d48801d
Enable ESLint rule no-case-declarations (#2113)
Aotumuri Sep 30, 2025
b31200a
MUSIC (#2090)
icslucas Sep 30, 2025
a54af87
Updateadstxt (#2121)
evanpelle Sep 30, 2025
3085634
Revert "fix: traitor bug when attacking immediately after initiating …
evanpelle Sep 30, 2025
bc5f18d
Hide skins & account login if in iframe (#2126)
evanpelle Oct 1, 2025
2c67d2b
fix staging deployment - remove nbg1 (#2128)
evanpelle Oct 1, 2025
6061c97
Fix nations break alliance too ealry bug (#2123)
abdallahbahrawi1 Oct 2, 2025
311d43a
Build bar (#2059)
jrouillard Oct 2, 2025
ed062c9
Add test for nation name length and fix names exceeding 27 chars (#2122)
Aotumuri Oct 2, 2025
5b36c02
Implement a "ka-ching" sound effect on kill (#2097)
GabeK0 Oct 2, 2025
fa9259b
don't show train tracks when zoomed out (#2131)
evanpelle Oct 3, 2025
fd6b0ee
Fix uncompacted maps (#2138)
Duwibi Oct 4, 2025
6307a27
Redesign target fx (#2143)
DevelopingTom Oct 6, 2025
7157750
Add player-stats-tree-view (#2089)
Aotumuri Oct 6, 2025
175d492
Improve player panel (#2060)
abdallahbahrawi1 Oct 6, 2025
fa7b7fc
Enable the @typescript-eslint/no-unused-vars eslint rule (#2130)
tiago154 Oct 6, 2025
469a14d
Allow attacking allies or teammates if player is disconnected (#2144)
evanpelle Oct 6, 2025
c7f7fb0
Refactor `structureSpawnTileValue()` (#1927)
scottanderson Aug 25, 2025
47edfe3
Nations build SAM launchers (#1931)
scottanderson Aug 25, 2025
f0f9318
Nations build defense posts (#1935)
scottanderson Aug 25, 2025
81bd98c
Nations send emoji when declining assistance requests (#1911)
scottanderson Aug 26, 2025
8308d7f
Nations send emoji when declining assistance requests (#1911)
scottanderson Aug 26, 2025
d83a661
bugfix: Nations rarely launch nukes (#1860)
scottanderson Aug 28, 2025
e216b8a
cleanup: Nations rarely launch nukes (#1948)
scottanderson Aug 28, 2025
d42fd9b
reduce global coverage
evanpelle Oct 7, 2025
b03f977
Fix nations break alliance too ealry bug (#2123)
abdallahbahrawi1 Oct 2, 2025
0f79060
add openfront copyright to loading screen (#2151)
evanpelle Oct 8, 2025
af50e5e
"Spectate" instead of "Keep playing" after loss (#2150)
FloPinguin Oct 8, 2025
1bc0343
Merge branch 'evan-nations'
evanpelle Oct 8, 2025
f6839ff
Fix icons and add mirv to build bar (#2154)
jrouillard Oct 8, 2025
4d3e358
mls (v4.7) (#2152)
Aotumuri Oct 8, 2025
020b0de
Fix forgotten mirv cursor (#2156)
jrouillard Oct 8, 2025
e895e53
fix spawn highlighting bug & improve highlight ring (#2157)
evanpelle Oct 8, 2025
187ef1f
feat(PlayerExecution): downgrade defense posts on capture (#1957)
BrewedCoffee Oct 9, 2025
3680d9c
fix: allies cannot annex your clusters (#2158)
nottirb Oct 9, 2025
d070c58
Increase the frequency of teams games (#1809)
TheGiraffe3 Oct 9, 2025
0076996
Implement send resources modal (#2146)
abdallahbahrawi1 Oct 9, 2025
fc38fed
Fix target FX on retreating units (#2166)
DevelopingTom Oct 9, 2025
a8002a0
Transparent railroads (#2153)
jrouillard Oct 9, 2025
cc49dc9
reduce coverage threshold
evanpelle Oct 10, 2025
649e4d2
fix(PlayerExecution): remove alarming DefensePost destruction message…
BrewedCoffee Oct 10, 2025
4f73548
Use larger responsive classes (#2167)
DevelopingTom Oct 10, 2025
2521466
Merge branch 'v25'
evanpelle Oct 10, 2025
584fa9f
add support for custom colors (#2103)
evanpelle Oct 10, 2025
c9c2930
update stale action (#2168)
TheGiraffe3 Oct 10, 2025
fa6e4fc
Remove confusing characters from game IDs (#2171)
angeluriot Oct 10, 2025
d59b73d
Revert "Fix: Rework wheel and touch handling for pan and zoom (#1956)"
evanpelle Oct 11, 2025
b9a4add
Revert "Added trackpad support for moving maps (#1717)"
evanpelle Oct 11, 2025
843aa11
Fix the ghost unit turning green when hovering an ennemy structure (#…
jrouillard Oct 11, 2025
730d492
Fix owned % in Teams stats (#2176)
VariableVince Oct 11, 2025
136cfa1
improve nation ai (#2172)
evanpelle Oct 12, 2025
d55c145
publift homepage ads (#2160)
evanpelle Oct 14, 2025
f016c3e
don't show ads if in iframe
evanpelle Oct 14, 2025
b58d140
fix encirclement issues (#2191)
evanpelle Oct 14, 2025
5224136
Enabled the `@typescript-eslint/no-unused-expressions` eslint rule (#…
Michal-Martinek Oct 14, 2025
2f67c45
Cleanup redundant code win tad performance back (#2194)
VariableVince Oct 14, 2025
69fc14f
Fix user having to click 3-4x times before building is deleted (#2195)
VariableVince Oct 14, 2025
810b12b
Merge branch 'v25' into v26
evanpelle Oct 14, 2025
bce27f1
don't show ads if skin has been purchased, fixed ads not getting remo…
evanpelle Oct 14, 2025
090b075
Allow donation in team games. (#2198)
evanpelle Oct 14, 2025
5579fcf
update win_modal territory pattern to say go ad free
evanpelle Oct 15, 2025
9ab35a0
bugfix: don't use bigint for zod schema as it causes json parsing issues
evanpelle Oct 15, 2025
eea8db7
delete warship when player is afk
evanpelle Oct 15, 2025
349e7ac
bugfix: have Privilege support flags
evanpelle Oct 15, 2025
2ad9c6f
bugfix: sending alliance to afk crashes game (#2202)
evanpelle Oct 15, 2025
f552b00
bugfix: use FlagSchema to validate flag
evanpelle Oct 15, 2025
144920e
Fix 100% owned in team stats (#2217)
VariableVince Oct 17, 2025
4eaf3de
Add destructed structure FX (#2210)
DevelopingTom Oct 17, 2025
19081bf
Add PlayerInfoModal (#2058)
Aotumuri Oct 17, 2025
06de3f1
mls (v4.8) (#2218)
Aotumuri Oct 17, 2025
373e3ef
fix Request icon stuck for nations (#2234)
abdallahbahrawi1 Oct 21, 2025
fb3d2e2
Polished Player Panel (#2235)
abdallahbahrawi1 Oct 21, 2025
4673808
Fix annex surrounded main cluster disconnected player (#2241)
VariableVince Oct 21, 2025
dd9ad74
update header ads (#2266)
evanpelle Oct 23, 2025
1b3bcf3
Made leaderboard entries bold for teammates (#2221)
Michal-Martinek Oct 23, 2025
4c9fcde
Fix slow radial menu animation for mobile players (#2201) (#2248)
MaxHT0x Oct 21, 2025
4ed1076
Fix Boat hotkey (B) behaviour (#2179)
VariableVince Oct 13, 2025
b69adf7
Halloween Event (#2285)
DevelopingTom Oct 25, 2025
6b69668
Add Achiran (#2280)
Duwibi Oct 24, 2025
0a2b6ed
Implement Stop/Start trading with all (#2278)
abdallahbahrawi1 Oct 25, 2025
df8118e
Resize structure sprites so they don't leave pixels behind when delet…
DevelopingTom Oct 26, 2025
b8fab0d
Expand Clan Name Possibilities (#2178)
GlacialDrift Oct 24, 2025
3fd38e7
Add clanTag to GameRecord for archiving (#2314)
evanpelle Oct 28, 2025
4f00c4a
Increase public game ffa frequency to 3:2 ffa:teams
evanpelle Oct 28, 2025
d97184a
add credits link to starting modal (#2333)
evanpelle Oct 31, 2025
1165126
meta update: use rational function to discourage short trades, buff t…
evanpelle Oct 31, 2025
6fd1576
use sigmoid function for trade ship gold to punish short trades
evanpelle Oct 31, 2025
bf980b9
add no warranty to the agpl license notice
evanpelle Oct 31, 2025
896a8eb
AFK team mate: better ship handling + tests + bugfix (#2203)
VariableVince Nov 1, 2025
e7c49d5
Add deletion duration and indicators (#2216)
jrouillard Oct 21, 2025
90a4dc0
rebased onto openfront/v26
evanpelle Nov 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 0 additions & 4 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ on:
type: choice
options:
- masters
- nbg1
- staging
- falk1
target_subdomain:
Expand Down Expand Up @@ -93,7 +92,6 @@ jobs:
- name: 🔑 Create SSH private key
env:
SERVER_HOST_MASTERS: ${{ secrets.SERVER_HOST_MASTERS }}
SERVER_HOST_NBG1: ${{ secrets.SERVER_HOST_NBG1 }}
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_STAGING: ${{ secrets.SERVER_HOST_STAGING }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
Expand All @@ -102,7 +100,6 @@ jobs:
mkdir -p ~/.ssh
echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa
test -n "$SERVER_HOST_MASTERS" && ssh-keyscan -H "$SERVER_HOST_MASTERS" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_NBG1" && ssh-keyscan -H "$SERVER_HOST_NBG1" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_FALK1" && ssh-keyscan -H "$SERVER_HOST_FALK1" >> ~/.ssh/known_hosts
test -n "$SERVER_HOST_STAGING" && ssh-keyscan -H "$SERVER_HOST_STAGING" >> ~/.ssh/known_hosts
chmod 600 ~/.ssh/id_rsa
Expand All @@ -125,7 +122,6 @@ jobs:
R2_SECRET_KEY: ${{ secrets.R2_SECRET_KEY }}
API_KEY: ${{ secrets.API_KEY }}
SERVER_HOST_MASTERS: ${{ secrets.SERVER_HOST_MASTERS }}
SERVER_HOST_NBG1: ${{ secrets.SERVER_HOST_NBG1 }}
SERVER_HOST_FALK1: ${{ secrets.SERVER_HOST_FALK1 }}
SERVER_HOST_STAGING: ${{ secrets.SERVER_HOST_STAGING }}
SSH_KEY: ~/.ssh/id_rsa
Expand Down
6 changes: 2 additions & 4 deletions .github/workflows/pr-author.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
name: 🧼 PR

on:
pull_request:
types:
- edited
- opened
pull_request_target:
types: [opened, reopened]

permissions:
pull-requests: write
Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/pr-stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,14 @@ jobs:
steps:
- uses: actions/stale@8f717f0dfca33b78d3c933452e42558e4456c8e7
with:
days-before-close: 14
days-before-stale: 14
days-before-pr-close: 14
days-before-pr-stale: 14
days-before-issue-close: -1
days-before-issue-stale: -1
exempt-draft-pr: true
exempt-pr-assignees: evanpelle
stale-pr-label: "stale"
exempt-pr-labels: "will not stale"
stale-pr-label: "Stale"
stale-pr-message: "This pull request is stale because it has been open for 14 days with no activity. If you want to keep this pull request open, add a comment or update the branch."
start-date: 2025-09-03T00:00:00+00:00
close-pr-message: "This pull request has been closed because twenty-eight days have passed without activity. If someone wants to keep working on it, feel free to take the code."
close-pr-label: "Orphaned"
28 changes: 28 additions & 0 deletions CREDITS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Credits

## Code

OpenFront is licensed under AGPL-3.0.
See [Contributors](https://github.com/openfrontio/OpenFrontIO/graphs/contributors) for code contributors.

## Map Data

### OpenStreetMap

© [OpenStreetMap contributors](https://www.openstreetmap.org/copyright)
Licensed under ODbL

### Natural Earth

[Natural Earth](https://www.naturalearthdata.com/)
Public Domain

### Bedmap3 Antarctica Dataset

Pritchard, H.D., Fretwell, P.T., Fremand, A.C. et al. Bedmap3 updated ice bed, surface and thickness gridded datasets for Antarctica. _Sci Data_ 12, 109 (2025).
[https://doi.org/10.1038/s41597-025-04672-y](https://doi.org/10.1038/s41597-025-04672-y)
Licensed under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/)

## Icons

Icons from [The Noun Project](https://thenounproject.com/)
45 changes: 36 additions & 9 deletions LICENSE-ASSETS
Original file line number Diff line number Diff line change
@@ -1,19 +1,46 @@
# Asset License - Creative Commons BY-SA 4.0
# Asset License

This license applies to all non-code assets in this repository, including but not limited to:
## Open Assets (/resources) - Creative Commons BY-SA 4.0

Assets in the `/resources` directory are licensed under Creative Commons BY-SA 4.0, including but not limited to:
- Graphics, sprites, and images (*.png, *.jpg, *.svg, etc.)
- 3D models and textures (*.obj, *.fbx, *.blend, etc.)
- Audio files (*.mp3, *.ogg, *.wav, etc.)
- Animation files
- Font files
- Level/map data files

This license does NOT apply to:
- Source code files (*.js, *.ts, *.py, etc.) - see LICENSE for code licensing
- Configuration files that contain code
- Scripts and shaders

Attribution required: "OpenFront.io" or "OpenFront LLC"
Attribution required: "OpenFront" or "OpenFront LLC"

To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/
or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

## Proprietary Assets (/proprietary) - All Rights Reserved

Assets in the `/proprietary` directory are:
- Copyright © 2024-2025 OpenFront LLC and Contributors
- All Rights Reserved
- NOT licensed for use, modification, or redistribution outside of OpenFront
- May only be used as part of the complete OpenFront software package

See `/proprietary/LICENSE` for full terms.

## External/Proprietary Assets (Not in Repository)

The following assets are NOT included in this repository and are NOT covered by any open source license:
- Assets hosted on our CDN/servers
- Assets stored in our database
- Premium skins, models, and textures accessed via API
- Sound effects and music accessed via API
- Any assets not explicitly included in this repository

These external assets are proprietary property of OpenFront LLC.

## Important Legal Notice

- The CC BY-SA 4.0 license applies ONLY to assets in the `/resources` directory
- Assets in `/proprietary` are restricted use - see their specific LICENSE
- External assets not in this repository remain fully proprietary
- Accessing, downloading, extracting, or using proprietary assets without permission is prohibited

For source code licensing, see LICENSE and LICENSING.md files.
17 changes: 17 additions & 0 deletions LICENSING.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,22 @@ This document provides comprehensive licensing information for the OpenFront.io
- Added Creative Commons BY-SA 4.0 for all assets
- All new code is AGPL v3.0 only

### Phase 4: Mixed Asset Licensing

- **Starting After:** c2cf2ce65f74ac91859f68a84aec89aeda5722ee
- **Date:** September 28, 2025
- **Licenses:**
- **Code:** AGPL v3.0 (unchanged from Phase 3)
- **Open Assets (/resources):** Creative Commons BY-SA 4.0 (unchanged from Phase 3)
- **Proprietary Assets (/proprietary):** All Rights Reserved
- **Copyright Holders:** OpenFront LLC and Contributors
- **Changes:**
- Added `/proprietary` directory for copyrighted assets
- Established dual-track asset licensing structure
- Open assets in `/resources` remain CC BY-SA 4.0
- Proprietary assets override open assets during build process
- Contributors retain copyright while granting usage rights to OpenFront LLC

## Important Notes

### For Code:
Expand Down Expand Up @@ -69,6 +85,7 @@ All assets included in this repository (graphics, sounds, music, models) are lic
- Premium skins, models, and textures
- Sound effects and music accessed via API
- Any assets not explicitly included in this repository
- Any asset in the proprietary/ folder

These external assets are:

Expand Down
12 changes: 9 additions & 3 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,22 @@ export default [
rules: {
// Disable rules that would fail. The failures should be fixed, and the entries here removed.
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-expressions": "off",
"@typescript-eslint/no-unused-vars": "off",
"no-case-declarations": "off",
"no-unused-vars": "off",
},
},
{
rules: {
// Enable rules
"@typescript-eslint/prefer-nullish-coalescing": "error",
eqeqeq: "error",
"no-case-declarations": "error",
"@typescript-eslint/no-unused-vars": [
"error",
{
args: "none",
caughtErrors: "none",
},
],
},
},
];
10 changes: 7 additions & 3 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,18 @@ export default {
},
transform: {
"^.+\\.tsx?$": ["@swc/jest"],
"^.+\\.mjs$": ["@swc/jest"],
"^.+\\.js$": ["@swc/jest"],
},
transformIgnorePatterns: ["node_modules/(?!(node:)/)"],
transformIgnorePatterns: [
"node_modules/(?!(nanoid|@jsep|fastpriorityqueue|@datastructures-js)/)",
],
collectCoverageFrom: ["src/**/*.ts", "!src/**/*.d.ts"],
coverageThreshold: {
global: {
statements: 21.5,
branches: 17.0,
lines: 22.0,
branches: 16,
lines: 21.0,
functions: 20.5,
},
},
Expand Down
Binary file added map-generator/assets/maps/achiran/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions map-generator/assets/maps/achiran/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "Achiran",
"nations": [
{
"coordinates": [785, 985],
"flag": "ie",
"name": "Inishmore",
"strength": 1
},
{
"coordinates": [1360, 1360],
"flag": "ie",
"name": "Inishmann",
"strength": 2
},
{
"coordinates": [1630, 1515],
"flag": "ie",
"name": "Inisheer",
"strength": 1
},
{
"coordinates": [1400, 480],
"flag": "ie",
"name": "Achill",
"strength": 2
}
]
}
Binary file added map-generator/assets/maps/japan/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
77 changes: 77 additions & 0 deletions map-generator/assets/maps/japan/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"name": "japan",
"nations": [
{
"coordinates": [1895, 288],
"name": "Hokkaido",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [1647, 897],
"name": "Tohoku",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [1613, 1133],
"name": "Kanto",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [1391, 1194],
"name": "Chubu",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [1191, 1370],
"name": "Kansai",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [932, 1308],
"name": "Chugoku",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [949, 1454],
"name": "Shikoku",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [709, 1570],
"name": "Kyushu",
"strength": 2,
"flag": "jp"
},
{
"coordinates": [397, 2283],
"name": "Okinawa",
"strength": 1,
"flag": "jp"
},
{
"coordinates": [1493, 1246],
"name": "Mount Fuji",
"strength": 1,
"flag": "jp"
},
{
"coordinates": [1565, 1178],
"name": "Tokyo",
"strength": 3,
"flag": "jp"
},
{
"coordinates": [1158, 1290],
"name": "Kyoto",
"strength": 3,
"flag": "jp"
}
]
}
10 changes: 0 additions & 10 deletions map-generator/assets/maps/montreal/info.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,4 @@
{
"map": {
"height": 1500,
"num_land_tiles": 1961549,
"width": 1530
},
"mini_map": {
"height": 750,
"num_land_tiles": 485392,
"width": 765
},
"name": "Montreal",
"nations": [
{
Expand Down
Loading
Loading