TIANYAO ZHANG
c7b1268281
Merge pull request #172 from ZHANGTIANYAO1/fix/issue-165-install-scripts
...
fix(install): bring install.sh up to Node 22 and document both Linux scripts (#165 )
2026-09-27 23:44:44 +08:00
TIANYAO ZHANG
b942a4726e
Merge pull request #171 from ZHANGTIANYAO1/feat/issue-164-personal-netease-fm
...
feat(fm): let each web user link their own NetEase account for personal FM (#164 )
2026-09-27 23:44:35 +08:00
TIANYAO ZHANG
ad728a3a04
Merge pull request #169 from ZHANGTIANYAO1/feat/issue-160-playlist-link
...
feat(playlist): load a playlist straight from its link (#160 )
2026-09-27 23:44:28 +08:00
TIANYAO ZHANG
c51d311ab6
Merge pull request #168 from ZHANGTIANYAO1/fix/issue-159-channel-desc-on-move
...
fix(profile): move the now-playing channel description with the bot (#159 )
2026-09-27 23:44:20 +08:00
TIANYAO ZHANG and Claude Opus 5.5
ac4a12d8bd
feat(fm): let each web user link their own NetEase account for personal FM ( #164 )
...
With several people sharing one bot, personal FM always followed the one
account the bot was logged in with. Each signed-in (non-guest) web user
can now scan a QR code under Settings → 账户 to link their own NetEase
account; FM they start from the WebUI then comes from their account.
- user_music_cookies table (per user + platform, dropped with the user).
- NeteaseProvider.pollQrLogin returns the cookie without storing it, so
a personal login can never replace the bot's shared account;
checkQrCodeStatus is now built on it. withCookie gives a view bound to
another account.
- /api/me/music/netease: status / qrcode / qrcode/status / unlink, acting
only on req.user. The cookie never leaves the server.
- POST /api/player/:botId/fm uses the caller's linked account for
NetEase. Songs still resolve through the shared provider when played.
TeamSpeak chat !fm keeps using the shared account: chat users are not
tied to web accounts.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-27 22:02:31 +08:00
TIANYAO ZHANG and Claude Opus 5.5
88e6b5a691
fix(install): bring install.sh up to Node 22 and document both Linux scripts ( #165 )
...
install.sh still installed Node 20 (dropped in #152 ), ran the Debian-only
NodeSource script on yum systems, and hard-coded /usr/bin/node. The
README only mentioned install.sh, not setup.sh.
install.sh now:
- installs Node 22 LTS from the right NodeSource repo per distro and
checks the same 22.12+/24+ floor as setup.sh
- delegates npm install, mirror detection, native-binary checks and the
build to setup.sh, so the two scripts share one install path
- stops the service and replaces dist/node_modules on re-install (data/
is kept), copies bin/ (yt-dlp), and uses the real node path in the unit
README explains the difference between the two scripts and when to use
which. setup.sh's "Node.js not found" message no longer says 20+.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-27 21:42:59 +08:00
TIANYAO ZHANG and Claude Opus 5.5
6b82df4e50
feat(playlist): load a playlist straight from its link ( #160 )
...
`!playlist` already pulled a numeric id out of a URL, but the platform
still came from flags, so a QQ link without -q was looked up on NetEase,
and a YouTube ?list= link fell through to a name search on the URL.
- Detect NetEase / QQ Music / YouTube playlist links (also inside an
app's share text and the [URL] BBCode TeamSpeak adds) and take the
platform from the link.
- Follow NetEase (163cn.tv) and QQ (c6.y.qq.com/base/fcgi-bin/u) share
short links one hop. Only those hosts are fetched.
- Document it in the README command table.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-27 21:41:05 +08:00
TIANYAO ZHANG and Claude Opus 5.5
faf6ac09ec
fix(profile): move the now-playing channel description with the bot ( #159 )
...
When the bot was moved to another channel, the channel it left kept the
now-playing description forever: updateChannelDescription always targeted
getChannelId(), which by then already reported the new channel.
Remember which channel we last wrote to. On a self clientMoved event,
clear that channel and, if a song is playing, write the description to
the new one. Stop now clears the channel we actually wrote to, so a
missed move event can't leave a stale description behind either.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-09-27 21:36:57 +08:00
TIANYAO ZHANG
8ff51ea6e0
Merge pull request #166 from xxmod/main
...
fix(bilibili): 修复了B站分P视频播放时只能播放第一P,且时长显示为视频总时长
2026-09-27 21:12:25 +08:00
TIANYAO ZHANG
2ea02f54d9
Merge pull request #155 from ZHANGTIANYAO1/fix/152-setup-console-eio
...
fix(setup): stop a failed console write from aborting setup, require Node 22+ (#152 )
2026-08-31 16:22:36 +08:00
TIANYAO ZHANG
1407cadf7b
Merge pull request #154 from XuVIIJay/fix/output-side-seek
...
fix(audio): 网易云拖动进度条播放中断,改用输出侧 seek 兼容不支持 Range 的 CDN
2026-08-24 11:19:37 +08:00
TIANYAO ZHANG
ea0d7abce3
Merge pull request #151 from ZHANGTIANYAO1/feat/local-video-playback
...
feat(local): 支持上传并播放本地视频文件(只保留音轨)
2026-08-14 01:23:02 +08:00
TIANYAO ZHANG
c7b577adba
Merge pull request #150 from ZHANGTIANYAO1/fix/avatar-upload-before-connect
...
fix(avatar): 初始化阶段不再发起注定失败的头像上传
2026-08-14 01:22:58 +08:00
TIANYAO ZHANG
990edd1bb0
Merge pull request #147 from ZHANGTIANYAO1/fix/native-module-abi-setup
...
fix(setup): 按 Node ABI 校验并自动修复原生模块
2026-08-09 15:22:44 +08:00
TIANYAO ZHANG
e39ce590c1
Merge pull request #146 from ZHANGTIANYAO1/fix/webui-icons-and-mobile-ux
...
WebUI:站点图标、移动端交互与扫码文案
2026-08-09 15:22:40 +08:00
TIANYAO ZHANG
e027ee3d02
Merge pull request #145 from ZHANGTIANYAO1/fix/play-id-command-syntax
...
feat(bot): !play id <id> 与其他命令语法保持一致
2026-08-09 15:22:36 +08:00
TIANYAO ZHANG
06d29ba306
Merge pull request #144 from ZHANGTIANYAO1/fix/playnext-in-random-mode
...
fix(queue): 随机模式下 !pn 插入的歌真正下一首播放
2026-08-09 15:22:32 +08:00
TIANYAO ZHANG
4e4354282d
Merge pull request #137 from ZHANGTIANYAO1/codex/voice-ducking
...
feat: add configurable voice ducking
2026-07-21 22:07:36 +08:00
TIANYAO ZHANG
7805f52151
Merge pull request #135 from EvolvedGhost/fix/drop-self-echoed-text-messages
...
fix(ts-protocol): drop self-echoed text messages
2026-07-18 12:24:16 +08:00
TIANYAO ZHANG
0ad00cd7f7
Merge pull request #133 from ZHANGTIANYAO1/feat/issue-119-saved-playlists
...
feat: save/load playlists, restart queue persistence, and playKeepsQueue (#119 )
2026-07-17 11:09:23 +08:00
TIANYAO ZHANG
880a9c084e
Merge pull request #131 from ZHANGTIANYAO1/feat/issue-126-default-source
...
feat: add configurable default music source (#126 )
2026-07-17 11:05:16 +08:00
TIANYAO ZHANG
72682f4308
Merge pull request #130 from ZHANGTIANYAO1/feat/issue-125-persist-settings
...
feat: persist volume, play mode and audio quality across restarts
2026-07-17 11:03:22 +08:00
TIANYAO ZHANG
f1585b010d
Merge pull request #134 from ZHANGTIANYAO1/fix/issue-128-noindex-webui
...
feat(web): keep deployed WebUI out of search-engine indexes
2026-07-17 11:02:49 +08:00
TIANYAO ZHANG
1f88220d01
Merge pull request #129 from ZHANGTIANYAO1/fix/issue-122-qq-api-port
...
fix(qq): pin QQ Music API sidecar to configured qqMusicApiPort
2026-07-17 11:02:46 +08:00
TIANYAO ZHANG
75e3b1c722
Merge pull request #132 from ZHANGTIANYAO1/chore/issue-127-gitignore-claude
...
chore: add .claude/ to gitignore and untrack committed settings
2026-07-17 11:02:43 +08:00
TIANYAO ZHANG
3841fa80d3
Update README.md
2026-07-14 00:20:48 +08:00
TIANYAO ZHANG
04ceac5a97
Merge pull request #123 from ItsEricRao/main
...
Jellyfin Integration. Assisted by Claude Fable 5.
2026-07-14 00:18:29 +08:00
TIANYAO ZHANG
ada292574f
Merge pull request #124 from Slldyd2077/fix/qq-song-detail-empty-name
...
fix(qq): 按 ID 播放时回填歌曲元数据,修复 TS 显示空歌名
2026-07-14 00:17:08 +08:00
TIANYAO ZHANG
f8743a904f
Merge pull request #114 from ZHANGTIANYAO1/fix/qq-api-version-pin
...
fix(qq): 锁定 @sansenjian/qq-music-api 到 ~2.4.0 并加固启动报错
2026-06-30 23:26:28 +08:00
TIANYAO ZHANG
de4343cfbb
Merge pull request #113 from ZHANGTIANYAO1/docs/kugou-readme
...
docs: 在 README 中补充酷狗音乐音源与登录功能
2026-06-30 21:36:34 +08:00
TIANYAO ZHANG
e1439a5899
Merge pull request #110 from ZHANGTIANYAO1/feat/kugou-provider
...
feat: 增加酷狗音乐 (Kugou) 音源支持 (closes #69 )
2026-06-30 21:15:12 +08:00
TIANYAO ZHANG
af326a37b7
Merge pull request #109 from ZHANGTIANYAO1/fix/player-elapsed-reactivity
...
fix(web): 播放器时间每帧更新、歌词同步 (closes #107 )
2026-06-30 17:26:46 +08:00
TIANYAO ZHANG
ea6820204d
Merge pull request #108 from Fa1nttt/feature/local-audio-upload
...
feat: add local audio upload playback 增加本地音频上传播放功能
2026-06-30 16:03:32 +08:00
TIANYAO ZHANG
4e148302fc
Merge pull request #106 from ZHANGTIANYAO1/fix/guest-play-collection
...
fix(guest): allow Play All for guests via a dedicated playCollection permission (#103 )
2026-06-29 17:39:50 +08:00
TIANYAO ZHANG
e2fa288f48
Merge pull request #105 from Slldyd2077/feat/song-vip-flag
...
feat: expose vip flag & trial duration on Song for trial-only playback
2026-06-29 11:59:08 +08:00
TIANYAO ZHANG
59a9e742c8
Merge pull request #104 from ZHANGTIANYAO1/feat/ts-command-permissions
...
feat: TeamSpeak chat-command permission control (adminGroups)
2026-06-28 23:41:34 +08:00
TIANYAO ZHANG
0cc77fdee0
Merge pull request #102 from ZHANGTIANYAO1/feat/guest-mode
...
docs: surface guest mode in feature list + reflect shipped behavior
2026-06-25 16:25:34 +08:00
TIANYAO ZHANG
253c0a46a1
Merge pull request #101 from ZHANGTIANYAO1/feat/guest-mode
...
Add guest mode (login-less WebUI access) (#83 )
2026-06-25 16:20:55 +08:00
TIANYAO ZHANG
06aaec4ba5
Merge pull request #100 from Dr1mH4X/feat/channelid
...
feat: joinChannel via channelid
2026-06-24 22:58:45 +08:00
TIANYAO ZHANG
6f21b6354a
Merge pull request #98 from ZHANGTIANYAO1/fix/autopause-resume-on-return
...
fix(auto-pause): auto-resume when a listener returns (event-driven)
2026-06-17 23:12:27 +08:00
TIANYAO ZHANG
ba11519fdb
Merge pull request #97 from ZHANGTIANYAO1/fix/autopause-occupancy-unknown
...
fix(auto-pause): don't treat failed clientlist as empty channel; default OFF
2026-06-16 23:56:56 +08:00
TIANYAO ZHANG
75f09694a3
Merge pull request #96 from ZHANGTIANYAO1/fix/song-ref-url-corner-cases
...
fix(song-ref): NetEase collection URLs + trailing-punct ids (#90 follow-up)
2026-06-16 22:06:41 +08:00
TIANYAO ZHANG
64328d7bdf
Merge pull request #95 from ZHANGTIANYAO1/feat/play-by-id-and-search
...
feat(play): pick same-name songs via !search / #N / id: / URL (#90 )
2026-06-16 21:52:36 +08:00
TIANYAO ZHANG
22ec7328fa
Merge pull request #94 from ZHANGTIANYAO1/docs/update-readme-merged-features
...
docs(readme): document new features (permissions/favorites/scope/auto-pause/QQ FM) + recent fixes
2026-06-16 21:26:36 +08:00
TIANYAO ZHANG
a861b41809
Merge pull request #78 from ZHANGTIANYAO1/feat/shuffle-bag-random-modes
...
feat(queue): 随机循环改为洗牌袋,每首歌播完一轮再重复 (优化随机循环逻辑)
2026-05-29 22:16:35 +08:00
TIANYAO ZHANG
0401534b88
Merge pull request #77 from ZHANGTIANYAO1/fix/webui-referrer-policy-csrf
...
fix(web): referrer-policy same-origin 修复扫码登录不弹二维码 + cookie 无法保存
2026-05-29 21:30:35 +08:00
TIANYAO ZHANG
3abb468cca
Merge pull request #75 from ZHANGTIANYAO1/fix/ui-overflow-and-textarea-resize
...
fix(web): long artist + B站 card grid + B站 image referer
2026-05-27 20:10:21 +08:00
TIANYAO ZHANG
d2bad58aa8
Merge pull request #74 from ZHANGTIANYAO1/feat/webui-auth
...
Add WebUI authentication: multi-user, roles, audit log
2026-05-27 16:46:03 +08:00
TIANYAO ZHANG
a2982948a7
Merge pull request #71 from EvolvedGhost/main
...
fix(player): 歌曲结尾后持续卡死不切换下一首歌
2026-05-25 18:56:14 +08:00
TIANYAO ZHANG
7fc5186c24
Merge pull request #65 from ZHANGTIANYAO1/fix/bilibili-wbi-search
...
fix(bilibili): wbi-sign search params — legacy /search/type now anti-bot blocked
2026-05-16 22:31:55 +08:00
TIANYAO ZHANG
6b143e1a56
Merge pull request #63 from XuVIIJay/pr/setup-scripts
...
安装脚本优化(对国内网络环境安装友好)
2026-05-16 02:02:10 +08:00
TIANYAO ZHANG
8861f39ecc
Merge pull request #62 from NoSetViolin/main
...
fix(qq): switch search to c.y.qq.com client_search_cp with u.y.qq.com fallback
2026-05-14 22:44:41 +08:00
TIANYAO ZHANG
ecdb2d253e
Merge pull request #60 from XuVIIJay/feat/forward-stack
...
随机播放模式双向可回溯
2026-05-12 22:23:35 +08:00
TIANYAO ZHANG
9efa818bbb
Merge pull request #57 from ZHANGTIANYAO1/feat/album-search
...
feat(search): album section + album playback
2026-05-07 20:50:02 +08:00
TIANYAO ZHANG
d757e69bf4
Merge pull request #56 from ZHANGTIANYAO1/feat/custom-bot-avatar
...
feat(profile): custom bot avatar
2026-05-07 20:49:58 +08:00
TIANYAO ZHANG
b8c12e0291
Merge pull request #53 from L1uyQwQ/codex/mobile-responsive-controls
...
fix: improve mobile web responsive controls
2026-05-07 19:39:51 +08:00
TIANYAO ZHANG
e7411ee7fb
Merge pull request #55 from ZHANGTIANYAO1/fix/netease-ffmpeg-ua
...
fix(player): WinHTTP fallback for /jdymusic/ CDN that drops Node TCP
2026-05-07 19:37:58 +08:00
TIANYAO ZHANG
ce88d12a60
Merge pull request #54 from ZHANGTIANYAO1/fix/jdymusic-powershell-fallback
...
fix(player): WinHTTP (PowerShell) fallback for /jdymusic/ CDN
2026-05-07 19:18:02 +08:00
TIANYAO ZHANG
9179780afb
Merge pull request #52 from ZHANGTIANYAO1/fix/netease-ffmpeg-ua
2026-05-07 16:33:25 +08:00
TIANYAO ZHANG
001fb5a451
Merge pull request #50 from ZHANGTIANYAO1/feature/design-implementation
...
Web UI redesign + per-platform tabs + play-next + audit fixes
2026-05-06 17:09:59 +08:00
TIANYAO ZHANG
e8d14a695f
Merge pull request #45 from FFatTiger/feature/fm-fix-random-repeat
...
fix: FM Random mode to prevent song repeats
2026-05-06 12:33:08 +08:00
TIANYAO ZHANG
64ecd92d7c
Merge pull request #43 from FFatTiger/feature/fm-artist-playlist
...
feat: 新增 !artist 歌手循环播放、!playlist 歌单模糊搜索,修复 !fm 播放中断,QQ 音乐个人歌单支持
2026-04-29 12:21:26 +08:00
TIANYAO ZHANG
f41cd888f9
Merge pull request #42 from NoSetViolin/main
...
issue #39 : web增加一键清空播放列表功能
2026-04-29 12:19:55 +08:00
TIANYAO ZHANG
8dcdf01129
Update setup.bat
2026-04-25 14:34:45 +08:00
TIANYAO ZHANG
da26435385
Merge pull request #38 from NoSetViolin/main
...
fix #37
2026-04-21 21:11:54 +08:00
TIANYAO ZHANG
1bd6ab9975
Merge pull request #36 from ZHANGTIANYAO1/claude/start-music-api-servers-CQST1
...
Fix TS6 HTTP Query error handling and improve profile update logging
2026-04-18 00:26:33 +08:00
TIANYAO ZHANG
66ae948371
Merge pull request #35 from ZHANGTIANYAO1/claude/start-music-api-servers-ZIruv
...
Add shareable bot links with public URL configuration
2026-04-18 00:09:31 +08:00
TIANYAO ZHANG
0408f6ce3c
Merge pull request #33 from NeoPecos/feature/idle-timeout
...
添加闲时自动退出管理功能
2026-04-13 20:46:58 +08:00
TIANYAO ZHANG
47b69a1f95
Merge pull request #29 from stanoswald/bugfix/pass-pwd-in-client
...
Forward server password to client opetion
2026-04-13 20:44:43 +08:00
TIANYAO ZHANG
f0a0ae5f2c
Merge pull request #28 from ZHANGTIANYAO1/dev
...
Dev
2026-04-13 00:53:12 +08:00
TIANYAO ZHANG
010aa8aa8c
Update README.md
2026-04-13 00:11:41 +08:00
TIANYAO ZHANG
05edca4a9a
Merge pull request #27 from ZHANGTIANYAO1/claude/fix-shuffle-loop-bug-FrIbI
...
Fix random mode to track played songs and prevent duplicates
2026-04-12 23:09:33 +08:00
TIANYAO ZHANG
78380f27d4
Merge pull request #26 from ZHANGTIANYAO1/claude/fix-docker-audio-playback-9bGfw
...
Prioritize system FFmpeg over bundled ffmpeg-static
2026-04-12 22:42:56 +08:00
TIANYAO ZHANG
dab02ede9c
Merge pull request #25 from ZHANGTIANYAO1/claude/fix-docker-repo-url-C4vzW
...
Rename project from tsmusicbot to teamspeak-music-bot
2026-04-12 22:33:31 +08:00
TIANYAO ZHANG
d7107677c0
Merge pull request #22 from ZHANGTIANYAO1/dev
...
Dev
2026-04-11 23:19:27 +08:00
TIANYAO ZHANG
ac9f447ad2
Merge pull request #21 from ZHANGTIANYAO1/dev
...
Dev
2026-04-11 02:16:18 +08:00
TIANYAO ZHANG
a8eb1bebd9
Merge pull request #18 from ZHANGTIANYAO1/claude/add-update-instructions-9AOnV
...
Add update/upgrade instructions for all installation methods
2026-04-07 20:52:42 +08:00
TIANYAO ZHANG
bbc776292b
Merge pull request #17 from ZHANGTIANYAO1/claude/add-play-script-Ni84L
...
Add "play" npm script as alias for "start"
2026-04-07 20:46:01 +08:00
TIANYAO ZHANG
5f35c32a22
Merge pull request #16 from ZHANGTIANYAO1/claude/fix-docker-restart-crash-md7Wj
...
Persist bot identity and respect autoStart flag on restart
2026-04-07 20:41:35 +08:00
TIANYAO ZHANG
b97f4a1d86
Merge pull request #15 from ZHANGTIANYAO1/claude/start-music-api-servers-o3HHa
...
Fix ffmpeg spawn failure causing infinite retry loop
2026-04-07 20:09:13 +08:00
TIANYAO ZHANG
954bbddf7e
Merge pull request #12 from ZHANGTIANYAO1/claude/start-music-api-servers-XrUNR
...
Fix TS6 compatibility by patching handshake clientinit packet
2026-04-04 23:27:28 +08:00
TIANYAO ZHANG
278f892fae
Update README.md
2026-04-03 22:38:36 +08:00
TIANYAO ZHANG
01940e74dd
Merge pull request #6 from ZHANGTIANYAO1/claude/setup-teamspeak-bot-QBfaS
...
Add comprehensive error handling to prevent process crashes
2026-04-03 01:42:04 +08:00
TIANYAO ZHANG
85f0881557
Merge pull request #5 from ZHANGTIANYAO1/claude/setup-teamspeak-bot-QBfaS
...
Fix EINTR crash from pino ThreadStream during FFmpeg playback
2026-04-01 00:55:02 +08:00
TIANYAO ZHANG
7469e6a649
Merge pull request #4 from ZHANGTIANYAO1/claude/setup-teamspeak-bot-QBfaS
...
Fix FFmpeg binary resolution: test binary actually works before using it
2026-04-01 00:43:31 +08:00
TIANYAO ZHANG
eb462e20f3
Merge pull request #3 from ZHANGTIANYAO1/claude/setup-teamspeak-bot-QBfaS
...
Improve audio playback debugging with enhanced logging
2026-04-01 00:32:19 +08:00
TIANYAO ZHANG
55c373d2bf
Merge pull request #2 from ZHANGTIANYAO1/claude/start-music-api-servers-bL8Wo
...
Ensure ffmpeg binary has execute permissions on startup
2026-04-01 00:05:03 +08:00
TIANYAO ZHANG
455476ff72
Update README.md
2026-03-31 00:49:45 +08:00
TIANYAO ZHANG
5c4c7051d7
Update README.md
2026-03-30 14:08:48 +08:00
TIANYAO ZHANG
7789ac18af
Update README.md
2026-03-30 14:06:57 +08:00
TIANYAO ZHANG
1a041d11f6
Update README.md
2026-03-30 14:06:21 +08:00