diff --git a/server.py b/server.py index 0bd1791..0dbf258 100644 --- a/server.py +++ b/server.py @@ -5531,6 +5531,15 @@ def _default_settings(): # until the user opts in. Read by the bundled achievements plugin to # gate its wall-sync enqueue. "achievements_enabled": False, + # Amp-sim opt-in (issue feedBack-desktop#46). Whether the desktop app may + # auto-load an in-app amp-sim / tone chain (NAM / IR / VST) for input + # monitoring. Default OFF — "own-rig first": players monitoring through + # their own external amp/rig never get a processed monitor (and never the + # idle distorted buzz) until they opt in. Set during onboarding (desktop + # only) and from the desktop Audio settings toggle; read by the desktop + # renderer to gate its saved-chain restore. Inert on the pure-web build, + # which has no native amp sims. + "use_amp_sims": False, } @@ -5673,6 +5682,12 @@ def save_settings(data: dict): if not isinstance(raw, bool): return {"error": "achievements_enabled must be a boolean"} updates["achievements_enabled"] = raw + if "use_amp_sims" in data: + raw = data["use_amp_sims"] + if raw is not None: + if not isinstance(raw, bool): + return {"error": "use_amp_sims must be a boolean"} + updates["use_amp_sims"] = raw if "miss_penalty" in data: raw = data["miss_penalty"] if raw is not None: @@ -5763,7 +5778,7 @@ _RESETTABLE_SETTINGS_KEYS = frozenset({ "default_arrangement", "demucs_server_url", "master_difficulty", "av_offset_ms", "countdown_before_song", "miss_penalty", "fail_behavior", "reference_pitch", "instrument", "string_count", "tuning", - "achievements_enabled", + "achievements_enabled", "use_amp_sims", }) diff --git a/static/v3/profile.js b/static/v3/profile.js index 60ba4b3..d8e1985 100644 --- a/static/v3/profile.js +++ b/static/v3/profile.js @@ -330,9 +330,16 @@ const editing = !!opts.editing; document.getElementById('v3-onboarding')?.remove(); + // The amp-sim opt-in step (step 5) only exists in the desktop app — the + // pure-web build has no native amp sims to monitor through, so the step + // is skipped there (calibration is the last step at index 5 on web, 6 on + // desktop). See feedBack-desktop#46. + const isDesktop = !!window.feedBackDesktop; + const lastStep = isDesktop ? 6 : 5; + const stepDots = editing ? '' : '
Each path levels up by completing challenges — together they make up your Mastery Rank. You can add more later.
' + '' + - // Step 5 — calibration offer (first-run only). + // Step 5 — amp-sim opt-in (DESKTOP ONLY; default OFF / own-rig first). + // Hidden div is always present in the DOM; setStep only navigates to + // it on desktop. See feedBack-desktop#46. 'fee[dB]ack can run your guitar through built-in amp simulations (NAM / IRs / plugins) so you hear a processed tone. If you already play through your own amp or rig, leave this off — you’ll get clean, silent monitoring and never an idle buzz.
' + + '' + + 'Leave it unticked if you monitor through your own gear. This is off by default.
Prove your setup: play the fee[dB]ack Diagnostic with note detection and finish at 100% accuracy to reach Mastery Rank 1.
' + 'Not ready? Skip it and you’ll start at Rank 1 anyway — you can still play it later from the Progress screen.