dsh-music-panel 0.3.12 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/client.js +4 -4
- package/lib/routes.js +11 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.14
|
|
4
|
+
|
|
5
|
+
### 变更
|
|
6
|
+
|
|
7
|
+
- 歌曲列表单列尺寸略微加大:封面 55 → 60px,行高 67 → 72px
|
|
8
|
+
|
|
9
|
+
## 0.3.13
|
|
10
|
+
|
|
11
|
+
### 修复
|
|
12
|
+
|
|
13
|
+
- 「在文件夹中显示」在 Windows 上没有定位到文件:explorer 参数改为 `/select,"C:\path\file"`(引号紧贴逗号),并用 `windowsVerbatimArguments` 原样传参,避免 Node 重新加引号/转义导致 explorer 忽略 `/select`
|
|
14
|
+
|
|
3
15
|
## 0.3.12
|
|
4
16
|
|
|
5
17
|
### 变更
|
package/client.js
CHANGED
|
@@ -4206,7 +4206,7 @@ window.__ModuleLoader__.load({
|
|
|
4206
4206
|
event.stopPropagation()
|
|
4207
4207
|
},
|
|
4208
4208
|
},
|
|
4209
|
-
h(Cover, { track: track, size:
|
|
4209
|
+
h(Cover, { track: track, size: 60, radius: 8 }),
|
|
4210
4210
|
h('span', { className: 'mu-row-playmask' }, icon(isCurrent && snap.playing ? 'pause' : 'play', 16)),
|
|
4211
4211
|
),
|
|
4212
4212
|
h(
|
|
@@ -5185,7 +5185,7 @@ window.__ModuleLoader__.load({
|
|
|
5185
5185
|
: h(VirtualList, {
|
|
5186
5186
|
className: 'mu-list',
|
|
5187
5187
|
items: visible,
|
|
5188
|
-
rowHeight:
|
|
5188
|
+
rowHeight: 72,
|
|
5189
5189
|
itemKey: function (track) {
|
|
5190
5190
|
return track.path
|
|
5191
5191
|
},
|
|
@@ -5836,7 +5836,7 @@ window.__ModuleLoader__.load({
|
|
|
5836
5836
|
'.mu-list{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:0 16px 12px}',
|
|
5837
5837
|
'.mu-vlist-inner{position:relative}',
|
|
5838
5838
|
'.mu-vlist-row{position:absolute;left:0;right:0}',
|
|
5839
|
-
'.mu-row{display:grid;grid-template-columns:calc(var(--mu-row-size,
|
|
5839
|
+
'.mu-row{display:grid;grid-template-columns:calc(var(--mu-row-size,60px) + 4px) minmax(0,1.15fr) minmax(0,.85fr) 56px auto;align-items:center;gap:12px;padding:6px 10px;border-radius:var(--dsw-radius-md,8px);height:72px;box-sizing:border-box;position:relative}',
|
|
5840
5840
|
'.mu-prefs{min-width:240px;padding:12px}',
|
|
5841
5841
|
'.mu-prefs-panel{position:absolute;top:56px;right:24px;z-index:50;width:360px;max-width:calc(100% - 48px);max-height:70vh;overflow-y:auto;padding:14px;border:1px solid var(--dsw-alias-border-l2,rgba(255,255,255,.12));border-radius:var(--dsw-radius-xl,20px);background:var(--dsw-alias-bg-layer-1,#1a1a1e);box-shadow:var(--dsw-elevation-panel,0 16px 40px rgba(0,0,0,.5))}',
|
|
5842
5842
|
'.mu-prefs-tabs{display:flex;gap:2px;padding:3px;margin-bottom:12px;border-radius:9px;background:var(--dsw-alias-bg-layer-3,rgba(255,255,255,.06))}',
|
|
@@ -5879,7 +5879,7 @@ window.__ModuleLoader__.load({
|
|
|
5879
5879
|
'.mu-row.is-current:hover{background:color-mix(in srgb,var(--dsw-static-deepseek-450,#5686fe) 12%,transparent)}',
|
|
5880
5880
|
'.mu-row.is-current .mu-row-title{color:var(--dsw-static-deepseek-450,#5686fe);font-weight:600}',
|
|
5881
5881
|
'.mu-row.is-current .mu-row-sub,.mu-row.is-current .mu-row-album,.mu-row.is-current .mu-row-dur{color:var(--dsw-alias-label-secondary,#a1a1aa)}',
|
|
5882
|
-
'.mu-row-play{position:relative;width:var(--mu-row-size,
|
|
5882
|
+
'.mu-row-play{position:relative;width:var(--mu-row-size,60px);height:var(--mu-row-size,60px);border:0;padding:0;background:transparent;cursor:pointer;border-radius:var(--dsw-radius-sm,6px);display:flex;align-items:center;justify-content:center}',
|
|
5883
5883
|
'.mu-row-playmask{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:var(--dsw-radius-sm,6px);background:rgba(0,0,0,.45);color:#fff;opacity:0;transition:opacity .12s ease}',
|
|
5884
5884
|
'.mu-row-play:hover .mu-row-playmask,.mu-row.is-current .mu-row-playmask{opacity:1}',
|
|
5885
5885
|
'.mu-row.is-current .mu-row-playmask{background:rgba(0,0,0,.35)}',
|
package/lib/routes.js
CHANGED
|
@@ -403,13 +403,20 @@ export function createRoutes({ settings, library, playlists, stats, playback, fa
|
|
|
403
403
|
const file = await resolveTrack(body?.path, config.roots)
|
|
404
404
|
if (file === null) return fail(res, 404, 'NOT_FOUND', '文件不在已配置的音乐目录内')
|
|
405
405
|
try {
|
|
406
|
+
// Explorer parses its command line itself: the reliable form is
|
|
407
|
+
// `/select,"C:\path\file.mp3"` with quotes hugging the comma. Node
|
|
408
|
+
// would re-quote/escape that argument, so pass it verbatim.
|
|
406
409
|
const opener =
|
|
407
410
|
process.platform === 'win32'
|
|
408
|
-
? { name: 'explorer.exe', args: ['/select,' + file] }
|
|
411
|
+
? { name: 'explorer.exe', args: ['/select,"' + file + '"'], verbatim: true }
|
|
409
412
|
: process.platform === 'darwin'
|
|
410
|
-
? { name: 'open', args: ['-R', file] }
|
|
411
|
-
: { name: 'xdg-open', args: [dirname(file)] }
|
|
412
|
-
const child = spawn(opener.name, opener.args, {
|
|
413
|
+
? { name: 'open', args: ['-R', file], verbatim: false }
|
|
414
|
+
: { name: 'xdg-open', args: [dirname(file)], verbatim: false }
|
|
415
|
+
const child = spawn(opener.name, opener.args, {
|
|
416
|
+
detached: true,
|
|
417
|
+
stdio: 'ignore',
|
|
418
|
+
windowsVerbatimArguments: opener.verbatim,
|
|
419
|
+
})
|
|
413
420
|
// Without this listener an ENOENT would surface as an unhandled error.
|
|
414
421
|
child.on('error', () => {})
|
|
415
422
|
child.unref()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-music-panel",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local music library for DeepSeek Harness: scan a folder, browse tracks with cover art and tags, and play through a sidebar-panel player with loop, shuffle and volume. · DSH 本地音乐插件:扫描音乐目录、读取封面与标签、侧栏入口 + 全屏播放器。",
|
|
6
6
|
"license": "MIT",
|