# Changelog

## 2026-07-11

- Reduced login-desktop resource spikes with lazy Chromium startup, idle/after-export shutdown, status caching, reduced-motion page styling, lower-frequency x11vnc polling, and Compose CPU/memory/PID limits.

- Changed QR refresh from re-reading an expired image to forcing the Douyin login page to generate a new cache-busted QR code, and stopped serving expired QR screenshots.

- Fixed a blank Douyin login desktop by preventing build-time localhost proxy variables from leaking into runtime Chromium and explicitly wiring lowercase/uppercase runtime proxy variables.

- Added an authenticated same-origin noVNC HTTP/WebSocket proxy and synchronous mobile popup handling so login tasks work from phones without exposing port 8788 publicly.

- Fixed the server image to provision Node.js 22 explicitly for protocol mode and excluded runtime logs/configuration from the Docker build context.

- Reworked the Web console into a responsive unified operations dashboard with local Lucide icons, clearer account/target status, and safer confirmation dialogs.
- Added strong send-confirmation state handling, retryable unconfirmed targets, failure categorization, account cooldowns, and focused manual retry modes.
- Improved friend-list discovery, persistent browser profiles, Cookie synchronization, and browser/protocol failure persistence.
- Expanded the login desktop service with more robust Douyin identity export and bounded diagnostic endpoints.
- Added authenticated no-cache overview data that excludes message contents, Cookie data, receipts, and server credentials.
- Added unit coverage for send-state behavior, stale-lock safety, overview redaction, authentication, and public settings.
- Made stale-lock PID probing portable across Linux and Windows and sanitized the public configuration template.
- Removed obsolete standalone account, login-workspace, and settings templates now consolidated into the dashboard.
- Fixed standard Compose scheduling by sharing persistent browser profiles with scheduler/task services, while limiting host Docker access to services that actually need it.
- Moved the GitHub Actions workflow to the repository root, corrected its working directory/tests/profile/artifact paths, and pinned actions to commit SHAs.
- Split the tracked `config.example.json` template from the ignored runtime `config.json`, with update-time config preservation.
- Made login-desktop API/public URLs honor container environment settings and synchronize the configured schedule at Web startup.
- Bound noVNC and Mihomo host ports to loopback by default and documented SSH-tunnel access.
- Added an explicit Node.js image build check for protocol mode, made the cron reader tolerate Windows UTF-8 BOM files, and removed unused legacy login-session, relogin-worker, and nested Compose entrypoints.

## 2026-05-30

- Redesigned the Web UI into dedicated overview, login workspace, accounts, send console, logs, and settings views.
- Moved the console styling and interaction scripts into `DouYinSparkFlow/webui/static/` with a denser admin-console layout and mobile drawer navigation.
- Added safer confirmations for manual operations and localized the main Web UI feedback messages.
- Removed the redundant send-console navigation label while keeping send details available from contextual actions.
- Added a persistent sun/moon toggle for switching between light and dark console themes.
- Updated the README preview image and added a screenshot-based usage guide.
- Made the screenshot usage guide entry more visible in the README.
- Added a project disclaimer to the root README.
- Added a Linux Do friendly link and GitHub star history chart.
- Refined the root README wording and structure for an open source project style.
- Reordered the disclaimer and star history chart, and refined runtime file wording.
- Added upstream project attribution and emoji-styled README sections.
- Added a masked UI preview image to the root README.
