Skip to content

feat: add export history panel with re-download support#779

Open
imuniqueshiv wants to merge 2 commits into
magic-peach:mainfrom
imuniqueshiv:feat/676-export-history
Open

feat: add export history panel with re-download support#779
imuniqueshiv wants to merge 2 commits into
magic-peach:mainfrom
imuniqueshiv:feat/676-export-history

Conversation

@imuniqueshiv
Copy link
Copy Markdown
Contributor

Description

Implemented an export history panel that allows users to re-download previous exports during the current browser session.

Changes made

  • Added in-memory exportHistory state inside useVideoEditor.ts

  • Added support for storing up to 5 previous exports

  • Created a new ExportHistory.tsx component

  • Added a collapsible "Recent Exports" panel below the export result section

  • Added metadata display for:

    • filename
    • format
    • file size
    • output dimensions
    • export timestamp
  • Added "Download" button to re-trigger downloads using stored blob URLs

  • Added "Clear History" button

  • Implemented proper blob URL cleanup when:

    • history entries are evicted
    • history is cleared
  • Added session-only history notice:

    • "History is cleared when you close or refresh the page"
  • Updated UI styling to match the existing Reframe design system

Testing

  • Verified old exports remain downloadable after exporting new videos
  • Verified history is limited to 5 entries
  • Verified oldest export is removed automatically
  • Verified "Clear History" removes all entries
  • Verified history resets after page refresh
  • Verified responsive layout on mobile view
  • Verified bun run lint, bunx tsc --noEmit, and bun run build all pass successfully

Fixes #676

Related Issue

Closes #676

Type of Contribution

  • New feature
  • GSSoC contribution

Participant Info

  • GitHub username: imuniqueshiv
  • Contribution level: Intermediate

Screen Recording

Recording / Loom link:

issue_reframe.1.mp4

Checklist

  • I have read the contribution guidelines
  • My changes follow the project structure
  • I have tested my changes in Chrome, Firefox, and Safari
  • bun run lint passes (no ESLint errors)
  • bunx tsc --noEmit passes (no TypeScript errors)
  • New interactive elements have aria-label / accessible names
  • No console.log statements left in
  • This PR is related to a valid issue
  • Screen recording attached above

@vercel
Copy link
Copy Markdown

vercel Bot commented May 20, 2026

@imuniqueshiv is attempting to deploy a commit to the magic-peach1's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions
Copy link
Copy Markdown
Contributor

👋 Thanks for your PR, @imuniqueshiv!

Welcome to Reframe — a browser-based video editor built for everyone 🎬

🟠 GSSoC'26 PR detected — thanks for contributing under GirlScript Summer of Code 2026!

What happens next

  1. 🤖 Automated checks — build & TypeScript typecheck will run automatically
  2. Vercel preview — a preview deployment will be created (requires maintainer authorization for fork PRs)
  3. 👀 Code review — a maintainer will review your changes
  4. 🚀 Merge — once approved, your PR will be merged!

Quick checklist

  • PR title follows Conventional Commits (e.g. feat: add dark mode)
  • Linked the issue this PR closes (e.g. Closes #123)
  • Tested the changes locally (bun run dev)
  • Build passes (bun run build)

Useful links

Happy coding! 🎉

@github-actions github-actions Bot added level:advanced Advanced level - 55 pts type:bug Bug fix type:design UI/UX design type:feature New feature type:refactor Code refactor type:testing Testing labels May 20, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 20, 2026

✅ PR Format Check Passed — @imuniqueshiv

Basic format checks passed. A maintainer will review your code changes.

This does not mean the PR is approved — it just means the format is correct.

@github-actions github-actions Bot added the gssoc'26 GirlScript Summer of Code 2026 label May 20, 2026
@magic-peach
Copy link
Copy Markdown
Owner

@imuniqueshiv please resolve conflicts

@magic-peach magic-peach added the level:intermediate Intermediate level - 35 pts label May 21, 2026
@magic-peach
Copy link
Copy Markdown
Owner

Hey @imuniqueshiv! The ExportHistory component looks great — the design is clean and the UX is solid. However there are two regressions in this PR that need to be fixed before merging:

1. M-key mute shortcut removed

The useEffect handling the M key keyboard shortcut to toggle audio mute was deleted. This was intentional functionality — please restore it or confirm it was moved elsewhere (I don't see it in the diff).

2. Blob URL leak in reset

The reset callback no longer revokes the previous export's blob URL:

-  const reset = useCallback(() => {
-    if (result?.blobUrl) URL.revokeObjectURL(result.blobUrl);
+  const reset = useCallback(() => {
     setFile(null);

This will leak memory on every export-then-reset cycle. Please restore the URL.revokeObjectURL call.

3. Minor: inconsistent indentation in VideoEditor.tsx

The new JSX around DownloadResult and ExportHistory has inconsistent indentation — some lines use 2-space, some use 4-space.

Please fix these and push an update!

@imuniqueshiv imuniqueshiv force-pushed the feat/676-export-history branch from e6751c6 to 3b9263c Compare May 21, 2026 18:00
@imuniqueshiv imuniqueshiv force-pushed the feat/676-export-history branch from 6532a04 to 908cede Compare May 21, 2026 18:41
@imuniqueshiv
Copy link
Copy Markdown
Contributor Author

@magic-peach Thanks for the detailed review! I’ve restored the M-key mute shortcut, added the blob URL cleanup back into reset, cleaned up the JSX indentation around DownloadResult and ExportHistory, and rebased the branch on the latest main. I also verified the export history flow locally after rebasing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc'26 GirlScript Summer of Code 2026 level:advanced Advanced level - 55 pts level:intermediate Intermediate level - 35 pts type:bug Bug fix type:design UI/UX design type:feature New feature type:refactor Code refactor type:testing Testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: export history — show a session list of recent exports with re-download links

2 participants