Jesse Plamondon-Willard
40611258bf
add DNS traffic to stats page
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard
d691aeba15
add marklines for notable events
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard
bfdd2b4126
add web costs & Patreon to stats page
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard
6002688149
add stats quick nav sidebar
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard
45cea17788
add 'Content Patcher packs' stats
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard
f8d23d3799
add checkbox to toggle advanced controls
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard
65f57bff6c
add timeline controls for all charts
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard
ef3001aa49
add stats page with initial 'mods by type' and 'new mods' charts
2026-06-24 15:46:25 -04:00
Jesse Plamondon-Willard
13818abc3d
fix inconsistent mod/user ID types in mod data
...
This avoids needing to cast values between models (e.g. between the compatibility list and open mod dataset).
2026-06-10 22:17:08 -04:00
Jesse Plamondon-Willard
e5e35f0253
add open mod dataset to the SMAPI toolkit
2026-06-09 01:43:47 -04:00
Jesse Plamondon-Willard
59a748e3a5
add error when running build script in PowerShell 5
2026-05-10 01:08:58 -04:00
Jesse Plamondon-Willard
67cfb40600
update mod blacklist
2026-04-30 10:48:09 -04:00
Jesse Plamondon-Willard
d3d161488c
update mod blacklist
2026-04-30 00:26:43 -04:00
Jesse Plamondon-Willard
423076ff90
update mod blacklist
2026-04-01 11:58:52 -04:00
Jesse Plamondon-Willard
11c6d61031
optimize watcher IsChanged tracking
...
This commit...
- avoids repeated collection count accesses since we can just track the result while updating;
- and adds more short-circuiting in cases where we know watchers haven't changed.
2026-03-29 18:31:02 -04:00
Jesse Plamondon-Willard
f2d1fa5e65
reduce unneeded internal use of IEnumerable<T>
2026-03-28 23:52:50 -04:00
Jesse Plamondon-Willard
d9c62b9815
optimize ButtonsChanged event args
...
This commit...
- removes the Lazy<T>, which was unnecessary since mods will virtually always check which buttons were changed;
- avoids a dictionary lookup on each property access;
- and avoids allocating LINQ enumerators, temporary array, and dictionary on init.
2026-03-28 23:52:50 -04:00
Jesse Plamondon-Willard
bc6d7e90ff
optimize AssetsInvalidated event args
...
Some quick benchmarks show that...
- `new HashSet<T>(values)` (266ns) is 79% faster than `values.ToImmutableHashSet()` (1440ns);
- filling a hash set with a loop (554ns) is 21% faster than filling it from a LINQ enumerable (697ns);
- and searching a `HashSet` (18ns) is 49% faster than searching an `ImmutableHashSet` (35ns).
2026-03-28 23:52:50 -04:00
Jesse Plamondon-Willard
6bfb481838
prefer strongly-typed Enum.* methods
2026-03-28 23:52:50 -04:00
Jesse Plamondon-Willard
1070761192
prefer empty collection expression
2026-03-28 23:52:50 -04:00
Jesse Plamondon-Willard
677dd94b61
update Korean translations
...
Thanks to To2morrow on Nexus!
2026-03-27 23:59:34 -04:00
Jesse Plamondon-Willard
45216fe62b
reduce allocations in collection watchers
2026-03-27 23:59:33 -04:00
Jesse Plamondon-Willard
aaa23edc49
use cached HasListeners in ManagedEvent.Raise for simplicity
2026-03-27 23:59:33 -04:00
Jesse Plamondon-Willard
e4f42f961b
avoid redundant set.Contains before Add/Remove
2026-03-27 23:59:33 -04:00
Jesse Plamondon-Willard
a6b5b3260a
avoid Math.sqrt call in gamepad deadzone handling
2026-03-27 23:59:33 -04:00
Jesse Plamondon-Willard
d9d33c5949
reduce remaining uses of LINQ on warmer paths
2026-03-27 23:59:33 -04:00
Jesse Plamondon-Willard
06ebc8d049
avoid unneeded OrderBy(…) in AssemblyLoader
2026-03-27 23:59:33 -04:00
Jesse Plamondon-Willard
2194fa6f28
avoid Any() on warmer paths
...
This is typically much slower than equivalent manual checks.
2026-03-27 23:59:33 -04:00
Jesse Plamondon-Willard
7bc3595e66
avoid Union() enumerator in player inventory tracking
2026-03-26 22:42:35 -04:00
Jesse Plamondon-Willard
db59d384b9
avoid Where() enumerators when possible
2026-03-26 22:42:35 -04:00
Jesse Plamondon-Willard
da888ba9b0
avoid ToArray() copies when possible
2026-03-26 22:42:35 -04:00
Jesse Plamondon-Willard
42238538bd
remove Distinct() in inventory tracking
...
These cover very rare edge cases with invalid inventory data, so it's not really worth the added performance hit of handling them. The next commits will avoid the error if duplicates do occur.
2026-03-26 22:42:35 -04:00
Jesse Plamondon-Willard
67dff9ea7a
avoid unneeded inventory scan in PlayerTracker.TryGetInventoryChanges
...
We already have the current inventory (as of the last update) in `this.CurrentInventory`, which is usually what we want to diff against.
2026-03-26 22:42:35 -04:00
Jesse Plamondon-Willard
88c2250738
add OS platform type to temporary stats
2026-03-26 22:42:35 -04:00
Jesse Plamondon-Willard
87bfc1b093
split up extension files
2026-03-26 00:48:58 -04:00
Jesse Plamondon-Willard
bdf5b0eb48
migrate to extension blocks
2026-03-26 00:48:57 -04:00
Jesse Plamondon-Willard
38bb6704e9
replace obsolete actions/attest-build-provenance action with actions/attest
2026-03-24 23:34:13 -04:00
Jesse Plamondon-Willard
549a8a8013
update actions/checkout action to fix Node version warning
2026-03-24 23:34:13 -04:00
Jesse Plamondon-Willard
8e568888a7
fix release artifact getting double-zipped in build workflow
2026-03-24 23:34:13 -04:00
Jesse Plamondon-Willard
daf6b1050d
optimize input button tracking
...
This replaces `ButtonStates` dictionaries with `PressedButtons` sets, which...
- reduces allocations (since most buttons aren't down at any given time);
- reduces iteration (and a yield generator in `GamePadStateBuilder.GetPressedGamePadButtons()`) for filling pressed buttons;
- and simplifies change tracking.
2026-03-24 21:53:38 -04:00
Jesse Plamondon-Willard
3474f49c8c
reduce allocations when applying input overrides
2026-03-24 00:07:36 -04:00
Jesse Plamondon-Willard
f7bc2d96f5
avoid .Any() on hot paths
...
This allocates an enumerator unnecessarily if we already have the count available.
2026-03-22 23:15:38 -04:00
Jesse Plamondon-Willard
b4462786e7
prevent mutable access to tracked button states
2026-03-22 22:54:52 -04:00
Jesse Plamondon-Willard
fffc58eede
reduce allocations for active button state tracking
2026-03-22 22:48:38 -04:00
Jesse Plamondon-Willard
2aeaf6fb83
reduce allocations in input API's GetPressedButtons() logic
2026-03-22 22:48:38 -04:00
Jesse Plamondon-Willard
dece40841b
replace RemoveWhere extension with equivalent HashSet methods
2026-03-22 22:48:38 -04:00
Jesse Plamondon-Willard
7bdf9be8f1
improve error when a mod is blocked by Windows Smart App Control
2026-03-22 22:48:38 -04:00
Jesse Plamondon-Willard
4d44e66138
add build attestation
2026-03-14 14:59:36 -04:00
Jesse Plamondon-Willard
821167e5c5
Merge branch 'develop' into stable
4.5.2
2026-03-14 14:53:06 -04:00
Jesse Plamondon-Willard
13c4c1c44f
prepare for release
2026-03-14 14:49:17 -04:00