Skip to content

Perf - Speed up learning plans thumbnails by bypassing Next.js image optimizer#2574

Open
zonetecde wants to merge 663 commits intotestingfrom
perf/learning-plans-imgs-fast-load
Open

Perf - Speed up learning plans thumbnails by bypassing Next.js image optimizer#2574
zonetecde wants to merge 663 commits intotestingfrom
perf/learning-plans-imgs-fast-load

Conversation

@zonetecde
Copy link
Collaborator

@zonetecde zonetecde commented Nov 5, 2025

Summary

The images on the /learning-plans page take time to load because they first go through NextJS’s image optimization service. As a result, the images are re-encoded and fetched, which creates a delay before they appear on screen.

I added the unoptimized parameter to the images on the learning plans page, allowing them to display instantly at the cost of slightly higher bandwidth usage (the images are already very small, only a few dozen kilobytes).

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules
  • I have commented on my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • 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

Screenshots or videos

Before After
image image

Summary by CodeRabbit

  • New Features
    • Added support for optimized image loading in course listings to improve page performance.

zonetecde and others added 30 commits October 21, 2025 15:18
…ronment (#2534)

Show 'Verses about the Sunnah' link only in production environment
* Implement guest course enrollment functionality and enhance user experience

- Added utilities for managing guest user course enrollment, including functions to check enrollment status and enroll guests.
- Updated components to utilize the new guest enrollment logic, ensuring proper logging and user feedback.
- Enhanced the Syllabus, StatusHeader, and CourseFeedback components to handle guest access and enrollment scenarios.
- Introduced integration tests to verify guest enrollment behavior and access control.
- Updated Course type to include  flag for better course management.

* Add .disabledLink styles to Syllabus module for improved accessibility and user interaction

- Introduced styles for .disabledLink to enhance visual feedback for disabled links.
- Added hover and focus states to ensure better user experience and accessibility compliance.

* Refactor course components for improved user feedback and error handling

- Simplified the enrollment success handling in StatusHeader by removing unnecessary try-catch.
- Updated Syllabus component to use .notEnrolledLink for better clarity on user status.
- Enhanced CourseFeedback to redirect users to login without sanitizing the URL.
- Streamlined LessonPage to improve enrollment checks and user notifications.
- Adjusted integration tests to replace waitForTimeout with waitForURL for better reliability.

* Rename .disabledLink to .notEnrolledLink in Syllabus module for improved clarity on user status

* Refactor guest enrollment logic and improve component interactions

- Replaced guest enrollment utilities with Redux-based hooks for better state management.
- Updated components (StatusHeader, CourseFeedback, Syllabus) to utilize new hooks for checking enrollment status and enrolling guests.
- Enhanced user feedback by logging user types during enrollment actions.
- Removed deprecated guest enrollment utility functions to streamline codebase.
- Introduced NotEnrolledNotice component for clearer user notifications regarding enrollment status.
- Adjusted integration tests to reflect changes in guest enrollment handling.

* Update Syllabus styles for improved link visibility and user interaction

* Enhance guest enrollment hooks and improve NotEnrolledNotice component

- Updated useEnrollGuest hook to specify return type for better type safety.
- Simplified NotEnrolledNotice component by removing unnecessary refs and optimizing useEffect for clearer logic.
- Adjusted integration tests to improve reliability and ensure proper URL handling for guest enrollment scenarios.

* Refactor NotEnrolledNotice into LessonPage for improved clarity and functionality

- Merged NotEnrolledNotice component logic directly into LessonPage to streamline user notifications regarding enrollment status.
- Enhanced error handling by utilizing a toast notification for unenrolled users and improved navigation flow.
- Removed the separate NotEnrolledNotice file to reduce complexity and improve maintainability.

* Refactor authentication handling in CourseFeedback and CompleteButton components

* Refactor user type handling in CourseFeedback and CompleteButton components

* Refactor course components for improved user experience and code clarity

- Updated user type handling in CourseFeedback, CompleteButton, and other components to streamline logic and enhance readability.
- Simplified NotEnrolledNotice integration into LessonPage for better user notifications regarding enrollment status.
- Introduced LessonContent component to encapsulate lesson display logic and improve maintainability.
- Enhanced error handling and user feedback mechanisms across various components, ensuring a smoother user experience.

* Add NotEnrolledNotice styles and remove deprecated lessons styles
* Update popup tab design for reflections

* Remove header text from Reflection modal in BottomActionsModals component

* Show ayah conditionally on the page only but no popup

* Refactor ReflectionBodyContainer: Simplify icon usage, enhance reflection view logging, and clean up styles. Remove unnecessary TypeScript ignore comment and adjust tab item selection logic.

* Remove unnecessary useCallback
…es (#2560)

Update verse link regex and tests for triple-digit references
osamasayed and others added 28 commits December 25, 2025 02:20
* Add language names

* Updates
* Add language names

* Updates
* refactor: reorganize ContextMenu component with improved structure and accessibility

* feat: add reading and translation mode icons in solid and outline variants

* refactor: redesign reading preference switcher UI with improved icons and transitions

* feat: add page bookmark functionality to Quran reader context menu

* feat: add page bookmarking functionality with local storage support for logged-out users

* feat: add mobile reading preference tabs with improved UI layout

* feat: redesign context menu with new progress bar and improved styling

* fix: sidebar navigation positioning for home page and quran reader on all devices

* feat: add type prop to ReadingPreferenceSwitcher with SurahHeader value

* docs: add variant prop to ReadingPreferenceSwitcher and update ContextMenu documentation

* docs: add clarifying comments for mobile tabs and tajweed colors visibility

* Update src/components/QuranReader/ContextMenu/components/MobileReadingTabs.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: add error handling and state revalidation for bookmark deletion

* refactor: use getVerseNumberFromKey utility and remove banner height calculations

* refactor: migrate page bookmarks to use local state and add sync support

* refactor: add type safety to bookmark sync and filter collection by bookmark type

* Add type to /all endpoint

* remove PAGE_BOOKMARKS

* explicitly set BookmarkType

* fix: remove unnecessary type assertion in syncUserLocalData call

* QF-2517: surah header (#2438)

* refactor: split ChapterHeader into reusable components for better maintainability

* refactor: redesign chapter header with improved translation UI and layout

* fix: adjust mobile padding and margins for QuranReader and ChapterHeader components

* feat: add bismillah translation for non-Arabic/Urdu languages in chapter header

* fix: remove banner height offset from mobile view styles

* feat: add useIsMobile and useIsClient hooks for SSR-safe responsive detection

* refactor: remove translations from word objects in verse utils

* refactor: rename props and improve type safety in ChapterHeader components

* refactor: simplify PlayChapterAudioButton and consolidate audio button styles

* refactor: remove unused isTranslationSelected prop from ChapterHeader component

* refactor: remove unused selectedTranslations prop from TranslationViewVerse components

* refactor: replace useIsClient hook with isClient util in useIsMobile implementation

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>
* feat: conditionally show bookmark action in page info component based on navbar visibility - QF-2757

* fix: implement debounced navbar visibility and cleanup event listeners

* refactor: extract navbar visibility debouncing into shared hook

* feat: conditionally render navbar based on scroll position

* fix: prevent navbar flickering during reading preference tab switches

* feat: add navigation item type tracking and update last read verse on navigation

* fix: use firstFilteredItem instead of filteredItems array in input submit handler

* refactor: extract scroll restoration logic into reusable hook for translation tabs

* refactor: optimize page bookmarking with SWR and memoization for better performance
* fix: input height inconsistency & password input focus issue

* refactor(login): redesign sign-in/sign-up ui

* feat: update social auth buttons to horizontal layout

* fix(login): correct typo in unified registration text and add loading state

* refactor: add small margin top utility class and apply to submit buttons

* test: update tests & refactor code

* fix: code comment

* refactor: switch to logical properties for directional support

---------

Co-authored-by: zonetecde <zonetecde@gmail.com>
style(auth): update or text color to medium gray
Replace justify-self: center with margin-inline: auto for cross-browser
compatibility. justify-self only works in CSS Grid contexts, but Chrome
has non-standard support for it in other layouts. Safari and Firefox
follow the CSS spec strictly and require margin-inline: auto to center
block elements with a max-width.

Also fix pre-existing stylelint warnings (use logical CSS properties).

Fixes: https://quranfoundation.atlassian.net/browse/QF-3926
…ew of the header (#2709)

Refactor navbar visibility handling in Drawer component

- Update SCSS variables for navbar height and margin adjustments.
- Change visibility state management to lock/unlock navbar visibility when the drawer is opened or closed, improving scroll behavior.
* Add language names

* Updates
* [QF-3666-hooks] add hooks and function related to updating user profile including avatar

* [QF-3666-hooks] Refactor hooks

* [QF-3666-hooks] remove base64 param handling and refactor how cache work

* [QF-3666-hooks] change type to interface

* [QF-3666-hooks] remove unused

* [QF-3666-hooks] fix avatar handling error

* [QF-3666-hooks] add logging and fix profile.json

* [QF-3666-hooks] configure body parse limit

* [QF-3666-hooks] custom error handler for avatar

* [QF-3666] Update user profile

* [QF-3666-hooks] fix image format conversion, api limit and refactor

* [QF-3666-hooks] refactor

* [QF-3666-hooks] put back translationsParams

* [QF-3666] refactor

* [QF-3666] refactor

* [QF-3666] remove unnecessary

* [QF-3666] refactor integration test

* [QF-3675-hooks] add useUpdatePassword hook

* [QF-3675] Update Password UI for Profile Page

* [QF-3666] add test id utils

* [QF-3675] add test

* [QF-3675] reusable wait time in test

* [QF-3675] fix code comments

* [QF-3675] fix test

* [QF-3675] fix password input

* [QF-3675] fix test

* [QF-3667-hooks] add hooks to update email preferences

* [QF-3667] Profile Update - Email Notification Settings

* [QF-3667] add tests

* [QF-3667] fix code comments

* [QF-3668] Edit User Profile - Delete Account

* [QF-3668] fix code comments

* [QF-3668] fix wording in popup

* [QF-3668] fix error merge
attach userId to GA
attach userId to GA
* Add userId to logger

* Fix VerseAndTranslation
attach userId to GA
* Sync UR locales

* Add donation banner (#2693)

---------

Co-authored-by: Mokhtar <rrrokhtar@gmail.com>
* fix: update AppEnv enum to change PRE_LIVE to PRELIVE for consistency (#2551)

* Update QR integration (#2490)

* Update QR integration

* handle comments

* QF-3350 (#2497)

* [QF-3309]: SSO Login and logout support for QR (#2495)

* feat: sso login and logout

* fix: protected logout api call with signature

* chore: env update

* fixed SSO ENABLED check

* Update .env.example

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: changes requested

* update .envv

* minor fixes

* minor fixes

* minor fixes

* minor fixes

* fix: lint and optimization

* minor types adjustment

* minor types adjustment

* fix: enable sso login for email and password

* Update src/pages/auth.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update src/pages/logout.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Fix room's url (#2516)

fix room's url

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains (#2521)

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains

* QF-3354 ref: AuthorInfo component to use centralized AUTHOR_DEFAULT_IMAGE and improve image URL handling with getImageSrc utility function.

* QF-3354 ref: Enhance AuthorInfo component by utilizing useCallback for image error handling and updating getImageSrc utility to accept undefined URLs.

* QF-3354 ref: Update next.config.js to add additional image domains for Facebook integration

* QF-3354 ref: Remove Facebook image domains from next.config.js

* QF-3354 chore: add comments explains the image domains for Google and Facebook OAuth user avatars in next.config.js

* QF-3548 ch: update ayah reflection URL to use verifiedOnly filter instead of feed flag (#2549)

* QDC->QR integration (#2555)

updates

* QF-3435: Fix ayah reference formatting for RTL locales (#2504)

* remove outdated test

* Fix tests

* Fix full-surah reference when from and to is not 0

* Fix navigation to subdomain

* Prod release (#2577)

* fix: update AppEnv enum to change PRE_LIVE to PRELIVE for consistency (#2551)

* Update QR integration (#2490)

* Update QR integration

* handle comments

* QF-3350 (#2497)

* [QF-3309]: SSO Login and logout support for QR (#2495)

* feat: sso login and logout

* fix: protected logout api call with signature

* chore: env update

* fixed SSO ENABLED check

* Update .env.example

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: changes requested

* update .envv

* minor fixes

* minor fixes

* minor fixes

* minor fixes

* fix: lint and optimization

* minor types adjustment

* minor types adjustment

* fix: enable sso login for email and password

* Update src/pages/auth.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update src/pages/logout.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Fix room's url (#2516)

fix room's url

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains (#2521)

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains

* QF-3354 ref: AuthorInfo component to use centralized AUTHOR_DEFAULT_IMAGE and improve image URL handling with getImageSrc utility function.

* QF-3354 ref: Enhance AuthorInfo component by utilizing useCallback for image error handling and updating getImageSrc utility to accept undefined URLs.

* QF-3354 ref: Update next.config.js to add additional image domains for Facebook integration

* QF-3354 ref: Remove Facebook image domains from next.config.js

* QF-3354 chore: add comments explains the image domains for Google and Facebook OAuth user avatars in next.config.js

* QF-3548 ch: update ayah reflection URL to use verifiedOnly filter instead of feed flag (#2549)

* QDC->QR integration (#2555)

updates

* QF-3435: Fix ayah reference formatting for RTL locales (#2504)

* remove outdated test

* Fix tests

* Fix full-surah reference when from and to is not 0

* Fix navigation to subdomain

---------

Co-authored-by: Mokhtar <rrrokhtar@gmail.com>
Co-authored-by: H Ayoob <41894237+mohsinayoob@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>

* Localization POC

* Fix: Prevent word audio playback on popover interactions (#2595)

* feat(ui): add stopPropagation prop to Popover component

Adds an optional  boolean prop to the Popover component,
allowing it to prevent event propagation on click and keydown events when enabled.
This enhances control over event handling in nested components.

* fix(ui): allow tab and escape keys to propagate in popover onkeydown

Improve accessibility by allowing Tab and Escape keys to propagate in the Popover component's onKeyDown handler, while stopping propagation for other keys. This ensures keyboard navigation and dismissal work correctly.

* [QF-3972] Add banner for (The Rescuer: Powerful lessons in Surah Al-Mulk) Learning plan at the end of surah Al-Mulk in urdu  (#2606)

* feat(QuranReader): Enhance LearningPlanBanner for multiple languages

- Updated ChapterControls to display LearningPlanBanner for both English and Urdu languages.
- Refactored LearningPlanBanner to support language-specific configurations, including dynamic URLs and images based on the selected language.
- Removed the deprecated getLearningPlanBannerUrl function from navigation utilities.

* fix(QuranReader): Add null check for language configuration in LearningPlanBanner

- Implemented a null check for the language configuration in LearningPlanBanner to prevent rendering issues when an unsupported language is selected. This ensures that the component returns null if the configuration is not found, enhancing stability and user experience.

* [QF-3972] Add banner for (The Rescuer: Powerful lessons in Surah Al-Mulk) Learning plan at the end of surah Al-Mulk in urdu  (#2606)

* feat(QuranReader): Enhance LearningPlanBanner for multiple languages

- Updated ChapterControls to display LearningPlanBanner for both English and Urdu languages.
- Refactored LearningPlanBanner to support language-specific configurations, including dynamic URLs and images based on the selected language.
- Removed the deprecated getLearningPlanBannerUrl function from navigation utilities.

* fix(QuranReader): Add null check for language configuration in LearningPlanBanner

- Implemented a null check for the language configuration in LearningPlanBanner to prevent rendering issues when an unsupported language is selected. This ensures that the component returns null if the configuration is not found, enhancing stability and user experience.

* Sync locales

* Sync locales

* Fixed typo on about us page

* Fixed typo on about us page

* Fix onboarding modal (Spanish & Kiswahili) (#2591)

* fixed the Spanish onboarding modal that was causing the website to crash

* fixed Kiswahili too (same problem)

---------

Co-authored-by: Test User <test@example.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Fix onboarding modal (Spanish & Kiswahili) (#2591)

* fixed the Spanish onboarding modal that was causing the website to crash

* fixed Kiswahili too (same problem)

---------

Co-authored-by: Test User <test@example.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* feat(notifications): Filter notification preferences by QDC tag (#2596)

* feat(notifications): add QDC tag filtering for notification categories

Filter notification preferences to include only those with the QDC tag, excluding marketing and QR-tagged workflows. Also fixed a typo in the comment.

* feat(notifications): add QR tag support in category grouping

Update the notification categories settings to include QR tag filtering,
ensuring workflows with only marker tags (QDC/QR) are grouped under 'uncategorized'.
This extends the existing QDC tag logic to handle QR tags consistently.

* Prod release (#2613)

* [QF-3542] Daily ayah pushed down o be above the community section and under explore topics (#2540)

* Daily ayah pushed down o be above the community section and under explore topics. Add 'quran-in-year-verse-title' translations for multiple languages and enhance TranslationText component to display chapter references. Introduce useChapter hook for fetching chapter data.

* Refactor TranslationText and VerseAndTranslation components for improved data handling and UI. Update useChapter hook to include loading state and enhance error handling. Adjust styles in VerseText module for better presentation.

* Add shouldShowTitle prop to PlainVerseText component and conditionally render title

* Enhance TranslationText component with Next.js Link for chapter references, improve error handling in VerseAndTranslation by using optional chaining, and update SCSS comments for clarity. Add JSDoc documentation to useChapter hook for better understanding of its functionality.

* Refactor VerseAndTranslation component to improve error handling and add detailed JSDoc documentation. Enhance useChapter hook with loading state and revalidation capabilities. Update verse reference handling to use getVerseUrl for improved URL generation.

* Update TranslationText component to use HTML entities for quotes, simplify mutate function in VerseAndTranslation, and enhance useChapter hook with TypeScript typing for mutate function.

* Refactor TranslationText and VerseAndTranslation components to utilize getVerseUrl for chapter references, enhancing URL generation consistency. Remove redundant import of getVerseUrl in VerseAndTranslation.

* Enhance TranslationText component to conditionally render text with click handling when chapter name and reference are not available, improving user interaction and display logic.

* Remove 'quran-in-year-verse-title' translations from multiple language JSON files and enhance QuranInYearSection component to conditionally display title and reference, improving user experience and consistency across translations.

* Refactor TranslationAndReference component to improve accessibility by separating click handling from the main div, enhancing user interaction while maintaining existing functionality.

* Refactor TranslationAndReference by updating click handling logic and enhancing aria-label attributes for better screen reader support.

* Refactor QuranInYearSection to use localized title text and introduce FootnoteAndSubFootnote component for improved footnote handling

* Fix direction in the TranslationAndReference

* Update surah name, chapter and verse number to use english

* Use chaptersData from static props

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Sync locales

---------

Co-authored-by: afifvdin <afifudin.fdn@gmail.com>

* Prod release (#2613)

* [QF-3542] Daily ayah pushed down o be above the community section and under explore topics (#2540)

* Daily ayah pushed down o be above the community section and under explore topics. Add 'quran-in-year-verse-title' translations for multiple languages and enhance TranslationText component to display chapter references. Introduce useChapter hook for fetching chapter data.

* Refactor TranslationText and VerseAndTranslation components for improved data handling and UI. Update useChapter hook to include loading state and enhance error handling. Adjust styles in VerseText module for better presentation.

* Add shouldShowTitle prop to PlainVerseText component and conditionally render title

* Enhance TranslationText component with Next.js Link for chapter references, improve error handling in VerseAndTranslation by using optional chaining, and update SCSS comments for clarity. Add JSDoc documentation to useChapter hook for better understanding of its functionality.

* Refactor VerseAndTranslation component to improve error handling and add detailed JSDoc documentation. Enhance useChapter hook with loading state and revalidation capabilities. Update verse reference handling to use getVerseUrl for improved URL generation.

* Update TranslationText component to use HTML entities for quotes, simplify mutate function in VerseAndTranslation, and enhance useChapter hook with TypeScript typing for mutate function.

* Refactor TranslationText and VerseAndTranslation components to utilize getVerseUrl for chapter references, enhancing URL generation consistency. Remove redundant import of getVerseUrl in VerseAndTranslation.

* Enhance TranslationText component to conditionally render text with click handling when chapter name and reference are not available, improving user interaction and display logic.

* Remove 'quran-in-year-verse-title' translations from multiple language JSON files and enhance QuranInYearSection component to conditionally display title and reference, improving user experience and consistency across translations.

* Refactor TranslationAndReference component to improve accessibility by separating click handling from the main div, enhancing user interaction while maintaining existing functionality.

* Refactor TranslationAndReference by updating click handling logic and enhancing aria-label attributes for better screen reader support.

* Refactor QuranInYearSection to use localized title text and introduce FootnoteAndSubFootnote component for improved footnote handling

* Fix direction in the TranslationAndReference

* Update surah name, chapter and verse number to use english

* Use chaptersData from static props

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Sync locales

---------

Co-authored-by: afifvdin <afifudin.fdn@gmail.com>

* Made Collection's verses expanded by default (#2615)

changed isOpen to true by default

* Made Collection's verses expanded by default (#2615)

changed isOpen to true by default

* Production release (#2624)

* QF-4026 - Change the LP view on the homepage  (#2616)

* Changed the style of the learning plans on the homepage to show only the image

* fixed rtl view for "enrolled" badge

* fixed rtl view for "enrolled" badge

* applied copilot suggestions

* added 'new' pill based on the 'enrolled' pill

* added completed pill

* Updated LP Card size on mobile (#2621)

* updated card size on mobile

* fixeda size

* Qf 3200 explore topics section scrollable horizontally (#2528)

* feat: ensure horizontal scrolling in ExploreTopicsSection

* test: add Playwright test for horizontal scroll in ExploreTopicsSection

* fix: improve error handling and RTL clarity in scroll test

- Add explicit error handling for missing scrollable container
- Rename scrollRightAndWait to scrollByAndWait for RTL clarity
- Add JSDoc explaining RTL behavior and fallback strategy

* refactor: improve scroll test helper and fix CSS formatting

- Consolidate RTL fallback logic in scrollByAndWait helper
- Encapsulate forward/reverse scroll attempts with identical polling
- Simplify test to single scrollByAndWait call
- Fix scrollbar CSS formatting inconsistencies
- Remove deprecated -webkit-overflow-scrolling property

---------

Co-authored-by: Rayane Staszewski <56195432+zonetecde@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>

* Production release (#2624)

* QF-4026 - Change the LP view on the homepage  (#2616)

* Changed the style of the learning plans on the homepage to show only the image

* fixed rtl view for "enrolled" badge

* fixed rtl view for "enrolled" badge

* applied copilot suggestions

* added 'new' pill based on the 'enrolled' pill

* added completed pill

* Updated LP Card size on mobile (#2621)

* updated card size on mobile

* fixeda size

* Qf 3200 explore topics section scrollable horizontally (#2528)

* feat: ensure horizontal scrolling in ExploreTopicsSection

* test: add Playwright test for horizontal scroll in ExploreTopicsSection

* fix: improve error handling and RTL clarity in scroll test

- Add explicit error handling for missing scrollable container
- Rename scrollRightAndWait to scrollByAndWait for RTL clarity
- Add JSDoc explaining RTL behavior and fallback strategy

* refactor: improve scroll test helper and fix CSS formatting

- Consolidate RTL fallback logic in scrollByAndWait helper
- Encapsulate forward/reverse scroll attempts with identical polling
- Simplify test to single scrollByAndWait call
- Fix scrollbar CSS formatting inconsistencies
- Remove deprecated -webkit-overflow-scrolling property

---------

Co-authored-by: Rayane Staszewski <56195432+zonetecde@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>

* Enhance ExploreTopicsSection styling for better layout and scrolling … (#2541)

Enhance ExploreTopicsSection styling for better layout and scrolling behavior

* Enhance ExploreTopicsSection styling for better layout and scrolling … (#2541)

Enhance ExploreTopicsSection styling for better layout and scrolling behavior

* QF-3590: Update PopularButton and ChapterCard styles for improved responsivene and RTL support (#2558)

* Update PopularButton and ChapterCard styles for improved responsiveness and RTL support

* Update HeroButtons styles to enforce nowrap text wrapping for better layout consistency

* Update PopularButton styles to set fixed widths for improved layout on different screen sizes

* Remove extra newline in PopularButton styles

* Remove unnecessary whitespace in PopularButton styles for cleaner code

* Implement PopularDropdown component and integrate it into HomePageHero; refactor PopularButton to accept onClick prop for dropdown handling

* Remove PopularButton styles as part of the component refactor; streamline codebase by eliminating unused SCSS file.

* QF 3724 (#2580)

* feat(pages): add Arabic version of What is Ramadan page

Introduce Arabic localization for the What is Ramadan page, including a new React component (WhatIsRamadanArabic.tsx) and corresponding SCSS styles. Update the main index.tsx to conditionally render the Arabic content based on language selection. Also, enhance contentPage.module.scss to style the strong tag alongside b for better text formatting.

* feat(pages): add Arabic version of About the Quran page

- Add AboutTheQuranArabic component with Arabic content
- Update index.tsx to conditionally render Arabic version based on language
- Modify styles for better Arabic support in both About the Quran and What is Ramadan pages
- Include call-to-action button in Arabic Ramadan page for consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>

* [QF-3112] remove 3rd bullet from access-anywhere section (#2571)

fix(notes): remove 3rd bullet from access-anywhere section

* QF-4028 - Change order of the sections on QDC homepage for guest user in responsive view  (#2622)

* changed order of the sections on homepage for guest user in responsive view

* changed a logic

* QF-2082 - Hide the navigation drawer when not on Quran reading pages. (#2546)

* Add apps-portal

* Add MTF banner

* Update developers page

* Added mobile apps for qdc to Quran App Portal (#2654)

* Added mobile apps for qdc

* Optimize images

* Add localization

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Added mobile apps for qdc to Quran App Portal (#2654)

* Added mobile apps for qdc

* Optimize images

* Add localization

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Remove Quran Meet

* Remove Quran Meet

* Fix: Page number tracking in Reading and Translation modes (#2648)

* fix(quran-reader): update page number tracking in translation view

Refactor useSyncChapterPage hook to directly use initial verse data for immediate page and hizb updates on navigation, removing unnecessary props from TranslationPageVerse component. This ensures accurate page number display without relying on scrolling or external lookups.

* fix: add null guard for verseKey in intersection observer callback

Prevent runtime error when observed element lacks data-verse-key attribute.

* fix: add missing pageNumber and hizbNumber props to ChapterHeader

The ChapterHeader component requires pageNumber and hizbNumber props
for data attributes used by the intersection observer.

* feat(notifications): Filter notification preferences by QDC tag (#2596)

* feat(notifications): add QDC tag filtering for notification categories

Filter notification preferences to include only those with the QDC tag, excluding marketing and QR-tagged workflows. Also fixed a typo in the comment.

* feat(notifications): add QR tag support in category grouping

Update the notification categories settings to include QR tag filtering,
ensuring workflows with only marker tags (QDC/QR) are grouped under 'uncategorized'.
This extends the existing QDC tag logic to handle QR tags consistently.

* Remove MTF banner (#2672)

* QF-4028 - Change order of the sections on QDC homepage for guest user in responsive view  (#2622)

* changed order of the sections on homepage for guest user in responsive view

* changed a logic

* QF-3590: Update PopularButton and ChapterCard styles for improved responsivene and RTL support (#2558)

* Update PopularButton and ChapterCard styles for improved responsiveness and RTL support

* Update HeroButtons styles to enforce nowrap text wrapping for better layout consistency

* Update PopularButton styles to set fixed widths for improved layout on different screen sizes

* Remove extra newline in PopularButton styles

* Remove unnecessary whitespace in PopularButton styles for cleaner code

* Implement PopularDropdown component and integrate it into HomePageHero; refactor PopularButton to accept onClick prop for dropdown handling

* Remove PopularButton styles as part of the component refactor; streamline codebase by eliminating unused SCSS file.

* QF-2082 - Hide the navigation drawer when not on Quran reading pages. (#2546)

Signed-off-by: Mohammed Mokhtar <rrrokhtar@gmail.com>

* sentry: don't send hydration errors (#2655)

* Revert "QF-2082 - Hide the navigation drawer when not on Quran reading pages. (#2546)"

This reverts commit bab7d83.

* Open Apps Portal in new tab from Developers page (#2682)

- Open the Apps Portal link in a new browser tab to avoid
navigating users away from the Developers page.

- This improves the developer experience by keeping the
current context intact while exploring available apps.

navigating users away from the Developers page.

This improves the developer experience by keeping the
current context intact while exploring available apps.
.tsx

* Open Apps Portal in new tab from Developers page (#2682)

- Open the Apps Portal link in a new browser tab to avoid
navigating users away from the Developers page.

- This improves the developer experience by keeping the
current context intact while exploring available apps.

navigating users away from the Developers page.

This improves the developer experience by keeping the
current context intact while exploring available apps.
.tsx

* Rukn production (#2688)

* course.{MainDetails,LessonView}: add shouldUseMilkdown check (#2507)

* course.{MainDetails,LessonView}: add shouldUseMilkdown check

* course.{MainDetails,LessonView} shouldUseMilkdown check: add comment

* Course.{LessonView,MainDetails}: add p + p margins (#2623)

---------

Co-authored-by: mustafa0x <mustafa.0x@gmail.com>

* Sync UR locales

* Sync UR locales

* Add donation banner (#2693)

---------

Signed-off-by: Mohammed Mokhtar <rrrokhtar@gmail.com>
Co-authored-by: Mokhtar <rrrokhtar@gmail.com>
Co-authored-by: H Ayoob <41894237+mohsinayoob@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>
Co-authored-by: Ahmed Hussein <ahmedhussein.developer@gmail.com>
Co-authored-by: zonetecde <zonetecde@gmail.com>
Co-authored-by: Rayane Staszewski <56195432+zonetecde@users.noreply.github.com>
Co-authored-by: Test User <test@example.com>
Co-authored-by: afifvdin <afifudin.fdn@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Al Imam <alimam01828@gmail.com>
Co-authored-by: Basit Minhas <basit3407@gmail.com>
Co-authored-by: mustafa0x <mustafa.0x@gmail.com>
* fix: update AppEnv enum to change PRE_LIVE to PRELIVE for consistency (#2551)

* Update QR integration (#2490)

* Update QR integration

* handle comments

* QF-3350 (#2497)

* [QF-3309]: SSO Login and logout support for QR (#2495)

* feat: sso login and logout

* fix: protected logout api call with signature

* chore: env update

* fixed SSO ENABLED check

* Update .env.example

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: changes requested

* update .envv

* minor fixes

* minor fixes

* minor fixes

* minor fixes

* fix: lint and optimization

* minor types adjustment

* minor types adjustment

* fix: enable sso login for email and password

* Update src/pages/auth.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update src/pages/logout.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Fix room's url (#2516)

fix room's url

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains (#2521)

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains

* QF-3354 ref: AuthorInfo component to use centralized AUTHOR_DEFAULT_IMAGE and improve image URL handling with getImageSrc utility function.

* QF-3354 ref: Enhance AuthorInfo component by utilizing useCallback for image error handling and updating getImageSrc utility to accept undefined URLs.

* QF-3354 ref: Update next.config.js to add additional image domains for Facebook integration

* QF-3354 ref: Remove Facebook image domains from next.config.js

* QF-3354 chore: add comments explains the image domains for Google and Facebook OAuth user avatars in next.config.js

* QF-3548 ch: update ayah reflection URL to use verifiedOnly filter instead of feed flag (#2549)

* QDC->QR integration (#2555)

updates

* QF-3435: Fix ayah reference formatting for RTL locales (#2504)

* remove outdated test

* Fix tests

* Fix full-surah reference when from and to is not 0

* Fix navigation to subdomain

* QF-3590: Update PopularButton and ChapterCard styles for improved responsivene and RTL support (#2558)

* Update PopularButton and ChapterCard styles for improved responsiveness and RTL support

* Update HeroButtons styles to enforce nowrap text wrapping for better layout consistency

* Update PopularButton styles to set fixed widths for improved layout on different screen sizes

* Remove extra newline in PopularButton styles

* Remove unnecessary whitespace in PopularButton styles for cleaner code

* Implement PopularDropdown component and integrate it into HomePageHero; refactor PopularButton to accept onClick prop for dropdown handling

* Remove PopularButton styles as part of the component refactor; streamline codebase by eliminating unused SCSS file.

* Prod release (#2577)

* fix: update AppEnv enum to change PRE_LIVE to PRELIVE for consistency (#2551)

* Update QR integration (#2490)

* Update QR integration

* handle comments

* QF-3350 (#2497)

* [QF-3309]: SSO Login and logout support for QR (#2495)

* feat: sso login and logout

* fix: protected logout api call with signature

* chore: env update

* fixed SSO ENABLED check

* Update .env.example

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: changes requested

* update .envv

* minor fixes

* minor fixes

* minor fixes

* minor fixes

* fix: lint and optimization

* minor types adjustment

* minor types adjustment

* fix: enable sso login for email and password

* Update src/pages/auth.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update src/pages/logout.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Fix room's url (#2516)

fix room's url

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains (#2521)

* QF-3354 ref: AuthorInfo component with image error handling and update next.config.js for additional image domains

* QF-3354 ref: AuthorInfo component to use centralized AUTHOR_DEFAULT_IMAGE and improve image URL handling with getImageSrc utility function.

* QF-3354 ref: Enhance AuthorInfo component by utilizing useCallback for image error handling and updating getImageSrc utility to accept undefined URLs.

* QF-3354 ref: Update next.config.js to add additional image domains for Facebook integration

* QF-3354 ref: Remove Facebook image domains from next.config.js

* QF-3354 chore: add comments explains the image domains for Google and Facebook OAuth user avatars in next.config.js

* QF-3548 ch: update ayah reflection URL to use verifiedOnly filter instead of feed flag (#2549)

* QDC->QR integration (#2555)

updates

* QF-3435: Fix ayah reference formatting for RTL locales (#2504)

* remove outdated test

* Fix tests

* Fix full-surah reference when from and to is not 0

* Fix navigation to subdomain

---------

Co-authored-by: Mokhtar <rrrokhtar@gmail.com>
Co-authored-by: H Ayoob <41894237+mohsinayoob@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>

* Localization POC

* Fix: Prevent word audio playback on popover interactions (#2595)

* feat(ui): add stopPropagation prop to Popover component

Adds an optional  boolean prop to the Popover component,
allowing it to prevent event propagation on click and keydown events when enabled.
This enhances control over event handling in nested components.

* fix(ui): allow tab and escape keys to propagate in popover onkeydown

Improve accessibility by allowing Tab and Escape keys to propagate in the Popover component's onKeyDown handler, while stopping propagation for other keys. This ensures keyboard navigation and dismissal work correctly.

* [QF-3972] Add banner for (The Rescuer: Powerful lessons in Surah Al-Mulk) Learning plan at the end of surah Al-Mulk in urdu  (#2606)

* feat(QuranReader): Enhance LearningPlanBanner for multiple languages

- Updated ChapterControls to display LearningPlanBanner for both English and Urdu languages.
- Refactored LearningPlanBanner to support language-specific configurations, including dynamic URLs and images based on the selected language.
- Removed the deprecated getLearningPlanBannerUrl function from navigation utilities.

* fix(QuranReader): Add null check for language configuration in LearningPlanBanner

- Implemented a null check for the language configuration in LearningPlanBanner to prevent rendering issues when an unsupported language is selected. This ensures that the component returns null if the configuration is not found, enhancing stability and user experience.

* [QF-3972] Add banner for (The Rescuer: Powerful lessons in Surah Al-Mulk) Learning plan at the end of surah Al-Mulk in urdu  (#2606)

* feat(QuranReader): Enhance LearningPlanBanner for multiple languages

- Updated ChapterControls to display LearningPlanBanner for both English and Urdu languages.
- Refactored LearningPlanBanner to support language-specific configurations, including dynamic URLs and images based on the selected language.
- Removed the deprecated getLearningPlanBannerUrl function from navigation utilities.

* fix(QuranReader): Add null check for language configuration in LearningPlanBanner

- Implemented a null check for the language configuration in LearningPlanBanner to prevent rendering issues when an unsupported language is selected. This ensures that the component returns null if the configuration is not found, enhancing stability and user experience.

* [QF-3972] Add banner for (The Rescuer: Powerful lessons in Surah Al-Mulk) Learning plan at the end of surah Al-Mulk in urdu  (#2606)

* feat(QuranReader): Enhance LearningPlanBanner for multiple languages

- Updated ChapterControls to display LearningPlanBanner for both English and Urdu languages.
- Refactored LearningPlanBanner to support language-specific configurations, including dynamic URLs and images based on the selected language.
- Removed the deprecated getLearningPlanBannerUrl function from navigation utilities.

* fix(QuranReader): Add null check for language configuration in LearningPlanBanner

- Implemented a null check for the language configuration in LearningPlanBanner to prevent rendering issues when an unsupported language is selected. This ensures that the component returns null if the configuration is not found, enhancing stability and user experience.

* feat(notifications): Filter notification preferences by QDC tag (#2596)

* feat(notifications): add QDC tag filtering for notification categories

Filter notification preferences to include only those with the QDC tag, excluding marketing and QR-tagged workflows. Also fixed a typo in the comment.

* feat(notifications): add QR tag support in category grouping

Update the notification categories settings to include QR tag filtering,
ensuring workflows with only marker tags (QDC/QR) are grouped under 'uncategorized'.
This extends the existing QDC tag logic to handle QR tags consistently.

* Sync locales

* Sync locales

* Sync locales

* Fixed typo on about us page

* Fixed typo on about us page

* Fixed typo on about us page

* Fix onboarding modal (Spanish & Kiswahili) (#2591)

* fixed the Spanish onboarding modal that was causing the website to crash

* fixed Kiswahili too (same problem)

---------

Co-authored-by: Test User <test@example.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Fix onboarding modal (Spanish & Kiswahili) (#2591)

* fixed the Spanish onboarding modal that was causing the website to crash

* fixed Kiswahili too (same problem)

---------

Co-authored-by: Test User <test@example.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Fix onboarding modal (Spanish & Kiswahili) (#2591)

* fixed the Spanish onboarding modal that was causing the website to crash

* fixed Kiswahili too (same problem)

---------

Co-authored-by: Test User <test@example.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* feat(notifications): Filter notification preferences by QDC tag (#2596)

* feat(notifications): add QDC tag filtering for notification categories

Filter notification preferences to include only those with the QDC tag, excluding marketing and QR-tagged workflows. Also fixed a typo in the comment.

* feat(notifications): add QR tag support in category grouping

Update the notification categories settings to include QR tag filtering,
ensuring workflows with only marker tags (QDC/QR) are grouped under 'uncategorized'.
This extends the existing QDC tag logic to handle QR tags consistently.

* Prod release (#2613)

* [QF-3542] Daily ayah pushed down o be above the community section and under explore topics (#2540)

* Daily ayah pushed down o be above the community section and under explore topics. Add 'quran-in-year-verse-title' translations for multiple languages and enhance TranslationText component to display chapter references. Introduce useChapter hook for fetching chapter data.

* Refactor TranslationText and VerseAndTranslation components for improved data handling and UI. Update useChapter hook to include loading state and enhance error handling. Adjust styles in VerseText module for better presentation.

* Add shouldShowTitle prop to PlainVerseText component and conditionally render title

* Enhance TranslationText component with Next.js Link for chapter references, improve error handling in VerseAndTranslation by using optional chaining, and update SCSS comments for clarity. Add JSDoc documentation to useChapter hook for better understanding of its functionality.

* Refactor VerseAndTranslation component to improve error handling and add detailed JSDoc documentation. Enhance useChapter hook with loading state and revalidation capabilities. Update verse reference handling to use getVerseUrl for improved URL generation.

* Update TranslationText component to use HTML entities for quotes, simplify mutate function in VerseAndTranslation, and enhance useChapter hook with TypeScript typing for mutate function.

* Refactor TranslationText and VerseAndTranslation components to utilize getVerseUrl for chapter references, enhancing URL generation consistency. Remove redundant import of getVerseUrl in VerseAndTranslation.

* Enhance TranslationText component to conditionally render text with click handling when chapter name and reference are not available, improving user interaction and display logic.

* Remove 'quran-in-year-verse-title' translations from multiple language JSON files and enhance QuranInYearSection component to conditionally display title and reference, improving user experience and consistency across translations.

* Refactor TranslationAndReference component to improve accessibility by separating click handling from the main div, enhancing user interaction while maintaining existing functionality.

* Refactor TranslationAndReference by updating click handling logic and enhancing aria-label attributes for better screen reader support.

* Refactor QuranInYearSection to use localized title text and introduce FootnoteAndSubFootnote component for improved footnote handling

* Fix direction in the TranslationAndReference

* Update surah name, chapter and verse number to use english

* Use chaptersData from static props

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Sync locales

---------

Co-authored-by: afifvdin <afifudin.fdn@gmail.com>

* Prod release (#2613)

* [QF-3542] Daily ayah pushed down o be above the community section and under explore topics (#2540)

* Daily ayah pushed down o be above the community section and under explore topics. Add 'quran-in-year-verse-title' translations for multiple languages and enhance TranslationText component to display chapter references. Introduce useChapter hook for fetching chapter data.

* Refactor TranslationText and VerseAndTranslation components for improved data handling and UI. Update useChapter hook to include loading state and enhance error handling. Adjust styles in VerseText module for better presentation.

* Add shouldShowTitle prop to PlainVerseText component and conditionally render title

* Enhance TranslationText component with Next.js Link for chapter references, improve error handling in VerseAndTranslation by using optional chaining, and update SCSS comments for clarity. Add JSDoc documentation to useChapter hook for better understanding of its functionality.

* Refactor VerseAndTranslation component to improve error handling and add detailed JSDoc documentation. Enhance useChapter hook with loading state and revalidation capabilities. Update verse reference handling to use getVerseUrl for improved URL generation.

* Update TranslationText component to use HTML entities for quotes, simplify mutate function in VerseAndTranslation, and enhance useChapter hook with TypeScript typing for mutate function.

* Refactor TranslationText and VerseAndTranslation components to utilize getVerseUrl for chapter references, enhancing URL generation consistency. Remove redundant import of getVerseUrl in VerseAndTranslation.

* Enhance TranslationText component to conditionally render text with click handling when chapter name and reference are not available, improving user interaction and display logic.

* Remove 'quran-in-year-verse-title' translations from multiple language JSON files and enhance QuranInYearSection component to conditionally display title and reference, improving user experience and consistency across translations.

* Refactor TranslationAndReference component to improve accessibility by separating click handling from the main div, enhancing user interaction while maintaining existing functionality.

* Refactor TranslationAndReference by updating click handling logic and enhancing aria-label attributes for better screen reader support.

* Refactor QuranInYearSection to use localized title text and introduce FootnoteAndSubFootnote component for improved footnote handling

* Fix direction in the TranslationAndReference

* Update surah name, chapter and verse number to use english

* Use chaptersData from static props

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Sync locales

---------

Co-authored-by: afifvdin <afifudin.fdn@gmail.com>

* Prod release (#2613)

* [QF-3542] Daily ayah pushed down o be above the community section and under explore topics (#2540)

* Daily ayah pushed down o be above the community section and under explore topics. Add 'quran-in-year-verse-title' translations for multiple languages and enhance TranslationText component to display chapter references. Introduce useChapter hook for fetching chapter data.

* Refactor TranslationText and VerseAndTranslation components for improved data handling and UI. Update useChapter hook to include loading state and enhance error handling. Adjust styles in VerseText module for better presentation.

* Add shouldShowTitle prop to PlainVerseText component and conditionally render title

* Enhance TranslationText component with Next.js Link for chapter references, improve error handling in VerseAndTranslation by using optional chaining, and update SCSS comments for clarity. Add JSDoc documentation to useChapter hook for better understanding of its functionality.

* Refactor VerseAndTranslation component to improve error handling and add detailed JSDoc documentation. Enhance useChapter hook with loading state and revalidation capabilities. Update verse reference handling to use getVerseUrl for improved URL generation.

* Update TranslationText component to use HTML entities for quotes, simplify mutate function in VerseAndTranslation, and enhance useChapter hook with TypeScript typing for mutate function.

* Refactor TranslationText and VerseAndTranslation components to utilize getVerseUrl for chapter references, enhancing URL generation consistency. Remove redundant import of getVerseUrl in VerseAndTranslation.

* Enhance TranslationText component to conditionally render text with click handling when chapter name and reference are not available, improving user interaction and display logic.

* Remove 'quran-in-year-verse-title' translations from multiple language JSON files and enhance QuranInYearSection component to conditionally display title and reference, improving user experience and consistency across translations.

* Refactor TranslationAndReference component to improve accessibility by separating click handling from the main div, enhancing user interaction while maintaining existing functionality.

* Refactor TranslationAndReference by updating click handling logic and enhancing aria-label attributes for better screen reader support.

* Refactor QuranInYearSection to use localized title text and introduce FootnoteAndSubFootnote component for improved footnote handling

* Fix direction in the TranslationAndReference

* Update surah name, chapter and verse number to use english

* Use chaptersData from static props

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Sync locales

---------

Co-authored-by: afifvdin <afifudin.fdn@gmail.com>

* Made Collection's verses expanded by default (#2615)

changed isOpen to true by default

* Made Collection's verses expanded by default (#2615)

changed isOpen to true by default

* Made Collection's verses expanded by default (#2615)

changed isOpen to true by default

* Production release (#2624)

* QF-4026 - Change the LP view on the homepage  (#2616)

* Changed the style of the learning plans on the homepage to show only the image

* fixed rtl view for "enrolled" badge

* fixed rtl view for "enrolled" badge

* applied copilot suggestions

* added 'new' pill based on the 'enrolled' pill

* added completed pill

* Updated LP Card size on mobile (#2621)

* updated card size on mobile

* fixeda size

* Qf 3200 explore topics section scrollable horizontally (#2528)

* feat: ensure horizontal scrolling in ExploreTopicsSection

* test: add Playwright test for horizontal scroll in ExploreTopicsSection

* fix: improve error handling and RTL clarity in scroll test

- Add explicit error handling for missing scrollable container
- Rename scrollRightAndWait to scrollByAndWait for RTL clarity
- Add JSDoc explaining RTL behavior and fallback strategy

* refactor: improve scroll test helper and fix CSS formatting

- Consolidate RTL fallback logic in scrollByAndWait helper
- Encapsulate forward/reverse scroll attempts with identical polling
- Simplify test to single scrollByAndWait call
- Fix scrollbar CSS formatting inconsistencies
- Remove deprecated -webkit-overflow-scrolling property

---------

Co-authored-by: Rayane Staszewski <56195432+zonetecde@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>

* Production release (#2624)

* QF-4026 - Change the LP view on the homepage  (#2616)

* Changed the style of the learning plans on the homepage to show only the image

* fixed rtl view for "enrolled" badge

* fixed rtl view for "enrolled" badge

* applied copilot suggestions

* added 'new' pill based on the 'enrolled' pill

* added completed pill

* Updated LP Card size on mobile (#2621)

* updated card size on mobile

* fixeda size

* Qf 3200 explore topics section scrollable horizontally (#2528)

* feat: ensure horizontal scrolling in ExploreTopicsSection

* test: add Playwright test for horizontal scroll in ExploreTopicsSection

* fix: improve error handling and RTL clarity in scroll test

- Add explicit error handling for missing scrollable container
- Rename scrollRightAndWait to scrollByAndWait for RTL clarity
- Add JSDoc explaining RTL behavior and fallback strategy

* refactor: improve scroll test helper and fix CSS formatting

- Consolidate RTL fallback logic in scrollByAndWait helper
- Encapsulate forward/reverse scroll attempts with identical polling
- Simplify test to single scrollByAndWait call
- Fix scrollbar CSS formatting inconsistencies
- Remove deprecated -webkit-overflow-scrolling property

---------

Co-authored-by: Rayane Staszewski <56195432+zonetecde@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>

* Enhance ExploreTopicsSection styling for better layout and scrolling … (#2541)

Enhance ExploreTopicsSection styling for better layout and scrolling behavior

* Enhance ExploreTopicsSection styling for better layout and scrolling … (#2541)

Enhance ExploreTopicsSection styling for better layout and scrolling behavior

* QF-4026 - Change the LP view on the homepage  (#2616)

* Changed the style of the learning plans on the homepage to show only the image

* fixed rtl view for "enrolled" badge

* fixed rtl view for "enrolled" badge

* applied copilot suggestions

* added 'new' pill based on the 'enrolled' pill

* added completed pill

* Updated LP Card size on mobile (#2621)

* updated card size on mobile

* fixeda size

* QF-3590: Update PopularButton and ChapterCard styles for improved responsivene and RTL support (#2558)

* Update PopularButton and ChapterCard styles for improved responsiveness and RTL support

* Update HeroButtons styles to enforce nowrap text wrapping for better layout consistency

* Update PopularButton styles to set fixed widths for improved layout on different screen sizes

* Remove extra newline in PopularButton styles

* Remove unnecessary whitespace in PopularButton styles for cleaner code

* Implement PopularDropdown component and integrate it into HomePageHero; refactor PopularButton to accept onClick prop for dropdown handling

* Remove PopularButton styles as part of the component refactor; streamline codebase by eliminating unused SCSS file.

* QF-2751: Show the settings/preferences icon on the surah header (#2554)

* Refactor Navbar and ContextMenu to integrate SettingsButton and SettingsDrawer

- Removed SettingsDrawer from NavbarBody and added SettingsButton to ContextMenu for better accessibility.
- Introduced a new SettingsButton component to handle opening the SettingsDrawer.
- Updated ContextMenu layout to accommodate the new SettingsButton while maintaining responsiveness.

* Update ContextMenu styles for improved layout and responsiveness

- Adjusted padding values for better alignment in the ContextMenu.
- Added new styles for reading preferences and chapter navigation components.
- Enhanced responsiveness for chapter navigation and settings display on mobile devices.

* Add event logging and integration tests for SettingsButton functionality

- Integrated event logging to track when the settings drawer is opened.
- Created integration tests to verify the visibility and functionality of the settings drawer on both desktop and mobile views.

* Update ContextMenu to clarify SettingsDrawer rendering

- Changed comment to specify that the SettingsDrawer component is being rendered in the ContextMenu.

* Refactor ContextMenu and SettingsButton for improved performance and clarity

* Fix logic in ContextMenu for mobile view handling and update SettingsButton props interface

* Update ContextMenu styles for improved responsiveness and layout adjustments

* Add SettingsDrawer to NavbarBody and remove from ContextMenu for improved structure

* [QF-3123] Update the reflections and lessons popup design (#2557)

* Update popup tab design for reflections

* Remove header text from Reflection modal in BottomActionsModals component

* Show ayah conditionally on the page only but no popup

* Refactor ReflectionBodyContainer: Simplify icon usage, enhance reflection view logging, and clean up styles. Remove unnecessary TypeScript ignore comment and adjust tab item selection logic.

* Remove unnecessary useCallback

* [QF-3112] remove 3rd bullet from access-anywhere section (#2571)

fix(notes): remove 3rd bullet from access-anywhere section

* QF 3724 (#2580)

* feat(pages): add Arabic version of What is Ramadan page

Introduce Arabic localization for the What is Ramadan page, including a new React component (WhatIsRamadanArabic.tsx) and corresponding SCSS styles. Update the main index.tsx to conditionally render the Arabic content based on language selection. Also, enhance contentPage.module.scss to style the strong tag alongside b for better text formatting.

* feat(pages): add Arabic version of About the Quran page

- Add AboutTheQuranArabic component with Arabic content
- Update index.tsx to conditionally render Arabic version based on language
- Modify styles for better Arabic support in both About the Quran and What is Ramadan pages
- Include call-to-action button in Arabic Ramadan page for consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>

* QF-4028 - Change order of the sections on QDC homepage for guest user in responsive view  (#2622)

* changed order of the sections on homepage for guest user in responsive view

* changed a logic

* QF-2082 - Hide the navigation drawer when not on Quran reading pages. (#2546)

* QF 3724 (#2580)

* feat(pages): add Arabic version of What is Ramadan page

Introduce Arabic localization for the What is Ramadan page, including a new React component (WhatIsRamadanArabic.tsx) and corresponding SCSS styles. Update the main index.tsx to conditionally render the Arabic content based on language selection. Also, enhance contentPage.module.scss to style the strong tag alongside b for better text formatting.

* feat(pages): add Arabic version of About the Quran page

- Add AboutTheQuranArabic component with Arabic content
- Update index.tsx to conditionally render Arabic version based on language
- Modify styles for better Arabic support in both About the Quran and What is Ramadan pages
- Include call-to-action button in Arabic Ramadan page for consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>

* [QF-3112] remove 3rd bullet from access-anywhere section (#2571)

fix(notes): remove 3rd bullet from access-anywhere section

* QF-4028 - Change order of the sections on QDC homepage for guest user in responsive view  (#2622)

* changed order of the sections on homepage for guest user in responsive view

* changed a logic

* QF-2082 - Hide the navigation drawer when not on Quran reading pages. (#2546)

* Fix: Page number tracking in Reading and Translation modes (#2648)

* fix(quran-reader): update page number tracking in translation view

Refactor useSyncChapterPage hook to directly use initial verse data for immediate page and hizb updates on navigation, removing unnecessary props from TranslationPageVerse component. This ensures accurate page number display without relying on scrolling or external lookups.

* fix: add null guard for verseKey in intersection observer callback

Prevent runtime error when observed element lacks data-verse-key attribute.

* fix: add missing pageNumber and hizbNumber props to ChapterHeader

The ChapterHeader component requires pageNumber and hizbNumber props
for data attributes used by the intersection observer.

* Add apps-portal

* Add apps-portal

* Add MTF banner

* Update developers page

* Add MTF banner

* Update developers page

* Added mobile apps for qdc to Quran App Portal (#2654)

* Added mobile apps for qdc

* Optimize images

* Add localization

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Added mobile apps for qdc to Quran App Portal (#2654)

* Added mobile apps for qdc

* Optimize images

* Add localization

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Added mobile apps for qdc to Quran App Portal (#2654)

* Added mobile apps for qdc

* Optimize images

* Add localization

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>

* Remove Quran Meet

* Remove Quran Meet

* Remove Quran Meet

* Fix: Page number tracking in Reading and Translation modes (#2648)

* fix(quran-reader): update page number tracking in translation view

Refactor useSyncChapterPage hook to directly use initial verse data for immediate page and hizb updates on navigation, removing unnecessary props from TranslationPageVerse component. This ensures accurate page number display without relying on scrolling or external lookups.

* fix: add null guard for verseKey in intersection observer callback

Prevent runtime error when observed element lacks data-verse-key attribute.

* fix: add missing pageNumber and hizbNumber props to ChapterHeader

The ChapterHeader component requires pageNumber and hizbNumber props
for data attributes used by the intersection observer.

* feat(notifications): Filter notification preferences by QDC tag (#2596)

* feat(notifications): add QDC tag filtering for notification categories

Filter notification preferences to include only those with the QDC tag, excluding marketing and QR-tagged workflows. Also fixed a typo in the comment.

* feat(notifications): add QR tag support in category grouping

Update the notification categories settings to include QR tag filtering,
ensuring workflows with only marker tags (QDC/QR) are grouped under 'uncategorized'.
This extends the existing QDC tag logic to handle QR tags consistently.

* Remove MTF banner (#2672)

* Remove MTF banner (#2672)

* [QF-2775] - Show the data source provider of the translation on the translation list (#2594)

* Add shortDescription field to AvailableTranslation interface

* Update ShortDescription interface to allow nullable fields for description and languageName

* Add HoverablePopover component to display translation short descriptions with tooltips

- Integrated HoverablePopover in TranslationSelectionBody to show short descriptions for translations.
- Updated Popover and Tooltip components to support new INFO type for better styling.
- Enhanced Tooltip and Popover to conditionally apply styles based on the type prop.

* Enhance styling for Popover, Tooltip, and SearchSelectionBody components

- Added new .info class to Popover and Tooltip for consistent elevated background styling.
- Introduced .containerInfo class to Popover for margin adjustments.
- Updated SearchSelectionBody with .infoIcon class for improved icon styling and layout adjustments.

* Add information-circle-outline icon and update imports in TranslationSelectionBody

- Introduced a new SVG icon for information-circle-outline.
- Updated the import path for the info icon in TranslationSelectionBody to use the new SVG.
- Removed unused imports in TranslationSelectionBody for cleaner code.

* Refactor imports and enhance Tooltip styling

- Reintroduced necessary imports in TranslationSelectionBody for improved functionality.
- Cleaned up Popover and Tooltip styles by removing unnecessary whitespace.
- Enhanced the .info class in Tooltip with additional styling properties for better presentation.

* Enhance Popover styling with additional properties

- Added z-index, padding, font-size, line-height, and max-width to improve Popover appearance.
- Ensured consistent styling for better integration with other components.

* Refactor Popover and HoverablePopover components to use tooltipType prop

- Updated Popover and HoverablePopover components to replace the type prop with tooltipType for better clarity and consistency.
- Adjusted the TranslationSelectionBody to utilize the new tooltipType prop for the HoverablePopover.
- Enhanced accessibility by adding aria-label to the info icon in TranslationSelectionBody.

* Add translation-info key to common.json for Arabic and English locales

- Introduced a new key translation-info in both Arabic and English locale files to provide users with information about translations.
- Updated the sidebar navigation close message to maintain consistency in both language files.

* Refactor Popover and Tooltip styles to utilize infoTooltipStyles mixin

- Updated the .info class in both Popover and Tooltip components to use the new infoTooltipStyles mixin for consistent styling.
- Removed redundant properties from the .info class to streamline the code and enhance maintainability.

* Update ShortDescription interface to remove nullability from description and languageName fields

* Fix spacing in Popover styles for better readability

- Adjusted the SCSS selector for the span element within the Popover component to improve code clarity and maintainability.

* Update tooltip styles to use a new shadow variable

- Replaced the hardcoded box-shadow in the infoTooltipStyles mixin with a new CSS variable for tooltip shadow.
- Added the --shadow-tooltip variable to dark, light, and sepia themes for consistent shadow styling across themes.

* fix: show yellow lightbulb icon for clarification questions (#2659)

* fix: show yellow lightbulb icon for clarification questions

The API returns question type keys with incorrect casing (e.g., "cLARIFICATION"
instead of "CLARIFICATION"). Added normalization to convert type keys to
uppercase, allowing the yellow lightbulb icon to display correctly for
verses with clarification questions.

* fix: use local type definition in test to avoid import issues

Avoid importing QuestionsData from api.ts which has complex dependencies
that don't resolve in the Vitest test environment.

* refactor: move normalizeQuestionsData to separate utility file

Move the normalization function to src/utils/questions.ts to avoid
test import issues with complex dependencies in api.ts.

* [QF-3156] Add "Ask Question" Button to Quranic Calendar Hero  (#2581)

* feat(quranic-calendar): add ask question button for logged-in users

- introduces a new button that allows logged-in users to ask questions
- opens a Google Form for submitting questions

* feat(quranic-calendar): enhance action buttons with responsive design

- refactor action buttons to use useIsMobile hook for mobile detection
- update button styles for better responsiveness and alignment
- conditionally render ask question button based on user subscription status

* feat(quranic-calendar): refactor action buttons layout style

* feat(quranic-calendar): improve button text visibility and responsiveness for mobile devices

* fix: use reactive useIsLoggedIn hook instead of isLoggedIn function

* reactor: align code with project standards

* chore: add comment

* refactor: removed className and capitalize function

* feat: enhance action buttons with accessibility improvements

* refactor: use enum for social button names and improve className handling

* QF-4028 - Change order of the sections on QDC homepage for guest user in responsive view  (#2622)

* changed order of the sections on homepage for guest user in responsive view

* changed a logic

* QF-3590: Update PopularButton and ChapterCard styles for improved responsivene and RTL support (#2558)

* Update PopularButton and ChapterCard styles for improved responsiveness and RTL support

* Update HeroButtons styles to enforce nowrap text wrapping for better layout consistency

* Update PopularButton styles to set fixed widths for improved layout on different screen sizes

* Remove extra newline in PopularButton styles

* Remove unnecessary whitespace in PopularButton styles for cleaner code

* Implement PopularDropdown component and integrate it into HomePageHero; refactor PopularButton to accept onClick prop for dropdown handling

* Remove PopularButton styles as part of the component refactor; streamline codebase by eliminating unused SCSS file.

* QF-2082 - Hide the navigation drawer when not on Quran reading pages. (#2546)

Signed-off-by: Mohammed Mokhtar <rrrokhtar@gmail.com>

* sentry: don't send hydration errors (#2655)

* sentry: don't send hydration errors (#2655)

* Revert "QF-2082 - Hide the navigation drawer when not on Quran reading pages. (#2546)"

This reverts commit bab7d83.

* Open Apps Portal in new tab from Developers page (#2682)

- Open the Apps Portal link in a new browser tab to avoid
navigating users away from the Developers page.

- This improves the developer experience by keeping the
current context intact while exploring available apps.

navigating users away from the Developers page.

This improves the developer experience by keeping the
current context intact while exploring available apps.
.tsx

* Open Apps Portal in new tab from Developers page (#2682)

- Open the Apps Portal link in a new browser tab to avoid
navigating users away from the Developers page.

- This improves the developer experience by keeping the
current context intact while exploring available apps.

navigating users away from the Developers page.

This improves the developer experience by keeping the
current context intact while exploring available apps.
.tsx

* Open Apps Portal in new tab from Developers page (#2682)

- Open the Apps Portal link in a new browser tab to avoid
navigating users away from the Developers page.

- This improves the developer experience by keeping the
current context intact while exploring available apps.

navigating users away from the Developers page.

This improves the developer experience by keeping the
current context intact while exploring available apps.
.tsx

* Rukn production (#2688)

* course.{MainDetails,LessonView}: add shouldUseMilkdown check (#2507)

* course.{MainDetails,LessonView}: add shouldUseMilkdown check

* course.{MainDetails,LessonView} shouldUseMilkdown check: add comment

* Course.{LessonView,MainDetails}: add p + p margins (#2623)

---------

Co-authored-by: mustafa0x <mustafa.0x@gmail.com>

* Sync UR locales

* Sync UR locales

* Sync UR locales

* Add donation banner (#2693)

* [QF-4268] Update Ask Question Icon (#2681)

fix: update ask question icon

* Fix ChapterHeader centering in Safari and Firefox (#2657)

Replace justify-self: center with margin-inline: auto for cross-browser
compatibility. justify-self only works in CSS Grid contexts, but Chrome
has non-standard support for it in other layouts. Safari and Firefox
follow the CSS spec strictly and require margin-inline: auto to center
block elements with a max-width.

Also fix pre-existing stylelint warnings (use logical CSS properties).

Fixes: https://quranfoundation.atlassian.net/browse/QF-3926

* QF-3656 - Update verse link regex and tests for triple-digit references (#2560)

Update verse link regex and tests for triple-digit references

* refactor(bookmarks): Comprehensive bookmarks system overhaul (#2639)

* QF-3590: Update PopularButton and ChapterCard styles for improved responsivene and RTL support (#2558)

* Update PopularButton and ChapterCard styles for improved responsiveness and RTL support

* Update HeroButtons styles to enforce nowrap text wrapping for better layout consistency

* Update PopularButton styles to set fixed widths for improved layout on different screen sizes

* Remove extra newline in PopularButton styles

* Remove unnecessary whitespace in PopularButton styles for cleaner code

* Implement PopularDropdown component and integrate it into HomePageHero; refactor PopularButton to accept onClick prop for dropdown handling

* Remove PopularButton styles as part of the component refactor; streamline codebase by eliminating unused SCSS file.

* refactor(bookmarks): extract custom hooks and improve cache management

Refactor bookmark and collection functionality by extracting business logic
into reusable custom hooks and fixing SWR cache patterns.

- `useVerseBookmark` - verse bookmark operations with optimistic updates
- `usePageBookmark` - page bookmark operations with optimistic updates
- `useBookmarkCollections` - manage bookmark-collection associations
- `useCollections` - fetch and manage user collections
- `useBookmarkBase` - shared bookmark functionality
- `useBookmarkCacheInvalidator` - centralized cache invalidation

- Add "Pages" tab to profile bookmarks section
- `BookmarkedPagesList` and `PageBookmarkPill` components
- Bulk fetch optimization for Reading View (reduces API calls)

- Replace improper `cache.delete()` with `globalMutate()`
- Add optimistic updates for instant UI feedback
- Improve login/logout sync with retry logic
- Add `clearBookmarks` and `clearReadingTracker` Redux actions
- Add unit tests for Redux slices

- Reduce component complexity by ~60%
- Separate UI components from business logic
- Add TypeScript types and JSDoc documentation

* chore(icons): replace bookmark svg with feather icon

* fix(bookmarks): address PR review comments

- Add isSyncingRef guard to prevent duplicate syncs in useSyncUserData
  when effect re-runs due to dependency changes
- Remove redundant null check in useVerseBookmark handleRemoveBookmark

* style: add eslint disable comments and remove debug logging to fix ts build

* fix(bookmarks): address PR review comments

- Remove redundant cache mutation in SaveToCollectionAction.tsx
  (addToCollection already handles cache mutation internally)
- Remove unnecessary empty fragment wrapper in BookmarkAction.tsx
- Fix `any` type to `unknown` in errors.ts for type safety
- Add UseVerseBookmarkReturn interface for consistency with usePageBookmark

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(bookmarks): validate page bookmark response to prevent stale/error data

- Check response has valid id and matches requested page number
- Handle 404 error objects that were incorrectly treated as bookmarks
- Prevent stale cached data from one page showing on another page
- Add pageNumber validation to isPageBookmarked and handleBookmarkRemove

* fix(bookmarks): resolve page bookmark hydration mismatch issue

- Capture initial SSR mushafId with useRef to avoid hydration mismatch
  where server session has correct preference but client localStorage is stale
- Use serialized SWR key format (pageBookmark:{mushafId}:{pageNumber})
  to ensure fetcher receives correct values on revalidation
- Add isClient check to prevent fetching during SSR
- Use Number() for type-safe bookmark key comparisons
- Reduce SWR dedupingInterval from 10s to 2s for better cross-tab sync

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(bookmarks): improve sync reliability and cache invalidation

- Use reactive useIsLoggedIn hook instead of non-reactive isLoggedIn()
  to properly trigger sync when login status changes
- Clear lastSyncAt cookie when user logs out (handles server-side
  logout via /logout page where client-side cleanup doesn't run)
- Add pageBookmark: pattern to cache invalidation so page bookmark
  SWR caches are revalidated after sync completes
- Add path: '/' to cookie operations for consistent behavior
- Add bookmarkedVerses/Pages to useEffect dependencies to ensure
  sync runs with latest local data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>

* fix: RTL display issues in TranslationView and ReadingView (#2658)

* [QF-4284] Fix answers button flickering in TranslationView (#2696)

* Add more language names (#2705)

* Add language names

* Updates

* [QF-3991] Redesign Auth UI (#2647)

* fix: input height inconsistency & password input focus issue

* refactor(login): redesign sign-in/sign-up ui

* feat: update social auth buttons to horizontal layout

* fix(login): correct typo in unified registration text and add loading state

* refactor: add small margin top utility class and apply to submit buttons

* test: update tests & refactor code

* fix: code comment

* refactor: switch to logical properties for directional support

---------

Co-authored-by: zonetecde <zonetecde@gmail.com>

* [QF-4260] Update OrText color to medium gray (#2680)

style(auth): update or text color to medium gray

* feat: add safe redirect handling in LoginContainer component (#2704)

* revert: SSR getServerProps revert d6c5d3b and 0b30ddd
0b30ddd
d6c5d3b

Signed-off-by: Mokhtar <rrrokhtar@gmail.com>

* revert: non SSR impacted parts

Signed-off-by: Mokhtar <rrrokhtar@gmail.com>

---------

Signed-off-by: Mohammed Mokhtar <rrrokhtar@gmail.com>
Signed-off-by: Mokhtar <rrrokhtar@gmail.com>
Co-authored-by: Osama Sayed <osamasayed@users.noreply.github.com>
Co-authored-by: H Ayoob <41894237+mohsinayoob@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>
Co-authored-by: Ahmed Hussein <ahmedhussein.developer@gmail.com>
Co-authored-by: zonetecde <zonetecde@gmail.com>
Co-authored-by: Rayane Staszewski <56195432+zonetecde@users.noreply.github.com>
Co-authored-by: Test User <test@example.com>
Co-authored-by: afifvdin <afifudin.fdn@gmail.com>
Co-authored-by: Al Imam <alimam01828@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Basit Minhas <basit3407@gmail.com>
Co-authored-by: mustafa0x <mustafa.0x@gmail.com>
…es [post-merge-sync]

Signed-off-by: Mokhtar <rrrokhtar@gmail.com>
tesiting & staging sync

Signed-off-by: Mokhtar <rrrokhtar@gmail.com>

---------

Signed-off-by: Mohammed Mokhtar <rrrokhtar@gmail.com>
Signed-off-by: Mokhtar <rrrokhtar@gmail.com>
Co-authored-by: Osama Sayed <osamasayed@users.noreply.github.com>
Co-authored-by: H Ayoob <41894237+mohsinayoob@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Yousef Dergham <79238462+yousefdergham@users.noreply.github.com>
Co-authored-by: Osama Sayed <toto777_90@hotmail.com>
Co-authored-by: Ahmed Hussein <ahmedhussein.developer@gmail.com>
Co-authored-by: zonetecde <zonetecde@gmail.com>
Co-authored-by: Rayane Staszewski <56195432+zonetecde@users.noreply.github.com>
Co-authored-by: Test User <test@example.com>
Co-authored-by: afifvdin <afifudin.fdn@gmail.com>
Co-authored-by: Al Imam <alimam01828@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Basit Minhas <basit3407@gmail.com>
Co-authored-by: mustafa0x <mustafa.0x@gmail.com>
- Add comprehensive review prompt and common mistakes documentation
- Enhance pull request template with rollback safety and edge cases
- Include detailed checklists for code quality and best practices
…ts (#2666)

* fix: align quranic calendar weeks with CSV and update tests

* applied copilot suggestions

* force a stable timezone for tests

---------

Co-authored-by: Osama Sayed <toto777_90@hotmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants