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 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: 55, radius: 8 }),
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: 67,
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,55px) + 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:67px;box-sizing:border-box;position:relative}',
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,55px);height:var(--mu-row-size,55px);border:0;padding:0;background:transparent;cursor:pointer;border-radius:var(--dsw-radius-sm,6px);display:flex;align-items:center;justify-content:center}',
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, { detached: true, stdio: 'ignore' })
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.12",
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",