{"record":{"id":"d2abf6bc5c1ac5d6","repo":"tonhowtf/omniget","slug":"player-failed-saving-rpc-show-cover","errorCode":null,"errorMessage":"[player] failed saving rpc show_cover","messagePattern":"\\[player\\] failed saving rpc show_cover","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/lib/study-music/player-store.svelte.ts","lineNumber":843,"sourceCode":"    return this._rpcShowCover;\n  }\n\n  getRpcShowButtons(): boolean {\n    return this._rpcShowButtons;\n  }\n\n  getRpcUpdateIntervalMs(): number {\n    return this._rpcUpdateIntervalMs;\n  }\n\n  async setRpcShowCover(value: boolean) {\n    this._rpcShowCover = value;\n    try {\n      await pluginInvoke(\"study\", \"study:music:rpc:music_settings:set\", {\n        show_cover: value,\n      });\n    } catch (e) {\n      console.warn(\"[player] failed saving rpc show_cover\", e);\n    }\n    this.rpcOnPlaybackChange();\n  }\n\n  async setRpcShowButtons(value: boolean) {\n    this._rpcShowButtons = value;\n    try {\n      await pluginInvoke(\"study\", \"study:music:rpc:music_settings:set\", {\n        show_buttons: value,\n      });\n    } catch (e) {\n      console.warn(\"[player] failed saving rpc show_buttons\", e);\n    }\n    this.rpcOnPlaybackChange();\n  }\n\n  async setRpcUpdateIntervalMs(ms: number) {\n    const clamped = MusicPlayerStore.clampRpcInterval(ms);","sourceCodeStart":825,"sourceCodeEnd":861,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src/lib/study-music/player-store.svelte.ts#L825-L861","documentation":"Non-fatal warning from the RPC show_cover setter: the UI toggle is applied locally (_rpcShowCover) but saving it via pluginInvoke('study','study:music:rpc:music_settings:set') failed, so the preference is lost on restart. rpcOnPlaybackChange() still runs afterwards.","triggerScenarios":"Toggling 'show cover' in Discord RPC settings while the study:music:rpc:music_settings:set backend command rejects (plugin unavailable, write failure, IPC error).","commonSituations":"Backend plugin not started yet; settings file unwritable; stale build where the settings command was renamed.","solutions":["Confirm the study plugin backend is running before toggling RPC settings","Check the error for file-write/permission problems on the settings store","Retry the save after the backend becomes available","Reconcile frontend command names with the installed plugin version"],"exampleFix":"// before\nawait pluginInvoke(\"study\", \"study:music:rpc:music_settings:set\", { show_cover: value });\n// after\ntry {\n  await pluginInvoke(\"study\", \"study:music:rpc:music_settings:set\", { show_cover: value });\n} catch (e) {\n  console.warn(\"[player] failed saving rpc show_cover\", e);\n  pendingRpcSettings.show_cover = value; // flush later\n}","handlingStrategy":"try-catch","validationCode":"if (typeof value !== \"boolean\") return;","typeGuard":"function isBool(v: unknown): v is boolean { return typeof v === \"boolean\"; }","tryCatchPattern":"try { await pluginInvoke(\"study\", \"study:music:rpc:music_settings:set\", { show_cover: value }); } catch (e) { console.warn(\"[player] failed saving rpc show_cover\", e); markSettingsDirty({ show_cover: value }); }","preventionTips":["Batch RPC settings into one save call to reduce failure windows","Queue dirty settings and flush on next successful IPC","Verify plugin version supports music_settings:set"],"tags":["ipc","persistence","discord-rpc"],"backgroundTag":"api-request-failed","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}