v20260527
Changelog
- 0fdc5b9 chore(client): simplify init.sh and boot.sh
- 5f35e46 docs(music): lock in "manual next/prev jumps even in RepeatOne"
- bb042e4 feat(admin): add Web management page for chat configuration
- 4ebb416 feat(music): expose WaitInitialState to replace startup sleep guess
- 948fa22 fix(docs): update init.sh and boot.sh URLs in README.md
- 5104db5 fix(music): abort XiaoAI cloud on random/next/previous too
- d7ed67f fix(music): graceful HTTP shutdown via *http.Server
- 9418c6f fix(music): incremental LX indexing + correct downloaded extension
- 4d0b4bd fix(music): inline player_reset at head of PlayURL shell pipeline
- 0b53117 fix(music): require 集/回 suffix in episode regex
- df239de fix(music): serialize instruction handling via a single worker
- aefd176 fix(music): surface non-zero exit_code from player_play_url
- 01a8cfd fix(music): trim Chinese punctuation in Normalize
- 7547a4c fix(music): wipe mediaplayer PlayList in SetQueue with player_reset
- 124295e fix(music): write index file atomically via tmp+rename
- d6e61f5 perf(music): cap concurrent metadata extraction with errgroup.SetLimit
- 9d2782f perf(music): drop redundant ToLower and hoist NormalizedForMatch
- 85fac84 perf(music): run initial library refresh in background
- d5d816c refactor(build): rename binaries to client/chat/gemini, sync configs
- 5e3d053 refactor(go): update module paths and replace directives for new layout
- 2cf2d8c refactor: migrate firmware/CI/docs off legacy/, prep for legacy removal
- 73c9b19 refactor: relocate directories into apps/pkg/tools/legacy
- c347186 refactor: remove legacy/ directory
Released by GoReleaser.