tonhowtf/omniget · warning

[player] failed saving rpc show_cover

Error message

[player] failed saving rpc show_cover

What it means

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.

Solutions

  1. Confirm the study plugin backend is running before toggling RPC settings
  2. Check the error for file-write/permission problems on the settings store
  3. Retry the save after the backend becomes available
  4. Reconcile frontend command names with the installed plugin version

Example fix

// before
await pluginInvoke("study", "study:music:rpc:music_settings:set", { show_cover: value });
// after
try {
  await pluginInvoke("study", "study:music:rpc:music_settings:set", { show_cover: value });
} catch (e) {
  console.warn("[player] failed saving rpc show_cover", e);
  pendingRpcSettings.show_cover = value; // flush later
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (typeof value !== "boolean") return;

Type guard

function isBool(v: unknown): v is boolean { return typeof v === "boolean"; }

Try / catch

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 }); }

Prevention

When it happens

Trigger: Toggling 'show cover' in Discord RPC settings while the study:music:rpc:music_settings:set backend command rejects (plugin unavailable, write failure, IPC error).

Common situations: Backend plugin not started yet; settings file unwritable; stale build where the settings command was renamed.

Understand the failure class

Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.

Related errors


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/d2abf6bc5c1ac5d6. Report an issue: GitHub.

Appendix: source

Thrown at src/lib/study-music/player-store.svelte.ts:843

    return this._rpcShowCover;
  }

  getRpcShowButtons(): boolean {
    return this._rpcShowButtons;
  }

  getRpcUpdateIntervalMs(): number {
    return this._rpcUpdateIntervalMs;
  }

  async setRpcShowCover(value: boolean) {
    this._rpcShowCover = value;
    try {
      await pluginInvoke("study", "study:music:rpc:music_settings:set", {
        show_cover: value,
      });
    } catch (e) {
      console.warn("[player] failed saving rpc show_cover", e);
    }
    this.rpcOnPlaybackChange();
  }

  async setRpcShowButtons(value: boolean) {
    this._rpcShowButtons = value;
    try {
      await pluginInvoke("study", "study:music:rpc:music_settings:set", {
        show_buttons: value,
      });
    } catch (e) {
      console.warn("[player] failed saving rpc show_buttons", e);
    }
    this.rpcOnPlaybackChange();
  }

  async setRpcUpdateIntervalMs(ms: number) {
    const clamped = MusicPlayerStore.clampRpcInterval(ms);

View on GitHub (pinned to 8600b91f42)