mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-10 18:59:56 +00:00
feat(onboarding): amp-sim opt-in choice + use_amp_sims setting (#631)
Second half of feedBack-desktop#46. The desktop app monitors through an
in-app amp-sim/tone chain that, once loaded, auto-restores every launch —
an idle high-gain amp on the input is a constant distorted buzz, and the
dry-only monitor mute can't silence it. This adds the "own-rig first"
opt-in so players using their own external amp/rig never get a processed
monitor in the first place.
Core changes:
- New `use_amp_sims` setting (default OFF / own-rig first): GET default,
POST boolean validation, and resettable key — mirroring achievements_enabled.
- Onboarding wizard: a DESKTOP-ONLY step ("How do you want to hear
yourself?") between instrument paths and the calibration challenge. The
web build has no native amp sims, so the step is skipped there (5 steps
on web, 6 on desktop) — gated on window.feedBackDesktop, dot count and
setStep bounds are derived from it. Ticking "Use in-app amp simulations"
POSTs use_amp_sims; default unticked.
The desktop renderer consumes this setting to gate its saved-tone-chain
restore (feedback-desktop PR, paired).
Verified by booting core locally and walking the wizard with Playwright:
web shows 5 dots/no amp step, desktop shows 6 dots, the amp step is
reachable, calibration stays the final "Play it now" step, ticking the box
persists use_amp_sims=true, and there are no page errors. Server-side
GET default / POST validation / reset confirmed via curl.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
5a0b62599d
commit
8a2175aa1c
@@ -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",
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user