v1.1.0
What's new
GalaxyChat
v1.1.0 (2026-08-26)
Full Changelog Previous Releases
- Bump version from v1.0.6 to v1.1.0
- Fix: memory sawtooth from unbounded per-message cache scanning
ColorNamesInMessage looped over the ENTIRE player cache (every name
ever seen, potentially thousands of entries) for every chat message,
across all 17 registered chat events. Cost scaled with cache size, not
message size, so each pattern-escape/gsub/closure created per cached
name per message generated continuous garbage on busy channels
(raid/guild/world chat) — producing the climb-then-drop memory pattern
as WoW's GC periodically caught up. Benchmarked at ~20s CPU per 1000
messages with a 5000-entry cache.
Additionally, the cache was only pruned/enforced once at login, so it
(and the cost above) grew unbounded for the rest of a long session.
Add Cache.nameIndex (Core.lua): a name -> classToken table maintained
incrementally on Cache.Set and rebuilt only when entries are removed
(Prune/Enforce/Clear). ColorNamesInMessage now tokenizes each message
once and does an O(1) index lookup per word instead of iterating the
cache, cutting per-message cost from ~4000x down. Hyperlink-protected-
range detection also now runs at most once per message, and only when
a link is actually present.
Add a periodic maintenance ticker (CACHE_MAINTENANCE_INTERVAL, 5 min)
that re-runs Cache.Prune/Enforce during play instead of only at login,
so the cache stays bounded for the whole session.
Verified: guild online/offline links still render correctly, plain-
text name mentions still color, no-op messages return unchanged.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

