Skip to content

Releases: taoking/wechat-archive

WeChat Archive v0.3.0

Choose a tag to compare

@taoking taoking released this 25 Aug 18:10

WeChat Archive v0.3.0

Builds on v0.2.0 with a substantially better Archive Viewer browsing experience: a derived search index, jump-to-date, bidirectional cursor paging, right-click actions and keyboard shortcuts, and more reliable quoted-message rendering.

New

  • Derived FTS search index. The first time an archive is opened, the viewer builds a private, disposable full-text search index under local Application Support (directory 0700, file 0600), containing only the message text fields needed to display search results — never the source database, raw rows, or any key. When the index isn't available (not yet built, cancelled, the local SQLite lacks FTS support, or the index file is corrupt), the viewer automatically falls back to a read-only LIKE search — normal use is unaffected.
  • Jump to date. A new calendar entry lets you browse by the years/months that actually have messages in the current conversation; selecting a date jumps to that day's first message.
  • Bidirectional cursor paging. After a search or date jump, the timeline can keep loading in both the older and newer directions using stable cursors, avoiding duplicates or gaps at identical timestamps.
  • Context menu and keyboard shortcuts. Text messages can be copied; images, video, and voice can be saved elsewhere or revealed in Finder. ⌘F opens global search, ⌘E exports the current conversation, ⌘J jumps to the latest message.
  • Better quoted-message rendering. WeChat's quote-reply messages no longer show their internal XML verbatim — they're parsed into a readable "Quoting 'sender': summary + reply text" format.

Fixed

  • Quoted-message parsing no longer mishandles the rare case where the reply text itself contains a fragment matching the XML closing tag (e.g. </msg>), which previously caused part of the reply to be misclassified and truncated.
  • A corrupted derived search index file no longer requires manual deletion — re-indexing now detects and rebuilds it automatically instead of getting stuck in read-only LIKE fallback indefinitely.
  • Removed a data race between a background thread writing the search index path and the main thread reading it.
  • The sidebar conversation context menu's "Open" item previously did nothing; now fixed.
  • "Copy text, sender, and time" is no longer offered on your own messages in a group chat (it previously copied a placeholder instead of an actual sender name).

Performance

  • Jumping to a message no longer performs a redundant full-table position scan.
  • Search result avatars are now resolved once per result set instead of being re-queried on every UI refresh.

Privacy

  • Same as previous versions: all processing is local. The new derived search index is likewise stored only in a local private directory — never uploaded, and deletable at any time.

Distribution

  • The macOS Apple Silicon App bundles SQLCipher and its required OpenSSL runtime; third-party licenses are included inside the App bundle.
  • Signing: AD-HOC.
  • Notarization: NOT DONE.
  • Because the build is not notarized, macOS may show a security warning on first launch.

WeChat Archive v0.2.0

Choose a tag to compare

@taoking taoking released this 25 Aug 13:39

WeChat Archive v0.2.0

Builds on v0.1.0's one-time full archive with a more usable Archive Viewer and recovery of a large category of message text that previously showed as unrecognized.

New

  • Cross-conversation message search. The viewer toolbar now has a search entry that searches message text across every conversation (previously only conversation titles were searchable). Selecting a result switches to that conversation and jumps to, and briefly highlights, the matching message.
  • Archive recovery stats. A new stats panel shows the message breakdown by type (text/image/video/voice/unrecognized) and the media breakdown by recovery status, so you can see how much of an archive is actually readable.
  • Recovers more message text. Some newer WeChat versions store the body of revoke notices, location shares, and app messages (link shares/mini programs/quote-replies) as compressed data. With the local zstd CLI installed (included in brew bundle), Full Export now automatically attempts to decompress and normalize these into readable text. Without zstd, these messages are still losslessly preserved as their raw SQLite values — they just continue to display as unrecognized. Verified against a real ~54k-message archive: the unrecognized-message ratio dropped from 21.5% to about 8%.
  • Message image/video thumbnails are now cached, reducing repeated decode work while scrolling a conversation.

Fixed

  • A failed Full Export previously always showed "target directory retained for verification, use a new empty directory," even when the real cause had nothing to do with emptiness (most commonly, the archive destination nested inside the plain SQLite root or account root). It now shows a more specific message for known causes.

Privacy

  • Same as v0.1.0: all processing is local, and no chat data or keys are uploaded. The new message search only queries fields already inside the imported archive — it never reads or uploads the source database, WeChat directory, or any key.

Dependency Change

  • Brewfile now includes zstd (used to decompress some compressed message bodies). Apple's system Compression framework does not support Zstandard, so this follows the same optional-local-CLI-tool boundary already established by the Silk voice decoder: without zstd installed, the affected messages simply stay unrecognized — the rest of the archive is unaffected and export never fails because of it. The distributed .app does not yet bundle zstd (same as the current state of the Silk decoder).

Distribution

  • The macOS Apple Silicon App bundles SQLCipher and its required OpenSSL runtime; third-party licenses are included inside the App bundle.
  • Signing: AD-HOC.
  • Notarization: NOT DONE.
  • Because the build is not notarized, macOS may show a security warning on first launch.

WeChat Archive v0.1.0

Choose a tag to compare

@taoking taoking released this 23 Aug 11:33
bf89751

WeChat Archive v0.1.0

First usable local-first release of WeChat Archive for macOS.

Highlights

  • Creates a one-time, local-first WeChatArchive from owner-authorized WeChat data.
  • Reads the resulting archive without reopening WeChat, source databases, or keys.
  • Reconstructs supported text, image, video, and voice timeline entries; raw source rows remain preserved for unsupported messages.
  • Shows contact and group identities when locally available, with private avatar placeholders when no local asset was recovered.
  • Exports an individual conversation to offline HTML, JSON, or Markdown with viewer-friendly media.
  • Remembers non-sensitive workspace locations and the most recently opened archive.
  • Cancels large-media conversation exports without waiting for a whole file copy.

Privacy

  • All processing is local.
  • No chat data or keys are uploaded.
  • Key-map locations may be remembered, but key-map contents and decryption material are never persisted in preferences or archives.

Current Scope

v0.1.0 supports one-time Full Export. It does not provide live
synchronization, incremental backup, or cloud sync. Less common WeChat message
types remain preserved losslessly as unsupported messages.

Voice Decoder

Raw Silk voice is preserved during archive export. Silk → WAV requires a
compatible locally installed decoder. Existing archived WAV voice messages
remain playable without the WeChat source data.

Distribution

  • The macOS Apple Silicon App bundles SQLCipher and its required OpenSSL
    runtime. Its third-party licenses are included inside the App bundle.
  • Signing: AD-HOC.
  • Notarization: NOT DONE.
  • Because the build is not notarized, macOS may show a security warning on
    first launch.