Commit Graph
4638 Commits
Author SHA1 Message Date
Jesse Plamondon-Willard a979564a8c remove timeline on bar/line charts
These aren't as useful with the new mark lines.
2026-06-24 15:46:27 -04:00
Jesse Plamondon-Willard 9b8712a4e3 add independent error-handling for each file 2026-06-24 15:46:27 -04:00
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