Files
yellowjacket/frontend/wailsjs/go/playlist/Service.js
T
yonluandClaude Opus 5 01bc5f2094 feat(jobs): surface background jobs with progress, logs and controls
Add a central job registry that library scans and search index builds
report into, so background work is visible instead of buried in the
settings page.

- backend/jobs: registry with per-job ring-buffer logs, capability-driven
  controls, and one coalesced JobsChanged snapshot at 4Hz
- pause survives restart via a job_state table; a paused scan is adopted
  back on launch and skipped by the soft scan
- top-bar indicator, popover, details drawer and a Jobs page replacing
  the config page's scan UI; per-library start/stop retained
- scan timing breakdown moves into the job log, Full rescan to the Jobs
  page; delete the orphaned library-manager component

Also add cmd/indexbuild and cmd/indexexport so the explore index can be
built once centrally rather than by every install, which today streams
~205GB from the ListenBrainz spark dump on first run. indexbuild picks
build/refresh/rebuild from index state; the Gitea workflow runs it on
push, weekly, or manually and publishes only when content changed.

fresh-install no longer defaults YJ_HOME under /tmp: it is tmpfs on most
distros, and the import needs ~6GB of real disk.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 14:42:22 -04:00

148 lines
4.6 KiB
JavaScript
Executable File

// @ts-check
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
// This file is automatically generated. DO NOT EDIT
export function AddToDefaultPlaylist(arg1) {
return window['go']['playlist']['Service']['AddToDefaultPlaylist'](arg1);
}
export function AddTracksToPlaylist(arg1, arg2) {
return window['go']['playlist']['Service']['AddTracksToPlaylist'](arg1, arg2);
}
export function CreatePlaylist(arg1) {
return window['go']['playlist']['Service']['CreatePlaylist'](arg1);
}
export function CreatePlaylistWithTracks(arg1, arg2) {
return window['go']['playlist']['Service']['CreatePlaylistWithTracks'](arg1, arg2);
}
export function CreateSmartPlaylist(arg1, arg2) {
return window['go']['playlist']['Service']['CreateSmartPlaylist'](arg1, arg2);
}
export function DeletePlaylist(arg1) {
return window['go']['playlist']['Service']['DeletePlaylist'](arg1);
}
export function EnsureDefaultPlaylist() {
return window['go']['playlist']['Service']['EnsureDefaultPlaylist']();
}
export function EvaluateSmartPlaylist(arg1) {
return window['go']['playlist']['Service']['EvaluateSmartPlaylist'](arg1);
}
export function FindDuplicateTracksInPlaylist(arg1, arg2) {
return window['go']['playlist']['Service']['FindDuplicateTracksInPlaylist'](arg1, arg2);
}
export function FindPhantomMatches(arg1, arg2) {
return window['go']['playlist']['Service']['FindPhantomMatches'](arg1, arg2);
}
export function GetAllPlaylists() {
return window['go']['playlist']['Service']['GetAllPlaylists']();
}
export function GetAllPlaylistsWithTracks() {
return window['go']['playlist']['Service']['GetAllPlaylistsWithTracks']();
}
export function GetDefaultPlaylistInfo() {
return window['go']['playlist']['Service']['GetDefaultPlaylistInfo']();
}
export function GetDefaultPlaylistTrackPaths() {
return window['go']['playlist']['Service']['GetDefaultPlaylistTrackPaths']();
}
export function GetPhantomCandidates(arg1, arg2) {
return window['go']['playlist']['Service']['GetPhantomCandidates'](arg1, arg2);
}
export function GetPlaylistTracks(arg1) {
return window['go']['playlist']['Service']['GetPlaylistTracks'](arg1);
}
export function GetSmartPlaylistRules(arg1) {
return window['go']['playlist']['Service']['GetSmartPlaylistRules'](arg1);
}
export function GetSmartPlaylistTracks(arg1) {
return window['go']['playlist']['Service']['GetSmartPlaylistTracks'](arg1);
}
export function ImportPlaylist(arg1) {
return window['go']['playlist']['Service']['ImportPlaylist'](arg1);
}
export function ImportPlaylists(arg1) {
return window['go']['playlist']['Service']['ImportPlaylists'](arg1);
}
export function MaterializeUnmaterializedSmartPlaylists() {
return window['go']['playlist']['Service']['MaterializeUnmaterializedSmartPlaylists']();
}
export function PreviewSmartPlaylist(arg1) {
return window['go']['playlist']['Service']['PreviewSmartPlaylist'](arg1);
}
export function RefreshSmartPlaylist(arg1) {
return window['go']['playlist']['Service']['RefreshSmartPlaylist'](arg1);
}
export function RemoveFromDefaultPlaylist(arg1) {
return window['go']['playlist']['Service']['RemoveFromDefaultPlaylist'](arg1);
}
export function RemovePhantomTracks(arg1, arg2) {
return window['go']['playlist']['Service']['RemovePhantomTracks'](arg1, arg2);
}
export function RemoveTracksFromPlaylist(arg1, arg2) {
return window['go']['playlist']['Service']['RemoveTracksFromPlaylist'](arg1, arg2);
}
export function RenamePlaylist(arg1, arg2) {
return window['go']['playlist']['Service']['RenamePlaylist'](arg1, arg2);
}
export function RepopulateFromM3U() {
return window['go']['playlist']['Service']['RepopulateFromM3U']();
}
export function ResolvePhantomTracks(arg1, arg2) {
return window['go']['playlist']['Service']['ResolvePhantomTracks'](arg1, arg2);
}
export function ResolvePhantomTracksAfterScan() {
return window['go']['playlist']['Service']['ResolvePhantomTracksAfterScan']();
}
export function RestoreAllPlaylists() {
return window['go']['playlist']['Service']['RestoreAllPlaylists']();
}
export function SearchLibrary(arg1) {
return window['go']['playlist']['Service']['SearchLibrary'](arg1);
}
export function SetContext(arg1) {
return window['go']['playlist']['Service']['SetContext'](arg1);
}
export function SetFavoritesConfig(arg1) {
return window['go']['playlist']['Service']['SetFavoritesConfig'](arg1);
}
export function ToggleDefaultPlaylistTrack(arg1) {
return window['go']['playlist']['Service']['ToggleDefaultPlaylistTrack'](arg1);
}
export function UpdateSmartPlaylistRules(arg1, arg2) {
return window['go']['playlist']['Service']['UpdateSmartPlaylistRules'](arg1, arg2);
}