Skip to content
CAI
Software that uses CAICheck a score

TarteelAI/quranic-universal-library

41.2

Weak · 20 September 2026

50.4k

lines of production code

Ruby

with JavaScript

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

The Quranic Universal Library (QUL) is a comprehensive platform for managing, publishing, and analyzing Quranic content, serving both public users and content administrators. It provides a rich set of developer tools and interactive features, including advanced search, morphological treebank visualization, Tajweed annotation, and audio segmentation management. The system supports a robust content workflow with draft approvals, downloadable resource distribution, and a public-facing API for accessing structured Quranic data.

How it got here

2024 — QUL rebrand and Rails 8 migration

93 changes.

The project underwent a comprehensive rebranding to the Quranic Universal Library (QUL), migrating the admin interface to a CMS namespace and upgrading the core stack to Rails 8 and Ruby 3.3. This period focused on replacing the Bootstrap styling with Tailwind CSS, restructuring the database schema to support new content types like Tajweed and morphology, and introducing interactive learning tools and granular resource export capabilities.

2025 — V1 API and morphology expansion

36 changes.

This period focused on establishing the foundational V1 REST API infrastructure, including controllers, presenters, and parameter handling, while significantly expanding the application's linguistic capabilities. The team introduced comprehensive Arabic morphology features, such as the NoorBayan treebank import, dependency graph visualizations, and detailed word analysis tools. Additionally, the work included robust audio processing pipelines, segment management dashboards, and various user-facing comparison and preview tools.

2026 — Search, audio QA, and morphological tools

10 changes.

This period focused on enhancing core discovery and data quality through a sophisticated Quran-specific search engine with advanced syntax and an automated audio validation pipeline. It also introduced comprehensive morphological analysis tools, including dependency graph editing and AI-generated grammar explanations, alongside new user profile and administrative interfaces.

Features

Add grammar terms show page

A new view template for displaying individual grammar terms has been added at app/views/morphology/grammar\_terms/show.html.erb. This page renders the term's title and description, utilizing existing utility classes for layout and styling.

_app/views/morphology/grammar\terms · high confidence

Add morphology preview and help views for word analysis

This change introduces new preview and help views for the morphology resource, allowing users to explore word-level linguistic data. The new \\_word\_lemma\_preview.html.erb\, \\_word\_root\_preview.html.erb\, and \\_word\_stem\_preview.html.erb\ templates display individual words with links to their respective lemma, root, and stem details via AJAX modals. Additionally, comprehensive help documentation (\\_word\_lemma\_help.html.erb\, \\_word\_root\_help.html.erb\, \\_word\_stem\_help.html.erb\) explains these concepts and details the underlying SQLite database schema (tables like \lemmas\, \roots\, \stems\, and their mapping tables). Preview templates for ayah-level lemma, root, and stem data are also added to show aggregated information for entire verses.

app/views/resources/previews/morphology · high confidence

Add resource change log views

Added new views for the change log feature, including an index page listing updates across QUL resources with pagination, a show page for individual change logs, and a partial for rendering change log items. The index page displays a list of change logs with titles, dates, resource types, and associated resources, while the show page provides detailed information about a specific change log.

_app/views/change\logs · high confidence

Added export view for translation chunks and inline footnotes

The admin translation interface now includes a new export data view that displays JSON-formatted output for translations. This view presents two specific formats: a 'Chunks format' generated via the Exporter::AyahTranslation service, and an 'Inline footnotes format', allowing administrators to inspect the structured data export options for a given resource.

app/views/admin/translation · high confidence

Added grid and list view templates for the Resources page

The Resources view now includes dedicated partials for displaying tools in either a grid or a list format. The grid view renders tool cards in a responsive multi-column layout, while the list view presents tools in a sortable table with sticky headers, showing title, description, and tags with responsive visibility for different screen sizes.

_app/views/tools/resources\view · high confidence

Added translation diff comparison tool

Users can now compare exported translation versions against current database records. The new 'Compare Translation' page lists all exported translations, indicating which ones need re-exporting, and provides a detailed view of specific differences (diffs) for each translation, highlighting changes in individual ayahs.

_app/views/translation\diffs · high confidence

Automated audio segment validation and self-healing

A new automated quality-assurance pipeline for audio recitations has been introduced, consisting of a shared validator, an auto-fix engine, and a detailed HTML report. The validator now detects specific issues such as missing segments, ayah timing errors, overlaps, gaps, and word-level discrepancies. When issues are found, the auto-fix service attempts to automatically correct them (e.g., adjusting timestamps to align with word boundaries or closing gaps), while safely skipping changes that might be unsafe. The results are presented in a new 'Auto-fix report' that summarizes the number of issues found, fixed, skipped, and still pending, providing a clear view of the recitation's data quality.

app/services/audio · high confidence

Ayah Topics preview now supports search, sorting, and hierarchical browsing

The Ayah Topics preview has been updated to allow users to search for topics by name (English and Arabic), description, or specific ayah reference (e.g., 2:255). The interface now displays topics in a sortable table with pagination, showing details like parent-child relationships and associated verse counts. Users can view individual topic details, including descriptions, linked child topics, and the specific Quranic verses associated with that topic, complete with Arabic text and translations.

_app/views/resources/previews/ayah\topics · high confidence

Email notifications for new and updated downloadable resources

Users will now receive email notifications when a new resource is added to QUL or when an existing resource they have downloaded is updated. The update notification specifically includes the change log title and excerpt, along with a link to view the full change log, ensuring users are informed about what has changed before downloading the latest version.

_app/views/downloadable\_resource\mailer · high confidence

Email notifications for reciter segments data export

Users now receive email notifications regarding the status of their reciter segments data export requests. A success email confirms when the data package (containing the SQLite database and metadata) is ready for download, while an error email alerts users if the export process failed, providing specific error details for troubleshooting.

_app/views/segments\mailer · high confidence

Expanded Morphology Admin with Dependency Graphs and Permission Controls

The Morphology admin section now includes new resources for managing dependency graphs (Graph, GraphNode, GraphNodeEdge), derived words, grammar concepts, grammar patterns, and sentence structures, providing a comprehensive interface for linguistic data. Existing resources like MatchingVerse, Phrase, Word, and WordSegment have been updated to enforce user permissions on actions such as approval and CSV export, and all internal navigation links have been migrated from the legacy /admin namespace to the /cms namespace to align with the application's routing structure.

app/admin/morphology · high confidence

Export reciter segments from the segments dashboard

Users can now export reciter segment data directly from the segments dashboard. This new background job processes the request by generating a database of segment positions, packaging it into a ZIP file along with metadata, and emailing the archive to the user. The system handles cleanup of temporary files and sends a notification if the export fails.

app/jobs/segments · high confidence

Group word translations and modernized proofreading interface

The Word Translation proofreading tool now supports grouping multiple words under a single shared translation, allowing users to create, edit, and manage these groups via a dedicated modal form and view them in the main table. The entire interface has been redesigned with a modern layout, featuring a resource selection dashboard, a coverage progress dashboard, and a responsive table view that displays Uthmani text, English translations, and the new group translations. Navigation and editing workflows have been updated to work with specific translation resources rather than just languages, and the UI styling has been migrated from Bootstrap to Tailwind CSS.

_app/views/word\translations · high confidence

Introduce API parameter lookahead and record not found exception

This change introduces a new \Api::ParamLookahead\ class to handle API parameter inspection, allowing the system to determine if specific attributes are selected or present in the request parameters. It includes a \NullLookahead\ singleton to efficiently handle cases where no parameters are selected, avoiding unnecessary object creation. Additionally, a custom \Api::RecordNotFound\ exception class is added, inheriting from \ActiveRecord::RecordNotFound\, to provide a specific error type for API contexts.

lib/api · high confidence

Introduce Ayah Dependency Graphs tool with full editing and comparison capabilities

A new Ayah Dependency Graphs tool has been added, providing a dedicated interface for viewing, filtering, and editing morphological dependency graphs. The index page allows filtering by chapter, verse, review status, POS tags, and edge relations. The detail view supports side-by-side comparison with the Quran Corpus treebank and includes a modal for adjusting graph display settings (font sizes, spacing, fonts). A comprehensive edit interface enables bulk management of graph nodes (words, references, elided tokens, and phrase nodes) and edges, with a live preview panel and a dedicated modal for splitting graphs across multiple verses.

_app/views/morphology/dependency\graphs · high confidence

Introduce Quran script comparison tool for Madani and Indopak scripts

Adds a new interactive tool allowing users to compare Quranic text across Madani and Indopak script types. The interface guides users through script selection, character selection, and a detailed word-level comparison table that highlights matches and missing characters, complete with font styling and copy-to-clipboard functionality.

_app/views/quran\_scripts\comparison · high confidence

Introduce Quran-specific search with advanced query syntax and Arabic normalization

Users can now search the Quran text using a dedicated search interface that supports advanced query features. The search engine normalizes Arabic characters (ignoring diacritics and minor letter variations by default) to improve match relevance, with an 'Exact match' option to require precise character input. It supports phrase searching, wildcard gaps using \\*\ (any text), and precise word-count gaps using \{n}\, \{\>n}\, \{\<n}\, and \{n,m}\ syntax. Anchors \^\ and \$\ allow matching at the start or end of an ayah. Users can also jump directly to a specific verse by entering its reference (e.g., \1:2\). The 'Match across ayahs' option enables searching for passages that span multiple verses. Search results highlight matching text and indicate which script variants (e.g., Uthmani, Imlaei) contained the match.

app/services/search, app/views/search · high confidence

Introduce Tajweed annotation engine for Quranic text

This change adds a new \lib/tajweed\_annotation\ library that analyzes Arabic Quranic text to detect and tag specific Tajweed (recitation) rules. The implementation introduces core classes (\LetterToken\, \WordToken\, and \Service\) that process text character-by-character to identify rules such as \ham\_wasl\, \laam\_shamsiyah\, \qalaqah\, \ghunnah\, \madda\ variations, and \ikhafa\. The \Service\ class aggregates these findings and provides methods to generate HTML output with appropriate CSS classes, enabling visual highlighting of recitation rules in the user interface.

_lib/tajweed\annotation · high confidence

Introduce word-level mistake heatmap and editing interface

This change adds a new Mistake Heatmap feature for the Quran text, allowing users to view and edit word-level recitation mistakes. The \show\ view displays a page preview where words are highlighted based on mistake frequency, with color intensity and glow effects derived from the frequency data. Users can click on highlighted words to see detailed information, including the received text, context, and similar words across the Quran. The \edit\ view provides a form to manually input or adjust mistake frequencies for full words and specific character ranges within words, with a live preview of the changes. This functionality is implemented through new view templates (\show\, \edit\, \word\_details\, and \\_page\_preview\) that utilize a presenter to handle data logic.

_app/views/word\mistakes · high confidence

Introduces presenter layer for SEO metadata and content presentation

The application now uses a dedicated presenter layer in app/presenters to manage page titles, meta descriptions, and keywords for all public-facing resources and tools. This includes a base ApplicationPresenter with shared pagination and SEO logic, and specific presenters for resources (translations, tafsir, audio, scripts), community pages (docs, tools, FAQ), and specialized proofreading tools (word mistakes, script comparison, audio segments). Users will see improved and consistent search engine optimization across the site, with dynamic meta tags tailored to specific resources, actions, and tools.

app/presenters · high confidence

Introduction of the V1 API controller layer

This change introduces the foundational structure for the V1 API, establishing a base \ApiController\ that standardizes error handling, caching headers, and JSON rendering across all endpoints. It adds specific controllers for chapters, verses, translations, tafsirs, recitations, and resources, enabling users to access Quranic content through a new set of RESTful endpoints. Additionally, a new Unicode utility endpoint is provided to resolve code points to character names and HTML entities.

app/controllers/api/v1 · high confidence

New AI-driven Quranic grammar explanation generator

A new capability has been added to generate HTML explanations for Quranic grammar terms (such as POS tags and edge relations) using an AI agent. This feature introduces a generator class and a dedicated prompt template that instructs the AI to produce Tailwind-styled HTML containing Quranic examples wrapped in specific custom tags, ensuring outputs are consistent with the Quran Corpus documentation and suitable for UI display.

lib/corpus · high confidence

New API finders and resource management models

This change introduces a new set of V1 API finders (Chapter, Segment, Tafsir, Translation, Verse) that handle data retrieval with pagination and language-specific eager loading. It also adds several new models to support resource management and content features: Book, ChangeLog, Contributor, DownloadableFile, DownloadableRelatedResource, DownloadableResourceTag, DownloadableResourceTagging, RootDetail, TajweedWord, UloomContent, UserDownload, and WordMistake. Additionally, it adds concerns for metadata handling (HasMetaData), verse mapping (HasVerseMapping), and PaperTrail attribution, while removing legacy models (AdminUser, ContactMessage, WbwText, WbwTranslation, WordLemma, WordStem) and renaming WordRoot to Faq.

app/models · high confidence

New Analytics dashboard and reorganized admin settings menu

Admin users now have access to a new Analytics page under Settings that displays key performance indicators (total users, confirmed users, signups, downloads) and trend charts comparing the last 12 months to the previous 12 months, along with breakdowns by resource type and top users/resources. Additionally, several existing admin resources (API clients, slugs, tags, translated names, resource permissions) have been moved into the Settings menu hierarchy, and the slug creation redirect now points to the CMS interface instead of the admin interface.

app/admin/settings · high confidence

New Arabic morphology type definitions

Added a comprehensive set of typed enum classes in the \lib/corpus/morphology\ directory to represent Arabic grammatical categories. These include \PartOfSpeech\ (with 45 specific tags), \PartOfSpeechCategory\, \AspectType\, \CaseType\, \DerivationType\, \FormType\, \GenderType\, \MoodType\, \NumberType\, \PersonType\, \PronounType\, \SegmentType\, \SpecialGroupType\, \StateType\, and \VoiceType\. Each class provides a tag-based lookup and equality comparison, enabling the system to parse and distinguish detailed morphological features of Quranic text.

lib/corpus/morphology · high confidence

New Compare Ayah tool with script and translation selection

A new 'Compare Ayah' tool has been added, allowing users to view and compare multiple Quranic verses side-by-side. Users can input specific ayah keys, select one or more translations to display alongside the Arabic text, and choose a specific Arabic script style. The interface highlights words that are common across the selected verses in green to help explore similarities in wording and structure.

app/views/verses · high confidence

New Segments Dashboard with Reciter Analytics and Failure Tracking

A new Segments Dashboard has been added, providing a centralized interface for monitoring recitation segmentation quality. The dashboard includes a main statistics view with interactive charts for detection and mistake distributions, alongside a summary table of reciter performance metrics (positions, failures, corrections). Users can drill down into specific reciters to view detailed progress, missing content, and per-Surah segmentation status. The suite also introduces dedicated views for per-Ayah mistake reports, a paginated failure log with search and correction status filters, a word-by-word audio timeline for precise review, and a review queue for segmentation issues like missing segments or repetitions.

app/views/segments/dashboard · high confidence

New Tajweed Rules tool with word-level annotation and sidebars

A new Tajweed tool has been added to the application, providing a dedicated interface for exploring and editing Tajweed rules. The tool includes a searchable index of words with filtering capabilities, and a detailed word view that displays Uthmani, QPC, and Quran Academy Tajweed text alongside a per-letter breakdown. Users can assign or update Tajweed rules for individual letters via an inline form, with changes applied instantly using Turbo Streams. The interface also features two slide-out sidebars: a Tajweed Rule Palette for quick reference and a zoomable page view for visual context.

_app/views/tajweed\words · high confidence

New Tajweed rule checks and enhanced Mushaf comparison tools

The data integrity and comparison tools now include specific checks for Tajweed rules (Iqlaab, Qalqalah, Madd al Munfasil, and Izhar), allowing users to identify words in the Quran that follow these recitation patterns. Additionally, the toolset has been expanded with new comparison capabilities, including a check for ayahs appearing on different pages across two selected Mushafs and a comparison of the first and last words on corresponding Mushaf pages, providing deeper insight into layout differences between recitation texts.

app/models/tools · high confidence

New V1 API presenters for Quranic content and resources

This change introduces a new set of API presenters in the V1 namespace to structure and serve Quranic data. The \ApiPresenter\ base class provides shared logic for handling localized names, language filtering, and input validation for Quranic divisions (such as chapters, juz, and hizb). Specific presenters have been added to expose distinct resources: \ChapterPresenter\ for surah listings, \VersePresenter\ for retrieving verses with support for multiple text formats, word-level details, and translations, \TranslationPresenter\ and \TafsirPresenter\ for fetching exegetical and translation content by ayah or range, and \ResourcesPresenter\ for listing available translations, recitations, and languages. These components collectively enable the API to serve structured, localized Quranic content and associated metadata.

app/presenters/v1 · high confidence

New admin interface for managing downloadable resources

Administrators can now manage downloadable resources, files, related resources, and tags via a new ActiveAdmin section under 'Downloads'. This interface allows for creating and editing resources with metadata, tags, and associated files, viewing download statistics and user history, and performing background export refreshes with optional user notifications.

app/admin/downloads · high confidence

New admin views for morphology documentation and dependency graph management

Administrators now have access to a new 'Quran Linguistics Guide' documentation page that explains the relationship between morphology and grammar, as well as dedicated views for managing and visualizing morphology dependency graphs. The graph index lists available graphs with statistics, while the graph show view provides a visual syntax graph and detailed tables for nodes and edges, enabling admins to inspect the structural analysis of Quranic verses.

app/views/admin/morphology · high confidence

New administrative and data-import rake tasks for content management

This update introduces a suite of new rake tasks in lib/tasks to support content operations and data maintenance. Administrators can now use \audio:fix\_segments\ to automatically detect and correct mechanical audio segment issues (such as gaps, overlaps, and timing errors) with a dry-run mode and an HTML review report. Data import capabilities have been expanded with tasks to import Bridges translations, English Asbab Al-Nuzul tafsir, Arabic topics, lemmas, Qaloun script, and subjective thematic topics. Additionally, new tasks allow for the creation of font resources, the generation of grammar-colored Mushaf layouts, the import of transliterations, and the cleanup of old database tables and schemas.

lib/tasks · high confidence

New asset conversion and word-count data scripts

Added a new shell script (2webp.sh) to convert source images to WebP format and a new JSON data file (ayah\_words.json) containing word counts for Quranic verses, supporting improved asset optimization and layout calculations.

scripts · high confidence

New audio API endpoints for recitations and segments

The API now exposes dedicated controllers for audio recitations and audio segments, enabling users to retrieve surah and ayah-level recitation details as well as segment data. The new \RecitationsController\ provides endpoints for \surah\_recitations\, \surah\_recitation\_detail\, \ayah\_recitations\, \ayah\_recitation\_detail\, and a \wav\_manifest\, while the \SegmentsController\ offers \surah\_segments\ and \ayah\_segments\. Both controllers initialize their respective presenters (\RecitationPresenter\ and \SegmentPresenter\) to handle the response formatting.

app/controllers/api/v1/audio · high confidence

New audio processing libraries for metadata, generation, and gapless splitting

The \lib/audio\ directory now includes several new Ruby classes that handle core audio operations. \AudioFileMetaData\ uses \ffprobe\ to extract technical metadata (duration, bitrate, size) and prepares ID3 tags for recitations. \GenerateAudioFile\ creates audio file records for both surah-level and ayah-level recitations, constructing URLs from a base CDN path. \GenerateAudioWavManifest\ handles splitting long audio files into manageable WAV parts using \ffmpeg\ and saves the resulting segment metadata. Finally, \SplitGaplessAudio\ and \SplitGaplessSegment\ provide utilities for downloading, splitting, and zipping gapless audio segments by verse or surah.

lib/audio · high confidence

New audio recitation and segment presentation logic

The API now supports presenting audio recitations and detailed audio segments. The new RecitationPresenter allows clients to retrieve approved recitations for specific surahs or ayahs and supports requesting audio in multiple formats (defaulting to mp3 if the requested format is unavailable), including a new wav\_manifest capability for chapter-level audio file parts. The new SegmentPresenter enables fetching specific ayah or surah audio segments with pagination support, allowing clients to request a range of segments via from/to parameters.

app/presenters/v1/audio · high confidence

New audio segment import, export, and validation tools

Added new classes in lib/audio\_segment to handle importing and exporting recitation audio segments in CSV, JSON, and SQLite formats, including support for gapless recitations and automatic validation of segment completeness and timing.

_lib/audio\segment · high confidence

New background jobs for audio segment export and recitation processing

This change introduces four new background jobs in the audio processing pipeline: ExportAudioSegmentsJob handles exporting audio timing data to SQLite or JSON formats (including gapless per-surah exports) and notifies users via email; SplitGaplessRecitationJob manages the splitting of gapless recitations into individual audio files and segments, detecting repeated segments and creating necessary database records; GenerateAudioFilesJob orchestrates the generation of audio files for a given recitation; and UpdateMetaDataJob updates metadata for recitations. These jobs provide the backend infrastructure for exporting and processing audio segments and recitations.

app/jobs/audio · high confidence

New dependency graph models and enhanced morphological analysis capabilities

This update introduces a new dependency graph structure for morphological analysis, adding \Graph\, \GraphNode\, and \GraphNodeEdge\ models to represent and store syntactic relationships between words. It also adds \Sentence\ and \WordToken\ models to support sentence-level segmentation and tokenization. Existing models are enhanced: \Morphology::Phrase\ now uses a deterministic color scheme for consistent visual rendering, \Morphology::WordSegment\ includes part-of-speech-based color definitions, and \Morphology::MatchingVerse\ now calculates and stores a match coverage score. Additionally, \Morphology::GrammarTerm\ now supports translations and type classification.

app/models/morphology · high confidence

New detail views for Lemma and Stem resources

Added dedicated show pages and partials for Lemma and Stem resources in the morphology section. These views now display a summary of unique word forms and total occurrences in the Quran, alongside a scrollable table listing each word form, its translation, and occurrence count, styled with Tailwind CSS utilities.

app/views/morphology/lemmas, app/views/morphology/stems · high confidence

New documentation system, GitHub contributors display, and topic search capabilities

This change introduces three new service components in the application. First, a documentation system is added via \DocsManifest\ and \DocsPageService\, which loads a YAML-based site structure and renders Markdown files into sanitized HTML with support for code blocks and internal linking. Second, a \GithubService\ is implemented to fetch and cache repository contributors from the GitHub API, filtering out bots, to support displaying contributors on the site. Third, a \TopicSearch\ service is added to enable searching for Quranic topics by text (English/Arabic name or description) or by specific verse reference, with support for sorting by name, parent, or verse count.

app/services · high confidence

New downloadable resource export system with granular data formats

The \lib/exporter\ library has been significantly expanded to support the export of a wide variety of Quranic resources into structured, downloadable formats (JSON, SQLite, CSV, DOCX, and font files). This new system introduces dedicated exporters for specific data types, including ayah translations with inline footnotes and chunked text, surah and ayah metadata, recitation audio with word-level segments, Quranic scripts (Hafs, Qirat) at both verse and word levels, and Mushaf layout data (including per-page JSON and DOCX generation). It also adds exports for Quranic morphology (lemmas, stems, roots), similar/matching verses, and font assets (TTF, WOFF, SVG, etc.), all orchestrated by a central \DownloadableResources\ class that manages the creation of these structured files for public distribution.

lib/exporter · high confidence

New export templates for Ayah, Word, and Mushaf page views

Added new view templates in the exports section to support exporting individual Ayahs, Words, and Mushaf pages. The Ayah and Word templates render specific script content with configurable font families and sizes, while the Mushaf page template renders page-level content with hidden controls. The main Mushaf export template includes extensive styling and UI components for anomaly detection controls, allowing users to view and manage layout anomalies directly within the export preview.

app/views/exports · high confidence

New grid and list views for resource browsing

Users can now browse resources in two distinct layouts: a responsive grid view and a detailed list view. The grid view displays resources as cards with tags and download options, optimized for mobile and desktop screens. The list view provides a structured, sortable list with resource summaries, cardinality indicators, and links to related resources, enhancing discoverability and navigation within the resources section.

_app/views/resources/resource\view · high confidence

New grid and list views for the Resources section

The Resources view now offers two distinct display modes: a responsive card grid and a sortable data table. The grid layout presents resources as cards with search metadata, while the list view provides a detailed table with columns for resource name, description, and count, featuring inline SVG icons, hover states, and column sorting capabilities.

_app/views/resources/resources\view · high confidence

New helper modules for tools, resources, and documentation

This change introduces a suite of new helper modules to support the application's expanded tooling and content features. The \LearningActivityHelper\ provides logic for generating quizzes for activities like 'Complete the Ayah' and 'Word Match', while \ToolDocsHelper\ supplies structured help documentation for developer tools such as Mutashabihat and word translation. \ResourcesHelper\ and \ToolsHelper\ define the metadata and cards for downloadable resources and the main tools dashboard. Additionally, \TajweedHelper\ supports the new Tajweed annotation tool, \QuranScriptHelper\ manages font family mapping, and \SeoHelper\ implements structured data and meta tags. The \ActiveAdminViewHelpers\ are also updated to migrate admin routes to the new CMS namespace and enforce permission checks.

app/helpers · high confidence

New interactive Quranic learning activities

Users can now access a suite of interactive learning activities on the Learning Activities page, including the Ayah Mastery Challenge, Complete the Ayah (fill-in-the-blanks), Surah Order Challenge (sorting and sequence), and Word Match (connecting Arabic words to translations). These new features provide engaging ways to memorize and understand Quranic content through drag-and-drop, multiple-choice, and matching interfaces.

_app/views/learning\activities · high confidence

New interactive preview pages for Quran resources

Users can now view detailed, tabbed preview pages for various Quran resources directly on the site. This update introduces dedicated documentation and preview interfaces for Ayah Themes, Ayah Topics, Fonts (with live text preview and ligature support), Morphology, Mushaf Layouts, Mutashabihat (similar phrases), Quran Metadata, Quran Scripts, Recitations (with segment players), Similar Ayahs, and Surah Info. Each preview includes navigation controls to jump between ayahs or pages, and provides structured help documentation explaining the resource's data format and usage.

app/views/resources/previews · high confidence

New interface for adding footnotes to draft translations

Administrators can now use a dedicated form to add footnotes to draft verses. The new partial provides a text area for entering draft text, with instructions to wrap footnote content in \<\< and \>\> markers, which are automatically converted to superscript tags upon saving.

app/views/admin/draft · high confidence

New landing page for the Quranic Universal Library

The application now includes a dedicated landing page (\app/views/landing\) that introduces the Quranic Universal Library (QUL) to visitors. This page features a sticky header with navigation for Resources, Tools, Docs, and Community, along with a user account menu for signed-in users. The main content area highlights the project's mission with a hero section, an overview of the curated Quranic resources, and horizontal scrolling carousels for featured developer resources and tools. The layout is fully responsive, utilizing Tailwind CSS for styling, and includes a lightweight video-based 3D viewer as a background element.

app/views/landing · high confidence

New layout data export tools for Mushaf pages and verses

Added a new \LayoutExporter\ library in \lib/layout\_exporter\ that generates static layout data files for specific Mushaf editions. This includes exporting page indices (with optional Hizb and Manzil markers), verse-to-page lookups, last-word location hashes, and ayah metadata (letter counts and fractions). These exports are written to JSON or JavaScript files in \tmp/layout-data/\, enabling frontend or other services to efficiently navigate and render the text layout without querying the database directly.

_lib/layout\exporter · high confidence

New learning activities and split-screen layout component

The application introduces a suite of interactive learning activities, including a Word Match game with SVG connection lines, a Fill-in-the-Blanks exercise with drag-and-drop sorting, and a Surah Order quiz supporting both multiple-choice and sorting modes. These activities feature immediate visual feedback, such as confetti animations for correct answers and shake effects for errors. Additionally, a new SplitScreen component has been added to the UI toolkit, providing a resizable two-pane layout that supports side-by-side content viewing, which is utilized by the new learning tools and other comparison features.

app/javascript · high confidence

New lib tools for audio segmentation, FTS search, and asset exports; cleanup of legacy code

This change introduces a suite of new libraries to support audio processing, search, and content distribution, while removing obsolete components. New additions include \AudioSegmentParser\ and \BatchAudioSegmentParser\ for parsing and validating audio segment data, \ExportQuranFts\ for generating full-text search indices, \ExportAssetsManifest\ for managing CDN asset manifests, and \CloudflareCacheClearer\ for cache invalidation. It also adds \TajweedRules\ for rule definitions and \TransliterationGenerator\ for text conversion. Conversely, the legacy \GreenTechSegments\, \SvgOptimizer\, and \WildcardMatcher\ libraries have been removed.

lib · high confidence

New morphology graph and treebank visualization presenters

Added a suite of presenters in the morphology module to power new syntax graph and treebank visualizations. GraphPresenter generates the JSON payload for rendering dependency and constituency graphs, including word nodes, edges, and phrase nodes with localized labels. GraphEditPresenter and GraphIndexPresenter support editing and navigating through multiple graphs per verse. TreebankPresenter builds the structured data for the client-side SVG renderer, handling token banners, dependency edges, and constituency phrase nodes. WordPresenter provides detailed morphological data for individual words, including lemma, stem, root, and segments, along with navigation to adjacent words.

app/presenters/morphology · high confidence

New morphology resource controllers for treebank, graphs, and linguistic data

This change introduces a suite of new controllers in the morphology area to support detailed linguistic analysis and graph-based editing. The TreebankController provides an index for filtering verses by root, lemma, POS tag, and relation, alongside a show and data endpoint that serves localized sentence and token details. The DependencyGraphsController manages the lifecycle of dependency graphs, including listing verses with graphs, editing, splitting graphs, and retrieving syntax graph JSON. Supporting controllers (DependencyGraphNodesController, DependencyGraphEdgesController) handle the creation, updating, and deletion of graph nodes and edges with Turbo Stream responses. Additionally, new controllers for GrammarTerms, Lemmas, Roots, Stems, and Words expose specific linguistic resources and translations.

app/controllers/morphology · high confidence

New notification mailers and updated sender address

This change introduces two new mailers: DownloadableResourceMailer, which notifies users about new or updated downloadable resources (including change logs), and SegmentsMailer, which handles the export of reciter segment data as ZIP files or reports export errors. Additionally, the default email sender address has been updated from [e-mail redacted] to [e-mail redacted] across all mailers, and the welcome email subject line has been refined to better reflect the community welcome message.

app/mailers · high confidence

New permission request workflow for user projects

Users can now submit requests for access to specific resources (such as translations, tafsir, or chapter info) through a new 'Request permission' interface. The new \new.html.erb\ form collects the reason for the request, language proficiency, and motivation, while enforcing a review-process acknowledgment for certain resource types. Upon submission, the \create.turbo\_stream.erb\ template updates the page by refreshing flash messages and removing the request button, providing a seamless, non-page-reload experience.

_app/views/user\projects · high confidence

New preview pages for Quran metadata resources

Added interactive preview pages and documentation for Quran metadata resources, including Ayah, Surah, Juz, Hizb, Manzil, Rub al-Hizb, Ruku, and Sajdah. Each preview provides a user-friendly interface to browse and navigate through the respective data (e.g., jumping to specific Ayahs, Juz, or Ruku), displaying metadata fields, verse text, and related information. Documentation pages explain the data structure and export formats (JSON and SQLite) for each resource.

_app/views/resources/previews/quran\metadata · high confidence

New root detail page with word frequency table

Users can now view a dedicated detail page for Arabic roots, which displays the root's Arabic and English forms, unique word count, and total Quranic occurrences. The page includes a scrollable table listing all associated words, their translations, and occurrence counts, sorted by frequency.

app/views/morphology/roots · high confidence

New segments dashboard for managing reciter data and database uploads

Administrators now have access to a dedicated segments dashboard that allows uploading and activating segment databases, viewing detection and failure statistics for reciters and surahs, and exporting reciter segment data. The dashboard includes specific views for timeline, logs, word failures, and ayah reports, with automatic redirection to a setup screen if no database is currently active.

app/controllers/segments · high confidence

New segments database models and connection logic

This change introduces a new set of ActiveRecord models under the \Segments\ namespace (including \Base\, \AyahBoundary\, \Database\, \Detection\, \Failure\, \Log\, \Position\, \Reciter\, and \ReviewAyah\) to manage a separate SQLite database for segment data. The \Segments::Database\ model handles the lifecycle of these segment databases, including downloading and extracting SQLite files from storage, establishing a dynamic connection to the extracted database file, and resetting column information for the associated models. The \Segments::Reciter\ model now includes logic to fetch audio URLs from chapter audio files, supporting the integration of audio data with segment information.

app/models/segments · high confidence

New user profile dashboard with activity tracking

Users now have a dedicated profile page to view their account details and activity history. The new interface includes an account settings section for managing personal information, email, and password, alongside a main dashboard that displays summary counts for downloads, contributions, and resource access requests. Users can browse their download history with update status indicators, view a filtered list of their contributions to the library, and track the approval status of their requests to access editing tools.

app/views/profiles · high confidence

New word detail page with morphological segments and metadata

A new show view for individual words has been added to the morphology section, presenting the word's Arabic text, meaning, transliteration, and description. The page now displays detailed morphological segments, including part-of-speech tags, grammar terms, and topic links, alongside word metadata such as lemma, stem, root, and case information. Users can navigate between words, view a dependency graph, and access modal details for linguistic components.

app/views/morphology/words · high confidence

NoorBayan Treebank: Arabic morphology visualization and analysis

The NoorBayan Treebank feature is now available, providing users with an interactive interface to explore Arabic morphology. The new views include a main index page for filtering ayahs by chapter, verse, POS tag, relation, root, and lemma, as well as a detailed view for individual ayahs. This detailed view renders an interactive syntax graph (with zoom, reset, and PNG download capabilities) and an I'rab table displaying grammatical analysis. Users can switch the interface language between English, Arabic, and Urdu via a dropdown, and navigate between adjacent ayahs using previous/next controls.

app/views/morphology/treebank · high confidence

NoorBayan treebank import pipeline and SVG rendering

The morphology service now includes a complete import pipeline for the NoorBayan Quranic Treebank, enabling users to ingest and visualize detailed morphological data. This change adds a CSV reader and importer that processes token, sentence, and dependency data, mapping grammatical features like roots, lemmas, and governors. It also introduces a graph splitting service to manage complex dependency structures within verses, alongside new services for managing graph edges, nodes, and phrase nodes. Finally, it implements an SVG rendering layer using Irab lines and level builders to display the parsed treebank data visually.

app/services/morphology · high confidence

Project initialization and development environment setup

This change establishes the foundational configuration for the QUL project, introducing a Docker-based development environment via a new docker-compose.yml (PostgreSQL 14 and Redis 7) and a .dockerignore file. It standardizes the runtime versions by adding .ruby-version (3.3.3), .node-version (20.20.2), and a .ruby-gemset, while updating the production Dockerfile to use Ruby 3.3.10 and Node 20. The project adopts Bun for JavaScript dependency management (bun.lock) and configures esbuild for asset compilation with a new esbuild.config.js. Additionally, it provides a .env.sample for storage configuration, a SECURITY.md policy, an MIT LICENSE, and a .rubocop.yml enforcing Ruby 3.3 and Rails 8.0 coding standards.

(repo-wide) · high confidence

Redesigned community pages with Tailwind CSS and new interactive tools

The community section has been completely rewritten using Tailwind CSS, replacing the previous Bootstrap-based layout. This update introduces a new documentation system with a categorized sidebar and index page, a redesigned credits page featuring a grid of contributor cards, and a new FAQ page with copy-to-clipboard functionality. Additionally, new interactive tools have been added, including a 'Text and Font Compatibility Checker' that allows users to preview text across multiple Quranic fonts and analyze Unicode characters, and an 'Audio Comparison Tool' with waveform visualization for comparing audio segments.

app/views/community · high confidence

Redesigned resources section with search, filtering, and detailed views

The resources area has been rebuilt with a new landing page featuring a search toolbar, category and tag filters, and a list/grid view toggle. Individual resource pages now include a hero header, detailed metadata, copyright notices, changelogs, and a dynamic preview system that renders Quranic scripts, images, or text based on the resource type. Users can now search by name, tag, or Quranic references (e.g., 2:255), with results grouped by relevance and related resources.

app/views/resources · high confidence

Segments dashboard and reciter detail statistics

The application now includes a segments dashboard and reciter detail pages that provide comprehensive statistics on audio segmentation progress. Users can view detection and failure counts, filter failures by reciter, surah, or type, and review specific ayahs needing correction. The reciter detail view displays overall progress, chapter completion stats, and identifies missing or partially segmented verses, allowing users to track the quality and completeness of the segmentation data for each reciter.

app/presenters/segments · high confidence

Segments dashboard navigation header

A new shared header partial for the segments area provides a consistent navigation bar with links to the Dashboard, Failures, Word Stats, Detections, Review Ayahs, Reciters, Timeline, Ayah report, and Upload DB sections.

app/views/segments · high confidence

Unified draft content approval and import jobs

The system now uses a unified set of background jobs in the \DraftContent\ module to approve and import draft content. A new \ApproveDraftContentJob\ serves as the base for type-specific jobs (\ApproveDraftTafsirJob\, \ApproveDraftTranslationJob\, \ApproveDraftUloomContentJob\, \ApproveDraftWordTranslationJob\), allowing admins to approve drafts for translations, tafsirs, Uloom content, and word translations. These jobs handle the import from either legacy tables or the new draft content store, process footnotes for translations, and mark todos as finished. Additionally, the \ImportDraftContentJob\ now supports importing from both QuranEnc and TafsirApp sources, and the \CheckContentChangesJob\ has been updated to automatically trigger draft imports when new content is detected.

_app/jobs/draft\content · high confidence

Unified draft content management and approval workflow

The admin interface now provides a centralized 'Drafts' section for managing, reviewing, and importing draft translations, tafsirs, word translations, and footnotes. Administrators can view side-by-side diffs between current and draft text, filter by resource or verse, and approve changes with a single click. The workflow includes navigation between items, cloning and reprocessing tafsir text, adding inline footnotes to translations, and tracking import status per resource.

app/admin/draft · high confidence

Removals

Removal of custom numeric range filter input

The custom \FilterNumericRangeInput\ component, previously located in \lib/active\_admin/numeraic\_range.rb\, has been removed from the codebase. This change eliminates the specific UI logic that rendered two text fields for greater-than-or-equal and less-than-or-equal numeric filtering within Active Admin, meaning users will no longer have access to this specific custom range filter implementation.

_lib/active\admin · high confidence

Removal of draft translation approval job

The \ApproveDraftTranslationJob\ class has been removed from the application. This job previously handled the backend logic for promoting draft Quran translations and tafsirs to their final published state, including processing footnotes and updating resource metadata. Its removal indicates that this specific approval workflow is no longer supported or has been replaced by a different mechanism.

_app/jobs/quran\enc · high confidence

Removal of legacy CMS download pages and Arabic language utilities

The application no longer provides the 'Tarteel CMS' download interface, as the \app/views/downloads/index.html.erb\ and \show.html.erb\ templates have been deleted. Additionally, several internal utilities for Arabic text processing and Urdu transliteration have been removed, including \lib/utils/arabic/harf.rb\, \lib/utils/arabic/letters/qpc\_hafs.rb\, \lib/utils/arabic/rules.rb\, \lib/utils/lang/urdu\_transliterator.rb\, and the Java-based Tajweed utility \lib/utils/arabic/letters/tajweed.java\. Users will no longer have access to the previous CMS resource download pages or the specific Arabic/Urdu text handling features contained in these files.

app/views/downloads, lib/utils/arabic, lib/utils/lang · high confidence

Removed Quran Word-by-Word proofreading interface

The Word-by-Word text proofreading feature has been removed. The edit, index, and show views for the wbw\_texts resource, which previously allowed users to filter, view, and edit Quranic text variations (Indopak, Uthmani, Imlaei, KFQC Hafs) at the word level, have been deleted from the application.

_app/views/wbw\texts · high confidence

Removed internal audio optimization rake tasks

The \lib/internal/audio\_optimize.rake\ file has been deleted, removing internal rake tasks that previously handled audio volume normalization, format conversion (MP3/Opus), and segment timing imports for audio recitations. This cleanup removes the local tooling used to process and optimize streaming audio assets.

lib/internal · high confidence

Behavioural changes

Admin UI styling refinements and layout adjustments

The admin interface receives several visual and structural updates: the ActiveAdmin overrides file is cleaned up with consistent spacing, buttons are forced to wrap text properly, and visited link colors are preserved. The modal body padding is explicitly defined on all four sides to ensure consistent spacing. Additionally, the site title styling is replaced with a CSS filter to invert and recolor the logo image, and a new rule ensures the main content wrapper in the mushaf page preview uses flexbox for better layout control.

app/assets/stylesheets/admin · high confidence

Admin interface rebranding, Tailwind CSS integration, and Rails 8 migration cleanup

The admin interface has been rebranded from 'Tarteel' to 'Tarteel QUL' and migrated to the ':cms' namespace, updating authentication to use standard user methods instead of admin-specific ones. The UI now utilizes Tailwind CSS instead of Bootstrap, with legacy framework default initializers (Rails 5.0–7.0) and the CarrierWave storage initializer removed to reflect the upgrade to Rails 8 and the shift away from CarrierWave. Sentry error reporting has been updated with a new configuration file replacing the deprecated Raven gem, and PaperTrail has been patched to support Active Admin filters.

config/initializers · high confidence

Admin interface updates for raw data management

The admin interface for raw data has been updated to improve usability and consistency. Navigation links for ayah data previews now point to the CMS section instead of the admin section, and the 'View record' link has been similarly redirected. The Ayah Record resource now includes a dedicated form for editing content details, allowing users to select verses and resources via searchable selects and edit text fields, including a rich-text editor for cleaned text. The Resource resource also gains a form for editing details, featuring a searchable select for resource content and a JSON editor for metadata.

_app/admin/raw\data · high confidence

Admin panel migration to CMS namespace and UI overhaul

The admin interface has been migrated from the 'admin' to the 'cms' namespace, updating all internal routing and form actions (e.g., \admin\_action\_cms\_database\_backups\_path\). The UI has been modernized by replacing Bootstrap classes with Tailwind CSS utilities, introducing a new segment validation view with categorized issue tabs, and adding new administrative tools for exporting audio segments, comparing draft tafsir groupings, and managing downloadable resources.

app/views/admin · high confidence

Admin panel overhaul: new Tajweed and Script resources, CMS routing, and expanded Quran data fields

The admin interface for Quran content has been significantly expanded and reorganized. New resources have been added to manage Tajweed annotations (\TajweedWord\) and Quranic scripts by verse and word (\QuranScript::ByVerse\, \QuranScript::ByWord\), providing dedicated views for these specific data types. The navigation structure has shifted, with many internal links and preview actions moving from the \/admin\ namespace to \/cms\, reflecting a broader rebranding or structural change. Existing resources like \Chapter\, \Mushaf\, \Verse\, and \Word\ have been enhanced with new editable fields, including various script variants (Digital Khatt, Indopak Misbah, Indonesian Sign Language), Tajweed-specific text fields, and metadata columns. Additionally, the \Mushaf\ resource now includes debugging tools for line counts and a new action to export SQLite database layouts.

app/admin/quran · high confidence

Admin panel renamed to CMS with enhanced audio management capabilities

The admin interface has been renamed to CMS, with all internal navigation paths and links updated from /admin to /cms. This update significantly expands audio management features: administrators can now clone recitations, generate gapped audio from gapless sources, and upload segment data. The audio file and recitation views now display additional metadata such as word counts, segment counts, file sizes, and bit rates, and support filtering by these new fields. Access to critical actions like segment validation, metadata refresh, and audio generation is now strictly gated by user permissions. Additionally, the reciter bio field now uses a safe HTML helper to prevent XSS vulnerabilities, and the UI has been refined with wider modals and improved duration formatting.

app/admin/audio · high confidence

Arabic/Urdu Transliterations UI modernized with Tailwind CSS and new preview component

The Arabic/Urdu Transliterations tool views have been redesigned to use Tailwind CSS instead of Bootstrap, resulting in a more responsive layout with sticky table headers and updated progress bars. A new \\_ayah\_preview\ partial has been introduced to display word-by-word transliterations with continuous-word grouping, and the \new\ and \show\ pages now feature a zoomable image editor for page navigation. Additionally, the \proof\_read\_comments\ modal has been removed, and the \index\ page now uses a shared pagination component.

_app/views/arabic\transliterations · high confidence

Ayah view restructured into a modal with tabbed content and dynamic selectors

The Ayah display has been refactored into a modal interface that organizes content into tabs for Ayah text, Translations, Tafsirs, Words, Theme, Transliteration, Topics, and Recitation. This update introduces interactive side-panel selectors for each section, allowing users to dynamically change the Arabic script, reciter, translation, tafsir, or word-by-word translation without reloading the page. The layout now features a dedicated header for navigation and a loading indicator for asynchronous content updates.

app/views/ayah · high confidence

Database backup now supports optional binary format and ActiveStorage uploads

The database backup utility now allows exporting dumps in binary format via a new \binary\ option, generating separate binary archive files alongside the standard SQL dumps. Additionally, backup files are now attached to the \DatabaseBackup\ model using ActiveStorage, replacing the previous file-based storage approach, and the system now defaults to non-daemonized Sidekiq startup in \lib/utils/system.rb\.

lib/utils · high confidence

Database schema expanded with new resource management tables and Rails 8 upgrade

The database schema has been significantly expanded to support new content management features, introducing tables for change logs, contributors, downloadable files, downloadable resource tags, and draft contents (including draft translations and word translations). Existing tables like downloadable\_resources and draft\_translations have been enriched with new fields such as language\_id, meta\_data, and footnotes\_count. Additionally, the application has been upgraded to Rails 8.0, and the seed data has been updated to create a super\_admin user with the email [e-mail redacted].

db · high confidence

Database schema updates for new features and data structures

This release includes a comprehensive set of database migrations to support new application capabilities. Key changes include the creation of tables for downloadable resources and user downloads, a new FAQ system, and support for Tajweed annotations and various Quranic scripts (Digital Khatt, Indopak, Sign Language). The schema also introduces a dependency graph for morphology, tracks audio file metadata and segments, and adds support for draft content, word mistakes, and contributor information. Additionally, several legacy tables and columns have been removed or renamed to streamline the data model.

db/migrate · high confidence

Enhanced audio segment validation, metadata, and recitation management

Audio recitations now support more robust segment handling and metadata tracking. The system introduces a shared \SegmentValidator\ to standardize validation logic for segment data, ensuring consistency across the application. Segment models now support letter-level segmentation and transcript generation, allowing for more granular audio analysis. Recitation records can now be cloned with their associated audio files, and deleting a recitation automatically removes its segments and audio files. Additionally, audio files now track segment counts and support multiple export formats, while segment processing skips entries with missing timestamps to prevent errors.

app/models/audio · high confidence

Enhanced data integrity check interface with Tajweed support and improved result display

The Data Integrity Check tool in the admin panel now supports Tajweed rule validation checks alongside existing data integrity checks, allowing administrators to verify Tajweed-specific data consistency. The results display has been improved to show usage instructions, error messages, and summary statistics (such as counts) alongside the main data table, providing clearer feedback on check outcomes and better visibility into the data being validated.

app/admin/tools · high confidence

Enhanced local development setup and new Docker entrypoint

The local development experience is improved with a more robust setup script that now automatically installs Yarn dependencies and creates all required databases (including the separate Quran content database) before preparing the environment. The development server script (bin/dev) has been updated to use the POSIX shell, defaults to port 3000, and enables lazy remote debugging. Additionally, a new Docker entrypoint script is introduced to handle container initialization, and a dedicated script for starting Sidekiq is added to streamline background job processing.

bin · high confidence

Export jobs now deliver files to end users instead of admins

The translation and words export jobs have been refactored to send the resulting archive files directly to the requesting user rather than an administrator. The job signatures now accept a \user\_id\ instead of \admin\_id\, and the internal email notification logic looks up the \User\ record to deliver the file, enabling self-service exports for regular users.

app/jobs · high confidence

Export jobs now use User model and support inline footnotes and layout exports

The export system has been updated to use the \User\ model instead of \AdminUser\ for all export jobs (Tafsir, Translation, Raw Tafsir, and the new Mushaf Layout export). This change standardizes user identification across the platform. Additionally, the Translation export now supports inline footnote formatting via the \Exporter::AyahTranslation\ service, replacing the previous nested array structure. The Tafsir export now validates data integrity, archiving duplicate entries instead of removing them, and excludes blank footnotes. A new \MushafLayoutExportJob\ has been added to handle the export of Mushaf layout data, including SQLite database generation and email delivery with export statistics.

app/jobs/export · high confidence

Grammar admin panel: removed word association pages and added lemma translations

The admin interface for the Grammar section has been restructured: the WordLemma, WordRoot, and WordStem management pages have been removed, while the Lemma page now supports English translations (displayed in index and show views) and links to CMS paths instead of admin paths. The Root page has been restricted to read-only access (index and show only) and now supports lookup by value string, while Stem and Verse-related pages have had their permitted parameters and filters updated to include text\_madani and other fields.

app/admin/grammar · high confidence

Improved Arabic text language detection and expanded styling classes

The text sanitizer now uses a more robust language detection process for Arabic content by stripping punctuation and symbols before analysis, iterating through multiple language detectors, and accepting results based on a configurable language mapping (e.g., accepting Arabic or English for Arabic resources). Additionally, the base scrubber now allows 'indopak-nastaleeq', 'ayah-ref', 'hlt', and 'gray' CSS classes, and the Tafsir sanitizer accepts a 'resource\_language' parameter to support these language-aware detection rules.

_lib/utils/text\sanitizer · high confidence

Improved resource search and Quran reference matching

The resource search functionality now supports parsing Quranic references (e.g., 'Surah 2:255' or 'Al-Baqarah 255') to filter results by specific verses. This change introduces a new \QuranReferenceParser\ service that handles numeric and named surah matching with normalization and fuzzy logic, and updates the \SearchQuery\ service to integrate this parsing, allowing users to find resources relevant to a specific Quranic verse directly through the search interface.

app/services/resources · high confidence

Landing page styling overhaul with new component styles

The landing page styles have been restructured into a new modular SCSS architecture, introducing dedicated styles for buttons (including a new dark button variant with hover effects), tool cards (featuring background images, overlays, and grid layouts), tabs, and resource search inputs. This update also adds custom fonts (Open Sauce Sans), specific styling for Devise authentication pages, and responsive adjustments for mobile devices, replacing previous inline or scattered styling with a cohesive design system for the public-facing landing area.

_app/assets/stylesheets/landing\page · high confidence

Migrate styling infrastructure to Tailwind CSS and restructure asset pipeline

The application has replaced the previous Bootstrap-based styling with Tailwind CSS, introducing a new \application.tailwind.css\ entry point and defining custom component classes for buttons, documentation layouts, and interactive elements like the Tajweed and Mushaf views. The asset pipeline has been restructured to explicitly link new stylesheets (landing, export, PDF, admin) via \manifest.js\, while legacy Bootstrap imports and specific print-style overrides in \application.scss\ and \pdf.scss\ have been removed or refactored to support the new utility-first approach and improved responsive behavior.

app/assets/stylesheets · high confidence

Mushaf rendering overhaul: new font CDN, Tajweed color-coding, and UI polish

This change updates the shared stylesheet layer to support a new font CDN (static-cdn.tarteel.ai) and asset versioning, introducing new font families for QPC recitations (Hafs, Douri, Qaloun, Shuba, Sousi, Warsh), Surah names (v1–v4 and header), and Sign Language. It adds comprehensive Tajweed annotation styles with distinct color-coding for rules like Izhar, Ikhafa, Madda, and Ghunnah, including hover effects, and introduces a new \tajweed\_color\_new.scss\ for these visual rules. The diff also refactors the content layout by centering Aya text within the Mushaf page, adding support for English text direction (LTR), and implementing word-level mistake highlighting with hover scaling. Additionally, it cleans up legacy font definitions, removes unused CSS, and updates variable definitions for colors and breakpoints to align with the new design system.

app/assets/stylesheets/shared · high confidence

New component styles and UI polish for site pages

This update introduces dedicated SCSS files for several new or refactored site sections, including Credits, FAQ, Proofreading, Quiz, Resources, Segment Player, Syntax Graph, Tajweed Rules, Tools Help, Transliteration, Treebank (view and edit), Word Match, Mushaf Pages Table, and Download. It also refines existing components like PDF Preview, Common utilities, Splash cards, and the general Wrapper, adding responsive adjustments, consistent card styling, and improved layout behaviors for these specific areas.

app/assets/stylesheets/components · high confidence

New data models for verse and word-level Quran script storage

The application now includes dedicated models for storing Quran script data at the verse and word levels. The new \QuranScript::ByVerse\ model maps to the \quran\_script\_by\_verses\ table, linking script text to specific verses, chapters, qirat recitations, and resource content. Similarly, the \QuranScript::ByWord\ model maps to the \quran\_script\_by\_words\ table, enabling granular storage of script text associated with individual words, verses, chapters, and qirat types. These models support the underlying schema changes required to unify resource handling for surah, ayah, and word data.

_app/models/quran\script · high confidence

Quran corpus tool views adopt shared layout, Tailwind styling, and CMS navigation

The Word Concordance Labeling tool pages now use a shared 'tools/header' component that provides consistent breadcrumbs, a standardized title, and navigation actions (Previous/Next ayah, segment, or word) across the interface. The visual design has been migrated from Bootstrap to Tailwind CSS, applying a unified look with sticky table headers, hover states, and responsive spacing. Additionally, internal administration links for words and segments now point to the CMS (previously the admin area), and the filter UI has been simplified with a shared partial and a new 'Clear' button.

_app/views/word\_concordance\labels · high confidence

Rails 8 upgrade, Tailwind CSS integration, and expanded API and documentation structure

The application has been upgraded to Rails 8.0, introducing new configuration defaults and eager-loading support for the qul-scripts library. The frontend styling has been migrated to Tailwind CSS, with a new configuration file defining content paths, custom fonts, and safelisted utility classes. A new documentation structure is now driven by config/docs.yml, organizing content into categories like Download Resources, Contribute Code, and API. The routing layer has been significantly expanded to include a new /api/v1 namespace for chapters, audio recitations, segments, translations, and tafsirs, alongside new community tools (compare ayah, quran scripts comparison, mistake heatmap) and a dedicated docs section. Storage configuration has been updated to support multiple S3-compatible buckets for exports, segments, and database backups, with environment variables now required for database connection details.

config · high confidence

Rebrand admin panel to QUL CMS and introduce UloomContent management

The admin panel has been rebranded to QUL CMS, with all internal routes, menu labels, and navigation links updated from the 'admin' namespace to 'cms'. A new UloomContent resource has been added to the Content section, allowing administrators to manage Quranic exegesis content with fields for text, cardinality, and location. The dashboard now displays a welcome message, restricts certain actions based on user permissions, and includes a new Tajweed rules section. Additionally, the previous AdminUser resource has been removed, and the User resource now supports role-based filtering and password visibility toggles.

app/admin · high confidence

Rebrand to QUL and update Docker deployment configuration

The Docker deployment configuration has been updated to reflect the rebranding from 'quran-cms' to 'QUL' (Quranic Universal Library). The Nginx server block now targets the qul.tarteel.ai domain, serves content from the /home/app/qul/public directory, and increases the maximum upload size to 100MB. Additionally, the environment variable configuration file (misc-env.conf) has been removed, and the README has been simplified to show the new image name (quranic-universal-library) and a streamlined run command using the RAILS\_MASTER\_KEY. New scripts for database initialization (init-db.sh) and Sidekiq execution (sidekiq.run) have been added to support the development and background job infrastructure.

docker · high confidence

Redesign Ayah Recitations tool with Tailwind CSS and segment comparison

The Ayah Recitations management interface has been redesigned to use Tailwind CSS, replacing the previous Bootstrap layout with a responsive, mobile-friendly design. The index view now features a sticky table header for easier navigation and a visual progress bar for segment processing status. The segment builder tool has been enhanced to support comparing recitation segments against raw segments, and the UI now includes breadcrumb navigation and consistent action buttons across the recitation management pages.

_app/views/ayah\_audio\files · high confidence

Redesign of Mutashabihat Phrase Builder and Management Interface

The Mutashabihat (phrase matching) tool has been completely redesigned with a modern, responsive UI using Tailwind CSS. The phrase builder now features a sticky source-ayah panel, improved word-selection controls, and integrated search/filter toggles (text, root, lemma, LCS). The phrase list and proofreading views have been updated with a sticky table header, refined filter controls, and consistent button styling. Admin links have been updated to point to the new CMS paths, and the phrase display components now use semantic badge classes and improved hover states for better readability and interaction.

_app/views/morphology\phrases · high confidence

Redesign of Quran Script Proofreading tool with expanded script support

The Quran script proofreading interface has been redesigned to improve usability and expand script coverage. The layout now uses a shared tools header with breadcrumbs and a sticky table header for better navigation. The filter section has been simplified, replacing individual dropdowns with a shared partial and adding a 'Clear' button. The main table now displays a list of ayahs with a new 'Ayah\#' column and uses a shared pagination component. Crucially, the detailed view now supports a significantly wider range of scripts, adding Uthmani Simple, Imlaei, Imlaei Simple, Digital Khatt v1, Digital Khatt Indopak, Sign language, and Misbah script sections alongside existing ones like QPC Nastaleeq and Indopak.

_app/views/word\_text\proofreadings · high confidence

Redesigned Devise authentication page layout and navigation

The authentication views now feature a modernized UI with a Spline 3D animation background and a branded 'Quranic Universal Library' overlay. The navigation links have been restructured into a vertical list with descriptive text (e.g., 'Already have an account?') and styled with Tailwind CSS classes for improved readability and hover effects, replacing the previous plain link list.

app/views/devise/shared · high confidence

Redesigned Devise authentication pages with Tailwind CSS and animated backgrounds

The Devise views for password reset, confirmation, and unlock have been completely restyled using Tailwind CSS, replacing the previous Bootstrap-based layout. These pages now feature a modern, responsive design with a split layout that includes a Spline 3D animation background on larger screens. The forms utilize floating labels and improved validation feedback, and the layout adapts to mobile devices by stacking the animation and form elements vertically.

app/views/devise/passwords · high confidence

Redesigned Devise email templates with branded styling and updated messaging

The confirmation, reset password, and unlock email templates have been updated to feature a new visual design and clearer messaging. The confirmation email now includes a branded greeting, an introduction to the Quranic Universal Library (QUL), and a styled call-to-action button, replacing the previous generic text. Reset password and unlock emails also received styling updates, including the addition of a 'cta-button' class to their respective links for consistent visual presentation across all authentication emails.

app/views/devise/mailer · high confidence

Redesigned Mushaf Layout Builder with Split-Screen Views and Step-by-Step Workflow

The Mushaf Layout Builder has been completely overhauled to provide a guided, step-by-step workflow for mapping pages. The interface now uses a SplitScreen component to display source PDFs or archive embeds side-by-side with the Mushaf text, replacing the previous resizable inline layouts. A new page mapping view allows users to set Ayah ranges via a modal, while a dedicated line alignment view and proofreading view streamline the editing process. The main layout page now features a searchable, sortable table with a visual progress tracker (Step 1: Set Ayah Range, Step 2: Assign Line Numbers, Step 3: Fix Line Alignment, Step 4: Preview) and clear status indicators for each page. Additionally, a new compare view enables users to select and view a second Mushaf side-by-side for comparison, and missing data states are handled with explicit guidance on which steps are required.

_app/views/mushaf\layouts · high confidence

Redesigned card components with Tailwind CSS and new layout structures

The card display system has been completely overhauled to use Tailwind CSS, introducing new partials for the card container, grid, and side-scrolling layouts. This change standardizes the visual appearance across the application, ensuring consistent spacing, typography, and responsive behavior for resource cards. New components handle specific card elements like titles, descriptions, tags, and footers, while a new download dropdown component manages resource file access and copyright restrictions. The update also includes a 'Learn More' button component and improves the overall structure of card content, including support for Quran script previews and icon displays.

app/views/card · high confidence

Redesigned login page with Tailwind CSS and modal support

The sign-in experience has been completely overhauled to use Tailwind CSS instead of Bootstrap, featuring a modern layout with floating labels, validation feedback, and a 'Remember me' option. The view now supports a modal presentation mode (triggered by a modal parameter) for embedded use cases, while the full-page view includes a split layout with a Spline animation background and tabs for switching between Login and Create Account. Flash notices are now rendered via a dedicated Turbo Stream template to ensure proper updates during remote form submissions.

app/views/devise/sessions · high confidence

Redesigned registration and account edit pages with Tailwind CSS and new layout

The user-facing registration and account edit views have been completely restyled and restructured. The sign-up form now uses Tailwind CSS utility classes, features floating labels, includes a new 'add to mailing list' checkbox, and is embedded in a split-screen layout with a Spline animation background. The account edit page has also been migrated from Bootstrap to Tailwind, updating input styling and the submit button appearance.

app/views/devise/registrations · high confidence

Redesigned translation proofreading interface with multiple view modes

The translation proofreading tool now features a modernized UI using Tailwind CSS, replacing the previous Bootstrap-based layout. Users can now switch between four distinct viewing modes: 'Ayah view' (showing the verse and translation), 'Page view' (showing all translations on a page), 'Page with Arabic view' (displaying Arabic text alongside translations), and 'Proofreading view' (a split-screen layout with a PDF embed for reference). The edit form has been updated to use floating labels and includes client-side validation for translation and footnote text. Additionally, the main listing page now features a sticky table header for better navigation and uses a shared pagination component.

_app/views/translation\proofreadings · high confidence

Redesigns application layouts and email templates with Tailwind CSS and modern styling

The application's visual presentation has been updated across multiple layout templates. The main application layout now uses Tailwind CSS utilities, includes the Inter font, and features a new landing header and footer structure. Devise authentication pages have been restyled with a dedicated layout that includes a hero section and background animation. Email notifications have been completely redesigned with a branded, responsive wrapper, header image, and CTA button styling. Additionally, the PDF export layout has been updated to use Tailwind spacing classes, and a new grid partial has been introduced to standardize content width and alignment across pages.

app/views/layouts · high confidence

Refactor text sanitization and improve import performance and reliability

The text sanitization logic has been refactored: the previous \lib/text/base\_sanitizer.rb\ and \lib/text/base\_scrubber.rb\ classes have been removed in favor of a new \Utils::TextSanitizer::TafsirSanitizer\ used by the importers. This change is accompanied by significant performance and reliability improvements in the import process, including batched draft creation for translations in \lib/importer/quran\_enc.rb\ to reduce database load, the addition of an \after\_import\ hook system in \lib/importer/base.rb\ that automatically generates \AdminTodo\ items for parse issues, and expanded error handling (e.g., catching \Zlib::DataError\). Specific importers like \IslamEnc\ and \QuranAcademy\ have been updated to use the new sanitizer and hook infrastructure, while \EQuranLibrary\ and \QuranEncTafsir\ have been restructured to support explicit resource mapping and improved verse grouping.

lib/importer · high confidence

Refactor user registration flow and add custom session controller

The user registration process has been refactored to use Devise's built-in parameter sanitizer, which now explicitly permits the 'add\_to\_mailing\_list' field during sign-up, while the post-registration redirect has been changed to the new session path instead of the root path. Additionally, a new custom sessions controller has been introduced to handle return URL storage, ensuring that users are redirected to their intended destination after logging in.

app/controllers/users · high confidence

Rename String extension method from remove\_dialectic to remove\_diacritics

The \remove\_dialectic\ method in the \String\ initializer has been renamed to \remove\_diacritics\. This change updates the public API for stripping Arabic diacritical marks and hamza variants, ensuring the method name accurately reflects its function of removing diacritics rather than dialectic characters.

config/initializers/extensions · high confidence

Reorganize admin content resources under CMS namespace

The admin interface for managing Quranic content resources has been restructured: several existing admin controllers (chapter\_info, foot\_note, tafsir, translation) have been moved into the app/admin/content directory and their routing namespace updated from :admin to :cms. New admin resources have been added for Arabic transliteration, change logs, and root details, while the AyahTheme resource received expanded filtering and parameter permitting. The ResourceContent controller now enforces explicit authorization for actions like approval and file upload, introduces scopes for downloadable resources, and updates draft import logic to use new DraftContent jobs and support word translations.

app/admin/content · high confidence

Restructures admin notes area and tightens permissions

The admin interface for notes has been reorganized under a new 'Notes' menu parent, with configuration files moved into a dedicated subdirectory. Access to the Feedback resource is now restricted to index and show actions, removing the ability to destroy records. Important Note creation now associates notes with the current user instead of an admin user, and the redirect path has been updated to use the 'cms' namespace. Additionally, filters for verses and words now use the correct association names, and HTML rendering for note text is handled via a safe helper.

app/admin/notes · high confidence

Rewritten controllers with presenter pattern and unified access control

The application's controller layer has been refactored to use a presenter pattern and a unified authorization system. Most controllers now delegate data loading and view logic to dedicated presenters (e.g., AyahPresenter, ResourcesPresenter) via an init\_presenter callback. Access control is standardized across the app: public-facing community features use CommunityController with authorize\_access!, while admin-only features use AdminsController with explicit super\_admin checks. This replaces the previous mixed approach of check\_permission and direct can\_manage? calls, ensuring consistent permission handling and cleaner separation of concerns between controllers and business logic.

app/controllers · high confidence

Shared UI components migrated to Tailwind CSS and modernized

The shared view components have been significantly refactored to replace Bootstrap with Tailwind CSS, updating the navigation bar, flash notices, form errors, and search inputs to use utility classes and Stimulus controllers. New shared partials have been introduced to support specific features: a reusable pagination component, a dedicated SVG-based Mushaf viewer with interactive customization tools, a multi-view resource embedder (PDF, Archive, Image), and a breadcrumb navigation for developer tools. Additionally, the 404 page now includes interactive learning activities, and the navigation has been rebranded to 'Tarteel QUL' with updated links.

app/views/shared · high confidence

Standardized help alerts for tools with access requests

The tools section now displays consistent, styled alert banners at the top of each tool page to explain their purpose and guide user interaction. These alerts provide a brief description of the tool (such as the Ayah Dependency Graph, Tafsir, or Translation tools) and, for tools requiring permission, include a 'Request Access' button that opens a modal for admin approval. This change ensures users immediately understand the context of each tool and how to contribute or access restricted features.

_app/views/tools/header\alert · high confidence

Standardized tools page layout with breadcrumbs and view toggles

The tools interface now uses a shared header partial that consistently displays breadcrumbs and a help button across all tool pages, replacing previous inconsistent header implementations. Additionally, the main tools listing page now features a unified layout with a search input and a toggle to switch between list and grid views for available resources, improving navigation and discoverability.

app/views/tools · high confidence

Support for .heading class in Active Admin sections

The styling for section headers in Active Admin has been updated to apply the same header styles to elements with the .heading class in addition to h3 tags. This allows for more flexible header styling within section components.

_app/assets/stylesheets/active\admin · high confidence

Surah audio segment builder UI overhaul and feature enhancements

The Surah audio files interface has been redesigned with Tailwind CSS, replacing the previous Bootstrap layout. The segment builder now supports undo/redo keyboard shortcuts, displays recitation text in the Digitalkhatt script, and allows comparing segments across different recitations. The index and show views now display the simple chapter name alongside the ID, use a sticky table header for better navigation, and render segment progress with a modern green progress bar. Additionally, the help modal has been updated to list the new keyboard shortcuts.

_app/views/surah\_audio\files · high confidence

Surah info pages migrated to Tailwind CSS and redesigned layout

The Surah info views (index, show, edit, changes, and diff components) have been completely restyled using Tailwind CSS, replacing the previous Bootstrap grid and utility classes. This migration introduces a new responsive layout with a standardized header component, updated form controls with focus states, and a redesigned table for the index view featuring sticky headers. Additionally, the 'Edit history' page has been removed, and the diff views now use a new \safe\_html\ helper for rendering content.

_app/views/surah\infos · high confidence

Toastr notification styles updated for consistency and visual depth

The toastr library styles have been refactored to use shared SCSS variables ($info, $danger, $success, $warning) instead of CSS custom properties (var(--bs-\*)), ensuring consistent color usage across the application. Additionally, the text shadow on toast titles has been enhanced from a simple white offset to a subtle black shadow (rgba(0, 0, 0, 0.25)), improving readability against various backgrounds.

app/assets/stylesheets/libs · high confidence

Unified draft content management and import workflow

The draft content system has been restructured to support a unified approval and import process for translations, tafsirs, word translations, and root details. A new \Draft::Content\ model acts as a central entry point that routes import requests to specific job handlers based on the resource type. Draft models for translations, tafsirs, and word translations now include dedicated \import!\ methods that create or update the corresponding live records, handling associated data like footnotes and verse grouping metadata. Additionally, the system now tracks footnote counts and mismatches to ensure data integrity during the import process.

app/models/draft · high confidence

Unified layout and multiple view modes for Tafsir proofreading

The Tafsir proofreading interface now uses a consistent page wrapper and header shared with other tools, replacing the previous standalone layout. Users can switch between three display modes via a new dropdown: the standard Tafsir view, a Tafsir with Arabic view (displaying QPC Hafs text alongside the translation), and a Proofreading view that embeds a PDF side-by-side with the text. The edit form has been updated to use a remote submission controller, and the index page now features a sticky table header and a unified pagination component.

_app/views/tafsir\proofreadings · high confidence

Updated public assets and site configuration

The site now includes a new SVG favicon and a Web App Manifest to support PWA installation, while the legacy 404 and Apple touch icon files have been removed. A new maintenance page has been added for downtime scenarios, and robots.txt has been updated to disallow crawling of the /admin path.

public · high confidence

Welcome email rebranded to Quranic Universal Library (QUL)

The 'thank\_you' mailer template has been completely rewritten to reflect the new Quranic Universal Library (QUL) brand. Users now receive a concise welcome message that introduces QUL as an open platform for Muslim developers, scholars, and researchers. The email replaces the previous generic Quran.com community invitation with specific calls to action: downloading Quranic resources, exploring developer tools, contributing to the open-source GitHub repository, and joining the Discord community. The old structure, which included a logo, a Discord join button, and general team background, has been removed in favor of a streamlined, product-focused onboarding experience.

_app/views/user\mailer · high confidence

Test coverage

Added Cypress end-to-end tests for user authentication flows; Added SQLite benchmark script for reciter data indexing; Added tests for morphology, audio validation, and Quran reference parsing.

Dependencies

Upgrade to Rails 8 and Ruby 3.3 with comprehensive dependency updates

The application has been upgraded from Rails 7 to Rails 8 (specifically 8.0.3) and the Ruby runtime requirement has been updated to support versions 3.3.3 through 3.3.10. This major platform upgrade includes significant updates to core gems such as Nokogiri (to 1.18.8), Active Admin (to 3.2.3), Devise (to 4.9.4), and Sidekiq (to 7.2.4). Additionally, the frontend tooling has been modernized with esbuild upgraded to 0.21.2, Trix to 2.1.13, and the addition of Tailwind CSS support via the tailwindcss-rails gem, while removing legacy dependencies like CarrierWave and Bootstrap in favor of newer alternatives.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 41.

Lenses

  • Code Health 38
  • Architecture 88
  • Maturity 61
  • Readiness 38
  • Security 62
  • Domain Modelling 67
  • Accessibility 36

Changes since last survey

  • 300 commits — 242 feature/other, 58 fixes

By area

  • app/views — 102 commits
  • app/javascript — 35 commits
  • (root) — 28 commits
  • app/admin — 23 commits
  • app/models — 21 commits
  • app/assets — 13 commits
  • app/presenters — 8 commits
  • lib/tasks — 8 commits
  • app/controllers — 7 commits
  • lib/audio_segment — 7 commits
  • app/jobs — 5 commits
  • app/helpers — 4 commits
  • lib/exporter — 4 commits
  • config/initializers — 3 commits
  • tools/segments — 3 commits
  • (repo) — 2 commits
  • app/services — 2 commits
  • bin/bundle — 2 commits
  • config/locales — 2 commits
  • lib/audio — 2 commits

Notable commits

  • fix: Fix Font color palette
  • fix: Fix Graph Settings modal closing and scope issues (#498)
  • fix: Fix Mutashabihat UI issues, improve filters, and harmonize button styles. (#538)
  • fix: Fix PDF viewer and modal z-index issues (#449)
  • fix: Fix UI for actions inside Related Verses of Morphology Phrases (#539)
  • fix: Fix WebGL context error on Turbo-cached landing page (#619)
  • fix: Fix ayah theme export using global verse IDs (#532)
  • fix: Fix font loading issue on Glyph Preview tab (#408)
  • fix: Fix font preview handling and font-face consistency (#495)
  • fix: Fix footer extra white space caused by tooltip elements (#451)
  • fix: Fix graphs filter (#468)
  • fix: Fix inconsistent card heights in side-scrolling container (#509)
  • fix: Fix login modal issue. (#503)
  • fix: Fix modal Bootstrap conflict on form submission (#454)
  • fix: Fix morphology word modal close button and responsive layout (#505)
  • fix: Fix mushaf layout resource type and template syntax errors (#418)
  • fix: Fix noor bayan rendering (#733)
  • fix: Fix surah segments endpoint to accept chapter query param (#544)
  • fix: Fix syntax errors in quran script preview template (#421)
  • fix: Fix timeline for gapped audio, refresh timeline when ayah is changed (#688)
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

TarteelAI/quranic-universal-library was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 5331a0a8b4f20e21dc5d8a056d4ad950be3f7c15 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.