Add the contact list (friends, blocked, neutral)

Mirrors the TeamSpeak 3 client's Contacts: clients can be filed as friend,
blocked or neutral from their context menu or by dragging them into the
Contacts window, given a custom and phonetic nickname, shown under either
name or both, and per contact muted automatically, ignored in server/channel
or private chat and pokes, have their away message hidden and whispers
allowed or denied. Friends are green and blocked clients red in the tree
(optional), new contacts start from per-type defaults ("Set Defaults"), and
the global whisper policy lives in Options -> Contacts. "Change Volume..."
adds a per-client dB gain that a contact entry remembers.

Contacts are stored in ~/.ts3jclient/contacts.txt using the exact record
format the official client keeps in the Contacts table of its settings.db
(field names and codes recovered from the binary), so entries move between
the two verbatim. A small read-only pure-Java SQLite reader imports the
official client's list on first run and on demand, without a driver.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-18 07:50:58 +00:00
parent 22e0304f25
commit f409f500fd
33 changed files with 2474 additions and 23 deletions

View File

@@ -76,6 +76,20 @@ 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.
- **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
(custom name and nickname / only custom / only nickname), and per contact **mute
automatically**, **ignore** server/channel chat, private chat, pokes and away
messages, and **allow or deny whispers**. Friends are coloured green and blocked
clients red in the tree (optional), per-type defaults for new contacts are
configurable ("Set Defaults"), and the global whisper policy lives in Options →
Contacts. The list is stored in `~/.ts3jclient/contacts.txt` in the *exact* record
format the official client keeps in the `Contacts` table of its `settings.db`; on
first run it is seeded from an installed TeamSpeak 3 client's database (read with a
small built-in SQLite reader — no driver needed), and can be re-imported any time.
- **Per-client volume** ("Change Volume…") — a dB gain on top of the master volume,
remembered in the client's contact entry.
- **Ban List** (Tools → Ban List) — the server's bans in a searchable table (Add /
Remove / Edit, own-ban filter and highlighting, choosable columns), with the
official Add dialog: IP and nickname patterns read as IPv4/IPv6 wildcards, fixed