Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1032 commits
Select commit Hold shift + click to select a range
40556a3
Fixes #6745 Blueprint issues on change faction (#6850)
thvl3 Feb 7, 2026
883b25b
Fix typo in scenario010.lua tips section (#6849)
burnhamrobertp Feb 7, 2026
99a73f1
Snap alt set target to closest enemy, and also draw indicator line fo…
Flameink Feb 7, 2026
672d76a
Fix regression in builder buggeroff (#6836)
Flameink Feb 7, 2026
d737c61
Transport factory guard bug fix (#6834)
Flameink Feb 7, 2026
c5cee14
fix: tolerate nils, hashed keys in buildoptions dedupe (#6772)
efrec Feb 7, 2026
ff188bd
pip: improved handling of minimap rotation (#6853)
Ruwetuin Feb 7, 2026
3b4e77e
pip: decoupled pip camera fps from pip content fps (#6854)
Ruwetuin Feb 7, 2026
1fefe35
pip: mapmarks initiate much larger + fades out similar player mapmark…
Ruwetuin Feb 8, 2026
6e82e2a
Sharing bugfixes in easytax (#6856)
RebelNode Feb 8, 2026
5bb4c73
Fix possible rare issue in overflow tax (#6857)
RebelNode Feb 8, 2026
22ba0a4
pip: viewport and mapmarks render separately + support waterislava an…
Ruwetuin Feb 8, 2026
768b9fe
pip: make use of gl4 rendering (#6860)
Ruwetuin Feb 8, 2026
82864d6
pip: improved feature rendering (#6863)
Ruwetuin Feb 8, 2026
eb81d92
Custom Widgets can now create their own Notifications. (#6864)
Damgam Feb 8, 2026
6d1df95
Prevent warning spam when changing/refreshing announcers (#6866)
Damgam Feb 8, 2026
70934dc
fix potential nil in GameEnd in gfx_wade_fx (#6867)
efrec Feb 8, 2026
9cade46
pip: fix (#6869)
Ruwetuin Feb 8, 2026
4e2f4c1
fix: unit_evolution calls fake SetUnitTarget (#6868)
efrec Feb 8, 2026
eefd63d
Update Lua libary submodule
github-actions[bot] Feb 9, 2026
3e28b97
Reorganised the Audio Settings tab a bit (#6874)
Damgam Feb 9, 2026
bf60b3a
pip: changed widget layer (#6875)
Ruwetuin Feb 10, 2026
c2f4c9d
fix error in power calc when scavs have zero power (#6873)
efrec Feb 10, 2026
61842a7
commands fx: use gl4 rendering (#6876)
Ruwetuin Feb 10, 2026
6cd93bd
map startbox: larger teamcolor border for startunit icon (#6877)
Ruwetuin Feb 10, 2026
1471271
commands fx: optimization (#6878)
Ruwetuin Feb 10, 2026
a4692bf
Update Lua libary submodule
github-actions[bot] Feb 11, 2026
e182038
handle nil's passed to math.getClosestPosition (#6879)
efrec Feb 11, 2026
ab57c1b
pip: unit icons of are identical size to engine minimap (#6880)
Ruwetuin Feb 11, 2026
af3be64
pip: added out of los enemy ghosted building icons (#6882)
Ruwetuin Feb 11, 2026
30b8240
Fix PiP deadzone from invalid maximize state (Issue #6812) (#6883)
veez-e Feb 11, 2026
f204d27
pip: fix + dont start pip minimap in startunit tracking mode (#6884)
Ruwetuin Feb 11, 2026
6429634
Update unit_reclaim_fix.lua (#6803)
Mitvit Feb 12, 2026
79d5414
Fix unknown shield weapon number in UnitDestroyed (#6865)
efrec Feb 12, 2026
5117ed3
pip: blink a little when unit is paralyzed, blink heavily when player…
Ruwetuin Feb 12, 2026
522bdc4
new donater AurenTheAbsolute (#6889)
icexuick Feb 12, 2026
b668283
feature update unit_carrier_spawner cob integration part 2 + readabil…
Xehrath Feb 12, 2026
8210aa6
February balance patch (#6801)
Mitvit Feb 13, 2026
9569b06
Idleautoheal/idletime standardisation (#6652)
Mitvit Feb 13, 2026
e666871
pip: ghosted buildings dont persist when back in los and are gone (#6…
Ruwetuin Feb 14, 2026
ec39499
Update Lua libary submodule
github-actions[bot] Feb 16, 2026
afb5815
Improves area mex command to use last queued position (#6895)
MadeByGabe Feb 16, 2026
2f47fae
add Game constants for initial spawn and warp-in (#6890)
efrec Feb 16, 2026
3846055
pip: add map sun shading (#6896)
Ruwetuin Feb 16, 2026
1d81322
pip: added unit icon damage flash (#6897)
Ruwetuin Feb 16, 2026
9513c09
pip: projectiles and explosions stay visible when zoomed out, but lim…
Ruwetuin Feb 16, 2026
95ae6e7
pip: implement commands fx functinality (#6899)
Ruwetuin Feb 16, 2026
a8d5e66
pip: add decals widget support (#6900)
Ruwetuin Feb 16, 2026
e76988a
decals: lifetime * 2, also initial additional liftime based on amount…
Ruwetuin Feb 16, 2026
5a33ccd
pip/decals: refinement (#6902)
Ruwetuin Feb 16, 2026
77bf7b4
pip: honour minimized minimap setting + remove some non gl4 drawing p…
Ruwetuin Feb 17, 2026
b76fa12
pip: made pip los overlay the same as engine minimap style blending +…
Ruwetuin Feb 17, 2026
e88a53c
Update contributors.lua (#6904)
PtaQQ Feb 17, 2026
044045a
pip: spice up explosion visuals (#6908)
Ruwetuin Feb 17, 2026
c6b36fb
pip: improved icon render ordering + improved scrolling responsivity …
Ruwetuin Feb 17, 2026
d784534
chat: prevent too short texture cutoff (#6910)
Ruwetuin Feb 17, 2026
ba2d991
pip: performance improvement (#6911)
Ruwetuin Feb 17, 2026
b5b56c7
pip: use engine icon atlas (#6912)
Ruwetuin Feb 17, 2026
9025fc7
pip: improve decal rendering (#6913)
Ruwetuin Feb 18, 2026
060f21b
pip: decals fix projection (#6914)
Ruwetuin Feb 18, 2026
f110be4
pip: explosions based on gameframe + optimization (#6915)
Ruwetuin Feb 18, 2026
219ab89
pip: minimap when zoomed out: support "left click moves minimap" opti…
Ruwetuin Feb 18, 2026
c26b63d
Mostly widgethandler related optimizations (#6918)
Ruwetuin Feb 18, 2026
5f78e53
maint on unit_shield_behavior (#6917)
efrec Feb 18, 2026
223c077
gadget(handler) optimizations (#6919)
Ruwetuin Feb 18, 2026
ae3257b
minor gadget optimizations (#6920)
Ruwetuin Feb 18, 2026
8dd2e4b
pip: dont show ai commands fx (#6921)
Ruwetuin Feb 18, 2026
fb49563
more gadget optimizations (#6922)
Ruwetuin Feb 18, 2026
1a53ea7
pip: fix: explosions cleanup (#6923)
Ruwetuin Feb 18, 2026
ccad535
Broken Link Fix for Recoil Engine in LICENSE.md (#6925)
GerManRavio Feb 19, 2026
19b53db
widget/gadgethandler: undo needless tracy optimization (#6927)
Ruwetuin Feb 19, 2026
2edc817
DE chat filter (#6872)
kroIya Feb 19, 2026
be9fb6f
Earlier unpack of inserted commands (#5560)
efrec Feb 19, 2026
2e65881
pip: support ghosted buildings as spectator as well (#6931)
Ruwetuin Feb 20, 2026
0c335a0
pip: various refinements (#6934)
Ruwetuin Feb 20, 2026
6f0c250
fix: scale napalm/acid damage before checking damage limit (#6932)
efrec Feb 20, 2026
819f1f0
Add non-breaking spaces to make it easier to see thousands (#6929)
KanchiMoe Feb 20, 2026
6ab2751
pip: added plasma trails + other projectiles tweak (#6935)
Ruwetuin Feb 20, 2026
6ea710c
pip: optimizations (#6936)
Ruwetuin Feb 20, 2026
f7f3f0d
pip: when minimap: zoom out at gameover + fix buildqueue unit icons +…
Ruwetuin Feb 20, 2026
0a4e18f
Big Notifications Update (#6938)
Damgam Feb 21, 2026
5d15a85
Less Raptor Queen Minions. (#6939)
Damgam Feb 21, 2026
767c608
pip: various fixes (#6941)
Ruwetuin Feb 21, 2026
d9c3f05
pip: health(bars) (#6942)
Ruwetuin Feb 21, 2026
eb17346
pip: tweak (#6943)
Ruwetuin Feb 21, 2026
aaeee26
pip: added button PipActivity: auto briefly moves pip camera onto rec…
Ruwetuin Feb 21, 2026
a9718ad
Removed the drone spawnrate buff from Scav units (#6946)
Damgam Feb 22, 2026
0e0a858
catch up legnavyrezsub, missed in 9569b06 (#6928)
efrec Feb 22, 2026
35a8fb6
Carrrier Update/Rework Feb 2026 (#6926)
Xehrath Feb 22, 2026
1671631
Fixed and Always Enabled tracked player notifications. (#6947)
Damgam Feb 22, 2026
9fa559c
pip: pipactivity behavior refinement (#6948)
Ruwetuin Feb 22, 2026
62c711d
map grass: keep checking lava level and remove grass (#6949)
Ruwetuin Feb 22, 2026
ea1c479
tree feller: lit trees on fire when lava touches them (#6950)
Ruwetuin Feb 22, 2026
32c400d
minimap options: add "AutoFitRotation", rotates portrait maps to land…
Ruwetuin Feb 22, 2026
b574a6f
projectile target aoe: add multi layer trefoil for nukes (#6952)
Ruwetuin Feb 22, 2026
16cee61
minimap rotation manager: fix (#6953)
Ruwetuin Feb 22, 2026
01031e3
minimap rotation manager: fix2 (#6954)
Ruwetuin Feb 22, 2026
18d86e1
settings: merged auto-fit option into the "rotation mode" selector ab…
Ruwetuin Feb 22, 2026
669ab10
pip: add pip_tv "?" button that moves/zooms pip camera to areas of in…
Ruwetuin Feb 22, 2026
4958425
Optimise API builder queue (#6959)
przystuj Feb 23, 2026
343cf34
fix: areas use exact durations, exact damage total (#6957)
efrec Feb 23, 2026
f9fffc0
pip + minimap rotation fixes (#6960)
Ruwetuin Feb 23, 2026
050faf4
pip: TV mode optimization (#6961)
Ruwetuin Feb 23, 2026
bb2ab03
pip: added commander nametags (#6962)
Ruwetuin Feb 23, 2026
a704770
pip: unitpic refinements + buildqueue unit rotation fix (#6963)
Ruwetuin Feb 23, 2026
cd67e85
Pip: add lava/water shader (#6967)
Ruwetuin Feb 24, 2026
499d731
pip: added commander healthbars + nametags for AI commanders + water …
Ruwetuin Feb 24, 2026
200c527
pip: tweaks (#6969)
Ruwetuin Feb 24, 2026
0ddf3f8
Update Lua libary submodule
github-actions[bot] Feb 25, 2026
ff88d77
Fix early game notifications RNG. (#6974)
Damgam Feb 25, 2026
0806c98
I forgot to delete an echo (#6975)
Damgam Feb 25, 2026
f0c6d9a
Increased delay on LowMetal and LowPower notifications (#6976)
Damgam Feb 25, 2026
448ef20
add heat extinction rate to ground scarring in water (#6971)
efrec Feb 25, 2026
2d7cd2a
pip: prevent pip_tv being active when player (#6977)
Ruwetuin Feb 25, 2026
9f275e1
some DGun behavior improvements (#6981)
efrec Feb 26, 2026
db18b67
info: fix (#6987)
Ruwetuin Feb 26, 2026
c4c3d58
seismic ping: dont draw when gui is hidden (#6988)
Ruwetuin Feb 26, 2026
4177bdc
Added CONTRIBUTING.md with code contribution guide (#5994)
NortySpock Feb 26, 2026
553f1bb
Add hidden wreck/heap metal modoption for tests (#6267)
efrec Feb 26, 2026
267fb3a
Using gadget | Adding SFX to "Set Target" and "Visibility State" (#6…
ZainMGit Feb 26, 2026
4da4368
invoke Spring area reclaim logic for enemy unit reclaim (#6742)
sthartman Feb 26, 2026
8740d69
Change badwords (#6852)
repligator Feb 26, 2026
c06a6ca
clean up constants.lua (#6891)
efrec Feb 26, 2026
dabcc3d
scripted damages reduce wrecks into heaps properly (#6973)
efrec Feb 26, 2026
c4a7579
Update Lua libary submodule
github-actions[bot] Feb 27, 2026
57e2bf8
energy conversion: added nil check + performance optimizations (#6991)
Ruwetuin Feb 27, 2026
d442676
tech blocking: fix dead square near center of the screen (#6994)
Ruwetuin Feb 27, 2026
f979141
Update Lua libary submodule
github-actions[bot] Feb 28, 2026
c411a98
pip: fix unitpics->unit icons transition ... for buildings (#6997)
Ruwetuin Feb 28, 2026
dbe574b
Allow sound notifications to be suspended (#6978)
sorenmarkert Feb 28, 2026
d838ebe
pip: increased maxzoom + tweaked healthbars (#6999)
Ruwetuin Feb 28, 2026
e9f5880
pip: init fix + support (acid) colored map lava too (#7002)
Ruwetuin Feb 28, 2026
0ff0f82
Legion balance changes/bugfixes (#7003)
Zecrus2 Mar 1, 2026
ad56927
map startbox: reduce minimap startunit icon sizes for big player numb…
Ruwetuin Mar 1, 2026
40f14f8
pip: scale down icons more on zoomout when high total unit count (#7006)
Ruwetuin Mar 1, 2026
d4195da
pip: dont auto-open on gamestart when player + screen resize fix (#7007)
Ruwetuin Mar 1, 2026
7f065ed
Added new Wintergaming voicelines (#7008)
Damgam Mar 1, 2026
382f78f
pip: pixel align viewport (#7010)
Ruwetuin Mar 1, 2026
b4f7e00
commander nametags: fix (#7013)
Ruwetuin Mar 2, 2026
ec1a050
pip: add keybind shortcut config + only configured for pip1 for now (…
Ruwetuin Mar 2, 2026
c977a1c
Disables Legion Fortifier (#7016)
Zecrus2 Mar 3, 2026
8d812dc
pip: fix losview projectiles/explosions/shatter (#7022)
Ruwetuin Mar 4, 2026
e97f1a7
Fix excessive camera spinning when following another player's camera …
loveridge Mar 4, 2026
b5f8322
pip: commandsx toggable in settings + addtional gl safeguards (#7029)
Ruwetuin Mar 4, 2026
832afd4
fix Legion Martyr breaking error in gui_attack_aoe (#7027)
efrec Mar 5, 2026
ae86ae5
fix: remove cloak costs from legkam/legvision (#7028)
efrec Mar 5, 2026
320c9ab
pip: wg api order fix (#7034)
Ruwetuin Mar 5, 2026
8d0bdb5
added some nil checks (#7035)
Ruwetuin Mar 5, 2026
5b55bc4
mouse fx: safeguard camdistance value (#7036)
Ruwetuin Mar 5, 2026
ea6e7e4
options: add back gfx preset restrictions for potato gfx + disable wa…
Ruwetuin Mar 5, 2026
a4b2104
New donator OConquor (#7042)
icexuick Mar 5, 2026
449f485
options: better potator gpu detection + devmode shows all potator opt…
Ruwetuin Mar 6, 2026
89ffe64
options: lowest preset/devmode fixes (#7047)
Ruwetuin Mar 6, 2026
f33ba82
pip: removed pip modoption, enabled by default (#7048)
Ruwetuin Mar 6, 2026
44a73a8
loadscreen: fixes regarding windows resizing during loadscing (#7049)
Ruwetuin Mar 6, 2026
f61ada4
fix for legkam weapons on website (#7050)
efrec Mar 7, 2026
d507852
use smaller explosion vfx for Medusa (#7053)
efrec Mar 7, 2026
331b2e9
make legion jammers deactivate on damage (#7052)
efrec Mar 7, 2026
7c664bd
docked drones assume the LOS type of their carrier (#7039)
efrec Mar 7, 2026
82c5f16
Add napalm and drone damage to unit GUI (#7044)
efrec Mar 7, 2026
1000d0e
set Hecate engage range (maxrange) to its drone range (#7038)
efrec Mar 7, 2026
5db6a3d
fix: do not refund upgraded units when dead (#7019)
efrec Mar 7, 2026
17418ac
fix: Make Fortifier on-off-able and fix double-energy costs (#7020)
efrec Mar 7, 2026
7343f2d
pip: changed icon for pip TV, added pip help button/tooltip (#7054)
Ruwetuin Mar 7, 2026
3f7c491
pip: better unitpic scaling (#7056)
Ruwetuin Mar 7, 2026
4f3cacd
pip: nametags alignment fix (#7057)
Ruwetuin Mar 7, 2026
0793c7d
pip: help tooltip tweak + fix pip move button (#7058)
Ruwetuin Mar 7, 2026
cc6b101
Revert "pip: removed pip modoption, enabled by default (#7048)" (#7059)
Ruwetuin Mar 7, 2026
6e5cc72
shield behavior: performance optimization (#7060)
Ruwetuin Mar 7, 2026
83307bf
pip: performance optimization (#7063)
Ruwetuin Mar 7, 2026
57c15e0
added gadget: volcango pyroclastic (by Steel) (#7068)
Ruwetuin Mar 8, 2026
a95957c
map lava: performance optimization (#7069)
Ruwetuin Mar 8, 2026
1afe060
Startbox custom geometry (#7070)
PtaQQ Mar 8, 2026
604843a
new logos (#7071)
PtaQQ Mar 8, 2026
8bba88f
Change blue crystal lighting (#7066)
AntlerForce Mar 8, 2026
80027d1
Update Lua libary submodule
github-actions[bot] Mar 9, 2026
5c1a86b
Scav balance patch (#7075)
Damgam Mar 9, 2026
d06466d
volcano pyroclastic: added alwaysvisible to its CEG effects (#7078)
Ruwetuin Mar 9, 2026
1229dfe
projectile target aoe: optimization (#7080)
Ruwetuin Mar 9, 2026
f396158
Revert "Startbox custom geometry" (#7081)
PtaQQ Mar 9, 2026
7d83e99
pip: performance optimization (#7082)
Ruwetuin Mar 9, 2026
8de5950
guishader: add multipass blur for higher res screens (#7083)
Ruwetuin Mar 9, 2026
6713192
Impart snowfall upon Boreal Falls and Argent Strata (#7084)
AntlerForce Mar 9, 2026
7b367a1
Fixed broken Winter JuggernautIsReady (#7088)
Damgam Mar 10, 2026
edf90e9
guishader: fixes (#7089)
Ruwetuin Mar 10, 2026
cb7ef44
advplayerlist: optimizations (#7091)
Ruwetuin Mar 10, 2026
f5e8241
Fix metal value format in armcomboss.lua (#7092)
Ralf1108 Mar 11, 2026
cc88897
Add helper function table.keys (#7093)
sorenmarkert Mar 11, 2026
2584205
pip: use engine minimap when zoomed out and more than 4000 units (#7097)
Ruwetuin Mar 11, 2026
f2e8385
Integration Tests: CUSTOM_ENGINE_URL (#7087)
keithharvey Mar 12, 2026
7d0c149
Widget Based implementation of the holdfire fixes (#7073)
ZainMGit Mar 12, 2026
d8133cd
remove interceptor DPS, stockpile-only buildpower from unit GUI (#7051)
efrec Mar 12, 2026
307f7a8
BARb: widen hard-profile factory egress lanes (#7062)
veez-e Mar 12, 2026
802bfd8
Remove option to disable custom widgets (#7100)
L-e-x-o-n Mar 12, 2026
52d6ad8
Added cormando mine back to utility build tab to maintain consistency…
VocalNight Mar 12, 2026
afb47cf
Feb '26 Community Balance Patch (#7074)
SethDGamre Mar 12, 2026
88e8aa9
Blueprint Subsitution Definition Update - addressing missing Cor entr…
gmansawesome Mar 12, 2026
3ace28f
Jsonify modoptions (#7072)
geekingfrog Mar 12, 2026
59e1aaa
Revert "Jsonify modoptions (#7072)" (#7103)
Ruwetuin Mar 12, 2026
663c841
add g:UnitAutoTargetRange artificial callin (#6930)
efrec Mar 12, 2026
b22261a
Fix: loopholes allowing capture of allied units (#6886)
efrec Mar 12, 2026
04ac214
Account for set target problems (#5643)
KyleAnthonyShepherd Mar 12, 2026
3a565f2
ignore api: dont add empty string to ignored players (#7105)
Ruwetuin Mar 12, 2026
e06377b
/dance command for commanders + removing idle dances (#7102)
PtaQQ Mar 13, 2026
fc8c389
improved guishader toggle detection (#7106)
Ruwetuin Mar 13, 2026
063fb26
pip: add decals+explosions to engine fallback too + more performance …
Ruwetuin Mar 13, 2026
02eb17d
pip: fixes (#7108)
Ruwetuin Mar 13, 2026
49dd73c
r2rthelper/guishader: disable scissor when done (#7109)
Ruwetuin Mar 14, 2026
62cc7df
pip: fix leak when engine minimap is used (#7111)
Ruwetuin Mar 14, 2026
500756a
advplayerslist: remove empty (dead) allyteams (#7113)
Ruwetuin Mar 14, 2026
543c825
pip/minimap: scale up unit icons when bigger resolution screens (#7114)
Ruwetuin Mar 14, 2026
481ee62
com nametags: scaling fix for icon names on high res screens (#7115)
Ruwetuin Mar 14, 2026
cf64f44
pip: improved performance regarding selections (#7118)
Ruwetuin Mar 14, 2026
c3648a6
Update Lua libary submodule
github-actions[bot] Mar 15, 2026
dd691e6
pip: separate VBO's for buildings and mobile units to increase perfor…
Ruwetuin Mar 15, 2026
64c10bb
pip: improved building order sorting (#7121)
Ruwetuin Mar 15, 2026
c3cf7b6
Fixed Scav Stats Panel crashing. (#7122)
Damgam Mar 15, 2026
cc40e6c
feat(guard): add new guard parameters for guarding in formation (#6254)
WybrenKoelmans Mar 15, 2026
41a1184
various widget performance improvements (#7124)
Ruwetuin Mar 15, 2026
f286100
disable unit_transports_air_speed gadget (#7125)
efrec Mar 16, 2026
bd4567a
place target on ground: Add nil check (#7126)
Ruwetuin Mar 16, 2026
099af69
fix: Legion torp launcher missing defense range (#7117)
efrec Mar 16, 2026
97dd2d5
various gadget performance improvements (#7130)
Ruwetuin Mar 16, 2026
973c55f
Fixed float walls spawning instead of T2 walls in some BPs (#7133)
Damgam Mar 16, 2026
6326ec9
added new contributors to ai names, made the list properly alphabetic…
PtaQQ Mar 16, 2026
d4d0107
varous performance improvements + prevent altering currently looped t…
Ruwetuin Mar 16, 2026
8f5f2aa
Fix Daedalus' misspell in language/en/tips.json (#7140)
fnknda Mar 17, 2026
2c3118c
added ubdead (#7138)
PtaQQ Mar 17, 2026
7a51cbe
Fix: Prevent air units built with /nocost from remaining neutral (#7137)
IsaJoeFeat Mar 17, 2026
51683ee
dev helpers: givecat armcom = gives all units it can build recursivel…
Ruwetuin Mar 17, 2026
77e52ff
minimap settings: moved max height into configfloat (#7142)
Ruwetuin Mar 17, 2026
82e9a47
reclaiminfo + ordermenu fix (#7144)
Ruwetuin Mar 17, 2026
1c12ac1
added KOTH organisers, removed planetary campaign mods, and old moder…
PtaQQ Mar 17, 2026
1315af7
scav spawner defense: fix (#7147)
Ruwetuin Mar 18, 2026
5dbe754
dev helpers: fix (#7148)
Ruwetuin Mar 18, 2026
2126e97
gui always uses rendertotexture (removed old render path) (#7150)
Ruwetuin Mar 18, 2026
5beae56
chat: fix (#7153)
Ruwetuin Mar 19, 2026
0185eaf
Make `ColorIsDark()` use Y' luminance to detect color brightness (#6350)
PhiBabin Mar 19, 2026
dabf80c
Fix issue 3475 (units lose queue when multi-selection includes a tran…
Brian-Catcow-B Mar 19, 2026
13e9a37
Lux Package Manager (#6005)
keithharvey Mar 19, 2026
3c40c0c
Unit Test Bootstrapping (#5902)
keithharvey Mar 19, 2026
81a0766
Fix manual attack command from EMP units against Brimstone on the wat…
PexoDev Mar 19, 2026
81bc1ff
Transport factory guard: queueing, ignore user commands option (#6984)
Flameink Mar 19, 2026
4c330d1
[Transifex] Update translations on master
github-actions[bot] Mar 19, 2026
450eb15
fix: deconflict armscab opening/firing animations (#7119)
efrec Mar 19, 2026
c354bea
Area Unload Fix - please don't ask me why it broke in the first place…
Fx-Doo Mar 19, 2026
da4f832
metal/geo spots: now unaffected by water distortion (#7156)
Ruwetuin Mar 19, 2026
4295670
fix: i18n.interpolate can handle too many variables
keithharvey Oct 25, 2025
8cb6740
sharing tab
keithharvey Mar 13, 2026
d04126b
fix spec typo
keithharvey Mar 19, 2026
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
  •  
  •  
  •  
43 changes: 43 additions & 0 deletions .busted
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
return {

default = {
-- add your project roots to Lua’s package.path for tests
-- This is necessary during the initial phase of the Lux rollout
-- where we don't have a project root and `src/` directory in accordance with canonical lua rock/package structure
-- https://github.com/beyond-all-reason/Beyond-All-Reason/pull/6005#issuecomment-3504830009
lpath = table.concat({
"./?.lua", "./?/init.lua",
"common/?.lua", "common/?/init.lua",
"common/luaUtilities/?.lua", "common/luaUtilities/?/init.lua",
"luarules/?.lua", "luarules/?/init.lua",
"luaui/?.lua", "luaui/?/init.lua",
"spec/?.lua", "spec/?/init.lua",
}, ";")
},
-- Default configuration
verbose = true,
output = "utfTerminal",
pattern = "_spec",
ROOT = { "spec/" },

-- Named tasks
_all = {
verbose = true,
output = "utfTerminal",
pattern = "_spec",
helper = "spec/spec_helper.lua",
ROOT = { "spec/" }
},
unit = {
verbose = true,
ROOT = { "spec/" }
},
coverage = {
verbose = true,
output = "utfTerminal",
pattern = "_spec",
helper = "spec/spec_helper.lua",
coverage = true,
ROOT = { "spec/" }
}
}
5 changes: 5 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,8 @@ changes so it's easier for reviewers to see what is different in this PR
#### AFTER:
(screenshot from branch)
-->

<!-- If relevant
### AI / LLM usage statement:
Tell us if you used an AI or LLM in the creation of this code, which AI tool was used, and to what extent.
-->
50 changes: 50 additions & 0 deletions .github/workflows/test_integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Run Integration Tests

on:
workflow_dispatch:
inputs:
custom_engine_url:
description: 'Optional custom engine URL (overrides stock engine)'
required: false
default: ''
pull_request:
push:
branches:
- 'master'

jobs:
run-tests:
name: docker compose up (headless)
runs-on: ubuntu-latest
steps:
- name: Upload Event File
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}

- name: Checkout Repository
uses: actions/checkout@v4

- name: Build Test Image
env:
CUSTOM_ENGINE_URL: ${{ github.event.inputs.custom_engine_url || vars.CUSTOM_ENGINE_URL || '' }}
run: |
BUILD_ARGS=""
if [ -n "$CUSTOM_ENGINE_URL" ]; then
BUILD_ARGS="--build-arg CUSTOM_ENGINE_URL=$CUSTOM_ENGINE_URL"
fi
docker compose -f tools/headless_testing/docker-compose.yml build $BUILD_ARGS bar
timeout-minutes: 15

- name: Run Tests
run: docker compose -f tools/headless_testing/docker-compose.yml up --no-build
timeout-minutes: 30

- name: Upload Integration Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Integration Test Results
path: |
tools/headless_testing/testlog/results.json
38 changes: 38 additions & 0 deletions .github/workflows/test_integration_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Process Integration Tests

on:
workflow_run:
workflows: ["Run Integration Tests"]
types:
- completed

permissions: {}

run-name: "Process Integration Tests - ${{ github.event.workflow_run.display_title }}"
jobs:
process-test-results:
name: Integration Test Results
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion != 'skipped'
permissions:
checks: write
pull-requests: write
actions: read

steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
github-token: ${{ github.token }}
run-id: ${{ github.event.workflow_run.id }}
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: Integration Test Results
action_fail_on_inconclusive: true
time_unit: milliseconds
commit: ${{ github.event.workflow_run.head_sha }}
event_file: artifacts/Event File/event.json
event_name: ${{ github.event.workflow_run.event }}
files: "artifacts/Integration Test Results/*.json"
35 changes: 35 additions & 0 deletions .github/workflows/test_unit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Run Unit Tests

on:
push:
branches: ['*']
pull_request:
branches: ['*']

jobs:
busted:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v5

- name: Install Lua 5.1
run: |
sudo apt-get update
sudo apt-get install -y lua5.1 liblua5.1-0-dev

- name: Install Lux
uses: lumen-oss/gh-actions-lux@v1
with:
version: 0.26.1

- name: Cache Lux dependencies
uses: actions/cache@v4
with:
path: .lux
key: lux-5.1-${{ runner.os }}-${{ hashFiles('lux.lock') }}
restore-keys: |
lux-5.1-${{ runner.os }}-

- name: Run busted
run: lx --lua-version 5.1 test
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
*.iml
.project
*.code-workspace
.lux/
51 changes: 41 additions & 10 deletions .luarc.json
Original file line number Diff line number Diff line change
@@ -1,24 +1,55 @@
{
"$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
"runtime.version": "Lua 5.1",
"completion.requireSeparator": "/",
"diagnostics": {
"type": {
"definition": [
".lux/",
"types/",
"recoil-lua-library/library/"
]
}
},
"runtime.path": [
"?",
"?.lua"
"?",
"?.lua"
],
"runtime.special": {
"VFS.Include": "require",
"include": "require",
"shard_include": "require"
"VFS.Include": "require",
"include": "require",
"shard_include": "require"
},
"runtime.version": "Lua 5.1",
"semantic": {
"enable": true
},
"workspace": {
"library": [
"recoil-lua-library"
],
"ignoreDir": [
".vscode",
"luaui/Tests",
"luaui/TestsExamples"
],
"library": [
"common/luaUtilities",
"recoil-lua-library",
"luarules",
"luaui",
"spec",
"types",
".lux/5.1/test_dependencies/5.1/01a3c364614bddff7370223a5a9c4580f8e62d144384148444c518ec5367a59b-mediator_lua@1.1.2-0/src",
".lux/5.1/test_dependencies/5.1/287e827f4a088d41bba04af5f61a13614346c16fe8150eb7c4246e67d6fd163e-lua-term@0.8-1/src",
".lux/5.1/test_dependencies/5.1/316ac0b30e04e86a253d64886f3b110bd0508267474e6b58a3b973bd6857dbf4-penlight@1.14.0-3/src",
".lux/5.1/test_dependencies/5.1/3b3d395f3fb9f72fec6e61ddca4f99228008e0fe4aa433b4823e9f50f4d93d84-luafilesystem@1.8.0-1/src",
".lux/5.1/test_dependencies/5.1/455cd98d50c6191a9685cffcda4ce783efbb957934625e134c39f43bd5df6818-luassert@1.9.0-1/src",
".lux/5.1/test_dependencies/5.1/47b12edcdc032232157ace97bddf34bddd17f6f458095885e62bbd602ad9e9ec-luasystem@0.6.3-1/src",
".lux/5.1/test_dependencies/5.1/4e9592a499c9ced4f8ce366db9db7d9c0dd1424ea8d4c8c16c1550ea3a61a696-say@1.4.1-3/src",
".lux/5.1/test_dependencies/5.1/6ce29c2c535c40246c386c056f24689344cddb56ec397473931431e6b67694d2-say@1.4.1-3/src",
".lux/5.1/test_dependencies/5.1/832fd9862ce671c0c9777855d4c8b19f9ad9c2679fb5466c3a183785a51b76b0-luafilesystem@1.8.0-1/src",
".lux/5.1/test_dependencies/5.1/8925c25e69bb2ef4a2007b536827894dfcca7c1ff54572256002997105acb847-inspect@3.1.3-0/src",
".lux/5.1/test_dependencies/5.1/a6c5176043cb3de56336b7de119443dbb3d9e024be1d50e06289ad4b4959a2da-lua_cliargs@3.0.2-1/src",
".lux/5.1/test_dependencies/5.1/e4f17b9e67313bbd5e90f425672fc8998dd0bfa43335f7c57ed2de7a799e07a6-dkjson@2.8-1/src",
".lux/5.1/test_dependencies/5.1/fa396ffe12257288dc0716c35d37ecff7c262c8b242e95906777055a08419940-busted@2.2.0-1/src",
".lux/5.1/test_dependencies/5.1/fd314d02e320aea863d0e3d2105fc515bd41704f3ef68c947cf074313878e8c2-luassert@1.9.0-1/src"
]
}
}
}
12 changes: 12 additions & 0 deletions .stylelua.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
syntax = "All"
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "Always"
collapse_simple_statement = "Never"
space_after_function_names = "Never"

[sort_requires]
enabled = true
69 changes: 69 additions & 0 deletions AI_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# AI Usage Policy

## Disclosure requirements

**AI usage in generating code must be explicitly disclosed in the associated Pull Request.**
Contributors must clearly state:
- which AI tool(s) were used (for example: Claude Code, Cursor, Copilot)
- the extent to which the contribution was AI-assisted

**Undisclosed AI usage will result in closure.**
If maintainers reasonably suspect undisclosed AI use, the pull request will be closed.

**Non-direct AI usage does not require disclosure.**
The above requirements apply to cases where AI is used to write production code.
If AI is used solely as an advisory or educational tool, disclosure is not required.

## Verification and testing

**All AI-assisted code must be fully verified by a human contributor.**
Contributors are responsible for ensuring that:
- the code has been run and tested
- the code behaves correctly in practice, not just in theory

It is recommended to attach test artifacts, such as screenshots or recordings, that demonstrate your code working for each test step.

## Issues and discussions

**AI assistance is permitted in issues and discussions, with a strict human-in-the-loop requirement:**

- AI-generated content must be reviewed and edited by a human before submission.
- Verbosity, noise, and speculative content must be removed.
- Contributors remain responsible for research, accuracy, and clarity.

AI may assist with explanations, summaries, or drafting, but must not replace understanding or judgment.

## Prohibited content

**AI-generated media is not permitted.**
This includes, but is not limited to: art, images, videos, and audio.
Only text and code are eligible for AI assistance, subject to the rules above.

## Enforcement

**Repeated or intentional misuse of AI tools may result in contributor bans.**
Maintainers may enforce this policy at their discretion.

## Why is this important?

Beyond All Reason is maintained by humans.

Every issue, discussion, and pull request is read and reviewed by maintainers who volunteer their time and expertise. Submitting low-effort, unverified, or poorly understood work shifts the burden of validation onto maintainers and is considered disrespectful of that effort.

The primary behavior this policy seeks to prevent is **Vibe Coding**, defined as the uncritical generation and submission of AI-produced code without sufficient understanding, verification, or accountability by the contributor. This policy exists to prevent wasted maintainer time and to ensure high standards of code quality and maintainability.

This policy exists to protect maintainers, preserve code quality, and ensure that collaboration remains productive and sustainable.

## Responsible AI usage is welcome

Beyond All Reason maintainers actively use AI tools as part of their workflow.
This policy does not represent an anti-AI position.

The restrictions outlined above exist due to repeated misuse of AI by contributors who submit unverified, low-quality, or poorly understood work. The issue is not the tools themselves, but how they are applied.

When used responsibly, transparently, and with proper human oversight, AI can be a valuable productivity aid.

## Attribution

This policy is adapted from the original AI usage policy published by the [Ghostty](https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md) organization.
The Beyond All Reason team acknowledges and appreciates the clarity and intent of the original text.
Loading
Loading