⚠ Testing status — client-side only. Every 1.0.3 feature in this changelog was exercised from a non-host (client) install. A subset of the new diagnostics can only do real work when the install is on the Master Client — specifically:
OnRemoteRpcEventHashtable unpack (capturing real client-side RPC senders after Master relay)- Master-side Instantiate requester correlation (
SuspectedRequesterActor/Name/Rpc)- PhotonView Ownership audit (EventCode 210/211/215)
- Actor×Method hotspot detector
These Master-only paths compile cleanly and self-check, but have not yet been validated in an actual hosted session. Expect potential edge-case bugs there until a host-side capture is recorded. Client-side features (FPS / RPC monitor / Instantiate rate / FieldProbe etc.) are unaffected.
Quiet-by-default
EnablePluginProfiling / EnablePatchProfiling default changed to false — profilers are opt-in nowLogVerbosity default changed to Minimal — text logs only carry abuse alerts; CSV/JSONL still capture everythingMinimal = "alerts only, but definitely alerts"New features
whysolaggy_data.csv (58 cols) + whysolaggy_events.jsonl, auto-rotated at MaxLogFileSizeMBharmony_patches.csv + alerts when the same method is patched by multiple mods[MethodTracer]): name methods, get filtered call stacks per hitPhotonNetwork.Instantiate captures a filtered caller stack (3 samples per prefab + 1 per 5s window, auto-forced on flood) — finally answers "which script / mod is spawning this?"RemoteRpcTrace unpacks EventCode=200 Hashtable to recover the real client sender; Instantiate rows gain SuspectedRequesterActor/Name/Rpc/AgeMs; OwnershipChange decodes EventCode 210/211/215; OwnershipGrab and ActorMethodHotspot alarms layer on topPerformance & robustness
MinReportMs — ~70–90% lower self-overhead on busy scenesIgnorePluginGuids / IgnorePatchMethods / ExtraWatchMethods config keysConcurrentQueue + PumpBatchSize)Docs
[LitSync] / [HuddleWarmth] / [FuelMath] / [WARMTH_LOG] / BugleRestore)grep/jq by tag now recommended, CSV pivot second, AI third (with "curate the slice first" recipe), plain-text reading fourthSelect-String, 3 jq) covering abuse alerts, lit-sync, failed warmth ticks, top RPC senders, FieldProbe hits, frame spikesUpgrade note: BepInEx only applies new defaults to missing keys. Delete
com.wuyachiyu.WhySoLaggy.cfgor flip the three keys manually to pick up the quieter defaults.
PhotonNetwork.ExecuteRpc; counts calls, senders and payload bytesSendFeedDataRPC → RemoveFeedDataRPC → GetFedItemRPC → Consume