@emgeebee/music_downcoder 1.1.6 → 1.1.7

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/dist/scripts.d.ts CHANGED
@@ -7,6 +7,7 @@ export interface ScriptInfo {
7
7
  album: string;
8
8
  type: string;
9
9
  trackCount: number;
10
+ commands: string[];
10
11
  }
11
12
  export declare const describeScript: (scriptPath: string, config: AppConfig) => ScriptInfo;
12
13
  export declare const describeScripts: (scriptPaths: string[], config: AppConfig) => ScriptInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAgED,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,QAAQ,SAAS,KAChB,UA2CF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EAAE,EACrB,QAAQ,SAAS,KAChB,UAAU,EAAyE,CAAC"}
1
+ {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAgED,eAAO,MAAM,cAAc,GACzB,YAAY,MAAM,EAClB,QAAQ,SAAS,KAChB,UA8CF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EAAE,EACrB,QAAQ,SAAS,KAChB,UAAU,EAAyE,CAAC"}
package/dist/scripts.js CHANGED
@@ -52,10 +52,12 @@ export const describeScript = (scriptPath, config) => {
52
52
  let artist = "Unknown artist";
53
53
  let album = "Unknown album";
54
54
  let trackCount = 0;
55
+ let commands = [];
55
56
  try {
56
57
  const content = fs.readFileSync(scriptPath, "utf-8");
57
58
  const lines = content.split("\n");
58
59
  trackCount = countTracks(lines);
60
+ commands = lines.map((line) => line.trimEnd()).filter((line) => line.length > 0);
59
61
  if (encoderOut) {
60
62
  for (const line of lines) {
61
63
  const outputPath = extractLastQuotedPath(line);
@@ -83,6 +85,7 @@ export const describeScript = (scriptPath, config) => {
83
85
  album,
84
86
  type: encoder.label,
85
87
  trackCount,
88
+ commands,
86
89
  };
87
90
  };
88
91
  export const describeScripts = (scriptPaths, config) => scriptPaths.map((scriptPath) => describeScript(scriptPath, config));
@@ -1 +1 @@
1
- {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,20 @@
95
95
  .form-group {
96
96
  margin-bottom: 1.1rem;
97
97
  }
98
+ .form-row {
99
+ display: grid;
100
+ gap: 1rem;
101
+ grid-template-columns: 1fr 1fr;
102
+ margin-bottom: 1.1rem;
103
+ }
104
+ .form-row .form-group {
105
+ margin-bottom: 0;
106
+ }
107
+ @media (max-width: 900px) {
108
+ .form-row {
109
+ grid-template-columns: 1fr;
110
+ }
111
+ }
98
112
  .form-group:last-of-type {
99
113
  margin-bottom: 0;
100
114
  }
@@ -283,29 +297,64 @@
283
297
  gap: 0.45rem;
284
298
  margin-bottom: 0.25rem;
285
299
  }
286
- .empty-state {
287
- color: var(--text-muted);
288
- font-size: 0.92rem;
289
- padding: 0.5rem 0;
290
- }
291
- .script-row {
292
- align-items: center;
300
+ .script-accordion {
293
301
  background: var(--surface-raised);
294
302
  border: 1px solid var(--border);
295
303
  border-radius: var(--radius-sm);
304
+ overflow: hidden;
305
+ }
306
+ .script-accordion[open] {
307
+ border-color: color-mix(in srgb, var(--accent) 35%, var(--border));
308
+ }
309
+ .script-summary {
310
+ align-items: center;
311
+ cursor: pointer;
296
312
  display: flex;
297
313
  gap: 0.75rem;
298
314
  justify-content: space-between;
315
+ list-style: none;
299
316
  padding: 0.55rem 0.65rem 0.55rem 0.8rem;
300
317
  }
301
- .script-row code {
318
+ .script-summary::-webkit-details-marker {
319
+ display: none;
320
+ }
321
+ .script-summary::before {
322
+ color: var(--text-muted);
323
+ content: "▸";
324
+ flex-shrink: 0;
325
+ font-size: 0.75rem;
326
+ transition: transform 0.15s;
327
+ width: 0.75rem;
328
+ }
329
+ .script-accordion[open] .script-summary::before {
330
+ transform: rotate(90deg);
331
+ }
332
+ .script-title {
302
333
  flex: 1;
303
334
  font-family: ui-monospace, "Cascadia Code", "SF Mono", monospace;
304
335
  font-size: 0.84rem;
336
+ min-width: 0;
305
337
  overflow: hidden;
306
338
  text-overflow: ellipsis;
307
339
  white-space: nowrap;
308
340
  }
341
+ .script-commands {
342
+ background: #00000010;
343
+ border-top: 1px solid var(--border);
344
+ font-family: ui-monospace, "Cascadia Code", "SF Mono", monospace;
345
+ font-size: 0.78rem;
346
+ line-height: 1.45;
347
+ margin: 0;
348
+ max-height: 16rem;
349
+ overflow: auto;
350
+ padding: 0.65rem 0.8rem;
351
+ white-space: pre-wrap;
352
+ }
353
+ .empty-state {
354
+ color: var(--text-muted);
355
+ font-size: 0.92rem;
356
+ padding: 0.5rem 0;
357
+ }
309
358
  .app-version {
310
359
  color: var(--text-muted);
311
360
  font-size: 0.82rem;
@@ -352,13 +401,15 @@
352
401
  <h2>Scan library</h2>
353
402
  </div>
354
403
  <form id="run-form">
355
- <div class="form-group">
356
- <h3 class="form-label">Source folder</h3>
357
- <div class="option-grid" id="start-folders"></div>
358
- </div>
359
- <div class="form-group">
360
- <h3 class="form-label">Encoders</h3>
361
- <div class="option-grid" id="encoders"></div>
404
+ <div class="form-row">
405
+ <div class="form-group">
406
+ <h3 class="form-label">Source folder</h3>
407
+ <div class="option-grid" id="start-folders"></div>
408
+ </div>
409
+ <div class="form-group">
410
+ <h3 class="form-label">Encoders</h3>
411
+ <div class="option-grid" id="encoders"></div>
412
+ </div>
362
413
  </div>
363
414
  <label class="filter-field">
364
415
  <span>Artist filter (prefix)</span>
@@ -521,16 +572,24 @@
521
572
  return;
522
573
  }
523
574
  for (const script of scripts) {
524
- const row = document.createElement("div");
525
- row.className = "script-row";
526
- const code = document.createElement("code");
527
- code.textContent = script.displayName;
528
- code.title = script.name;
575
+ const item = document.createElement("details");
576
+ item.className = "script-accordion";
577
+
578
+ const summary = document.createElement("summary");
579
+ summary.className = "script-summary";
580
+
581
+ const title = document.createElement("span");
582
+ title.className = "script-title";
583
+ title.textContent = script.displayName;
584
+ title.title = script.name;
585
+
529
586
  const btn = document.createElement("button");
530
587
  btn.type = "button";
531
588
  btn.className = "btn-primary btn-sm";
532
589
  btn.textContent = "Run";
533
- btn.addEventListener("click", async () => {
590
+ btn.addEventListener("click", async (event) => {
591
+ event.preventDefault();
592
+ event.stopPropagation();
534
593
  setBusy(true);
535
594
  appendLog(`Running ${script.displayName}...`);
536
595
  const res = await fetch("/api/scripts/run", {
@@ -550,8 +609,18 @@
550
609
  }
551
610
  setBusy(false);
552
611
  });
553
- row.append(code, btn);
554
- scriptsList.append(row);
612
+
613
+ summary.append(title, btn);
614
+ item.append(summary);
615
+
616
+ if (script.commands?.length) {
617
+ const commands = document.createElement("pre");
618
+ commands.className = "script-commands";
619
+ commands.textContent = script.commands.join("\n");
620
+ item.append(commands);
621
+ }
622
+
623
+ scriptsList.append(item);
555
624
  }
556
625
  };
557
626
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emgeebee/music_downcoder",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "Scan music libraries and generate ffmpeg conversion scripts with a CLI or web UI",
5
5
  "type": "module",
6
6
  "bin": {