forked from go-musicfox/go-musicfox
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchangelog.yml
More file actions
8713 lines (8542 loc) · 259 KB
/
Copy pathchangelog.yml
File metadata and controls
8713 lines (8542 loc) · 259 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
- semver: 4.8.5
date: 2026-04-18T13:58:18+08:00
packager: go-musicfox
changes:
- commit: 525209fe5c6680f4da6e8ca3929b889ffa937e09
note: 'chore(ci): update Makefile for macapp'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 0219d2c620dd8bd1dbb9a481256cb334255a2e5d
note: 'chore(ci): update homebrew config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 41e41f6ea2358bf065a29954e0b1a6b25256dd97
note: 'chore: update scoop config & changelog [skip ci]'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- semver: 4.8.4
date: 2026-04-16T00:06:15+08:00
packager: go-musicfox
changes:
- commit: e657fe4516b775ae0f714fafaac35423e6709b5a
note: 'chore(ci): update homebrew config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: b2ebb8f11c23bf1e595c5615ff90dd47a4f9a249
note: 'chore: update scoop config & changelog [skip ci]'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- semver: 4.8.3
date: 2026-04-15T00:20:24+08:00
packager: go-musicfox
changes:
- commit: 0f4f90d65934aa86457bc713152a0e78a0b3c4fe
note: |-
docs: add AI coding behavior guidelines to AGENTS.md
Adds clear guidelines for AI agents working on the codebase:
- Think twice before acting (verify assumptions, ask questions)
- Prefer simple solutions over complex ones
- Make precise, targeted changes only
- Define verifiable success criteria
These guidelines reduce AI coding errors by encouraging careful
planning, questioning unclear requirements, and avoiding speculative
features. Contributors get more reliable results when AI agents
follow disciplined coding practices.
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: ba623f5383b69c5c21028b83612e72a614bb2469
note: |-
chore(ci): update opencode action to use latest version
- Switch from pinned v1.4.4 to anomalyco/opencode@latest for automatic updates
- Add GitHub Actions workflows for PR/issue management and triage
- Add OpenCode configuration for agent commands and themes
Ensures CI always runs with the latest opencode version, providing faster access to bug fixes and new features without manual version bumps.
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: d9f4189631c0b45b231b753c6226bd07bc4a32ea
note: 'chore(ci): update macapp brew config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: c6321cdd663ad3337febef5d6e9866b389f9806a
note: |-
feat(player): 添加 DLNA/UPnP 播放引擎支持及改进 (#571)
* feat(player): add DLNA/UPnP playback engine support
* feat(player): DLNA player progress display and song duration fix
* feat(player): DLNA song end detection and polling fix
* feat(dlna): add HTTP server for file:// URLs and memory leak fix
- DLNA player now handles file:// URLs by starting an internal HTTP server
- HTTP/HTTPS URLs are passed directly to DLNA device unchanged
- Added localIP config requirement for HTTP server binding
- Clear fileMap on each Play() to prevent memory leakage
- Updated AGENTS.md documentation
* fix(configs): align DlnaConfig tags with koanf convention
* fix(dlna_player): wait for cache file ready before playback
Cache hit may yield file:// URL before file write completes, causing DLNA device to receive empty file. Add isFileReady check with 10 retries (1s interval) to ensure file exists, non-empty, and readable.
* fix(player): stop DLNA polling when paused or stopped
- Add polling flag check in pollPositionInfo() to exit loop when not playing
- Set polling=false in Pause() and Stop() methods
- Prevents unnecessary HTTP requests during non-playing states
* feat(player): add volume control to DLNA player
- Add renderingControlUrl field
- Implement getVolume() and setVolume() via RenderingControl service
- Implement Volume(), SetVolume(), UpVolume(), DownVolume() interface methods
- Refactor soapRequest() to support multiple services
- Update initControlUrl() to discover RenderingControl service
* fix(dlna): sync position query in Play() for accurate PassedTime()
- Add getPositionInfo() call after SetAVTransportURI
- Remove polling flag; start continuous polling in initControlUrl()
- Ensures PassedTime() reflects actual position immediately
* fix(dlna_player): resolve lint issues
- Add package comment
- Fix naming conventions (Url -> URL)
- Check error returns for resp.Body.Close() and httpServer.Close()
- Handle all errcheck violations
* refactor(dlna): simplify controlURL validation logic
Remove redundant controlURL empty checks across all methods and
instead panic in initControlURL if AVTransport service is missing.
This follows the principle that if controlURL is unavailable during
initialization, the entire DLNA module is unusable and should fail
fast rather than silently return in every method.
Changes:
- initControlURL: panic when controlURL is empty
- Remove checks from Play, Pause, Resume, Stop, Seek
- Simplify soapRequest to direct assignment for AVTransport
- Keep RenderingControl optional with clear error message
Closes #xxx
* fix(player): implement dlnaPlayer.PlayedTime() to track actual playback duration\n\n- Add startTime, pausedTime, pauseStart, wasEverPlayed fields\n- Update Play(), Pause(), Resume(), Stop() to manage timing\n- PlayedTime() returns time.Since(startTime) - pausedTime
* refactor(player): extract common SOAP request logic for volume operations
Extract renderControlSOAPRequest to eliminate duplicate code between
getVolume and setVolume methods, improving maintainability while keeping
the same functionality.
* refactor(player): extract common SOAP request methods and URL normalizer
- renderControlSOAPRequest: shared RenderingControl SOAP calls
- executeSOAPRequest: generic SOAP request with response body
- normalizeURL: eliminate duplicate URL prefix logic
Reduced duplication in getPositionInfo, getTransportInfo, getVolume, setVolume, and initControlURL.
* cleanup
* refactor
* refactor(player): simplify volume control in DLNA player
- Remove redundant setVolume private method, inline logic into SetVolume
- Remove volume boundary checks that were unnecessary
- Simplify UpVolume and DownVolume methods by removing if guards
This reduces code duplication and makes the volume control flow more direct.
* refactor(player): simplify dlna_player implementation
- Merge executeSOAPRequest, soapRequest, renderControlSOAPRequest into doSOAP
- Inline parseTime into getPositionInfo
- Remove redundant debug logs and error handling
- Simplify XML structs to include only required fields
- Keep Player interface unchanged
Net -139 lines, improved maintainability
* fix(player): prevent DLNA stateChan blocking
dlnaPlayer previously sent state updates to stateChan without
timeout protection, causing indefinite blocking when channel
buffer was full and UI consumer was slow. This could cause
goroutine stalls and UI hangs during song switching.
Replace all direct stateChan sends with sendState() helper that
uses 2-second timeout and logs warning on timeout, consistent
with other player implementations.
* fix(player): check resp.Body.Close error in doSOAP
Wrap resp.Body.Close in a defer func to properly check and log
any error, satisfying errcheck linter. This is a minor cleanup
following the stateChan blocking fix.
* fix(player): address DLNA player code review issues
- Add [player.dlna] section to config.toml with gupnp-tools usage info
- Convert Traditional Chinese comment to English
- Add volume boundary checks (0-100) in UpVolume/DownVolume
- Clear fileMap with delete() instead of creating new map
- Fix NOT_IMPLEMENTED check to use HasPrefix for robustness
- Fix syntax error in SetVolume condition (=< to <=)
* docs: add DLNA player introduction to README
* fix(dlna): replace panic with error returns in NewDlnaPlayer
- Change NewDlnaPlayer signature to return (Player, error)
- Make startHTTPServer() and initControlURL() return errors
- Handle AVTransport service missing and HTTP server failures gracefully
- Update NewPlayerFromConfig to handle returned error
* refactor(dlna): use command queue worker pattern to avoid blocking UI
- add command queue and worker goroutine
- move SOAP calls to async execution
- merge pollState into worker ticker
* typo
---------
Co-authored-by: norci <2986988+norci@users.noreply.github.com>
author:
name: norci
email: norci@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 6ea474c2d77a6a40e9dbf7d2214b69a46d6cfa24
note: 'chore(ci): update build config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: c8677005e61f9aaff7daadce582c0e076ee365e0
note: 'fix: lyric filename template registration (#570)'
author:
name: jbwfu
email: 75001777+jbwfu@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: b1a96cb5f09f73020ba365643a48e7d20899a878
note: 'chore(ci): add [skip ci] to changelog commit message'
author:
name: anhoder
email: anhoder@88.com
committer:
name: GitHub
email: noreply@github.com
- commit: cddf6e61fe466311b89c09d024a34053c15cf7fd
note: 'chore: update scoop config & changelog'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- semver: 4.8.2
date: 2026-04-12T23:11:30+08:00
packager: go-musicfox
changes:
- commit: 7896b401d5f4d88f562d76acc088448c0132679d
note: 'fix(ci): rename `.release-env` => `.release-env.example`'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: a3adc3b7d49fc6635f7ab0b1afd9ace490036b36
note: 'fix(ci): update goreleaser config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 20a8f0c38e85414ac9a2947768ebbf24c24dbf87
note: 'chore: add .release-env'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 64952f8b5e1c6a91769c3bc626bf2c002fdb76af
note: 'fix(ci): update goreleaser config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: b7e9e8220fb97700e99c20195ecff185521da7ad
note: 'fix(ci): update goreleaser config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: fb873ab15031bb8aa3db16fd030a0709c9e78fb1
note: 'fix(ci): update goreleaser config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: fbc4f7a5206895ebfd954daf65c65b3afe768592
note: 'fix(ci): update goreleaser config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: a39c5096c9acd515fcf6aac7d5de5f2f025de76d
note: |-
fix: 修复setRepeat崩溃和goreleaser构建问题 (#566)
* 修复setRepeat崩溃和goreleaser构建问题
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* chore: add comment
---------
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@88.com>
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 5b4f235e4bd20b8a4cbb4babf75e8d0069e70ea8
note: 'fix(ci): update goreleaser config'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: a09a40012decac6e8a49dd661eda2faaf9a5eb61
note: 'fix: goreleaser config err'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 73a9e6eb186a4a3c165ebbf9ada98d9cc866be0d
note: 'fix: goreleaser config err'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 8d3cfa5af969c62e8d14a7899ab53eb6234e9d26
note: 'feat: support remote control play mode'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 3cd7455b25fb63e2a1726e81a421bd0ed081643b
note: 'feat(mac): macapp'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: f3195d02a49ee914d140e6492cee46b3ce26aa44
note: |-
fix: resolve song switching and MPRIS property update issues (#552)
- Fix MPRIS Position property ReadOnly error and panic by making it internally writable and using Set instead of SetMust.
- Resolve Beep engine playback glitch where previous song would repeat at the start of a new song by unlinking the cache file before reuse.
- Add buffering to state, time, music, and control channels across all player engines and UI to prevent deadlocks and lost events during system slowness.
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Aurora-Nasa-1 <183775324+Aurora-Nasa-1@users.noreply.github.com>
author:
name: AuroraNasa
email: b04031010@outlook.com
committer:
name: GitHub
email: noreply@github.com
- commit: c6e42ea6576196c5b4b6deb9b757a3868b254af7
note: |-
chore(deps): bump github.com/buger/jsonparser from 1.1.1 to 1.1.2 (#563)
Bumps [github.com/buger/jsonparser](https://github.com/buger/jsonparser) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/buger/jsonparser/releases)
- [Commits](https://github.com/buger/jsonparser/compare/v1.1.1...v1.1.2)
---
updated-dependencies:
- dependency-name: github.com/buger/jsonparser
dependency-version: 1.1.2
dependency-type: direct:production
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
author:
name: dependabot[bot]
email: 49699333+dependabot[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 80e9c131bee695c3b5fc8df30291136d2f391b48
note: |-
fix: 添加 mutex 保护 likelist map 并发访问 (#564)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 87540649b1be946e3fb3d9663dfbdffbc6c16b6e
note: 'chore(ci): change opencode model'
author:
name: anhoder
email: anhoder@88.com
committer:
name: GitHub
email: noreply@github.com
- commit: 6d31699eb7b663aebca8e040f6d3d07ac66ea2fc
note: 'chore: update scoop config & changelog'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- semver: 4.8.1
date: 2026-04-01T00:15:19+08:00
packager: go-musicfox
changes:
- commit: ac19bdffcc7c46cff6f0bb10c614a9c7725bfd03
note: |-
fix(player): update Now Playing info on MPV auto-change
- Add start-file event handling in listenMpvEvent() to detect when
MPV actually starts playing a new song and emit Playing state
- Remove unreliable 100ms delayed goroutine in PlaySong() that could
cause SetPlayingInfo() to be called with stale song data during
auto-change
Previously, Now Playing only updated for the first manually played
song. When songs auto-changed, the 100ms delay was arbitrary and
didn't guarantee MPV had started playing, causing race conditions.
Now the state listener calls SetPlayingInfo() when receiving Playing
state from start-file event, ensuring correct timing and song info.
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: c25e39ecb667bd1627bebb410e8675eca6ed99eb
note: |-
fix(player): update Now Playing info on MPV auto-change
- Add start-file event handling in listenMpvEvent() to detect when
MPV actually starts playing a new song and emit Playing state
- Remove unreliable 100ms delayed goroutine in PlaySong() that could
cause SetPlayingInfo() to be called with stale song data during
auto-change
Previously, Now Playing only updated for the first manually played
song. When songs auto-changed, the 100ms delay was arbitrary and
didn't guarantee MPV had started playing, causing race conditions.
Now the state listener calls SetPlayingInfo() when receiving Playing
state from start-file event, ensuring correct timing and song info.
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 6a7a4a5b7b14be5cb1e897c7540c7685034aa693
note: 'fix(struct): fallback to album cover for album songs (#558)'
author:
name: cola-prince
email: 41108397+cola-prince@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: b7b5e80fb164a351d111c295891c3064146904a7
note: 'Fix #556: clamp repeat counts in buildLyricsCentered to prevent panic (#557)'
author:
name: Uğur Tafralı
email: tafraliugur@gmail.com
committer:
name: GitHub
email: noreply@github.com
- commit: d3d34af89821d0368948a90a9310eb1ef5750c5a
note: 'chore: update scoop config & changelog'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- semver: 4.8.0
date: 2026-02-13T20:19:58+08:00
packager: go-musicfox
changes:
- commit: 53878c52b3b5cfaa976805155cbb474ae860c64b
note: |-
修复列表随机播放模式索引越界 (#548)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: b98445a405cabc2f5a68ff3d1f36986caf7bf4e6
note: '✨feat: 增强鼠标事件处理 (#543)'
author:
name: SUI
email: 59269350+lrst6963@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 77f2793f4a552aa279db4a408a2ae7efeca6b11b
note: 'chore: change default `widthRadio` for cover'
author:
name: anhoder
email: anhoder@88.com
committer:
name: GitHub
email: noreply@github.com
- commit: d800e11a6dbb323fa380ded4960a59faf819ca58
note: 'fix: 修复重复发送SetPlayingInfo导致歌词被覆盖的问题 (#546)'
author:
name: DBeidachazi
email: 63102882+DBeidachazi@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 6c3fee3d7aeb6b0170a2239b8c79309ccbecb91c
note: "fix know issues & improve UX (#544)\n\n* \U0001F3A8 refactor: migrate legacy cookie storage format\n\n* \U0001F41Bfix(auth&ui): cookie login issues & improve login page UX\n\n* \U0001F41B fix(auth): handle token refresh failure gracefully\n\n* \U0001F41Bfix: handle broken cookie files gracefully with backup and fallback\n\n* ✨ feat(login): enhance error handling accuracy and refactor auth flow\n\n* \U0001F41Bfix: known issues"
author:
name: 辉夜sama
email: 53631287+Kaguya233qwq@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 6a32cdba8f4778c2e8bc165c2212b2929d40a162
note: |-
Remove JetBrains Open Source acknowledgment
Removed JetBrains Open Source acknowledgment from README.
author:
name: anhoder
email: anhoder@88.com
committer:
name: GitHub
email: noreply@github.com
- commit: c413ff5d27542129be0c520326786ccffd78f72e
note: 'chore(ci): change opencode llm model'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 9e56aa4a0d08f32aca6f19ae444ba4dc016dba2c
note: 'optimize: 封面图大小 & 位置调整'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 9c9eecfa3a2b883217f9765df3859973d05db676
note: 'optimize(cover): optimize cover render'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: b5b96ef8a5c397a250a67ee96ebe7a68aaa10a16
note: |-
✨feat: 为封面添加圆角及旋转 (#532)
* ✨feat: 为封面添加圆角
* ✨feat: 为封面添加旋转
* fix: 使用 Alpha 混合抗锯齿
author:
name: weiyangzhen
email: 59269350+lrst6963@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 821bfd8b9a37f25c6d4f80fa194b014125763a60
note: 'fix(cover): render error'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 307d1475ba5d96d9b354fb33cfddfbb5a272087f
note: |-
chore(vendor): sync go vendor directory (#542)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
author:
name: github-actions[bot]
email: 41898282+github-actions[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 1695bc61bfc4b8924cdae4345d84186b230959c9
note: "fix: issue of token refresh, logout and Yunbei-sign (#541)\n\n* \U0001F41Bfix(logout): logout and clear session safely\n\n* \U0001F41Bfix(api): Resolve auth failures and improve cookie persistence\n\n* ⬆️update dependencies"
author:
name: 辉夜sama
email: 53631287+Kaguya233qwq@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 008181a7ba45ec72501c8d6e7403ed123a9578c5
note: Fixed MPRIS status and position sync (#539)
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: d5da143f4435e0ffa4e05fd00ccdbdaafe323f03
note: 修复切歌后playerctl状态不同步问题 (#540)
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 5c7e5a81c1657c7465fc0a679fbe0c885a7e03b5
note: 'feat(cover): optimize cover spin render'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 6c05b2f3a616a2ebb79e0fc35c8ca26f90aa565e
note: 'feat(cover): optimize cover spin render'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 312a2c26bf5f77bfda985615ce8fa27a661a456c
note: |-
Fix beep player volume precision (#537)
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: b5c9a6e0d1907c7baa8166538558645d4648907d
note: 'fix: 使用 Alpha 混合抗锯齿'
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: lrst6963
email: lrsts@qq.com
- commit: 2484375b4044f863cb4b5c9663062ea9a13859f8
note: '✨feat: 为封面添加旋转'
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: lrst6963
email: lrsts@qq.com
- commit: 16cc4ddd1f8cb0c658c8d43b7b3f36bca885df3c
note: '✨feat: 为封面添加圆角'
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: lrst6963
email: lrsts@qq.com
- commit: b3f8b789c20f6bef07482fbd3d26d45563ba0f30
note: |-
实现 TUI Cookie 登录,Tab 布局切换 (#531)
* feat(dj): Added sort toggle with | key (#530)
* Added sort toggle with | key
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* Added RefreshMenuList() for Reload UI
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* 快捷键变更同步更新README
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* chore(dj): page size
---------
Co-authored-by: opencode-agent[bot]
<opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@88.com>
* feat(login): 实现 TUI Cookie 登录,Tab 布局切换
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* fix(login): 修复Tab UI渲染问题,动态切换激活状态样式
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* fix(login): Tab UI fixes: border, spacing, verified
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* fix(login): optimize ui render for cookie login
* chore(ai): add git commit message guidelines
* feat(login): change hot key
---------
Co-authored-by: opencode-agent[bot] <219766164+opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@88.com>
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 17fc5898a0598d7803dacd371f011e190aabf99b
note: 'feat(cover): add config item(ratio) for cover'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 5622056203d3288f32bbb4ed8576cbdc488f7861
note: |-
Added sort toggle with | key (#530)
* Added sort toggle with | key
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* Added RefreshMenuList() for Reload UI
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* 快捷键变更同步更新README
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
* chore(dj): page size
---------
Co-authored-by: opencode-agent[bot] <opencode-agent[bot]@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@users.noreply.github.com>
Co-authored-by: anhoder <anhoder@88.com>
author:
name: opencode-agent[bot]
email: 219766164+opencode-agent[bot]@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 6466060397c8bd1ac0dc547a235b5d6b17ae9a3a
note: 'chore(ci): change llm model for ci'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: c0e4341e83824929218e7b3d90d4211f921eb5fb
note: 'fix(cover): cover position'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 4ff73308ea76b194c87cb5ebff6f216b58f40656
note: 'fix(cover): clean image'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: d75a949f681afa2a86cc4890d1e3ea9ce51888c3
note: 'fix(ci): change checkout action 6 => 5'
author:
name: anhoder
email: anhoder@88.com
committer:
name: GitHub
email: noreply@github.com
- commit: fd7524af4fc8a8b0320168dbf7ec7771343b1dd7
note: 'feat(ci): add opencode action tools'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: b3df3d1629baa4944539387136f0f73fe055725f
note: 'feat(ui): support kitty graph render'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: a99e65718b0cbe630b35bff5991e40e0448d1118
note: 'feat(config)!: config migrate & clean up useless code'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: ccec91ea3d77e65cb930ecb1e1720f52c1b93046
note: 'feat: optimize progress renderer'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: caa2a7c7acc1ab58de7ee0a782bac3a374443c61
note: 'feat: optimize YRC renderer'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: e6db63b78a9efe89454aa29a953c1af780ded672
note: 'optimize: dj_radio_detail order `desc` => `asc`'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 5b1bb7939c1de5fe13c330a6276047b1b43c328c
note: fix:修复showLyricTranslation=false不工作 (#528)
author:
name: weiyangzhen
email: 59269350+lrst6963@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 829f802b2546a6345665bef31581829a31424855
note: '✨feat: 更多的鼠标点击事件 (#525)'
author:
name: weiyangzhen
email: 59269350+lrst6963@users.noreply.github.com
committer:
name: GitHub
email: noreply@github.com
- commit: 44c4bb26fa322806369919b3ac547990cc982b6f
note: '✨feat: 添加YRC(逐字歌词)支持'
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: lrst6963
email: lrsts@qq.com
- commit: 001f3d73bbc1129f1a5317e421a484e6b8ed2459
note: 优化互斥锁
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: anhoder
email: anhoder@88.com
- commit: 760a112e30421114d9868abef78be5209c6066ba
note: 'fix: 修复进度溢出并优化mpv'
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: anhoder
email: anhoder@88.com
- commit: d7ac9fe76572eeef9fb4c8113d52243430497790
note: 'chore: update scoop config & changelog'
author:
name: anhoder
email: anhoder@88.com
committer:
name: anhoder
email: anhoder@88.com
- semver: 4.7.2
date: 2025-12-19T13:38:57+08:00
packager: go-musicfox
changes:
- commit: 0de3acf1f97fb9cd772ba2fce4adcdaa9b8ede8f
note: 'fix: runtime path for portable mode'
author:
name: jbwfu
email: 75001777+jbwfu@users.noreply.github.com
committer:
name: jbwfu
email: 75001777+jbwfu@users.noreply.github.com
- commit: 8ed38b525ab88d450db237c19bd926b3d82d1bf0
note: update RuntimeDir
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: lrst6963
email: lrsts@qq.com
- commit: f25e5c4758a443c5dd1d51bd9ba486555f695e89
note: update lastfm qr
author:
name: lrst6963
email: lrsts@qq.com
committer:
name: lrst6963
email: lrsts@qq.com
- commit: d20db8c6aee8f0aebc2857e0e180362040fdfbdc
note: |-
chore(deps): bump golang.org/x/crypto from 0.35.0 to 0.45.0
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.35.0 to 0.45.0.
- [Commits](https://github.com/golang/crypto/compare/v0.35.0...v0.45.0)
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.45.0
dependency-type: indirect
...
author: