Skip to content

feat: add dismissible privacy banner#836

Open
srinidhi-2006-bit wants to merge 3 commits into
magic-peach:mainfrom
srinidhi-2006-bit:feat/privacy-banner
Open

feat: add dismissible privacy banner#836
srinidhi-2006-bit wants to merge 3 commits into
magic-peach:mainfrom
srinidhi-2006-bit:feat/privacy-banner

Conversation

@srinidhi-2006-bit
Copy link
Copy Markdown
Contributor

Description

Added a dismissible privacy advantage banner above the upload/editor section to highlight that Reframe processes videos fully in-browser using FFmpeg.wasm without uploading files to any server.

Related Issue

Closes #679

Type of Contribution

  • Bug fix
  • New feature
  • Documentation update
  • GSSoC contribution

Participant Info

  • GitHub username: srinidhi-2006-bit
  • Contribution level (Beginner/Intermediate/Advanced): Beginner

Screen Recording

Recording demonstrates:

  • Banner visibility on initial load
  • Dismiss functionality
  • localStorage persistence after refresh
  • Responsive behavior on smaller screens
  • Dark/light theme compatibility

Recording / Loom link:

screen-recording-2026-05-21-105259_xPsdiBm1.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 (required for UI/feature/design changes)

@vercel
Copy link
Copy Markdown

vercel Bot commented May 21, 2026

@srinidhi-2006-bit 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, @srinidhi-2006-bit!

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 gssoc'26 GirlScript Summer of Code 2026 level:intermediate Intermediate level - 35 pts type:bug Bug fix type:design UI/UX design type:docs Documentation type:feature New feature labels May 21, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 21, 2026

✅ PR Format Check Passed — @srinidhi-2006-bit

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.

@srinidhi-2006-bit srinidhi-2006-bit changed the title Feat/privacy banner feat: add dismissible privacy banner May 21, 2026
@magic-peach
Copy link
Copy Markdown
Owner

Hey @srinidhi-2006-bit! The PrivacyBanner component itself looks great — localStorage, 7-day expiry, CSS variable tokens, dismissable. Two issues before this can be merged:

1. Footer removed from page.tsx
The diff removes the <Footer /> import and render. The footer should stay on the page — please keep it in place alongside the new <PrivacyBanner />.

2. Accessibility attributes removed from <main>
The original has id="main-content" tabIndex={-1} on the main element, which is required for the skip-to-content accessibility link. Your diff removes both. Please restore them:

<main id="main-content" tabIndex={-1} className="flex-1">

Fix those two and the PR is ready to merge!

@magic-peach
Copy link
Copy Markdown
Owner

Hey @srinidhi-2006-bit! Thanks for adding the privacy banner — it's a nice feature. However this PR has a few structural issues with src/app/page.tsx that need to be fixed:

Issues in page.tsx:

  1. Removes id="main-content" and tabIndex={-1} from <main> — these are required for the skip-navigation accessibility link in layout.tsx to work. Screen reader users rely on this to jump past the header.

  2. Removes the <Footer /> component — the footer was intentionally there and should not be removed.

  3. The outer <div className="min-h-screen flex flex-col"> wrapper — this is not needed and changes the layout structure.

What to fix:
Please update your diff to only add <PrivacyBanner /> inside the existing <main id="main-content" tabIndex={-1}> — keep everything else in page.tsx exactly as it is in main:

<main id="main-content" tabIndex={-1}>
  <PrivacyBanner />
  <VideoEditor />
</main>

The PrivacyBanner component itself looks great! Just revert the structural changes to page.tsx and this will be ready to merge.

@srinidhi-2006-bit
Copy link
Copy Markdown
Contributor Author

Thanks for the review! I restored the original page structure, brought back the <Footer />, restored the required accessibility attributes on <main>, and kept the PR focused on only adding the PrivacyBanner inside the existing layout.

The build, lint, and type checks are now passing successfully.

Before merging the PR, could you please add the gssoc:approved label so the contribution can be counted under GSSoC'26? Thank you!

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:beginner Beginner level - 20 pts level:intermediate Intermediate level - 35 pts type:bug Bug fix type:design UI/UX design type:docs Documentation type:feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: add a privacy-advantage banner — highlight the 100% local offline benefit

2 participants