Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## [0.8.0] - 2026-07-15
### Added
- Added import support for encrypted Threema Android data-backup ZIP files, including conversations, participants, messages, reactions, polls, and optional media extraction.
- Added the Threema Android backup source and password field to the Windows GUI and CLI.

## [0.7.0] - 2026-04-22
### Added
- Added `export_summary.txt`, `manifest.json`, and `log.txt` for every export run.
Expand Down
1 change: 1 addition & 0 deletions Examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ This folder contains synthetic example data for local testing and demo purposes.

Included in the repository:
- `ThreemaSynthetic/`: synthetic Threema SQLite example with one direct chat and one group chat
- `ThreemaAndroidBackupSynthetic/`: synthetic encrypted Threema Android data backup with direct, group, and distribution-list messages
- `WhatsAppSynthetic/`: synthetic WhatsApp ZIP examples for direct and group chats
- `run_examples.ipynb`: notebook to run the example exports

Expand Down
47 changes: 47 additions & 0 deletions Examples/ThreemaAndroidBackupSynthetic/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
Synthetic Threema Android Data Backup
=====================================

This fixture contains only invented data and media generated by build_fixture.py.
It follows the current Threema Android CSV backup format version 27.

Encrypted backup:
threema-backup_synthetic.zip
threema-backup_synthetic_no_media.zip

Password:
testpassword

Expected own Threema ID:
0ZAHXXHB

Coverage:
- direct chats, including an empty chat
- one group chat
- one distribution list
- incoming and outgoing messages
- text, quote, edit, deletion, location, poll, and call/status messages
- contact and group reactions
- image, audio, video, PDF, and text attachments
- thumbnails, contact avatars, profile pictures, and a group avatar
- one deliberately unavailable attachment payload
- a second valid backup variant created without message media or thumbnails
- CSV quoting, commas, backslashes, line breaks, Unicode, and emoji

The source/ directory contains the plaintext archive members for transparent
inspection. expected.json contains the counts and identifiers expected from an
importer. The identity entry uses the public legacy test vector from the
official Threema Android source and does not contain a real identity or key.

Regeneration requirements:
- Python project dependencies
- 7-Zip on PATH
- FFmpeg on PATH

Regenerate with:
python .\Examples\ThreemaAndroidBackupSynthetic\build_fixture.py

Run the importer regression tests with:
python -m unittest discover -v

Run a manual export with:
python -m chat_export --source threema_android_backup --input-path .\Examples\ThreemaAndroidBackupSynthetic\threema-backup_synthetic.zip --backup-password testpassword --out-dir .\Examples\Output\threema_android_backup
Loading