mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-27 04:49:49 -07:00
48c36aa195
The cache manager and the stats server each carried a hand-written parser for the same file. When the format went to v4 for maturity tiers only the manager was updated, so loadKnownWordsSet fell through to null and every session reported 0 known words from an intact cache. Move the state union, its parser, and a knownWordsFromState accessor into known-word-cache-format and have both readers go through it. The stats server no longer mentions a version at all, and both version switches close with assertNever, so adding a V5 is a compile error at every consumer instead of a silently empty result. An unparseable cache now warns rather than reading as "no known words". Two stats fixtures omitted refreshedAtMs/scope and only passed because the stats reader was laxer than the manager; they now carry the fields every cache the app writes has always had.
675 B
675 B
type: fixed area: stats
- Stats reported 0 known words for every session after the known-word cache gained maturity tiers. The stats server carried its own copy of the cache parser that only recognized versions up to 3, so the new v4 file was read as "no cache" rather than as a format it should understand.
- The cache format, its parser, and the derived known-word set now live in one module that both the cache manager and the stats server read, and the version dispatch ends in an exhaustive check so a future format bump fails the build instead of silently reporting zero. A cache that exists but does not parse now logs a warning rather than passing for an empty one.