{"record":{"id":"d260228b22c7e30f","repo":"tonhowtf/omniget","slug":"player-failed-loading-player-settings","errorCode":null,"errorMessage":"[player] failed loading player settings","messagePattern":"\\[player\\] failed loading player settings","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/lib/study-music/player-store.svelte.ts","lineNumber":511,"sourceCode":"    void this.loadSpotifySettings();\n    void this.loadRpcSettings();\n    if (this.queue.some((t) => t.source === \"spotify\" && t.spotify_uri)) {\n      void spotifySdk.ensureLoaded().catch(() => {\n        /* prewarm best-effort */\n      });\n    }\n  }\n\n  private async loadPlayerSettings() {\n    if (this.playerSettingsLoaded) return;\n    this.playerSettingsLoaded = true;\n    try {\n      const res = await pluginInvoke<{\n        auto_skip_on_error?: boolean;\n      }>(\"study\", \"study:music:player:settings:get\", {});\n      this.autoSkipOnError = !!res?.auto_skip_on_error;\n    } catch (e) {\n      console.warn(\"[player] failed loading player settings\", e);\n    }\n  }\n\n  async setAutoSkipOnError(value: boolean) {\n    this.autoSkipOnError = value;\n    try {\n      await pluginInvoke(\"study\", \"study:music:player:settings:set\", {\n        auto_skip_on_error: value,\n      });\n    } catch (e) {\n      console.warn(\"[player] failed saving auto_skip_on_error\", e);\n    }\n  }\n\n  private setError(err: PlayerError) {\n    this.lastError = err;\n    this.error = err.message || null;\n    this.status = \"error\";","sourceCodeStart":493,"sourceCodeEnd":529,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src/lib/study-music/player-store.svelte.ts#L493-L529","documentation":"The Tauri plugin call study:music:player:settings:get threw while hydrating the music player store at startup; the console logs this message and keeps defaults (autoSkipOnError=false). The store is marked loaded beforehand, so the failure only means persisted settings could not be fetched — the player continues with defaults, best-effort.","triggerScenarios":"pluginInvoke(\"study\", \"study:music:player:settings:get\", {}) rejects — plugin/backend not ready, command missing, or storage layer error.","commonSituations":"Plugin not registered/started yet at store init, backend version without the settings:get command, or corrupted/unavailable settings storage.","solutions":["Check the logged cause (plugin missing vs storage error)","Verify the study plugin is registered and the command name is correct","Fall back to the default autoSkipOnError value (code already does via !!res?)","Retry the settings load after plugin readiness"],"exampleFix":"// before\ncatch (e) {\n  console.warn(\"[player] failed loading player settings\", e);\n}\n// after\ncatch (e) {\n  console.warn(\"[player] failed loading player settings, keeping default\", e);\n  this.autoSkipOnError = false;\n}","handlingStrategy":"fallback","validationCode":"if (!pluginReady(\"study\")) {\n  console.warn(\"[player] study plugin not ready; using default player settings\");\n  return;\n}","typeGuard":"function hasAutoSkipSetting(s: unknown): s is { auto_skip_on_error?: boolean } {\n  return !!s && typeof s === \"object\";\n}","tryCatchPattern":"try {\n  const res = await pluginInvoke(\"study\", \"study:music:player:settings:get\", {});\n  this.autoSkipOnError = !!res?.auto_skip_on_error;\n} catch (e) {\n  console.warn(\"[player] failed loading player settings, keeping default\", e);\n  this.autoSkipOnError = false;\n}","preventionTips":["Load settings only after the plugin signals readiness","Always initialize settings fields with sane defaults","Log and retry once on transient transport errors","Keep the backend command names versioned/consistent"],"tags":["settings","plugin","audio-player"],"backgroundTag":"missing-config-value","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}