v0.1.4-Alpha: Fixed log window accuracy, locked series detail hero, and polished UI
- Replaced naive last-50-lines reader with byte-position tracking via
_read_log_lines — entries no longer repeated or dropped between polls - Recorded session start byte offset in loguru_config so the log window
only showed lines written by the current server process, not leftovers
from previous runs - Fixed parse_log_line field swap: level and logger_name were reversed
relative to the actual file format (timestamp - level - logger_name - message) - Added log file rotation handling: position resets when file shrinks
- Added SUCCESS level support: CSS color (--su token) and ✓ prefix symbol
- Switched from Flask threading mode to gevent; added monkey.patch_all()
at bootstrap, set gevent as the default async mode, and re-enabled
WebSocket upgrades — disconnects demoted to debug level - Locked hero header and progress strip in place while only the book list
scrolled; implemented via a full-height flex layout scoped to the series
detail page using :has(#seriesDetailPage) to avoid affecting other pages - Added series_detail.html and series_detail.js (new page)
- Rebuilt book detail modal with updated layout and styling