Skip to content

release: UX polish fixes to production - #208

Merged
ayoub3bidi merged 5 commits into
mainfrom
develop
Jul 22, 2026
Merged

release: UX polish fixes to production#208
ayoub3bidi merged 5 commits into
mainfrom
develop

Conversation

@ayoub3bidi

Copy link
Copy Markdown
Owner

Contribution workflow

  • Base branch is main: This PR targets main for production release.
  • Guidelines and docs: Followed project conventions and AGENTS.md.
  • This template: Kept the PR template structure.

Description

Merge UX polish fixes from develop into main for production release. Four targeted fixes that improve user experience across authentication, navigation, and landing page.

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • 🎨 Style/UI improvement

Related Issues

Fixes # (addressed via PR #207 review feedback)

Changes Made

  • Auto-close SignInPromptModal after Google sign-in — modal now always dismisses when isAuthenticated becomes true, not just when a gated feature was pending
  • Persist waitlist banner state across sessions — migrated dismissal flag and email from sessionStorage to localStorage with migration fallback; added /pro footer link with i18n support (en/fr/ar)
  • Suppress avatar skeleton flash on landing page — added hideAvatar condition to prevent brief skeleton shimmer when auth state resolves on first load
  • Address CodeRabbit review feedback — replaced motion.button with semantic <Link> for the Pro Plan footer link; added sessionStorage fallback in waitlistService and ProWaitlistBanner when localStorage is unavailable (private browsing, quota exceeded)

Testing

  • All existing tests pass (pnpm test:run)
  • New tests added for new functionality
  • Manual testing completed

Test Results

35 tests passed across Footer, ProWaitlistBanner, waitlistService, UserMenu
All CI checks green on develop (lint, format, test:coverage, build)
Cloudflare Workers deployment successful
Supabase Edge Functions deployment successful

Code Quality

  • Code follows the project coding standards
  • ESLint passes (pnpm lint)
  • No console errors or warnings
  • Code is properly documented with JSDoc (if applicable)

Performance Impact

  • No performance impact

Breaking Changes

  • None

Checklist

  • My code follows the project style guidelines
  • I have performed a self-review of my code
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

Additional Notes

This is a fast-track production release of UX polish fixes that have already been validated on develop. All 4 commits have passed CI and been deployed to dev.bayanflow.com via Cloudflare Workers.

When anonymous users triggered the sign-in modal via gated features
like session_limit, algorithm_lock, or category_controls, the modal
stayed open after successful Google authentication because those
trigger paths did not set pendingFeatureRef.current.

The auto-close effect now unconditionally dismisses the modal when
isAuthenticated becomes true, while still auto-opening the
pending feature (sound, fullscreen, export, code, insight) when
one was set.
…r link

Migrate waitlist banner dismissal and enrollment flags from
sessionStorage to localStorage so they persist across browser
sessions. Users who dismissed the banner or joined the waitlist
will no longer see it reappear after closing the tab.

Also adds a 'Pro Plan' link in the footer bottom bar alongside
Privacy Policy and Terms of Use, giving users a persistent
way to navigate to the /pro page.

- waitlistService: persistWaitlistEmail/readStoredWaitlistEmail
  now use localStorage with sessionStorage migration fallback
- ProWaitlistBanner: dismissal flag reads/writes to localStorage
  with sessionStorage migration fallback
- Footer: new 'Pro Plan' link in bottom bar (en/fr/ar)
- Tests: updated assertions to localStorage, added migration
  fallback tests for both banner and service
When an authenticated user visits the landing page, the auth
hydration window briefly shows a pulsing skeleton circle in the
header before hideAvatar hides it. Adding !hideAvatar to the
skeleton condition prevents this flash on pages that don't
display the avatar.
…fter-auth

fix: three UX polish fixes — modal auto-close, waitlist persistence, skeleton flash
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 575442aa-c29b-47a3-be0a-bab99bc0351e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added style Improve styling, design, and animation tests labels Jul 22, 2026
@ayoub3bidi ayoub3bidi changed the title release: UX polish fixes to production (v0.5.0) release: UX polish fixes to production Jul 22, 2026
@ayoub3bidi
ayoub3bidi merged commit 63f942a into main Jul 22, 2026
29 of 31 checks passed
@codecov

codecov Bot commented Jul 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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

Labels

style Improve styling, design, and animation tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant