Changelog — 2.118–2.130

Releases 2.118.0 through 2.130.0. Current releases are on the main changelog, and every band is listed in the release archive.

Loading audio...

Version 2.130.0

August 14, 2026

Two more pieces of the search plan, written down before anything is built

  • The search we are planning keeps a second copy of what is on the site, so something has to keep checking that the two agree. That checker now has a place for our team to actually read what it found — because a check that reports to nobody is not really a check.
  • It will show what disagrees, in both directions. Something on the site that search cannot find is an inconvenience; something search can find that we have taken down is a great deal more serious, and both need to be visible.
  • It will also show how much has been indexed, not merely that the search is switched on. An empty search answers every question with “nothing found” and looks perfectly healthy from the outside — so counting is the only honest test.
  • The spelling-variants list turned out to need a specific shape. If we simply said “this spelling also means that one”, it would only work in one direction — a reader typing the spelling we use would still miss pages spelled the other way. It will be written as groups of equivalent spellings instead, and tested in both directions.
  • And the list has to be repeated for each kind of content, which is a place to slip. A set of spellings added for one section and forgotten on another would work perfectly in one place and silently not in the next, so the checker will verify that too.
  • Still nothing built and nothing changed on the site. Nothing to do at your end.

Version 2.129.0

August 14, 2026

More than half our past session pages are findable again

  • 78 of our 147 session pages could only be opened if you already had the link. They worked perfectly and search engines could see them — but there was no way to arrive at one by browsing our own events pages. That is fixed, and they are all reachable now.
  • The cause: our past events are marked as finished, and the events listing was only showing sessions from events that had not been marked finished yet. Nearly all of ours have, because that is what happens to an event once it has taken place. Finished events have always been meant to stay readable — that is most of what we have.
  • Two questions had been sharing one answer. “May a visitor read this event?” and “should this event still be featured on the front page?” are not the same question, and finished events answer yes to the first and no to the second. They are now asked separately, so the front page still only shows what is actually current.
  • The sitemap we give to search engines was quietly missing a few sessions too, in a different way: a session that had gone live but had not yet been given its final tidy-up status was left out. It now uses the same rule as everything else.
  • Why nobody reported it. The fault hid pages rather than exposing them, and a hidden page looks exactly like a page that was never made. Nothing could have flagged it — it took counting two lists against each other.
  • Nothing you have seen was ever wrong, and nothing was exposed that should not have been. The error was in the safe direction throughout. Nothing to do at your end.

Version 2.128.0

August 14, 2026

Over half of our past session pages could not be found by browsing, and we went looking for something else entirely

  • We are planning one search box that covers the whole site — events, sessions, reflections, vignettes, articles and help — instead of a separate search on each part of it. Before writing any of it we went through how each kind of page decides whether it is ready to be shown publicly, because a search that disagrees with that would be able to surface something we had taken down.
  • That check found a real problem, and it had been hiding in plain sight. Our past events are marked as finished, and finished events are meant to stay readable — that is most of our back catalogue. But the listing that powers the events page was only showing sessions from events that had not yet been marked finished.
  • The effect: 78 of our 147 session pages were reachable only if you already had the link. They work perfectly, they are offered to search engines, and there was no way to arrive at them from our own site. That is now written up and queued as its own fix.
  • The reason nobody noticed is worth saying out loud. The fault hid things rather than exposing them, and hidden pages look exactly like pages that were never made. Nothing was ever going to report it — it took someone counting two lists against each other.
  • The searches within each section will keep their scope, but get much better. Today they match on exact letters, so a name spelled a slightly different way finds nothing and results come back by date rather than by how well they match. Moving them onto the shared search means spelling variants, several words at once and forgiveness for typos, without changing what each section covers.
  • Spelling variants are the whole point, and they are also the risk. Names reach English many ways, and a reader who types one should find all of them. But two names that merely look similar can belong to two entirely different people, and merging those would be a serious error rather than an untidy one. That list will be written by hand and checked, never generated.
  • Nothing has changed on the site yet — this version is the plan and the measurements behind it. Nothing to do at your end.

Version 2.127.0

August 14, 2026

A library of jurisprudence rulings turned out to have been catalogued the wrong way round, so we have cleared it rather than keep it

  • When we write a Reflection or a Vignette, we search two libraries for relevant source material. One holds scripture; the smaller one held rulings on religious practice. This change is about the second one.
  • Everything in that smaller library had been filed as though it were a question, when all of it was an answer. Material is catalogued differently depending on which of the two it is, and this had been the wrong way round since the library was first built. Nothing ever complained, because a wrongly-filed entry looks exactly like a correctly-filed one until you try to find something.
  • We have emptied it rather than re-cataloguing it. Re-doing it would have taken seconds, but we would then have had a library of unknown quality that looked finished. Nobody has ever properly assessed how well that library answers a question, and rebuilding it is a piece of work that deserves doing with that assessment attached. A copy of everything in it has been kept.
  • An empty library used to be indistinguishable from “nothing relevant found”, and that is now fixed — it was the thing that had to be right before we could clear it. Otherwise every piece of writing would quietly have gone without that source material and nothing would have said so.
  • The fix had to be careful in the other direction too. “Nothing relevant found” is a perfectly normal, common answer, and raising an alarm every time it happens produces an alarm nobody reads. It now distinguishes the two, and there is a test whose whole job is to fail if that distinction is ever lost.
  • Along the way we found the same database connection written out eight separate times. A setting that controls how deeply these searches look had been added to one of them; the other seven never got it. They are now one, and there is a new automatic check so a ninth cannot appear quietly.
  • We also switched off a capability on one of our machines that nothing had used for months, and made sure the check that reports whether that machine is healthy was updated at the same time — otherwise it would have reported a perfectly working machine as broken, permanently.
  • Nothing to do at your end, and nothing already published has changed.

Version 2.126.0

August 14, 2026

The lunar date adjustment was being set without being able to see what it did

  • The lunar calendar can be nudged by a day or two to match local moon sighting, and the setting for it showed only a number. To find out what that number actually did, you had to save it, go and look at the site, and come back. It now shows you the date it would produce, changing as you move the slider.
  • It also shows what the date is right now, so you can see what you are changing away from. That matters more than it sounds: a single day can move the date into the next month entirely, and a number on its own never tells you that.
  • Saving it now updates the whole site, where before it only half did. The site keeps a short-lived memory of recently worked-out dates, and that was being cleared correctly — but the pages themselves could still be served from an earlier version. Both are now refreshed.
  • And it only does that when the lunar setting genuinely changed. Previously the site treated every visit to this page as a change, so editing something unrelated on it — a link to one of our channels — would have refreshed the entire site for no reason.
  • One thing it honestly cannot do: if you already have a page open in another window, that window will not change by itself. Anything you open or reload afterwards will be correct.
  • Nothing to do at your end, and no dates on the site have moved — this changes how the setting is adjusted, not what it is set to.

Version 2.125.0

August 14, 2026

Some of our editing pages sat further down the screen than the others

  • Seven of the pages our team uses were drawing their own page frame on top of the one they already sit inside. The result was twice the margin all round — those pages began noticeably lower and were pushed further in from the edges than the ones either side of them.
  • Two of them were also narrower than everything else, for no reason anyone had chosen. They now use the same width as the rest.
  • Four of them did it on their loading screen too, so the page visibly shifted as it finished loading.
  • Our own written instructions had said not to do this all along. Seven pages did it anyway, which is the honest lesson: an instruction with nothing checking it is one that gets missed. There is now a check.
  • That check was too eager on its first attempt and wrongly complained about four innocent pages. It was objecting to ordinary spacing on error messages and loading spinners. It has been narrowed to the thing that actually causes the problem, and two of its tests exist purely to make sure those four stay unflagged.
  • The list of pages excused from the check emptied itself within a minute. One page had been listed as a deliberate exception; once the check was narrowed it no longer needed to be, and the check said so — which is exactly what that mechanism is for.
  • None of this is visible on the public site, and nothing to do at your end.

Version 2.124.0

August 14, 2026

This page was getting long again, so the older releases have moved

  • Eleven older releases have moved to their own page in the archive, which you will find linked at the foot of this one. This page keeps the recent ones and stays quick to load.
  • Links you have already shared still work. If you have a link to a particular release that has now moved, it will follow you to the right page rather than leaving you somewhere blank.
  • We moved everything up to the version currently running on the live site, and no further. A few releases are written up but not yet deployed, and filing those away before anyone had seen them here would be an odd way to publish them.
  • We had said we would do this early next time, and we did not. The last time we split this page we deliberately did it well before it was needed, and wrote down why that was better. This time it was done with no room left, because several releases arrived in quick succession and nobody re-checked the size until the last one. The honest lesson is that “remember to check” is not a plan.
  • Nothing to do at your end, and no release notes have been lost — only moved.

Version 2.123.0

August 14, 2026

Behind the scenes, the editing tools disagreed with each other about almost everything

  • The pages our team uses to write Reflections, Vignettes and Events each styled their section headings differently — a different colour, a different weight, a different amount of space beneath. They now all look the same, following the one we liked best.
  • Some of those headings were very nearly unreadable, and that was the real find. Where a heading had never been given a colour it quietly fell back to a dark green, which is fine on a pale page and close to invisible on a dark one. We measured it rather than guessed.
  • The tidy-looking fix for that would have done nothing at all. Setting the fallback colour for dark pages in our stylesheet is overridden by something written directly onto the page, so the change was silently ignored. We know because we wrote it, measured afterwards, and found the number had not moved.
  • Headings that are coloured on purpose have been left alone. A red “delete” heading, an amber warning, and a handful of panels whose heading matches their own border are all carrying meaning. Making those green would have been tidiness at the cost of sense.
  • One page had drifted the other way — using a feature’s accent colour for its ordinary headings, so two pages for the same feature disagreed with each other. That is the sort of thing nobody notices individually and everybody notices in aggregate.
  • There is now an automatic check so this cannot creep back. It insists a heading states its own colour for both light and dark, rather than relying on a fallback that only works in one of them. It is deliberately not strict about which colour, so the deliberate ones stay legal.
  • None of this is visible on the public site — it is the tooling behind it. Nothing to do at your end.

Version 2.122.0

August 14, 2026

Which recording belongs to which session was written down nowhere

  • The original recording of every session is kept safely and backed up more than once. What was missing was the note saying which file is which. That connection lived in one person’s memory. If it were ever needed in a hurry, nobody else could have made it, and nor could any tool.
  • Sessions can now record where their original recording lives, written the same way the folders are already named — year, month, filename. It is optional, and filled in from here on rather than backdated.
  • What it deliberately does not store is where the archive is plugged in. A note saying “this drive, this folder” stops being true the moment anything is moved or renamed, and we have been caught by that before. So the field refuses anything that looks like a drive letter, a server name or a full path, and says which part to take off rather than just “invalid”.
  • There is also an optional fingerprint of the file, so a recording can later be confirmed as the right one rather than merely present. The editor writes out the command to produce it, and you paste the result straight back — whichever of the usual tools you used, it picks the value out for you.
  • If you paste the output for a whole folder rather than one file, it refuses. Quietly taking the first line would attach a session someone else’s fingerprint, and a wrong record that looks right is worse than an empty one.
  • Two lines of help text on that panel had a missing space, and the first attempt to fix it appeared not to work. It had worked; the browser was still holding the old version of the page. Worth saying because we very nearly re-edited something that was already correct.
  • This is groundwork for putting the archive somewhere public and permanent, which needs to know which file belongs to which session before it can be done at all.
  • Nothing to do at your end, and nothing about the site looks different.

Version 2.121.0

August 14, 2026

The coloured buttons had white writing on them, and you could barely read it

  • Our green and gold buttons carried white text, and against those particular colours that is far too faint. The gold ones were the worse of the two — close to invisible. The writing on them is now dark instead of white, which is comfortably readable against both. Buttons, tabs, small labels and the round play controls all over the site.
  • Changing the colours themselves would have fixed the buttons and broken every link on the site. The same gold is used for text as well as for button backgrounds, and those two uses want it to go in opposite directions. Making it darker helps the buttons and makes the links worse. So the writing moved rather than the colour.
  • The near-miss shade is the interesting part. There were two very similar dark greys to choose from. On gold, both are fine. On green, one passes the readability standard and the other misses it by a hair — and you cannot tell them apart by looking. We measured rather than picked.
  • Three of them were missed by our first search and found by a second, different one. One button on the help pages had its styling written in a different order; one was set up so it was hard to read in both colour schemes rather than just one; and the play and pause symbols needed fixing separately from the button they sit on.
  • One button would have got worse under the obvious fix. It is the only one on the site that darkens when you hover over it, so dark writing would have been readable until you pointed at it and then vanished. Its hover was changed to match how the rest behave.
  • We now have a tool that measures this, and it turns out we had been telling ourselves it already existed. A note in our own styling file said “re-check with this tool” and named something nobody had ever written. It reads like a fact you can go and verify, and it was not one. The tool is real now, and the note points at it.
  • There is also a check that stops this being written again — and it was wrong twice before it was right. The first version misread an ordinary code comment containing an apostrophe and blamed the wrong line; the second missed the most common way we write these styles. Both were caught by the tests we write to make sure our checks can actually fail. We would rather say that than present it as having worked first time.
  • Four places are deliberately left for later, and they are written down. They are large coloured panels rather than buttons, and two of them genuinely cannot be fixed the same way — we measured, and the result still would not have been good enough. That needs a design decision rather than a quick substitution.
  • Nothing to do at your end.

Version 2.120.1

August 14, 2026

Gold text was too pale to read, and some headings too dark

  • The gold we use for links was genuinely too pale against a light background. It has been deepened to a richer gold — the same colour family, just enough darker to be comfortably readable. This affects links across the whole site, not one page.
  • The gold buttons had the same problem in reverse — white text on a pale gold. Both are fixed by the same change.
  • On this page, the version headings were dark green on a dark background. They are now the lighter green used elsewhere, and the small dates beside them have been lightened too. Applied to every page of the release archive, not just this one.
  • Someone reported a coloured box on a help page looking washed out, and the cause was not what the code suggested. We measured it: on a fresh visit those boxes are perfectly readable in both light and dark. What that reader had was an old copy of our stylesheet held by their browser.
  • We nearly “fixed” something that was not broken. The styling looked suspect and had a note claiming it followed a rule it did not. Changing it would have altered the design and left the real cause in place. The note now records the measurements instead.
  • And our first attempt at the heading fix did nothing at all. It was the obvious change, it looked right, and measuring afterwards showed the colour had not moved a fraction. We would rather say that than quietly ship it.
  • If anything on the site ever looks half-styled, a hard refresh is worth trying first. It is usually an old stylesheet rather than a fault at our end.
  • Nothing to do at your end.

Version 2.120.0

August 14, 2026

The pictures behind the site were far heavier than they needed to be

  • The original artwork we keep for the site’s backgrounds and logos was enormous — in several cases a few megabytes each for something shown at the size of a postage stamp. They are now a fraction of that.
  • You were never being sent the huge versions, so pages will not suddenly feel faster. The site already shrinks pictures before sending them. What was heavy was our own copy, which slowed down every build and every fresh copy of the project.
  • A few of them had to stay in the older format, and that was a deliberate choice. The picture that appears when someone shares a link to us is sent exactly as we store it, and the newer format is still unreliable on some services. Those were made smaller a different way instead.
  • We checked that nothing looks different by comparing the pictures, not by trusting the file sizes. Every one is now measurably indistinguishable from the original.
  • The first check said three of them had been ruined, and the check was wrong. All three were mostly transparent, and it was comparing the invisible parts. Measured the way an eye actually sees them, they were the best of the whole set. Had we believed the first answer we would have rejected the right approach.
  • Optimised pictures are now remembered by your browser for a week instead of four hours. Fewer repeat downloads on pages you come back to.
  • One image file was being kept that nothing on the site had ever used. Removed.
  • The safeguard added yesterday is what forced this to be finished properly. It had a list of images excused from the rule, and each excuse had to be deleted as its image was fixed — so the list could not quietly survive the work it was meant to trigger. It is now empty.
  • Nothing to do at your end.

Version 2.119.0

August 14, 2026

A check that a picture is the size its name says it is

  • Last week we found a set of images whose filenames each promised a different size, and every one of them was the same enormous picture. We fixed those. This is the part that stops it coming back.
  • There is now an automatic check that refuses the change if a picture’s name does not match the picture. If a file says it is small and it is not, the build stops.
  • It also refuses images that are simply too heavy for what they do, unless someone has deliberately written down why, with a date. Those notes have to be removed as the images are fixed, so the list cannot quietly become a work of fiction.
  • We wrote the check first and watched it fail on the site as it stands today, before fixing anything. That ordering is the entire point — a safeguard that has never actually caught anything is exactly the sort of thing it was written to prevent.
  • The first attempt to prove it worked was wrong in a way worth admitting. It did fail, but for the wrong reason: it had been pointed at an empty folder and was checking nothing at all. It said so out loud, which is the only reason we noticed rather than declaring victory.
  • And the test we wrote to prove the check works was itself broken. The deliberately-oversized file it created turned out to be tiny. The check was right and our test was wrong — so the test now measures its own ingredients before trusting itself.
  • The size limit was set by measuring, not by picking a round number — and our first instinct would have been wrong. Choosing it from how the images look today would have quietly forced us to make them lower quality than we wanted, to satisfy a number we had made up.
  • Nothing to do at your end. Nothing about the site looks different; this only affects what we are allowed to add to it.

Version 2.118.0

August 14, 2026

A glossary, and a part of the evening that had only half its name

  • One part of a session was listed simply as “Nohe”, and a great many people know that same thing as a nasheed. It now reads Nohe/Nasheed, so whichever word you grew up with, you will find it.
  • The site had been writing that pairing in two different orders in different places. One order now, everywhere.
  • There is a new glossary in the Help Centre. Majlis, maqtal, nohe, nasheed, marsiya, latmiya, azadari and ziyarah — what each one means, in plain English.
  • It also lists the words we deliberately do not keep, and what sits behind them. We say sermon, supplication, recitation and couplets, because those English words do the job honestly. Knowing what we chose not to keep is part of the same explanation.
  • Writing it meant settling something we had been inconsistent about, and the answer was not “translate everything”. We are writing for someone who has never met a Muslim, and also for someone who grew up with these words and half-remembers them. Rendering nohe as “lamentation poetry” to the second person is not clarity, it is sanitising — and being talked around is its own kind of dismissal.
  • So the test is no longer whether a word feels foreign, but whether it is doing work no English word does — and whether we have explained it. Athenaeum is not a familiar word either, and it earns its place the same way: by being explained, without apology.
  • The glossary is not a vocabulary list you have to learn to be let in. It is the opposite — it is us doing the explaining in one place, so nobody has to already know.
  • The wording is a first draft and will be revised. If a definition reads wrong to you, we would genuinely like to hear it.
  • Nothing to do at your end.