- Replace module-level env var globals with frozen Config dataclass
- Add pyproject.toml with project metadata, ruff, mypy, pytest config
- Expand unit tests from 11 to 30 (sanitize edge cases, SSH failure
modes, proxy forwarding, cleanup, auth loop edge cases)
- Fix all ruff and mypy findings
- Integration tests no longer need importlib.reload hack
- Dockerfile installs from pyproject.toml for consistency
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Test channellist+channelinfo, ban CRUD, servergrouplist, whoami,
clientlist, hostinfo, permissionlist, and logview. Extract helper
methods _login_and_use() and _send_cmd() for DRY test code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bridges the legacy TeamSpeak 3 ServerQuery raw protocol (TCP 10011) to
TeamSpeak 6's SSH Query interface (TCP 10022). Includes unit tests,
Docker setup, and integration test scaffold.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>