fix: podcast failure recovery and retry (1.7.3) (#595)

* fix: surface podcast errors and enable retry for failed episodes

Fixes #335, #300

Re-raise exceptions in podcast command so surreal-commands marks jobs as
failed instead of completed. Surface error_message in API responses and
add a retry endpoint that deletes the failed episode and re-submits the
generation job. Frontend shows error details on failed episodes with a
retry button. Translations added for all 8 locales.

* fix: bump podcast-creator to >= 0.10

Fixes #302

* chore: release 1.7.3 - podcast failure recovery and retry

Bump podcast-creator to >= 0.11.2, disable automatic retries for
podcast generation to prevent duplicate episodes, and bump version
to 1.7.3.

Fixes #211, #218, #185, #355, #300, #302

* fix: resolve TypeScript error in handleRetry return type
This commit is contained in:
Luis Novo 2026-02-17 21:24:57 -03:00 committed by GitHub
parent 96525b4457
commit c666966b8c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 239 additions and 25 deletions

View file

@ -129,6 +129,24 @@ class PodcastEpisode(ObjectModel):
except Exception:
return "unknown"
async def get_job_detail(self) -> dict:
"""Get status and error_message of the associated command"""
if not self.command:
return {"status": None, "error_message": None}
try:
from surreal_commands import get_command_status
status = await get_command_status(str(self.command))
if not status:
return {"status": "unknown", "error_message": None}
return {
"status": status.status,
"error_message": getattr(status, "error_message", None),
}
except Exception:
return {"status": "unknown", "error_message": None}
@field_validator("command", mode="before")
@classmethod
def parse_command(cls, value):