| Version | Date | Description |
|---|---|---|
0.1.0 |
2025-12-17 |
Infrastructure setup, multi-forge CI/CD mirroring |
-
✓ Repository initialization
-
✓ Multi-platform git mirroring (GitHub, GitLab, Codeberg, Bitbucket)
-
✓ CI/CD infrastructure with security hardening
-
✓ MPL-2.0 licensing
-
✓ Language policy defined (ReScript + Deno + Rust)
| Task | Description |
|---|---|
[ ] Source structure |
Create |
[ ] Deno config |
Initialize |
[ ] ReScript setup |
Configure |
[ ] Guix manifest |
Create |
| Task | Description |
|---|---|
[ ] Linting |
Add ReScript and Rust linting workflows |
[ ] Testing |
Unit test workflow with coverage reporting |
[ ] Security scanning |
CodeQL or Snyk integration |
[ ] Build verification |
Ensure clean builds on all commits |
| Task | Description |
|---|---|
[ ] Parser interface |
Define ReScript module type for all parsers |
[ ] Plugin registry |
Dynamic parser loading/registration system |
[ ] Error handling |
Structured error types for parse failures |
Priority order based on export format complexity and user demand:
| Priority | Platform | Export Format |
|---|---|---|
1 |
|
|
2 |
Telegram |
JSON export |
3 |
Discord |
JSON export (via data request) |
4 |
Signal |
Encrypted backup format |
5 |
iMessage |
SQLite database ( |
6 |
Facebook Messenger |
JSON export |
7 |
Slack |
JSON export |
type message = {
id: string,
timestamp: Js.Date.t,
sender: participant,
content: messageContent,
replyTo: option<string>,
attachments: array<attachment>,
platform: platform,
}
type messageContent =
| Text(string)
| Media(mediaRef)
| System(string)
| Deleted
type participant = {
id: string,
displayName: string,
phone: option<string>,
}| Format | Use Case | Implementation |
|---|---|---|
JSON |
Programmatic access, archival |
Native serialization |
CSV |
Spreadsheet analysis |
Tabular flattening |
HTML |
Human-readable viewing |
Templated generation |
Markdown |
Documentation, notes |
Structured text output |
Formal archival, printing |
Via Rust library (printpdf) |
| Feature | Description |
|---|---|
[ ] Argument parsing |
Platform, input, output, format flags |
[ ] Progress indicators |
Real-time extraction progress |
[ ] Verbose mode |
Detailed logging for debugging |
[ ] Config file |
TOML configuration support |
# Extract WhatsApp chat to JSON
uce extract --platform whatsapp --input chat.txt --output messages.json
# Convert Telegram export to Markdown with date filter
uce extract --platform telegram --input result.json \
--output chat.md --format markdown \
--from 2024-01-01 --to 2024-06-30
# Anonymize Discord export
uce extract --platform discord --input package.zip \
--output anon.json --anonymize| Feature | Description |
|---|---|
[ ] Statistics |
Message counts, frequency analysis, active hours |
[ ] Activity graphs |
Participant activity over time |
[ ] Search |
Full-text keyword/phrase search |
[ ] Sentiment |
Optional sentiment analysis (Rust ML) |
| Feature | Description |
|---|---|
[ ] PII detection |
Identify phone numbers, emails, addresses |
[ ] Redaction |
Automatic PII removal/replacement |
[ ] Encryption |
AES-256 encrypted export files |
[ ] Secure deletion |
Overwrite temporary files |
-
Sanitize all file paths (no directory traversal)
-
Validate file formats before parsing
-
Memory limits for large files
-
Timeout for parsing operations
-
SHA-pinned versions only
-
Regular security audits
-
Automated vulnerability scanning
-
No runtime network access