Skip to content

Add audio retention notice and cleanup script docs #89

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

gianpaj
Copy link
Owner

@gianpaj gianpaj commented Jul 6, 2025

Summary

  • document audio cleanup script
  • clarify audio file retention in terms and history page
  • add translation keys for retention policy
  • address linter warnings and type issues

Testing

  • pnpm run lint:fix
  • pnpm run format:write
  • pnpm run type-check
  • pnpm run check-translations

https://chatgpt.com/codex/tasks/task_e_6869772085c4832cadf6e031a6ad2926

@gianpaj gianpaj added the codex label Jul 6, 2025 — with ChatGPT Connector
Copy link

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

Copy link

vercel bot commented Jul 6, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
sexyvoice ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jul 15, 2025 9:47am

Copy link

jazzberry-ai bot commented Jul 6, 2025

Bug Report

Name Severity Example test case Description
Inconsistent Deletion Medium Simulate del(file.storage_key) failing, then verify Supabase record is deleted but blob remains. The delete-old-audio.js script deletes the Supabase record even if del() or redis.del() fails, leading to orphaned blobs.
Missing blobResult Check High Cause put function to fail in generate-voice, observe runtime error when accessing blobResult.url. The generate-voice API accesses blobResult.url without checking if blobResult is defined, leading to a potential runtime error.
Hardcoded Retention Period Low Change the retention period in lib/constants.ts and verify it updates in all relevant locations automatically. The retention period is hardcoded in multiple places, making it difficult to update consistently.

Comments? Email us. This is the last day of your free trial. Subscribe at jazzberry.ai.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @gianpaj, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request primarily focuses on enhancing transparency regarding audio file retention and implementing an automated cleanup mechanism. It introduces a new script to manage the lifecycle of generated audio files by deleting them after a specified period from all relevant storage layers. Additionally, it updates user-facing documentation and the generation history page to clearly communicate this retention policy, alongside general code quality improvements.

Highlights

  • Audio Retention Policy Communication: I've updated the application to clearly communicate the 30-day audio file retention policy to users. This includes adding a notice on the user's generation history page and detailing the policy within the terms and conditions.
  • Automated Audio Cleanup Script: I've introduced a new clean-old-audio script that automates the deletion of generated audio files and their associated metadata from Vercel Blob storage, Redis cache, and the Supabase database after a specified retention period (defaulting to 30 days).
  • Internationalization Support: New translation keys have been added for the audio retention notice, ensuring that this important information is available in multiple languages (English and Spanish in this PR).
  • Code Quality Improvements: I've addressed various linter warnings and type issues across the codebase, improving overall code consistency, maintainability, and robustness.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new cleanup script for old audio files, adds documentation for it, and includes several code quality improvements like better typing and fixing linter warnings. The review focuses on critical correctness and performance issues in the new cleanup script, as well as some opportunities to improve type safety in a few React components. Addressing these points will make the new script reliable and the overall codebase more robust.

Copy link

jazzberry-ai bot commented Jul 6, 2025

Bug Report

Name: Inconsistent handling of soft-deleted audio files in deletion script
Severity: Medium
Example test case:

  1. Create an audio file record in the audio_files table with status = 'active'.
  2. "Soft delete" the audio file by updating its status to deleted.
  3. Run the delete-old-audio.js script with a date range that includes the file's creation date.
    Description:
    The delete-old-audio.js script filters soft-deleted files (status = 'deleted') when deleting from Vercel Blob and Redis. However, it doesn't prevent the soft-deleted files from being processed and removed from the Supabase database. This inconsistency can lead to orphaned records in the database, where the corresponding audio files are no longer available.

Comments? Email us. This is the last day of your free trial. Subscribe at jazzberry.ai.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant