Import bookmarks and identities from the TeamSpeak 3 client

The official client keeps what a myTeamSpeak account synchronises as protobuf
Item_Data blobs in the ProtobufItems table of settings.db. Decode them, adopt
them on first run when we have no identity yet, and offer a re-import from
Manage Bookmarks and Identities. The settings.db reader moves from contacts to
a new teamspeak package.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-23 19:02:52 +00:00
parent bab89f9b50
commit dbb425403a
20 changed files with 805 additions and 76 deletions

View File

@@ -76,6 +76,14 @@ frontend supplies its own UI and audio backend while reusing `core` unchanged.
- **Identity management** (Tools → Identities) — keep several identities, mark one
as the default, pick one per server or per bookmark, rename, raise an identity's
security level, and import/export TeamSpeak-compatible `.ini` identity files.
- **Import from TeamSpeak 3 / myTeamSpeak** — the official client keeps its bookmarks
and identities (the data a myTeamSpeak account synchronises) as protobuf
`Item_Data` blobs in the `ProtobufItems` table of its `settings.db`. On first run,
when this client has no identity of its own yet, it adopts all of them — identities,
the default identity and its nickname, and the bookmarks with the identities they
connect with; "Import from TeamSpeak 3…" in Manage Bookmarks and in Identities
re-imports at any time (additive: known identities and bookmarks are left alone).
The schema was recovered from the descriptors embedded in the client binary.
- **Contacts** (Tools → Contacts) — TeamSpeak's friend/blocked list: mark a client as
**Friend**, **Blocked** or **Neutral** from its context menu (or drag it into the
window), give it a custom and a phonetic nickname, choose how the name is shown
@@ -190,6 +198,12 @@ core/ com.ts3client
├── config.Settings persisted prefs (~/.ts3jclient/settings.properties)
├── config.Bookmarks persisted server bookmarks (with per-server identity)
├── config.IdentityStore managed identities (~/.ts3jclient/identities/*.ini)
├── teamspeak the official client's own data files
│ ├── TeamSpeakSettingsDb locates settings.db; reads Contacts and the ProtobufItems sync store
│ ├── SqliteReader minimal read-only SQLite 3 file reader (no driver)
│ ├── SyncItem a synced bookmark / identity / folder (Item_Data)
│ ├── SyncItemDecoder protobuf wire decoding of Item_Data, via ProtobufReader
│ └── TeamSpeakImporter merges synced items into IdentityStore / Bookmarks
├── audio abstractions + reusable DSP (no platform code)
│ ├── AudioBackend factory for a platform's VoiceInput/VoiceOutput
│ ├── VoiceInput capture source (extends ts3j Microphone) + gating controls