@ -56354,6 +56354,66 @@ const AUTO_HUB_GROUPS = [
{ name : 'Guardian — Notify' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'guardian_quality_done' } , action _type : 'notify_only' , action _config : { } , then _actions : [ ] , group _name : 'Library Guardian' , needs _notify : true } ,
]
} ,
{
id : 'startup-recovery' , icon : '⚡' , name : 'Startup Recovery' ,
desc : 'Self-heal after a restart. Scans your library, processes pending wishlist items, and cleans up automatically.' ,
category : 'Maintenance' , badge : '3 automations' , color : '#14b8a6' ,
steps : [
{ label : 'Scan Library' , icon : '📚' , type : 'action' } ,
{ label : 'Process Wishlist' , icon : '📥' , type : 'action' } ,
{ label : 'Cleanup' , icon : '🧹' , type : 'action' } ,
] ,
automations : [
{ name : 'Startup — Scan Library' , trigger _type : 'app_started' , trigger _config : { } , action _type : 'scan_library' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'startup_scanned' } } ] , group _name : 'Startup Recovery' } ,
{ name : 'Startup — Process Wishlist' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'startup_scanned' } , action _type : 'process_wishlist' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'startup_processed' } } ] , group _name : 'Startup Recovery' } ,
{ name : 'Startup — Cleanup' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'startup_processed' } , action _type : 'full_cleanup' , action _config : { } , then _actions : [ ] , group _name : 'Startup Recovery' } ,
]
} ,
{
id : 'import-pipeline' , icon : '📦' , name : 'Import Pipeline' ,
desc : 'After importing files, automatically scans your library, runs a quality check, and notifies you when complete.' ,
category : 'Maintenance' , badge : '3 automations' , color : '#a855f7' ,
steps : [
{ label : 'Scan Library' , icon : '📚' , type : 'action' } ,
{ label : 'Quality Check' , icon : '✅' , type : 'action' } ,
{ label : 'Notify' , icon : '🔔' , type : 'notify' } ,
] ,
automations : [
{ name : 'Import — Scan Library' , trigger _type : 'import_completed' , trigger _config : { } , action _type : 'scan_library' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'import_scanned' } } ] , group _name : 'Import Pipeline' } ,
{ name : 'Import — Quality Check' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'import_scanned' } , action _type : 'start_quality_scan' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'import_quality_done' } } ] , group _name : 'Import Pipeline' } ,
{ name : 'Import — Notify' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'import_quality_done' } , action _type : 'notify_only' , action _config : { } , then _actions : [ ] , group _name : 'Import Pipeline' , needs _notify : true } ,
]
} ,
{
id : 'weekly-deep-clean' , icon : '✨' , name : 'Weekly Deep Clean' ,
desc : 'Comprehensive weekly sweep: find duplicates, check quality, clean up, back up, and report results.' ,
category : 'Maintenance' , badge : '5 automations' , color : '#ec4899' ,
steps : [
{ label : 'Duplicates' , icon : '📋' , type : 'action' } ,
{ label : 'Quality' , icon : '✅' , type : 'action' } ,
{ label : 'Cleanup' , icon : '🧹' , type : 'action' } ,
{ label : 'Backup' , icon : '💾' , type : 'action' } ,
{ label : 'Notify' , icon : '🔔' , type : 'notify' } ,
] ,
automations : [
{ name : 'Deep Clean — Duplicates' , trigger _type : 'weekly_time' , trigger _config : { days : [ 'sunday' ] , time : '02:00' } , action _type : 'run_duplicate_cleaner' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'dc_dedup_done' } } ] , group _name : 'Weekly Deep Clean' } ,
{ name : 'Deep Clean — Quality' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'dc_dedup_done' } , action _type : 'start_quality_scan' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'dc_quality_done' } } ] , group _name : 'Weekly Deep Clean' } ,
{ name : 'Deep Clean — Cleanup' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'dc_quality_done' } , action _type : 'full_cleanup' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'dc_cleanup_done' } } ] , group _name : 'Weekly Deep Clean' } ,
{ name : 'Deep Clean — Backup' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'dc_cleanup_done' } , action _type : 'backup_database' , action _config : { } , then _actions : [ { type : 'fire_signal' , config : { signal _name : 'dc_backup_done' } } ] , group _name : 'Weekly Deep Clean' } ,
{ name : 'Deep Clean — Notify' , trigger _type : 'signal_received' , trigger _config : { signal _name : 'dc_backup_done' } , action _type : 'notify_only' , action _config : { } , then _actions : [ ] , group _name : 'Weekly Deep Clean' , needs _notify : true } ,
]
} ,
{
id : 'beatport-fresh' , icon : '🎧' , name : 'Beatport Fresh' ,
desc : 'Keep your Beatport charts and playlists up to date with a daily cache refresh.' ,
category : 'Discovery' , badge : '1 automation' , color : '#84cc16' ,
steps : [
{ label : 'Refresh Cache' , icon : '🔄' , type : 'action' } ,
] ,
automations : [
{ name : 'Beatport — Daily Refresh' , trigger _type : 'daily_time' , trigger _config : { time : '05:00' } , action _type : 'refresh_beatport_cache' , action _config : { } , then _actions : [ ] , group _name : 'Beatport Fresh' } ,
]
} ,
] ;
const AUTO _HUB _RECIPES = [
@ -57130,7 +57190,7 @@ async function deployHubGroup(groupId) {
if ( created > 0 ) {
showToast ( ` Deployed " ${ group . name } " — ${ created } automation ${ created > 1 ? 's' : '' } created ${ failed ? ` , ${ failed } failed ` : '' } ` , 'success' ) ;
loadAutomations Page ( ) ;
loadAutomations ( ) ;
} else {
showToast ( ` Failed to deploy " ${ group . name } " ` , 'error' ) ;
}