Fix dashboard 'Regenerate savings' timeout on large session history.
On a large ~/.claude/projects history under cold cache + concurrent load, dashboard regeneration could exceed the 45s per-step budget. Root cause: the version-detection scan walked and stat()d every project transcript once per running Claude process, repeating an identical full-tree stat walk N times. It now runs once per regeneration (memoized, 30s TTL). Behavior is unchanged; only the redundant re-walks are removed. Raising the timeout was rejected because the single-threaded daemon can wedge on a long step.