Divine Discourses

Toward direct engagement with the Qur'an

Changelog

Every correction and material change to Divine Discourses since launch. Logged here as a record of accountability. Site maintainers commit to logging future corrections in the same place.

Historical entries keep the vocabulary of their day — for example, the middle depth tier appears as "Scholar" in entries written before it was renamed "Study".

2026

August

  • The root-density heatmap is 41% lighter, and shows the same numbers. Each of its 4,560 cells carried its own hidden label so a mouse hover could show the value. Those labels were 4,560 of the page's 11,225 elements — the next heaviest page on the site is under 2,800 in total. One label now serves the whole chart, built from the cell you are pointing at. The hover text is unchanged, checked cell by cell in both column orders against the data file the chart is drawn from. Nothing moved for keyboard readers: the cells have never been focusable, and the values have always also been in the “View as table (by root)” panel below the chart, which is unchanged. §
  • Six long pages now open with a list of their own sections. validation.html runs about eighteen screens on a phone and offered no map of itself; sources, numbers, about, coverage and patterns are all long enough to want one. How It Works has had such a list since it was written, and this is that same list applied to the pages that needed it. The list is generated from the headings already in each page, so it cannot drift from them, and it is in the markup rather than built in the browser, so it works with scripts off. A heading that already had an address keeps it — nine on How It Works are linked from other pages and none of them moved. Entries for sections your depth level hides are hidden with them. §
  • The root-dispersion table is downloadable from the Export page. It has been published since the measure shipped — in the schema, the data dictionary, the citable archive and the machine-readable dataset descriptions — but the Export page offered thirteen download cards under a line promising fourteen, and dispersion was the missing one. Its card is now there, with the same 1,642 rows the archive carries. Everything about a published table is generated from one schema except its download card, which is written by hand; that is how a table could be complete everywhere a machine looks and absent where a reader looks. A new check now holds the page, its stated row counts, its table-count prose and the tables themselves against that schema, and cross-checks every table against the data it is derived from. §
  • Ten pages stopped downloading a 126 KB lookup table they barely used. The table tells the page which words in its prose are Qur'anic roots, so they can be tapped for a definition. It listed all 1,944 roots on every page that carried it; between them those pages mention 25. Each page now receives only the entries its own text can match — 5,560 bytes across all of them, against 128,998 before — and the three pages that mention no root at all no longer load the feature. Nothing a reader sees changed: every root and verse reference wraps exactly as it did, verified by comparing the rendered markup of all 30 references on the affected pages before and after, byte for byte. §
  • The coverage dashboard was under-reporting how many sources are reachable from a badge. It said 29 of 31, and with JavaScript off it said 25 of 31. The registry had grown to 36 sources, 34 of them reachable, and the measurement behind those figures had not been re-run since. The two that remain unreachable are cited as further reading only and are named on the page. The generator that produces this report had no staleness check, which is how a figure on the page whose subject is honest accounting went two releases out of date. It has one now, and it compares the measured content while ignoring the date stamp, so it cannot pass merely because the file was written today. §
  • Version 1.2.0, and the data archive a citation names can no longer change under it. The download page told readers that citing v1.1.0 named those exact bytes and that a new release would add a new archive rather than replace the old one. Neither was true. The version stayed at 1.1.0 while the table set grew from four to fourteen, and the staleness check compared the archive against the current tables — so it kept demanding that the released bytes be overwritten. The archive published as v1.1.0 was rewritten five times and ended up holding ten tables it never published. The genuinely released v1.1.0 bytes are restored from the release commit, today's fourteen tables are published as v1.2.0 alongside it, and every archive's SHA-256 is now recorded in data/exports/RELEASES.json. The build refuses to rewrite a published archive and tells you to bump the version instead. Also corrected: the download pages said "four" and "twelve" tables where there are fourteen, and the enumeration omitted dispersion and formulaic density. §
  • Choosing translations no longer means scrolling five screens of checkboxes. The old "N selected" button opened a search-less list of every edition grouped by language, and every tap reloaded the whole passage immediately -- ticking three boxes meant three reloads. It now opens a searchable dialog (by translator, language, or edition id), your current selection sorts to a "Selected" group at the top, and every change applies once, on confirm. The button itself now names the translators you picked instead of just counting them. Read's address bar carries the selection too (?t=), so a shared link shows the translations its sender actually saw. The Compare page's passage view rendered only the first saved translation and dropped the rest silently; it now renders every one, each with its own translator credit and correct script. The gear panel (every page) gets a Translations row so the setting is no longer Read-only. §
  • 18,408 recurring phrases now answer a harder question: how much of a surah are they? The Formulas index already listed every phrase that recurs somewhere in the Qur'an; it never said what share of a given surah's words those phrases actually cover, which is the central quantity in Bannister's (2014) computerised oral-formulaic study. Every surah now gets that number for both the root and surface streams, tested against 10,000 length-matched resamples of the whole corpus rather than eyeballed: 46 of 228 candidates (114 surahs x 2 streams) come back higher than chance predicts after a joint Benjamini-Hochberg correction. Surah 64 (At-Taghabun) tops the root-stream ranking at 55.6% of its words, the worked example on Validation; the nine shortest, most distinctive Meccan surahs (96, 100-112 and others) sit at exactly 0%. New panel on every Dossier page and a corpus-wide ranking on Formulas; a 13th table on Export. §
  • A root's frequency was never the whole story; now its spread is measured too. Every root already carried a raw count, but two roots with the same count can look completely different: one recurring across the whole text, the other clustered inside a handful of surahs telling one story. Root detail now reports a new dispersion panel for all 1,642 roots: Gries's Deviation of Proportions (DP, DPnorm, corrected per Lijffijt & Gries 2012), Juilland's D, the plain surah count, and a dispersion-adjusted frequency, rather than picking one measure as authoritative, since the literature does not agree which is best. j-h-m (Hellfire) is the worked example on Validation: it occurs in 18 of 114 surahs, moderate by plain range, but those 18 are disproportionately short Meccan surahs, so its normalized DP is 0.7989, near the top of the ranking. Numbers gets a most/least evenly spread ranking; Export gets a fourteenth table; three new sources (Gries 2008, its 2012 correction, and Juilland & Chang-Rodriguez 1964) are cited throughout. §
  • Six sources got an id, and eleven numbers got a claim record. Islahi, Farrin, Nöldeke and Schwally, Watt, Mustansir Mir's 1983 dissertation, and Sadeghi and Goudarzi were all already cited in prose on Sources, but carried no machine-readable id, so no badge could ever resolve to them; Farrin in particular had no citation anywhere at all despite being named twice as a starting point for ring-composition scholarship. All six now have a full entry in data/sources.json. Separately, eleven numbers this site had been showing for months without a provenance record, the 89 direct-address verses, the 29/14 fawatih count, both structural null results (3,067 and 345 candidates, zero survivors either way), a monorhyme surah, one root's association scores and network centrality, the discursive-pivot count, an export's row count, vocabulary variety by period, and the 18,408 recurring phrases, now each have a claim record with its sources, its reproduction method, and its limitations spelled out. A new coverage measurement found that six sources, including two load-bearing ones, khan-introduction-2011 and bannister-2014, were reachable from no badge anywhere on the site; bannister-2014 is now cited on Formulas. The Khan outline queue's headline number turned out to conflate two different books: of the six "transcribed" outlines in surahs 85-114, only one is actually from the 2013 volume the queue is named after, so 29 of 30 remain wanted from that book specifically, not 24. Also fixed: a malformed prefilled issue-link title on Coverage, and a hardcoded source count in check-citation.mjs that would have quietly stopped matching reality the next time a source was added. §
  • Eight more download tables, and Compare stopped front-loading 368KB nobody asked for. The public Export page carried four tables since its first release; it now carries twelve. The new ones republish, as CSV and JSON with the same schema and data dictionary as the rest, exactly what Formulas, the root detail centrality panel, Patterns' rhyme ranking, the fawatih count, discursive pivots, the computed-structure panel, and the theme density behind Themes already show in the browser, so any of it can be recomputed or reused without scraping a page. Separately, Compare fetched its 368KB root list on every visit, whether or not a reader ever searched for a root; it now fetches that file on first use (typing into a root field, following a deep link, or clicking one of the example pairs) and not before. A blank visit to Compare no longer downloads it at all. §
  • The root you clicked is the root you get. On Read, every word in the word-by-word table links to its root, and opening one showed a panel of frequencies, first and last occurrence and derived forms under a green Verified marker. For most roots that panel was wrong. The lookup compared the corpus's Buckwalter spelling against an index keyed by transliteration, case-insensitively, and Buckwalter uses capitals for the emphatic consonants: lowercasing them erased the difference. Only 683 of 1,642 roots resolved correctly. 205 opened a different root altogether, so r-ḥ-m, the root of mercy, rendered the figures for d-r-h-m, the root of the coin; 754 more matched nothing and produced a bare "Root data not available". All 1,642 now resolve, because the page already contained the correct mapping a few hundred lines above the fault. Two new guards keep it that way: a checker that holds the six root datasets to one another and to the page's own transliteration map, and a browser test that clicks a root and reads the panel it opens. §
  • Type a word, get somewhere. The Ask box used to invite concepts like "mercy" and then refuse them: an ampersand made it answer "not recognized", and words that name both a chapter and an idea (light, pilgrimage, repentance) silently opened the chapter and buried the idea. Now a reference goes straight to the text ("2:255", "surah 36", "juz 5", "para 3", all 30 juz landing on the verse they begin at), an unambiguous name still jumps to its surah, and a genuinely ambiguous word opens Search showing the chapter, the theme and the root side by side so you choose. The index behind that page grew to hold all 114 surahs, all 30 juz and every root that carries an English gloss, and both halves of the matcher now connect "creation" to the gloss "to create". Nothing dead-ends: a query with a letter in it always lands somewhere that can help, and Roots offers a site-wide search when its filter finds nothing. A 42-query acceptance corpus runs the real router and the real matcher on every release. §
  • Seventeen languages to read alongside the Arabic. Read gained Turkish, Bosnian, Chinese, Japanese, Korean, Russian, Persian, German, Hindi and Swahili, joining the seven already there. Each script gets typography that respects it: bundled faces for Devanagari and Bengali, a Naskh setting for Persian rather than the Nastaliq used for Urdu, and wider line height for the CJK scripts. Every edition id was confirmed against the live translation service before it shipped, and an edition whose translator the service does not name ships unnamed rather than borrowing a name from somewhere else. The weekly check now also proves that every edition offered has a label and that no label points at an edition that is gone. §
  • Guided paths that follow you across the site, and a site that works offline. Each of the five learning paths now carries a time estimate and hands every step a ribbon on the tool page it sends you to, so you can see "step 2 of 4" and move forward or back without returning to the list. Progress stays in the same single preference key as everything else. Separately, the site now caches its shell the first time you visit, so a later visit with no connection still renders and says so plainly instead of failing. An accessibility pass fixed a hidden form field that keyboard users could still land on, added missing control labels, and turned heading structure, form labelling and colour contrast into checks that run on every push rather than a paragraph promising they were considered. §
  • Readable by machines, not just by people. Every page now carries structured data describing what it is: the datasets on Export, the defined terms in the Glossary, the typed works on Sources, the learning paths, the breadcrumb trail. Two plain-text summaries at /llms.txt and /llms-full.txt give an AI reader the same tour a person gets. The changelog became data, so this page and a new Atom feed at /feed.xml are generated from one registry and can never disagree. The data exports gained a Frictionless data package, a Croissant description, a reproducible archive and a per-dataset licence label, including the one whose licence is still pending. §
  • Cite this page. The site could tell you where its evidence came from but gave you no way to cite it back. Every page footer now offers a citation in Chicago, APA and BibTeX form with the canonical URL, the version and the access date; the repository carries a CITATION.cff; and one version file feeds all of them, with a check that fails the build if any of them drift apart. Each claim on Validation gained a permanent anchor you can link to, and the method page was broken into sections that can be cited individually. The glossary became a single registry, so the terms in the page and the terms the tooltips use can no longer diverge. A code of conduct, a security policy and a correction form on every page arrived at the same time. §
  • A card per surah, an app that installs, and a citation you can check. Sharing a surah or a theme now unfurls with its own image — the surah's Arabic name, verse count, and place in the revelation order, or the theme's root families — instead of one image for the whole site. Installing the site as an app gets three shortcuts (Read a passage, Today's discourse, Browse surahs) and a proper preview. Behind both: a new check that confirms the word-by-word translator credit against what the Quran.com endpoint actually serves, so that citation stops resting on documentation and starts resting on a response — it runs with the weekly citation and edition checks, and stays quiet unless something really changed. §
  • One share button that always shares the right thing. The floating share button now follows what is on screen: a theme card on Themes or a rendered Dossier hands out that entity's link-preview page, so a pasted link unfurls with its own title and description. The 33 per-card Share chips on Themes are gone and the Embed chip moved to a study-only row, so a theme card at Simple depth shows no buttons at all. On Read, each verse's reference (103:1) is now itself a link to that verse — right-click or long-press to copy — and the native share sheet carries a readable label like "al-'Asr 103:1-3". Citation popovers gain a "Copy citation" action, the share button now also exists on Coverage and Export, and the link-preview pages and site card were regenerated with fuller metadata. §
  • Word meanings in the text itself. The Read page now shows a published word-by-word English meaning beneath every verse, at every depth: the written word above its meaning, reading right to left like the verse. The meanings are fetched per passage from the Quran.com Foundation Content API and cached in your browser only, the same way the verse translations already worked; nothing is machine translated, no word-translation text is stored in this repository, and the rights holders are credited on Sources. The word table's outbound dictionary links, which used to stand in for a meaning the site could not show, are replaced by a single link in the caption. §
  • Pages about the text, not about the site. The home page's explanations of how the site verifies itself, its three depth levels, and its purpose all lived in full on the method pages already, so they now live there only; what is left is a reading path from the hero to today's discourse. Provenance follows the same principle: a source badge already opens its full citation and license, so each card now shows the badge and a short source name, with the method sentences one click away in a collapsed note. On a phone the Numbers page sheds 250px of repeated citation prose. §
  • Simplicity with avenues for depth. The depth system now does what it promises. A saved depth applies before first paint (no more flash of Simple), the Simple/Study/Encyclopedic control sits at the top of Roots, Numbers, Patterns, Dossier, and Themes with its 1/2/3 keys documented beside it, and the heaviest pages were reorganized so Simple is genuinely simple: duplicate renderings of the same data were merged behind view toggles, statistical ledgers moved to Encyclopedic (their cautions stay visible), and the self-study kit on Themes is stated once instead of 33 times. Nobody arrives to nothing: Roots and Dossier open on labeled examples, Words gained one-tap example searches, Compare's examples show at every depth, and the Ask box now also lives on Read and How to use. Statistical labels lead with plain language ("Strength of evidence (LLR)") with glossary definitions one tap away, Prev and Next continue across surah boundaries, analysis pages end with contextual "Explore further" links, and on phones the floating buttons no longer overlap and navigation targets keep a full tap size. §
  • Open-source audit. A full-repository audit ahead of open-sourcing. Licensing: the LICENSE file now states that MIT covers the site's own code while bundled data and fonts keep their own licenses, and NOTICE.md now lists every computed dataset, including the five analytics directories added in the releases below. Fixes: a stray word removed from the Numbers day-month-year card, the offline cache now includes the chart helper script it had missed, chart tooltips can be dismissed with Escape from every chart, period labels on Navigate now match the rest of the site, a theme distribution strip that could hang on "Computing" now reports failure, and the recurring-word highlights on Read announce themselves to screen readers as actionable. §
  • Coverage dashboard and network centrality. A new Coverage page reports, from direct measurement of the bundled data files: how many of the 77,429 word-tokens carry a root, lemma, and part-of-speech tag; that no verified root-gloss source exists (0 of 1,642); cross-reference coverage (110 of 114 surahs, naming the four not covered); documented counting-rule sensitivities; and a source registry that records unstated fields as unstated rather than inferring them. Root pages gained a "Network position" panel (degree, weighted degree, betweenness, eigenvector centrality, each with its rank), labeled with the caution that centrality tracks raw frequency and does not indicate thematic, exegetical, or theological importance. §
  • Chart layer for the association statistics. A zero-dependency SVG helper now draws: an association network on each Roots detail page (positions precomputed offline, nothing laid out in the browser), a frequency-across-periods line, a verse-length histogram, and a root-density heatmap of the top 40 roots across all 114 surahs on Numbers, with a canonical/revelation-order toggle. Every chart carries a table fallback and the caution that position, distance, and color indicate statistical measures only. §
  • Association statistics and public data downloads. Root pages gained a "Statistical associations" table (shared verses, log-likelihood ratio, pointwise mutual information, Dice) over verse-level co-occurrence; Numbers gained normalized frequencies per 1,000 tokens and a keyness-by-period card. A new Export page offers four tables as CSV and JSON with a machine-readable schema and a prose data dictionary. §

July

  • Audit corrections: honest errors, durable clearing, reachable surahs, keyboard-safe dialogs. A verse number past a surah's end used to be blamed on the reader's connection; the Read page now says which verse doesn't exist and links to the surah's last verse, and Next stops at the end the way Prev stops at the beginning. "Clear preferences & reading history" was silently undone on the Read page by its own re-render; it now clears durably. Twenty three-letter surah names (hud, nas, asr…) were captured by root search before the surah lookup ran — surah 11 was unreachable by name; exact names now win in both scripts. The reciter picker was unusable by keyboard; all three Read-page dialogs now open with dialog semantics, close on Escape, and return focus. Arabic root search on Compare now works as promised, two glossary links that pointed nowhere resolve, and a mistyped exercise link says it fell back instead of silently serving a different surah. §
  • Arabic-script root entry, and four citation links retired. The Ask box now routes Arabic-typed roots — رحم, spaced letters, or forms with vowel marks — to the Roots page, which selects the root directly; the Roots search box accepts the same forms. Surah names keep priority over root guesses in both scripts. Correction: four external citation links that no longer resolve were removed from Sources and Roots — Lane's Lexicon and Mawdudi's Tafheem (their hosts' certificates failed), an archive.org copy of Penrice's dictionary (404), and a link to repository discussions that were never enabled. Each bibliographic record remains; only the dead links were removed, since replacements could not be verified against the works themselves. §
  • Five new translation languages. Six published translations joined the Read page's picker: Muhiuddin Khan and Zohurul Hoque (Bengali), Abdullah Muhammad Basmeih (Malay), Kementerian Agama (Indonesian), Muhammad Hamidullah (French), and Julio Cortés (Spanish) — each cited on Sources. Bengali text renders in a bundled Noto Serif Bengali face whose license ships with it. The Ask box learned Arabic-script surah names and Arabic-Indic verse numbers, and How It Works gained a section comparing this site's design policies to other Qur'an tools. §
  • Trust and reader-data controls. The About page became a trust and access hub: exact statements of what stays in the browser and what a passage request necessarily exposes, correction and accessibility routes, and storage, export, and deletion guidance — with the Settings panel's destructive boundary clarified and note-safety controls added. §
  • Depth tier renamed, and deeper pattern analysis. The middle depth tier was renamed from "Scholar" to "Study" to describe the work rather than claim a rank. The Roots page gained a distinctive-partner (PMI) ranking with a network map, Dossier and Patterns were linked both ways, and new lexical-diversity, rhyme-regularity, and discourse-particle measures were added with their methods stated. §
  • The Transcription Gate, documented. The rule that governs all quoted scholarship on this site — outline text and interpretation excerpts are transcribed verbatim from the published volumes, never paraphrased from memory — was written into the maintainer guide as a named, checkable procedure. §
  • Numerical-claim evidence correction. The Numbers page and its worked validation example previously presented popular 365, 475, and 12 surface-form totals beside reproducible Leeds root totals without an inspected source or a procedure that reproduced them. They now state plainly that only the root totals (y-w-m: 405; sh-h-r: 21) were recomputed here; the other figures remain only as examples of why a counting unit and inclusion rule must be declared, not as findings this site endorses. §
  • Leading with the method, not the person. This site's method matters more than who compiled it. The footer on every page, the homepage's opening description, and the About page's lede now describe the coherence-based method first; Dr. Khan's biography, the intellectual lineage behind the method, and the dedication to his memory are still here — in full, on About — just not repeated as the site's headline on every page. §
  • Dr. Khan's own reading of a surah, on its dossier. The Surah Dossier for the six surahs worked through in An Introduction to Understanding the Qur'an with Examples (2011) now quotes a short excerpt, verbatim, from Dr. Khan's own "Understanding and Interpretation" essay for that surah, cited to its page number. Also fixed while there: a surah's outline citation now names the actual volume it was transcribed from (2011 or 2013) instead of always saying 2013. §
  • Dr. Khan's word-by-word glosses, on the reading page. For the six surahs worked through in An Introduction to Understanding the Qur'an with Examples (2011) — 96, 103, 107, 108, 109, and 112 — the word table on the reading page now shows Dr. Khan's English gloss for each word, transcribed from the book's word-by-word tables (pp. 36–55). Where the book glosses a word in pieces (a prefix like bi- and its noun), the pieces are merged per word to align with the Leeds corpus tokenization, and the file records that method. Glosses carry the Nuanced badge: a gloss is one translator's choice, not "the meaning." The same glosses now surface in the vocabulary search, and its live example draws on the first glossed surah. All other surahs keep the dictionary link as before. §
  • Five more of Dr. Khan's outlines, in his own words. The coherence-reading exercises grow from one surah to six: al-'Alaq (96), al-Mā'ūn (107), al-Kauthar (108), al-Kāfirūn (109), and al-Ikhlās (112) join al-'Asr, each transcribed verbatim from Dr. Khan's An Introduction to Understanding the Qur'an with Examples (2011, compiled by Tanveer Azmat), distributed by the Association for Qur'anic Understanding. Propose your own structure verse by verse, then compare it against his — on the Exercises page, in each surah's dossier, and overlaid on its replay. §
  • Themes and surahs, connected. Every theme on the Themes page now shows where its vocabulary clusters — its densest surahs, normalized per 1,000 words so short surahs compete fairly — and every surah's dossier lists the themes clustering in it. The numbers are mechanical counts of each theme's root family; the grouping of roots into themes remains editorial, and the labels say so. Also fixed: following a link into the reading page no longer paints its start screen first and then jumps when the passage arrives — deep-linked visits now go straight to a quiet loading state. §
  • The Surah Dossier. Every surah now has one page that gathers everything this site can verify about it — dossier.html, in the Study menu. Identity and chronology, the vocabulary and root profile, verse-ending sound patterns, its most repeated phrases (each linking into the passage with the matched words highlighted), cross-references from the Mishkat corpus, and structure: Khan's outline where one is transcribed, an honest "awaiting transcription" or "no published outline" note where not — the dossier asserts nothing it cannot cite, and each claim keeps its Verified/Nuanced/Pending badge. Shared surah links now land here first, one click from reading. Along the way, a long-standing subtle jump on page load at phone widths (the menu button appearing a beat after the page painted, nudging everything down) was found and fixed site-wide. §
  • Ritual, offline, and a reading-craft focus mode. Formula, rhyme, and concordance results now link straight into the passage with the exact words lit up — click through from Formulas, Patterns, or Words and land on the reading page with the relevant word or words already highlighted, no re-reading required to find them. The homepage now opens with a daily discourse: one surah, the same for every reader worldwide, changing at midnight UTC, paired with a rotating fact (its most repeated root, its vocabulary variety, or its dominant rhyme pattern). The site can now be installed to a home screen or taskbar and keeps working offline once visited — the shell and any bundled data you've already loaded stay available without a connection; nothing about the API-backed reading experience changes when you're online. And the Read page gained a Focus toggle (button, the "F" key, or Escape) that hides everything but the passage and enlarges the Arabic for close, uninterrupted reading — it resets on reload by design, nothing about it is remembered. §
  • Tools for the specialists. Five additions aimed at readers who work with the text professionally. A new Formulas page indexes every recurring three-to-five-word sequence in the Qur'an — counted mechanically by root sequence and by written form, each with every location — while explicitly leaving the question of what recurrence means to the scholarship it cites. Patterns gained a Sound and rhyme section: pick any surah and see its verse endings, rhyme families, shift points, and refrains, computed as a clearly-labeled orthographic proxy. The Words page now has a concordance: expand any result to see every occurrence highlighted in its surrounding context. Root pages show the root's word family — its lemmas, the dictionary-headword level between root and inflected form. And a new Datasets page documents every dataset the site ships — schema, generator script, license, download — so any number here can be recomputed without trusting us. §
  • A calmer front door. The first-visit welcome banner asked three things at once — how deep you want to go, whether to take the tour, and whether you're new to the Qur'an. It now says plainly what the site is, offers two clear paths (start here if you're new; take the tour if you know your way), and notes that you begin in Simple with deeper layers one keystroke away. "Discourse" — the word in the site's own name — joined the tap-for-definition glossary. The gear's depth choices now say what each level means. And the discovery worksheet no longer appears in Simple depth, which the site has always defined as the reading layer — it returns the moment you step up to Scholar. §
  • A mislabeled translation, fixed — and Urdu added. The "Abdel Haleem" translation option was silently serving Arabic text mislabeled as English — the edition ID behind it doesn't exist on the source API, which substitutes a default Arabic edition instead of erroring rather than failing loudly. Removed, replaced with Wahiduddin Khan's translation, and hardened against any future dead edition: every translation now gets checked against what the API actually returned, with a plain placeholder shown instead of trusting a silent substitution. Added eight Urdu translations, rendered right-to-left in a self-hosted Nastaliq typeface (not the Arabic Naskh face used for the Qur'anic text) with a language-grouped picker. Reduced the translations shown to new readers by default from five to two (Saheeh International and Yusuf Ali) — the rest stay one click away. The Khattab "Clear Quran" citation was removed pending an actual license from its rights holder (it was never available through the site's data source and had drifted into carrying a Verified badge it hadn't earned). Fixed a real bug in the welcome tour: pressing Escape while a navigation menu was open closed the whole tour instead of just the menu. §
  • A discovery worksheet, and one Pending claim resolved. The Read page gained a per-surah worksheet for proposing your own structural reading — theme, sectional divisions, supporting evidence, cross-references, your own confidence rating — saved only in your browser and never badged as a site claim; it tells you plainly whether Khan published an outline for that surah, whether it's already transcribed, or whether none exists at all (surahs 1–84). Separately, an audit of every ○ Pending claim in the data layer found one that could honestly move: Farahi's Mufradat al-Qur'an and Niẓām al-Qur'an as foundational to coherence-based reading is now ● Verified, independently corroborated by Mustansir Mir's 1986 monograph Coherence in the Qur'an (see Sources). New CONTRIBUTING.md and issue template for readers who want to submit their own structural hypotheses for the 84 surahs Khan's book doesn't cover. §
  • Boundary particles, symmetry testing, and reading by chronology. Patterns gained a documented, Verified feature counting root continuity across idh/lamma verse boundaries, and a properly significance-tested check for whether a surah's rarest roots sit at matching distances from its start and end more often than chance — an honest null result (0 of 3,067 candidates survive correction for multiple comparisons), reported as such rather than dropped. Roots pages can now show a root's co-occurring partners broken out by the traditional revelation periods. A new pin tray lets you bookmark a verse or root to a floating workspace, client-only, alongside the existing per-verse notes. §
  • Three more short videos scripted. The Watch page's covenant (real screen recordings, human voice, no generated footage) now covers three more short cuts — browsing by juz, pinning to your workspace, and roots across revelation periods — scripted and listed as planned, awaiting recording. §
  • Compare, now more than two at a time. The Compare page overlays up to six roots at once, not just a pair, and shows the exact set of verses where every selected root occurs together — plus the other roots that share those verses, computed from the bundled morphology. Passage comparison rose from three to six, and a new Surahs mode sets two to six surahs side by side on their corpus fingerprints (length, vocabulary spread, grammatical texture, cross-reference reach). Every figure is computed from the cited corpus and labeled. §
  • More of what the corpus can honestly say. The Numbers page gained grammatical texture (the noun and verb share of every period, from Leeds POS tags), a verse-length distribution, a vocabulary-growth curve (how many roots first appear at each step of the revelation order), and a localized hapax list naming every once-occurring root and its single verse. Each surah's profile on Navigate now shows its noun/verb balance. Nothing is generated; each number is a plain tally of a corpus field, badged and reproducible. §
  • The mission, stated. The About page now says plainly what this project is for — readers equipped to test the coherence of a discourse themselves, every figure traceable to a named source — and what it asks for, which is careful work rather than money: corrections, transcription help for Khan's remaining outlines, and scholarly review of the method pages. It is equally plain about what the project is today: young, one maintainer, with its method documented publicly so others could carry it forward. §
  • The site now meets newcomers where they are. The Read page finally teaches the method it was built for: a one-time guide appears above your first passage — read it whole, find the central claim, trace its words to their roots — with a link to try it on al-'Asr; dismiss it and it stays gone (Clear preferences brings it back). The first-visit banner now says what the site is before asking how deep you want to go, and links a new "Completely new to the Qur'an?" welcome on the About page written for readers with no background at all. Scholar's transliteration codes were cleaned out of interface copy (search hints now use the friendly r-h-m form, which the Words search understands even for letters that carry dots in precise transliteration). And every page now prints cleanly — navigation and buttons vanish, disclosure notes expand — so teachers can hand out exercises and study paths on paper. §
  • Saying only what is true, more precisely. An external-review pass through the eyes of a demanding scholar tightened several of the site's claims about itself. "No interpretive content" now reads as what it always meant: no generated commentary — while theme titles and working glosses are named for what they are, editorial curation, always labeled. The Patterns page's "direct address in 89 verses" was a mislabel: the count is of one vocative formula ("O you who believe"), and the page now says so, noting that direct address in the Qur'an is far broader than any single count. A new "The text behind the numbers" section on How It Works states plainly that the rendered text and every count follow the Ḥafṣ ʿan ʿĀṣim reading with Kufan verse numbering, and that the Leeds corpus — no longer actively updated — carries the annotation judgments and imperfections any such project does. Badges on computed figures now say "computed from the cited corpus" rather than "confirmed from a primary source," because reproducing a computation proves faithfulness, not correctness. And the Nuanced label now has one definition everywhere instead of three near-misses. §
  • Replay joined the menu. The guided replay tool was reachable only from Read and the Exercises hub; it now sits in the Study menu on every page. Also housekeeping: the README's stale page count was corrected. §
  • The Roots page loads five times lighter. The full 1.9 MB per-root dataset was downloaded before the Roots list could render — and by the root popovers, embeds, Compare suggestions, and the root-spotting exercise. Those views only ever display a root's name, count, and period distribution, so they now share a 0.4 MB slim index generated from the same corpus data; the full record still loads per root when a detail panel opens. Nothing shown changed — only how much a phone has to download first. §
  • The credibility system audited itself. A full integrity pass over the verification machinery found and fixed real gaps. Every Verified badge must now name its source: 70 green dots that carried no machine-readable citation either received the correct source id (the registry grew from 13 to 21 entries — al-Tabari, al-Zamakhshari, Ibn Kathir, al-Suyuti, Abdel Haleem, Neuwirth, Cuypers, and Khan's Reflections among them), or — for bibliography entries that are themselves full Chicago citations — lost the decorative dot, since an unfalsifiable dot beside a citation undermines the system it decorates. Three badges pointed at the wrong source (Leeds cited for claims resting on Tanzil, the Cairo edition, al-Suyuti, and Abdel Haleem) and were corrected. The social preview said "every claim verified" while the site honestly ships Pending and Nuanced labels; it now says what is true — every claim labeled and traceable. Corpus figures quoted in prose (77,429 tokens, 1,642 roots, 6,236 verses…) now bind to the generated numbers data so they can never silently drift. The English root meanings on Roots and Compare are now labeled for what they are — editorial working glosses, not cited lexicography. Licensing notices were expanded to cover every bundled dataset, including an honest account of the cross-reference data's pending license. And the automated verify suite now enforces the badge rule permanently: a Verified dot with no source fails the build. §
  • Words became searchable. The Words page now searches all 4,832 dictionary forms in the Qur'an — by Arabic (with or without vowel marks), transliteration, or root — showing each lemma's frequency, part of speech, root link, and first occurrences, computed from the already-cited Leeds corpus. The Meaning column deliberately stays empty: English glosses are one translator's interpretive choice, so they wait behind the same licensing gate as the Read page's gloss pipeline, and a research note now documents exactly what the maintainer must verify before any gloss dataset ships. Until then every row links to the corpus dictionary. §
  • The pre-ship checklist became a machine. The maintainer guide's manual verify-before-shipping checklist — horizontal overflow on phones, console errors with the verse API unreachable, dead internal links, citation badges pointing at unregistered sources, keyboard navigation, palette and dark-mode integrity — now runs as one automated browser suite (144 checks across every page). It also permanently re-tests the site's defense against a hostile API response on every run, something previously verified only once by hand. The full site passes today; the suite exists so tomorrow's changes can't quietly break what readers rely on. §
  • Verses you've read stay readable, and citations get a rot check. The Read and Compare pages now keep a browser-local cache of already-fetched verse text and translations, so revisiting a passage renders instantly and verses read before losing connection remain fully readable offline (previously only the Arabic survived). The cache lives in the same local storage as every other preference, is described in the privacy note on the About page, and is removed by the same Clear preferences button. For maintainers, a new checker verifies that every cited external link on the site still answers, so a citation that silently goes dead is caught before a reader finds it. §
  • Guided replays, a Watch page, and the gloss pipeline. New Replay tool: the recitation plays a surah verse by verse through one continuous player while words from recurring root families light up progressively, and — for surahs whose outline has been transcribed from Khan's book — the outline section appears at each pivot. Everything shown is computed or transcribed and badged; if audio is unavailable the replay degrades to manual stepping. Reachable from Read, the Exercises hub, and (after you commit to your own reading) the outline exercise. New Watch page for short, human-made walkthrough videos: three are scripted and listed as planned; the site's covenant — real screen recordings, human voice, no generated footage, no stock music, captions always — is enforced by a checker that refuses to publish a video without a captions file. Videos are self-hosted; no third-party player, nothing tracked. Under the hood, a word-by-word gloss pipeline shipped dormant: the Read page's Meaning column will fill in the moment a properly licensed gloss dataset is committed (the license is the gate; candidate sources and the citation requirements are documented for the maintainer), labeled Nuanced — a gloss is a translator's choice, not "the meaning." §
  • Link previews, embeds, guided entry, and one surah dataset. Shared links now unfurl properly everywhere: a branded social image on every page, and 1,789 generated per-entity share pages (s/root|theme|surah/…) so a pasted root, theme, or surah link shows its own name and stats — the share buttons hand these URLs out automatically. A new embed.html lets teachers and bloggers iframe a root profile, theme card, or verse on their own site (one-click "Embed" copy buttons on Themes and Roots); it is the only page whose security policy allows framing, via a restructured per-page netlify.toml guarded by scripts/check-headers-sync.mjs. New visitors get a first-visit depth question and a reopenable 60-second tour ("?" button, bottom right), and the home page's Begin tiles are grouped by intent: Read, Study, Verify. Root mentions (r-ḥ-m) and verse references (2:255) in page prose are now live popovers with counts and one-tap navigation on ten static pages. Correction: the three separate surah-name lists were consolidated into one generated dataset (data/surah-names.jsonassets/surahs.js); in the process, Navigate's row for surah 55 (ar-Rahman) was corrected from Meccan to Medinan, matching the Cairo 1924 convention both bundled datasets follow (the classification is genuinely discussed in the tradition — this site follows its cited convention), and the Read page's handful of divergent display names now match Navigate's romanization. §
  • Sharing, self-learning, and analytics expansion. A share button on every page (each tool page's URL was already a permalink; now there's an affordance for it), per-theme share links, and one-click copy for the Validation prompts. Every corpus figure on Numbers is now recomputed from the bundled data (scripts/build-numbers.mjsdata/numbers.json) instead of hard-coded — all values verified identical before the switch. The "how we verify" worked examples moved to a single registry (data/case-studies.json) rendered on both Home and Validation. Exercises became a data-driven engine (data/exercises.json + exercise.html): outline attempts are now scored against the published outline, scores persist locally, and the root-spotting exercise grew from 6 to 26 surahs. Study paths are checkable step by step (data/paths.json), with a fourth path on themes. A local-only, exportable notes panel was added to the Read page. New visualizations from a shared zero-dependency chart library: a revelation-order timeline on Roots and Compare, a co-occurrence network on Roots, per-theme distribution maps, and a 114-surah length-vs-diversity scatter on Navigate — every chart carries its method note and an SVG download. Clarity fixes: the Patterns cross-reference card now leads with the Mishkat corpus actually shipped (QurSim demoted to conceptual lineage), Navigate says "Cross-reference connectivity" instead of "QurSim connectivity", a dead reference to a nonexistent "welcome tour" was removed, and Validation is now named as the canonical definition of the three verification labels. Under the hood, citation-badge handling switched to event delegation, fixing popovers on dynamically rendered badges. §
  • Arabic word display corrected sitewide. The Buckwalter→Arabic conversion table (scripts/build-leeds.js) was missing 14 characters used by the Leeds corpus's extended Quranic-Uthmani encoding (^ # : @ " [ ; , . ! - + %). Unmapped characters had been passed through literally instead of becoming the diacritic they stood for, so roughly 15% of words sitewide displayed a stray ASCII character in place of a mark — for example al-Fatihah 1:7 read "ٱلضَّا^لِّينَ" instead of "ٱلضَّآلِّينَ" wherever word-by-word Arabic is shown (Read at Scholar depth, Roots' derived-forms panel, Numbers' fawatih list). The 14-character mapping was verified byte-for-byte against an independent conversion script for the identical source file before being applied. 11,434 morphology word entries and 215 root-summary lemma entries were corrected; data/roots-index.json, data/root-analytics/, and data/rhetorical-features.json were regenerated from the corrected data. §
  • Word-token count corrected. 77,430 to 77,429 on Sources, Credits, and README. The Leeds corpus total is 77,429 tokens, of which 49,967 carry a root (the rest are particles, pronouns, and other unrooted forms); Roots' per-root count explainer previously conflated "total tokens searched" with "rooted tokens" and has been reworded to state both figures. §
  • Site renamed to "Divine Discourses." "Discourses" renders Khan's translation of khitab, speaker-to-hearer address; "Divine" makes explicit what was previously one click deep on About — that the khitab in question is God's address to the hearer. Applied across every page's title, header, and footer. The deployed domain and GitHub repository name are unchanged. §
  • Themes expanded from 10 to 33 life-theme gateways. Added gratitude, guidance and light, fear and hope, truthfulness and falsehood, charity, death, paradise, hellfire, wisdom, pilgrimage, fasting, anger and restraint, love, trust in God, arrogance and humility, brotherhood and community, sincerity, tyranny, covenant and fulfillment, effort and striving, certainty and doubt, joy and sorrow, and blessing. Every root was checked against data/roots-summary.json before being added, and every theme was confirmed to compute at least two passages under the site's existing lexical-clustering rule. §
  • Two long-standing citations made browsable. Patterns' "direct address... in 89 verses" and Numbers' "29 surahs... 14 unique [fawatih] combinations" had been cited but never shown. Both are now computed mechanically from the bundled morphology (literal lemma and part-of-speech matching, not interpretation) via a new scripts/build-rhetorical-features.mjs, and both computed totals matched the existing citations exactly before the reveal-lists shipped. Patterns also gained a per-surah browser for the existing Mishkat cross-reference data, previously only visible one verse at a time on Read. §
  • Local reading-progress memory added. The existing browser-only preferences object now also remembers last-read verse position and which exercises have been attempted, surfaced as a dismissible "continue where you left off" card on the homepage. Same privacy posture as every other preference: never transmitted, cleared by the existing "Clear preferences" button. §
  • Duplicate citation-popover bug fixed. assets/app.js carried a second, independent implementation of the citation-badge popover that duplicated assets/cite-badge.js and bound to the same badges. Clicking any citation badge briefly opened two overlapping popovers; the dead app.js copy has been removed. §
  • UI restructure for AQU launch. Primary nav consolidated from 14 pills into four accessible dropdown groups (Study, Analyze, Learn, About). Homepage inverted: Ask search above the fold with rotating example placeholders; interstitial "This is not Google" tour modal removed. Read page opens to a welcome card with example entry links instead of a cold error. Validation gains a "How we verify" block with one worked example per label type (Verified, Pending, Nuanced) reusing published claims from Numbers and Sources. §
  • Glossary expanded. Four terms added: root, morphology, triangulate, period distribution. Each is now available inline site-wide via the tap-and-keyboard popover. Coherence registered as an alias to the existing nazm entry. §
  • Organization name standardized on "of." References throughout the site now read "Association of Quranic Understanding," matching the organization's page title, its website at quranicunderstanding.com, and the audit brief for this launch. Supersedes the May decision to standardize on "for." The book-publisher citation in the biographical section of the About page and in the al-Asr exercise attribution has been updated in kind; the ISBN registration itself is unchanged. §
  • Passage Compare added. Compare page gains a Passages mode alongside the existing Roots mode. Select two or three passages (surah + verse range up to 30 ayat each) and load to see side-by-side Arabic text, one translation, and a shared-roots table sorted by frequency. Very common roots (corpus total > 1,000) are excluded by default with a toggle to include them. Method disclosure: "Computed from Leeds Quranic Arabic Corpus v0.4: roots present in each selected passage, intersected. Lexical overlap only; shared vocabulary does not by itself establish thematic connection." Shareable URL encodes passage references (e.g. ?mode=passages&p1=2:255&p2=59:22-24). §

May

  • Surah length statistics corrected. Mean updated from 54.6 to 54.7 verses per surah. Median updated from 30 to 39 verses. Both errors traced to incorrect aggregation method; recomputed directly against Leeds corpus. §
  • y-w-m count reframed as Nuanced. Earlier showed 475; corpus.quran.com lists 405 for the nominal yawm, while broader counts including the compound yawma-idhin reach 475. Both counts now shown with explanation. §
  • k-w-n count corrected. 1,361 to 1,390 after triangulation against corpus.quran.com via multiple independent lookups. §
  • r-b-b count corrected. 975 to 980 after corpus.quran.com triangulation. §
  • b-h-r count corrected. 41 to 42 after Leeds verification. §
  • Iltifat attribution expanded. The al-Fatihah 1:5 grammatical shift note now credits classical attestation in al-Suyuti's al-Itqan alongside modern scholarship by Abdel Haleem (BSOAS 1992). Earlier version credited Haleem only. §
  • Organization name reviewed. The parent organization uses both "Association of Quranic Understanding" (in its page title and some documents) and "Association for Quranic Understanding" (on its banner and in most published references). Independent obituaries unanimously use "for." The site previously claimed to standardize on "of"; the more honest treatment is to note the variation. References on this site now use "Association for Quranic Understanding," matching the more common external usage. §
  • Khan biography expanded. The About page now documents Khan's full academic and interfaith record: Aligarh and Rampur education, UIC doctoral work, Parliament of the World's Religions trusteeship, WCMIR presidency, AQU directorship. §
  • Khan's 2013 work added. An Exercise in Understanding the Qur'an (AQU, ISBN 9781567447736) now cited alongside Reflections on the Qur'an. Foreword by Mustansir Mir noted. §
  • Leeds Corpus bundled. 6,236 verses, 77,430 words, 1,642 roots now available as static JSON. Word-by-word morphology live on Read at Scholar depth. GPL compliance via NOTICE.md. §
  • Site launch. Initial deployment of 13 pages. §

Corrections welcome. Open a GitHub issue at github.com/saebchicago/qurandiscourses.