Add identity management

Manage several TeamSpeak identities like the official client instead of
using one auto-generated identity file.

- IdentityStore/IdentityEntry keep each identity as a TeamSpeak-format INI
  in ~/.ts3jclient/identities, so files interchange with the TS3 client;
  supports create, import, export, rename, remove and a cancellable
  security-level search. A legacy identity.ini is migrated in on first load.
- Settings hold the default identity; bookmarks may pin their own, falling
  back to the default when unset.
- TeamspeakConnection now connects with the identity it is handed.
- Swing: Tools -> Identities manager, plus an identity drop-down in the
  connect and bookmark forms.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 07:42:08 +00:00
parent f912cab07b
commit 17ad6cde1c
12 changed files with 880 additions and 38 deletions

View File

@@ -54,7 +54,7 @@ frontend supplies its own UI and audio backend while reusing `core` unchanged.
- Configurable capture/playback **devices**.
### Server interaction
- Connect to any TS3 server (auto-generates and persists a TS3 identity).
- Connect to any TS3 server (an identity is generated on first use if none exists).
- **Channel/client tree** styled like TS3, updated live from protocol events
(joins, leaves, moves, channel create/edit/delete, nickname/mute/away changes).
- **Talk indicators** — speakers turn green live as they talk.
@@ -68,7 +68,11 @@ frontend supplies its own UI and audio backend while reusing `core` unchanged.
**private chat**, or **locally mute** them.
- **Chat** to the current channel or the whole server; receive channel/server/private
messages and **pokes**.
- **Server bookmarks** — quick-connect menu with add/edit/remove management.
- **Server bookmarks** — quick-connect menu with add/edit/remove management, each
optionally pinned to a specific identity.
- **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.
- **Self status** — Away (with message) and Channel Commander toggles.
- **Status bar** shows the server name, user count and live ping.
- Change your nickname, mute/deafen from the toolbar.
@@ -97,15 +101,16 @@ java -jar swing/target/ts3-client.jar
mvn -pl swing exec:java
```
Then use **Connections → Connect…**, enter a server address, port (default 9987)
and nickname, and connect. Open **Tools → Options** to pick audio devices and tune
Then use **Connections → Connect…**, enter a server address, port (default 9987),
nickname and identity, and connect. Open **Tools → Options** to pick audio devices and tune
voice activation while watching the live meter.
## Architecture
```
core/ com.ts3client
├── config.Settings persisted prefs (~/.ts3jclient/settings.properties)
├── config.Bookmarks persisted server bookmarks
├── config.Bookmarks persisted server bookmarks (with per-server identity)
├── config.IdentityStore managed identities (~/.ts3jclient/identities/*.ini)
├── audio abstractions + reusable DSP (no platform code)
│ ├── AudioBackend factory for a platform's VoiceInput/VoiceOutput
│ ├── VoiceInput capture source (extends ts3j Microphone) + gating controls
@@ -137,6 +142,8 @@ swing/ com.ts3client
├── SettingsDialog audio + VAD options with live meter
├── ConnectDialog connect form
├── BookmarksDialog manage saved servers
├── IdentitiesDialog manage identities (new/import/export/improve)
├── IdentityChooser identity drop-down shared by connect/bookmark forms
├── LevelMeter dBFS meter with threshold marker
├── Icons programmatic vector icons (no image assets)
└── Theme palette + fonts