From cc85188d52306cd73d6898b14f3b25948b125a68 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:35:18 -0700 Subject: [PATCH] Add media server setup, processing settings, text import, automation history, and streaming details --- webui/static/docs.js | 67 ++++++++++++++++++++++++++++++++++++++---- webui/static/help.png | Bin 0 -> 291001 bytes 2 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 webui/static/help.png diff --git a/webui/static/docs.js b/webui/static/docs.js index a7d8ac32..6d9e6f27 100644 --- a/webui/static/docs.js +++ b/webui/static/docs.js @@ -485,6 +485,7 @@ const DOCS_SECTIONS = [ { id: 'auto-triggers', title: 'All Triggers' }, { id: 'auto-actions', title: 'All Actions' }, { id: 'auto-then', title: 'Then-Actions & Signals' }, + { id: 'auto-history', title: 'Execution History' }, { id: 'auto-system', title: 'System Automations' } ], content: () => ` @@ -569,6 +570,12 @@ const DOCS_SECTIONS = [
Test Notifications: Use the test button next to any notification then-action to send a test message before saving. This verifies your webhook URL, API key, or bot token is working correctly.
Each automation card shows its last run time and run count. For scheduled automations, a countdown timer shows when the next run will occur.
+Use the Run Now button on any automation card to execute it immediately, regardless of its schedule. The result (success/failure) updates in real-time on the card.
+The Dashboard activity feed also logs every automation execution with timestamps, so you can review the full history of what ran and when.
+SoulSync ships with 10 built-in automations that handle routine maintenance. You can enable/disable them and modify their configs, but you can't delete them or rename them.
@@ -661,7 +668,8 @@ const DOCS_SECTIONS = [ { id: 'imp-setup', title: 'Staging Setup' }, { id: 'imp-workflow', title: 'Import Workflow' }, { id: 'imp-singles', title: 'Singles Import' }, - { id: 'imp-matching', title: 'Track Matching' } + { id: 'imp-matching', title: 'Track Matching' }, + { id: 'imp-textfile', title: 'Import from Text File' } ], content: () => `After matching, the import process tags files with the official metadata (title, artist, album, track number, cover art) and moves them to your transfer path following the standard file organization template.
Import track lists from CSV, TSV, or TXT files. Upload a file with columns for artist, album, and track title:
+The sidebar media player is always visible when a track is loaded. It shows album art, track info, a seekable progress bar, and playback controls (play/pause, previous, next, volume, repeat, shuffle).
Click the sidebar player to open the Now Playing modal — a full-screen experience with large album art, ambient glow (dominant color from cover art), a frequency-driven audio visualizer, and expanded controls.
The media player streams audio directly from your connected media server — no local file access needed:
+The browser auto-detects which audio formats it can play. Album art, track metadata, and ambient colors are all pulled from your server in real-time.
+Add tracks to the queue from the Enhanced Library Manager or download results. Manage the queue in the Now Playing modal: reorder, remove individual tracks, or clear all.
@@ -739,25 +768,39 @@ const DOCS_SECTIONS = [ icon: '/static/settings.png', children: [ { id: 'set-services', title: 'Service Credentials' }, + { id: 'set-media', title: 'Media Server Setup' }, { id: 'set-download', title: 'Download Settings' }, + { id: 'set-processing', title: 'Processing & Organization' }, { id: 'set-quality', title: 'Quality Profiles' }, { id: 'set-other', title: 'Other Settings' } ], content: () => `Configure credentials for each external service. All fields are saved to your local config — nothing is sent to external servers except during actual API calls.
+Configure credentials for each external service. All fields are saved to your local config — nothing is sent to external servers except during actual API calls. Each service has a Test Connection button to verify your credentials are working.
Connect your media server so SoulSync can scan your library, trigger updates, stream audio, and sync metadata:
+| Server | Credentials | Setup Details |
|---|---|---|
| Plex | URL + Token | After connecting, select which Music Library to use from the dropdown. SoulSync scans this library for your collection and triggers scans after downloads. |
| Jellyfin | URL + API Key | Select the User and Music Library to target. SoulSync uses the Jellyfin API for library scans and can stream audio directly. |
| Navidrome | URL + Username + Password | Select the Music Folder to monitor. Navidrome auto-detects new files, so SoulSync doesn't need to trigger scans — just place files in the right folder. |
The media player streams audio directly from your connected server — tracks play through your Plex, Jellyfin, or Navidrome instance without needing local file access.
+Control how downloaded files are processed and organized:
+{artist}, {album}, {title}, {track_number}, {year}, {genre}. Default: {artist}/{album}/{track_number} - {title}Disc 1/, Disc 2/, etc.Set your preferred audio quality with presets (Audiophile/Balanced/Space Saver) or custom configuration per format. Each format has a configurable bitrate range and priority order. Enable Fallback to accept any quality when nothing matches.
diff --git a/webui/static/help.png b/webui/static/help.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6c81e987c6dfb02fcbcef057dd573f2ce7a765 GIT binary patch literal 291001 zcmX`SRaBg7*RB*b^{_whcf7S>C)3K{a$h!@ WA^j2 gN~TH6pT*|UA8Z`HvBG6v5OL2Qa#+V)(;FkFEn`Q#6kIf!LSCwiqvyW?lZW}
zuyk{`q-3m)T~^@;S5P-86V|OcrB9XiwJ@)km_(sV)uKyJ83V=c)M5 #7s!$M
zk5_U{^B>Sr$*omkW-o!t7a|c*4I&1~825;1lGYLoZJ${R%u%qvzv1JPx(GfD8)v6h
zcDi#4@CjYah-_>e(laIlU10@PNC=(M%>Wa_{{@}TOTSMldlWN`1g@>|X7jZ+Un9W(
z&ZF~*+G|;=!R@89n$h<%9n49-<(0ILSfXMRS}3yt?x<9b0=SWRDdXaZ`KNKJPy}*z
zkA-<1dc-6B^@*%UmnM*M3kJRtHVCNBu1B-A2Spl2nG+!Z)FjA)I9$zL2%pOsdCM-u
z)07AMYy)ZZPcw1%)WTHaHU!^(bI{1{At7Hj>=*W}$e{S8L_+u0yx*swGsKa85%#~h
zTO17gipOBd>{H^O=HgMuI=4dJ*MAr~))Kk;gsvX$fk%-KVsp78@>JVT4Hug_tXEAO
zImlP4GVcps*!EU^N3XdW&f1yX$Sq9thT;T{WJmtu7Sd~ehr@FS1~;)t1r2NxG?+KL
zL DI*C?iR(^ay0?wEijEz+T@Q*=p%v