Low-risk subset only — each verified to have zero external references
(tsc + eslint green); API clients, stores, icons and constants left
untouched.
- libs/util.ts: unexport `is` (still used internally by isNumber)
- components/tree-select/libs/util.ts: drop unused recursive `findLabel`
- app/person/workload/config.ts: drop unused `dimensionOpts`
- components/login/libs/session-cache.ts: drop unused `getCachedSession`
- components/setting/PageSurface.tsx: drop 3 unused layout components
(SettingTableViewport, SettingSectionHeader, SettingFilterStack)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The row renderer was defined inside VirtualizedTree, giving it a new
component identity on every parent render — react-window then remounted
every row, destroying row DOM/state. Move Row to module scope and pass
flattened/tree/renderNode through react-window's rowProps instead of the
closure.
Verified at runtime: rows render, expand/collapse and select work, and
selection state survives re-renders, with no console errors.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>