* fix(#425): log screen doesn't auto-scroll on initial load
Replace animateScrollToItem(filteredLogs.size) with
scrollToItem(Int.MAX_VALUE). animateScrollToItem requires the
LazyColumn to have completed layout before it can calculate
animation targets — on initial load the list hasn't laid out
yet, so the scroll silently fails. scrollToItem is instant and
clamps Int.MAX_VALUE to the last item, working reliably even
on first composition.
* feat(#425): add auto-refresh polling for live log updates
LogsViewModel: add @Volatile loadInProgress guard to prevent
concurrent loads, and startAutoRefresh()/stopAutoRefresh() that
polls GET /api/logs every 5 seconds via viewModelScope coroutine.
LogsScreen: wire up DisposableEffect(Unit) to start polling when
the screen is composed and stop when disposed — so polling only
runs while the user is viewing the log screen.
Combined with scrollToItem(Int.MAX_VALUE) from previous commit,
logs now both auto-refresh AND auto-scroll to the latest entry.
* fix(#425): add missing viewModelScope import for CI build
LogsViewModel used viewModelScope directly in startAutoRefresh()
but never imported it — the original code only used it indirectly
via safeLaunchLoad which has its own import in ViewModelExt.kt.
---------
Co-authored-by: M57 <hy4ri@users.noreply.github.com>