Compare commits

..

8 Commits

Author SHA1 Message Date
renovate-bot 3ad0ecd164 chore(deps): update dependency eslint to v10
renovate/stability-days Updates have met minimum release age requirement
CI / Test (pull_request) Failing after 19s
CI / Build check (pull_request) Failing after 52s
2026-05-31 10:20:32 +00:00
t.behrendt 0603ed57e6 ci: general maintenance (#126)
Reviewed-on: #126
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-05-31 11:14:10 +02:00
t.behrendt 6f12a08fa6 ci: pin actions to full semver (#125)
Reviewed-on: #125
Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
2026-05-31 10:59:49 +02:00
renovate-bot f6834a1d2c chore(deps): update dependency ts3-nodejs-library to v3.5.3 (#123)
CD / Test (push) Successful in 4m56s
CD / Create tag (push) Successful in 12s
CD / Build and push (amd64) (push) Successful in 33s
CD / Build and push (arm64) (push) Successful in 7m1s
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/) |
|---|---|---|---|
| [ts3-nodejs-library](https://github.com/Multivit4min/TS3-NodeJS-Library) | [`3.5.2` → `3.5.3`](https://renovatebot.com/diffs/npm/ts3-nodejs-library/3.5.2/3.5.3) | ![age](https://developer.mend.io/api/mc/badges/age/npm/ts3-nodejs-library/3.5.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ts3-nodejs-library/3.5.2/3.5.3?slim=true) |

---

### Release Notes

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

### [`v3.5.3`](https://github.com/Multivit4min/TS3-NodeJS-Library/blob/HEAD/CHANGELOG.md#353---11052026)

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

- reverted pull request [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: #123
Reviewed-by: t.behrendt <2+t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-05-28 19:51:45 +02:00
renovate-bot 4b1e738020 chore(deps): pin dependencies (#122)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| docker.io/library/teamspeak | pinDigest |  → `11fb1dd` |
| ghcr.io/gotify/server | pinDigest |  → `a3af470` |

---

### 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.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- 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: #122
Reviewed-by: t.behrendt <2+t.behrendt@noreply.localhost>
Co-authored-by: Renovate Bot <renovate@t00n.de>
Co-committed-by: Renovate Bot <renovate@t00n.de>
2026-05-28 19:49:34 +02:00
renovate-bot 2b3a93d6b2 chore(deps): update https://gitea.t000-n.de/t.behrendt/actions action to v0.2.4 (#118)
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.3` → `0.2.4` |

---

### Release Notes

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

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

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

</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: #118
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-05-19 10:41:03 +02: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
8 changed files with 117 additions and 8 deletions
+6
View File
@@ -0,0 +1,6 @@
*
!package.json
!bun.lockb
!src/
!tsconfig.json
+6 -5
View File
@@ -41,7 +41,7 @@ jobs:
name: Build and push
strategy:
matrix:
arch: [ amd64, arm64 ]
arch: [amd64]
needs:
- test
runs-on:
@@ -52,7 +52,7 @@ jobs:
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- name: Login to Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
@@ -77,6 +77,8 @@ jobs:
provenance: false
tags: |
${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-${{ matrix.arch }}
cache-from: type=registry,ref=${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:cache
cache-to: type=registry,ref=${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:cache,mode=max
create_tag:
name: Create tag
@@ -94,7 +96,7 @@ jobs:
with:
token: ${{ secrets.GITEA_TOKEN }}
prerelease: ${{ github.event_name == 'workflow_dispatch' }}
- uses: https://gitea.t000-n.de/t.behrendt/actions/release-git-tag@47a1c635cfc76cfb4eeee3db0d0b89bf19007c7a # 0.2.3
- uses: https://gitea.t000-n.de/t.behrendt/actions/release-git-tag@38c1bbd8bad3e7965744d03de85faa4a5b808d1b # 0.2.4
with:
tag: ${{ steps.tag.outputs.new-tag }}
- name: Set output
@@ -127,7 +129,6 @@ jobs:
- name: Create manifest
run: |
docker manifest create ${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ needs.create_tag.outputs.tag }} \
${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-amd64 \
${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-arm64
${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}-amd64
docker manifest push ${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:${{ needs.create_tag.outputs.tag }}
+49
View File
@@ -3,6 +3,9 @@ name: CI
on:
pull_request:
env:
DOCKER_REGISTRY: gitea.t000-n.de
jobs:
test:
name: Test
@@ -15,7 +18,16 @@ jobs:
with:
bun-version-file: ".bun-version"
- name: Cache dependencies
id: cache-deps
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: |
node_modules
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lockb') }}
- name: Install dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: bun install --frozen-lockfile
- name: Run lint
@@ -23,3 +35,40 @@ jobs:
- name: Run spellcheck
run: bun run check:spell
build-check:
name: Build check
runs-on:
- ubuntu-latest
- linux_amd64
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4.1.0
- name: Login to Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ${{ env.DOCKER_REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- name: Get Metadata
id: meta
run: |
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}' | tr '[:upper:]' '[:lower:]') >> $GITHUB_OUTPUT
echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
- name: Build image
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
push: false
load: true
provenance: false
cache-from: type=registry,ref=${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:cache
cache-to: type=registry,ref=${{ env.DOCKER_REGISTRY }}/t.behrendt/${{ steps.meta.outputs.REPO_NAME }}:cache,mode=max
+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@sha256:a3af47067ce6aad76aadf5ba32d6ddfecd1ae576a961359f039fd1831e8b7652
ports:
- 8080:80
environment:
TZ: "Europe/Amsterdam"
GOTIFY_DEFAULTUSER_PASS: "admin"
volumes:
- "./gotify_data:/app/data"
ts3:
image: docker.io/library/teamspeak:latest@sha256:11fb1dd03c68ae7b3a8a86c5a08827d01d87a833177ad92ee5c19d7b72d08ce0
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/"
+2 -2
View File
@@ -9,7 +9,7 @@
"@typescript-eslint/eslint-plugin": "5.62.0",
"@typescript-eslint/parser": "5.62.0",
"cspell": "10.0.0",
"eslint": "8.57.1",
"eslint": "10.4.0",
"typescript": "6.0.3",
"@types/bun": "latest"
},
@@ -18,7 +18,7 @@
"gotify": "1.1.0",
"pino": "10.3.1",
"pino-pretty": "13.1.3",
"ts3-nodejs-library": "3.5.2"
"ts3-nodejs-library": "3.5.3"
},
"name": "ts3gotify",
"module": "src/main.ts",
+4 -1
View File
@@ -43,7 +43,8 @@ export function ts3gotifyFactory(
ts3Client: TeamSpeak,
gotifyClient: Gotify,
gotifyConfig: GotifyConfig,
logger: Logger
logger: Logger,
pingInterval = 2_500
) {
let reconnectInProgress = false;
@@ -108,6 +109,8 @@ export function ts3gotifyFactory(
}
}
setInterval(() => ts3Client.version(true), pingInterval);
ts3Client.on("close", async () => {
await reconnectWithBackoff();
});