diff --git a/CHANGELOG.md b/CHANGELOG.md index 78496c5..36a7370 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -213,6 +213,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 "Drum Pads" (distinct from the in-strip Kit/Pads toggle); the Mixer tooltip matches the Control Bar's wording; and the create-song year placeholder is current. +- **The replace-audio persistence failure path no longer leaks exception + details or filesystem paths to the client.** The handler now logs the full + traceback server-side via `logging.getLogger("slopsmith.plugin.editor").exception(...)` + and returns a generic `"persist failed — see server logs"` response, matching + the codebase's existing structured-logging convention. + ### Added - **Track regions — import a drum part into an existing project as a placed, diff --git a/plugin.json b/plugin.json index 4a7ed70..671b77e 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "id": "editor", "name": "Arrangement Editor", - "version": "1.8.1", + "version": "1.8.2", "description": "Build and edit feedpak arrangements — import Guitar Pro tabs, sync audio, and tune every note.", "category": "creation", "icon": "assets/thumb.png", diff --git a/routes.py b/routes.py index 8922d0e..37ef3fd 100644 --- a/routes.py +++ b/routes.py @@ -7097,9 +7097,12 @@ async def replace_audio(data: dict): next_step = "none" else: next_step = "save" - except Exception as e: - print(f"[Editor] replace-audio sloppak persist failed: {e}") - return JSONResponse({"error": f"persist failed: {e}"}, 500) + except Exception: + import logging as _elog + _elog.getLogger("slopsmith.plugin.editor").exception( + "replace-audio: sloppak persist failed" + ) + return JSONResponse({"error": "persist failed — see server logs"}, 500) return {"audio_url": audio_url, "persisted": persisted, "next_step": next_step}