github GeiserX/Telegram-Archive v8.18.0

2 hours ago

The viewer looks like Telegram. It follows the system light or dark setting by default, offers twelve themes, folds deleted messages into one line, counts edits and opens their history beside the chat. The archive gets status and merge commands, a way to end every session, and its own name in Telegram's device list. No migration runs. Docker deployments only need the new pins.

Added

  • The archive shows under its own name in Telegram's device list. Every Telegram client the app builds now reports the device Telegram Archive, the operating system and the app version, so the entry under Settings, Devices is easy to recognise. TELEGRAM_DEVICE_MODEL sets another name per install. Existing logins keep working. (#500)
  • telegram-archive status says whether the archive is healthy without a browser: last run, listener state per Telegram account, media counts and database size. --json prints the same payload as the viewer's Archive status plus healthy and problems, and the exit code is 1 when a run never happened, did not finish or was missed, so cron and monitoring can use it. (#499)
  • End every session. The master can log out every browser at once from the new Sessions tab in Admin settings, for example after a master password change. It ends the sessions of the master login, of every viewer account and of every share token. End all but this one keeps the browser you click it in. The same action is POST /api/admin/sessions/end-all, with keep_current to keep your own session. See End every session. (#501)
  • telegram-archive merge combines two archives that hold different Telegram accounts, on SQLite and PostgreSQL in any combination, on current releases. It copies every account-scoped row under a new account id in one transaction, copies media by content, refuses a schema mismatch or a duplicate Telegram account, and deletes or overwrites nothing. --dry-run shows the counts first. The 8.0-only SQL scripts in scripts/merge/ are removed. (#502)
  • Match system and four new themes. The theme picker gains Match system, the new default, plus Telegram Day, iOS Night, Minimal and Graphite, for twelve entries: Match system, Telegram Day, Telegram Night, iOS Night, Slate, Minimal, Graphite, AMOLED, Forest, Aubergine, Day and Paper. Telegram Day draws Telegram's line pattern over a green gradient, and iOS Night and Slate draw a dark version of it. The pattern ships with the viewer as a static file. See Themes and wallpaper.

Changed

  • An edited message shows how many earlier texts the archive kept, peeks at the last one, and opens its history beside the chat. The word "edited" in the time row gives way to a pencil and the number of earlier versions kept, and its name says when the last edit was ("Edited at 08:57, 2 earlier versions kept"), so the time beside it reads as the send time it is. Hovering, focusing or long-pressing the pencil shows the text before the last edit with what that edit removed struck through, and See all 3 versions. A click opens the edit history as a panel beside the chat on a wide screen, with the message highlighted in the chat, and as a bottom sheet on a phone; the versions run down a timeline ("08:54 Edit 1 · 2 min later"), removed words in a darker neutral that keeps 4.5:1 on every theme. More actions, Edited messages (the info panel's row on a phone) opens the chat search in an Edited only mode. /api/chats/{ref}/messages takes edited_only=true, a read-only filter that keeps the viewer's chat and account restrictions; a message counts as edited when Telegram marks it or the archive kept an earlier version, and the chat's edited_messages figure now counts the same. See Reactions, edits and deletions.
  • A deleted message folds to one line, and the chat menu lists a chat's deletions. A deleted message now shows as a red-tinted line in its place, "Deleted photo · 21:59 · Show". Show opens it with "Deleted · 21:59" at the head of the bubble, and Hide folds it again; a reply quote, a search hit, a link or any other jump opens its target by itself. The time is when the archive noticed the deletion, with the date when that is another day, and the time in the bubble's corner is the send time again. It used to sit next to "deleted", where it read as the deletion time. The red tint is stronger in every theme, and every text keeps 4.5:1 on it. More actions, Deleted messages opens the chat search in a Deleted only mode that lists the chat's deletions, each with Show in chat. /api/chats/{ref}/messages takes deleted_only=true, a read-only filter that keeps the viewer's chat and account restrictions. See Deleted messages.
  • The viewer follows the system light or dark setting by default. The new default theme, Match system, shows Telegram Day (a green wallpaper with a line pattern, white and light green bubbles) on a light system and Telegram Night on a dark one, and it switches while the page is open. Browsers that never picked a theme move from Slate to Match system; a saved choice and every ?theme= link keep working, and VIEWER_DEFAULT_THEME can still pin one theme. Slate, Telegram Night, Day and Paper are retuned, every theme keeps text at 4.5:1 or more, message bubbles are opaque everywhere, and the browser bar takes the theme's header colour. Text uses the system font stack, as Telegram's own apps do, and the viewer no longer loads or ships the Inter font. VIEWER_CHAT_BACKGROUND now replaces the theme's own wallpaper. The chat info panel counts the deleted and edited messages the archive kept for that chat, and /api/chats/{ref}/stats returns them as deleted_messages and edited_messages. The photo viewer shows the caption and a Show in chat button, also for a photo opened from Shared Media (/api/chats/{ref}/media items now carry the message's text, is_deleted and deleted_at). See Themes and wallpaper.
  • Chats read like Telegram. Bubbles in a run join with tight corners, and the last one carries the tail and the sender's photo. A run ends when the sender changes, at a new day, or after a pause of more than 15 minutes, so it follows the turns of the conversation. The time sits at the end of the last line, photos and albums run to the bubble's edge, and stickers and round videos stand on the wallpaper. Polls show their results as Telegram does, with the vote count on the time's line, and a voice message reads "Voice message" over its duration and size, with its transcript and download buttons side by side. Messages stay in a 760px column on a wide screen. The chat list rows are shorter: a group or a channel shows its kind and member count (channel · 4,210 subscribers) and a private chat the person's username, in place of the id. The chat header is one bar with search, shared media and the info panel, the member count, or the kind of chat, under the name, and export and expand-all-transcripts behind a More actions menu. Date pills leave out the current year. The pinned bar drops the pinned message's time, folder tabs drop their chat count (it moved to the tooltip) and hide inside Archived Chats, and Shared Media shows denser tiles under one header with its tabs, leaving out an empty tab. The chat's figures moved to the info panel. Photos open from the keyboard, and on a phone the photo viewer moves with a swipe.
  • What only the archive knows looks like part of Telegram. Each archive fact sits where Telegram puts a similar one, in calm colours, with one icon family (Font Awesome is no longer loaded or shipped) and one way of writing numbers, sizes and times:
    • A deleted message keeps its full text under a faint wash of a calm red, never the error colour, with a trash and "deleted" before its time and the deletion's own date in the tooltip. A photo's mark rides its time pill, an album carries one mark, a reply to a deleted message shows a small trash after the name, and the info panel lists the deletion as a fact.
    • An edit shows "edited" before the time, with a history mark only when earlier versions can be opened. The edit history labels each version with its time, and its day when the edit came on another day, and opens as a page with a back arrow on a phone.
    • What changed takes the chat's place, as Telegram's Recent Actions do, so the chat list stays usable: a line per event over the message drawn as a bubble, a filter for the kinds and the period that the browser remembers, and older entries that load as you scroll. The main menu counts the new ones.
    • The main menu, three lines in the sidebar header, gathers the signed-in login and its role, What changed, Statistics, the theme, notifications, and for the master login Archive status and Admin settings. The credit moved to its foot.
    • The sidebar's status line says "Live" while the listener runs, "Backing up…" during a run, when the last backup ran, and for the master login a backup that did not finish, which opens Archive status.
    • Statistics and Archive status are rows with the full figures: counts with every digit and sizes in KB, MB and GB. Archive status opens with a line that says whether anything needs attention and one that says what runs, then a section per part, with each account named by its label.
    • Media the archive does not show keeps its place and shape as a placeholder that says what it is and why: over the download limit, skipped by the media filter, hidden for this login, not downloaded yet, or missing from the archive disk. Its sign sits in a ring, not in Telegram's filled download disc, because nothing downloads from it; only a file missing from the disk turns amber.
    • Account tags in the chat list take a colour per account, like Telegram's folder tags, and show only when the login can see more than one Telegram account. A message names its account beside the sender's name, or before the time of an outgoing one, only in a chat that more than one archived account holds or writes in. In any other chat the header names the account, so the bubbles carry no tag.
    • Transcripts open under the player with no heading, "1 of 2" at the end of the text steps through versions, and a failure reads in the time colour.
    • The info panel writes its facts as Telegram's info page does, with "In the archive", earlier photos that open as a carousel from the avatar, and the ids under Technical details. The sender details, the calendar (one click jumps; empty days are grey and still land on the next message; the month's name opens the year's months), the export (From and To open the calendar and the file downloads in place), topics, the pinned bar, Shared Media and Admin settings follow the same look.
    • Notifications have a switch in the main menu instead of banners, and a one-time row at the top of the chat list asks first.
  • A second viewer drops ended sessions within 60 seconds. A viewer checks each session it holds in memory against the database again once a minute. A session ended on one viewer, by the end-all action, by editing an account or by revoking a token, stops working on a second viewer on the same database within that minute. It used to keep working there until a restart or until AUTH_SESSION_DAYS ran out. A browser there that only holds a live connection is closed by the sweep every 900 seconds. (#501)

📋 Full changelog: docs/CHANGELOG.md

Don't miss a new Telegram-Archive release

NewReleases is sending notifications on new releases.