Telegram Archive is on PyPI, transcription works with any provider, and the documentation moved to its own site. Upgrading runs migration 033 automatically. Docker deployments need no changes, and the old python -m src name keeps working.
Added
- Install with pip.
pip install telegram-archivegives thetelegram-archivecommand andpython -m telegram_archive. The templates, static files and every database migration ship inside the package. (#492) telegram-archive migraterunsalembic upgrade headto create or upgrade the database schema. It is meant for pip installs and fresh databases. Run it before the first backup and after each upgrade. The Docker image still migrates on start and still detects older schemas.- A small Python API.
from telegram_archive import Config, TelegramBackup, run_backup, thenasyncio.run(run_backup(Config()))runs one backup of every configured account. The names load lazily, so the viewer image, which has no telethon, can still import the package. - Transcription with any provider.
TRANSCRIPTION_PROVIDERpicks akou, any OpenAI-compatible endpoint, Deepgram, AssemblyAI or ElevenLabs. The default,auto, behaves as before.TRANSCRIPTION_MODELreplaces the fixedwhisper-1model name, andTRANSCRIPTION_HOTWORDSnow fills the prompt field. (#489) - A documentation site at geiserx.github.io/Telegram-Archive, written from the code: every setting with its default, every command, the viewer, upgrading and troubleshooting. The README is now a short overview. (#494, #495)
- PyPI publishing. Each release tag builds the package, checks that the tag matches the version, and uploads it with PyPI trusted publishing. A new Package check builds and installs the wheel on every pull request.
Changed
- The code moved from
src/totelegram_archive/. Both images keep a smallsrcpackage, so compose files that runpython -m src schedule,python -m src authoruvicorn src.web.main:appkeep working and run the same code. The old name prints a one-line notice at start. Switch topython -m telegram_archiveandtelegram_archive.web.main:appwhen convenient. The images' default commands anddocker-compose.ymluse the new name. - The viewer wallpaper has a new mount path,
/app/telegram_archive/web/static/<file>. The old path,/app/src/web/static/<file>, is a link to it in the viewer image, so an existing mount keeps working. - The migrations moved into the package. From a checkout, run
alembic -c telegram_archive/alembic.ini .... Inside the backup container a barealembic ...still works. - The Docker examples use the new name. The compose file,
init_auth.sh,init_auth.batand.env.examplerunpython -m telegram_archiveand mount the wallpaper at the new path. - A misconfigured transcription server no longer uses up voice notes. A refusal about the server's setup (401, 402, 403, 429, and 404 on the direct path) keeps the file queued and ends the run. Two refused files with nothing answered end the run with a warning to check the model and language. A 413 affects only its own file, which is sent once more as its audio track. (#489)
- Each transcript records the options it was made with, and an answer made with another provider, model, language hint, hotword list or preset is never reused for a new request. Migration 033 adds the column. (#489)
Fixed
- More of each transcription answer is read. Word timings nested under segments (whisper.cpp), a segment's speaker id (Mistral), the detected language confidence, and ElevenLabs' three-letter language codes and audio duration. (#489)
📋 Full changelog: docs/CHANGELOG.md