Compare commits

..

10 Commits

Author SHA1 Message Date
renovate-bot f83b394621 chore(deps): update typescript-eslint monorepo to v8
renovate/stability-days Updates have met minimum release age requirement
CI / Test (pull_request) Successful in 3m8s
2026-05-19 08:37:28 +00:00
t.behrendt d6d9c63b3d fix: disconnection issue by adding a persistent ping (#121)
CD / Test (push) Successful in 19s
CD / Create tag (push) Successful in 18s
CD / Build and push (amd64) (push) Successful in 34s
CD / Build and push (arm64) (push) Successful in 1m38s
CD / Create manifest (push) Successful in 8s
Fixes the frequent disconnection issue, by adding a ping.
The "version" call works without authentication and is lightweight. Passing the "true" flag, prevents delivery of cached results.
This keeps the socket always connected. Feature may be removed in the future if the upstream library has a proper fix for the issue.

Reviewed-on: #121
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-05-09 14:38:52 +02:00
t.behrendt eb9b335789 chore: add compose local test setup (#120)
Reviewed-on: #120
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-05-09 14:18:49 +02:00
t.behrendt 0e4ab1bfc6 fix: enable soft reconnect (#119)
CD / Test (push) Successful in 19s
CD / Build and push (amd64) (push) Successful in 33s
CD / Create tag (push) Successful in 6s
CD / Build and push (arm64) (push) Successful in 1m33s
CD / Create manifest (push) Successful in 8s
Try to reconnect softly to the ts3 server instead of crashing hard in case of closed connection or errors. Also tracks if a re-connection attempt is currently in progress.

Reviewed-on: #119
Reviewed-by: branch-buddy <branch-buddy@t00n.de>
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-05-07 19:10:17 +02:00
renovate-bot 0670e54cf1 chore(deps): update https://gitea.t000-n.de/t.behrendt/actions action to v0.2.3 (#116)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [https://gitea.t000-n.de/t.behrendt/actions](https://gitea.t000-n.de/t.behrendt/actions) | action | patch | `0.2.2` → `0.2.3` |

---

### Release Notes

<details>
<summary>t.behrendt/actions (https://gitea.t000-n.de/t.behrendt/actions)</summary>

### [`v0.2.3`](https://gitea.t000-n.de/t.behrendt/actions/compare/0.2.2...0.2.3)

[Compare Source](https://gitea.t000-n.de/t.behrendt/actions/compare/0.2.2...0.2.3)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImFjdGlvbiIsImRlcHMiXX0=-->

Reviewed-on: #116
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-04-28 17:10:03 +02:00
renovate-bot 494c71d4c7 chore(deps): update https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment action to v0.1.32 (#117)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment) | action | patch | `0.1.31` → `0.1.32` |

---

### Release Notes

<details>
<summary>t.behrendt/conventional-semantic-git-tag-increment (https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment)</summary>

### [`v0.1.32`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.31...0.1.32)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.31...0.1.32)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImFjdGlvbiIsImRlcHMiXX0=-->

Reviewed-on: #117
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-04-28 17:01:03 +02:00
renovate-bot 74dd61ee7f chore(deps): update dependency typescript to v6.0.3 (#115)
CD / Test (push) Successful in 22s
CD / Create tag (push) Successful in 17s
CD / Build and push (amd64) (push) Successful in 33s
CD / Build and push (arm64) (push) Successful in 1m38s
CD / Create manifest (push) Successful in 7s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [typescript](https://www.typescriptlang.org/) ([source](https://github.com/microsoft/TypeScript)) | [`6.0.2` → `6.0.3`](https://renovatebot.com/diffs/npm/typescript/6.0.2/6.0.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/6.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/6.0.2/6.0.3?slim=true) |

---

### Release Notes

<details>
<summary>microsoft/TypeScript (typescript)</summary>

### [`v6.0.3`](https://github.com/microsoft/TypeScript/releases/tag/v6.0.3): TypeScript 6.0.3

[Compare Source](https://github.com/microsoft/TypeScript/compare/v6.0.2...v6.0.3)

For release notes, check out the [release announcement blog post](https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/).

- [fixed issues query for TypeScript 6.0.0 (Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.0%22).
- [fixed issues query for TypeScript 6.0.1 (RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.1%22).
- [fixed issues query for TypeScript 6.0.2 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.2%22).
- [fixed issues query for TypeScript 6.0.3 (Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+6.0.3%22).

Downloads are available on:

- [npm](https://www.npmjs.com/package/typescript)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: #115
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-04-27 18:29:26 +02:00
renovate-bot 07d97b967c chore(deps): update dependency ts3-nodejs-library to v3.5.2 (#114)
CD / Test (push) Successful in 19s
CD / Create tag (push) Successful in 10s
CD / Build and push (amd64) (push) Successful in 33s
CD / Build and push (arm64) (push) Successful in 5m5s
CD / Create manifest (push) Successful in 39s
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [ts3-nodejs-library](https://github.com/Multivit4min/TS3-NodeJS-Library) | [`3.5.1` → `3.5.2`](https://renovatebot.com/diffs/npm/ts3-nodejs-library/3.5.1/3.5.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/ts3-nodejs-library/3.5.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ts3-nodejs-library/3.5.1/3.5.2?slim=true) |

---

### Release Notes

<details>
<summary>Multivit4min/TS3-NodeJS-Library (ts3-nodejs-library)</summary>

### [`v3.5.2`](https://github.com/Multivit4min/TS3-NodeJS-Library/blob/HEAD/CHANGELOG.md#352---19092023)

[Compare Source](https://github.com/Multivit4min/TS3-NodeJS-Library/compare/919b38f2f23625af5bbad6b768ee39cf00a9282a...2d7ec0093f6e080a2f84209511d3c60114556740)

- add new channel properties from [#&#8203;200](https://github.com/Multivit4min/TS3-NodeJS-Library/pull/200)
- add timeout 0 from [#&#8203;199](https://github.com/Multivit4min/TS3-NodeJS-Library/pull/199)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: #114
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-04-23 08:20:14 +02:00
renovate-bot 62578f2990 chore(deps): update docker/build-push-action action to v7.1.0 (#113)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [docker/build-push-action](https://github.com/docker/build-push-action) | action | minor | `v7.0.0` → `v7.1.0` |

---

### Release Notes

<details>
<summary>docker/build-push-action (docker/build-push-action)</summary>

### [`v7.1.0`](https://github.com/docker/build-push-action/releases/tag/v7.1.0)

[Compare Source](https://github.com/docker/build-push-action/compare/v7.0.0...v7.1.0)

- Git context [query format](https://docs.docker.com/build/concepts/context/#url-queries) support by [@&#8203;crazy-max](https://github.com/crazy-max) in [#&#8203;1505](https://github.com/docker/build-push-action/pull/1505)
- Bump [@&#8203;docker/actions-toolkit](https://github.com/docker/actions-toolkit) from 0.79.0 to 0.87.0 by [@&#8203;crazy-max](https://github.com/crazy-max) in [#&#8203;1505](https://github.com/docker/build-push-action/pull/1505)
- Bump brace-expansion from 1.1.12 to 1.1.13 in [#&#8203;1500](https://github.com/docker/build-push-action/pull/1500)
- Bump fast-xml-parser from 5.4.2 to 5.5.7 in [#&#8203;1489](https://github.com/docker/build-push-action/pull/1489)
- Bump flatted from 3.3.3 to 3.4.2 in [#&#8203;1491](https://github.com/docker/build-push-action/pull/1491)
- Bump glob from 10.3.12 to 10.5.0 in [#&#8203;1490](https://github.com/docker/build-push-action/pull/1490)
- Bump handlebars from 4.7.8 to 4.7.9 in [#&#8203;1497](https://github.com/docker/build-push-action/pull/1497)
- Bump lodash from 4.17.23 to 4.18.1 in [#&#8203;1510](https://github.com/docker/build-push-action/pull/1510)
- Bump picomatch from 4.0.3 to 4.0.4 in [#&#8203;1496](https://github.com/docker/build-push-action/pull/1496)
- Bump undici from 6.23.0 to 6.24.1 in [#&#8203;1486](https://github.com/docker/build-push-action/pull/1486)
- Bump vite from 7.3.1 to 7.3.2 in [#&#8203;1509](https://github.com/docker/build-push-action/pull/1509)

**Full Changelog**: <https://github.com/docker/build-push-action/compare/v7.0.0...v7.1.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImFjdGlvbiIsImRlcHMiXX0=-->

Reviewed-on: #113
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-04-20 08:50:57 +02:00
renovate-bot 90299966b0 chore(deps): update https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment action to v0.1.31 (#112)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment) | action | patch | `0.1.30` → `0.1.31` |

---

### Release Notes

<details>
<summary>t.behrendt/conventional-semantic-git-tag-increment (https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment)</summary>

### [`v0.1.31`](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.30...0.1.31)

[Compare Source](https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment/compare/0.1.30...0.1.31)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41LjQiLCJ1cGRhdGVkSW5WZXIiOiI0My41LjQiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImFjdGlvbiIsImRlcHMiXX0=-->

Reviewed-on: #112
Reviewed-by: t.behrendt <t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-04-16 15:20:01 +02:00
7 changed files with 91 additions and 13 deletions
+6
View File
@@ -0,0 +1,6 @@
*
!package.json
!bun.lockb
!src/
!tsconfig.json
+3 -3
View File
@@ -68,7 +68,7 @@ jobs:
echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: ./Dockerfile
@@ -89,12 +89,12 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment@11c694022eefab5876ac346fc9ffc0464b2548c7 # 0.1.30
- uses: https://gitea.t000-n.de/t.behrendt/conventional-semantic-git-tag-increment@ef0c23189db33220a73022d8c29a27709d0df440 # 0.1.32
id: tag
with:
token: ${{ secrets.GITEA_TOKEN }}
prerelease: ${{ github.event_name == 'workflow_dispatch' }}
- uses: https://gitea.t000-n.de/t.behrendt/actions/release-git-tag@f386e2570df6a796ba0a69865c89ea0c1a7109ab # 0.2.2
- uses: https://gitea.t000-n.de/t.behrendt/actions/release-git-tag@47a1c635cfc76cfb4eeee3db0d0b89bf19007c7a # 0.2.3
with:
tag: ${{ steps.tag.outputs.new-tag }}
- name: Set output
+3
View File
@@ -130,3 +130,6 @@ dist
.yarn/install-state.gz
.pnp.*
# Local docker test setup
gotify_data/
ts3_data/
BIN
View File
Binary file not shown.
+47
View File
@@ -0,0 +1,47 @@
services:
ts3gotify:
build:
context: .
dockerfile: Dockerfile
environment:
LOG_LEVEL: debug
TS3_HOST: ts3
TS3_QUERY_PORT: 10011
TS3_SERVER_PORT: 9987
TS3_USERNAME: serveradmin
TS3_PASSWORD: Qx7uUh4i
TS3_NICKNAME: ts3gotify
GOTIFY_URL: http://gotify:80
GOTIFY_TOKEN: ApvIy.aFpN3.QlQ
GOTIFY_TITLE: ts3gotify
MODE: '["connect", "disconnect", "moved", "message"]'
gotify:
image: ghcr.io/gotify/server:latest
ports:
- 8080:80
environment:
TZ: "Europe/Amsterdam"
GOTIFY_DEFAULTUSER_PASS: "admin"
volumes:
- "./gotify_data:/app/data"
ts3:
image: docker.io/library/teamspeak:latest
ports:
- name: voice
target: 9987
published: 9987
protocol: udp
- name: query
target: 10011
published: 10011
protocol: tcp
- name: filetransfer
target: 30033
published: 30033
protocol: tcp
environment:
TS3SERVER_LICENSE: accept
volumes:
- "./ts3_data:/var/ts3server/"
+4 -4
View File
@@ -6,11 +6,11 @@
"start": "bun run src/main.ts"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "5.62.0",
"@typescript-eslint/parser": "5.62.0",
"@typescript-eslint/eslint-plugin": "8.59.3",
"@typescript-eslint/parser": "8.59.3",
"cspell": "10.0.0",
"eslint": "8.57.1",
"typescript": "6.0.2",
"typescript": "6.0.3",
"@types/bun": "latest"
},
"dependencies": {
@@ -18,7 +18,7 @@
"gotify": "1.1.0",
"pino": "10.3.1",
"pino-pretty": "13.1.3",
"ts3-nodejs-library": "3.5.1"
"ts3-nodejs-library": "3.5.2"
},
"name": "ts3gotify",
"module": "src/main.ts",
+28 -6
View File
@@ -1,13 +1,13 @@
import type { Gotify } from "gotify";
import type { Logger } from "pino";
import type { TeamSpeak, TextMessageTargetMode } from "ts3-nodejs-library";
import type { GotifyConfig, Mode } from "./types";
import {
ClientConnect,
ClientDisconnect,
ClientMoved,
TextMessage,
} from "ts3-nodejs-library/lib/types/Events";
import type { GotifyConfig, Mode } from "./types";
function resolveMessageTarget(target: TextMessageTargetMode): string {
if (target === 1) {
@@ -43,8 +43,11 @@ export function ts3gotifyFactory(
ts3Client: TeamSpeak,
gotifyClient: Gotify,
gotifyConfig: GotifyConfig,
logger: Logger
logger: Logger,
pingInterval = 2_500
) {
let reconnectInProgress = false;
function sendNotification(message: string) {
gotifyClient
.send({
@@ -87,15 +90,34 @@ export function ts3gotifyFactory(
}
}
ts3Client.on("close", async () => {
async function reconnectWithBackoff() {
if (reconnectInProgress) {
return;
}
reconnectInProgress = true;
logger.info("disconnected, trying to reconnect...");
await ts3Client.reconnect(5, 1000);
logger.info("reconnected!");
try {
await ts3Client.reconnect(10, 2000);
logger.info("reconnected!");
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
logger.error(`Error reconnecting to TS3 server: ${message}`);
} finally {
reconnectInProgress = false;
}
}
setInterval(() => ts3Client.version(true), pingInterval);
ts3Client.on("close", async () => {
await reconnectWithBackoff();
});
ts3Client.on("error", (error: Error) => {
logger.error(`Error connecting to TS3 server: ${error.message}`);
process.exit(1);
reconnectWithBackoff();
});
return {