Update the maintenance section to tell users to run Git and Docker Compose commands from their actual project directory instead of a fixed server path.
Resolve t.me/+ and joinchat invite links for accounts that already joined the private channel or group. Store the stable peer id for future syncs and surface clear errors when the account has not joined or the invite is invalid.
Pause subscriptions that become inaccessible and show the disabled reason in subscription lists.
Refine /tasks to hide finished or cancelled channel jobs, avoid resurrecting stale persistent jobs, and add inline controls for pause/resume/cancel actions.
Add cursor-based file pagination, storage-scope indexes, and a web maintenance action for completed Telegram download item cleanup. Refresh the frontend logo references to the TG Vault README logo with a cache-busting URL.
Edit the manual channel download status message with scan totals before queuing downloads.
Force-refresh the batch status when each file starts so comment-thread media shows the active file name.
Add optional comment-thread scanning for manual channel downloads and route mixed channel/comment message refs through the download queue.
Skip Telegram stickers when extracting downloadable media and add a regression verifier for sticker exclusion.
- add first-run admin setup with HttpOnly cookie sessions
- scope file operations to the active storage account
- improve Telegram auth, downloads, and background tasks
- harden upload, signed URL, CORS, and local path handling
- update docs, logo, lint configuration, and frontend chunks
Show paused and cancelled states directly in the Telegram batch progress message. Remove fallback slash commands from the control card, clear inline buttons after successful completion or cancellation, and invalidate task ids so old buttons no longer report successful pause/resume after cancellation.
Show Microsoft client secret errors directly instead of a generic backend-log message. Allow the OneDrive success page script to notify the opener and close itself, and refresh the settings page when the auth popup is closed manually. Also document copying the Azure client secret Value instead of the Secret ID.
- Run subscription scans through the same download-item audit path as
/tg_date and /tg_preview_date so success/failure/skipped counts land in
telegram_download_items.
- Mark jobs with partial failures as completed_with_errors and persist
the failure summary into telegram_background_jobs.error.
- Fix downloadTelegramChannelRange pushing genuinely failed items into
skippedMessageIds so /tasks no longer misreports failures as skipped.
- Convert BetterDownloadQueue.processNext into a while-loop so concurrency
drains immediately when slots free up, and resolve in-flight cancels via
a settleCancelled hook to avoid hanging promises on /stop_tasks.