Changelog — 2.171–2.185

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

Loading audio...

Version 2.185.0

August 21, 2026

A screen that told us it was obsolete, while quietly doing important work

  • An editing screen we rely on had been labelled as a leftover from a retired project. It sat greyed out behind a notice saying it was disabled and kept only for reference. That notice was wrong — the screen was live the whole time, showing how much of our source material has been prepared for the site’s writing tools to draw on.
  • That is worth more than it sounds. Reflections and Vignettes are grounded in that material every time they are produced. This was the only place in the site that showed whether the preparation was complete, and it was captioned in a way that discouraged anyone from looking.
  • It has moved to where the related tools already live, at full brightness, with the old address sending you on rather than showing an error.
  • The useful part came from a question, not from the plan. Shabbir asked where one of our existing tools actually writes its data. Checking it showed that a whole section of the admin is named for one thing and works on another — which changed how this piece of work should be done, and explained why recent improvements to that section had visibly improved the writing quality. The two were the same data all along.
  • We have written that naming problem up rather than fixing it in passing, along with a measurement of how much it would touch, because it is a decision rather than a tidy-up.
  • Nothing to do at your end, and nothing visible on the site has changed.

Version 2.184.0

August 21, 2026

Our own working notes had started disagreeing with themselves

  • Nothing you can see changed today. This was housekeeping on the plan we have been working through — the document we consult before starting each piece of work.
  • It had begun contradicting itself, which is worse than being out of date. It opened with two different statements about its own status, three lines apart, and gave a running total of progress immediately above a paragraph explaining why running totals go stale. Both problems were exactly the sort of thing that document warns others about.
  • It now says how to work the state out rather than stating it. A number written down is a number that drifts; a command that derives it cannot.
  • We also corrected a count downwards, which felt worth doing properly. A recurring mistake had appeared three times, and a first draft claimed five by including something that was merely similar. A count is only useful if it is a count of one thing.
  • And we wrote down what cost us the most time this week — including a stale build cache that made every page fail after we deleted some old admin screens, and which looked convincingly like a real fault for a while.
  • Nothing to do at your end.

Version 2.183.0

August 21, 2026

The Islamic date will now go missing rather than be quietly wrong

  • The Islamic date shown across the site depends on one setting: the moon-sighting adjustment. If we ever failed to read that setting, the site did not say so — it carried on and showed a date calculated without it, which can be a day or two out. Everything looked completely normal.
  • That matters more than most things we fix, because it decides which day a commemoration is observed. A date that is quietly wrong is worse than one that is missing: a gap makes someone check, a confident wrong answer does not.
  • It reached the reminders, which we had not expected. The part of the site that decides which commemoration to notify you about was already written to stay silent if it could not be sure of the date — but it could never actually tell, because the date always arrived looking valid. That safeguard existed and had never once been able to work.
  • Now, if that setting cannot be read, the Islamic date is simply left out — on the calendar, on the home page, and in the editing tools — and we record it loudly enough to notice. Nothing is calculated from a guess.
  • Fixing it honestly meant fixing something else first, and this is the part worth telling you about. The prayer times and the Islamic date were fetched together and judged together, so making the date fail honestly would have taken the prayer times down with it — losing the thing most people actually come for. They are now judged separately.
  • The calendar also got quicker. Building a month used to involve the site asking itself for one date at a time, thirty times over, one after another. It now works them out directly.
  • We tested it by deliberately breaking it. Rather than reasoning that the safeguards would work, we made the setting unreadable on purpose and watched: every Islamic date vanished, no commemoration was placed on a guessed day, and the prayer times kept working throughout.
  • Nothing to do at your end. On any normal day you will see exactly what you saw before.

Version 2.182.0

August 21, 2026

A Cancel button that stopped the screen but not the work

  • Pressing Cancel while an article was being drafted did nothing at all. The progress bar vanished, the page said it had stopped, and the drafting carried on to the end — using time on the machine that does the writing, for something nobody was waiting for any more. This is an editing tool rather than anything you see, but it is the kind of fault we least like: the screen looked exactly the same whether it had worked or not.
  • Almost all of the machinery for stopping was already there. A few weeks ago we moved article drafting and translation out of a background service and into the site itself. The stopping half did not move with it, so the button was politely asking the wrong part of the system, which correctly replied that it had nothing to stop. Nobody was reading the reply.
  • That last part is the lesson, and it is why this took longer than the fix itself. The report said the site was claiming success. It was not — it was answering honestly and every screen was throwing the answer away. Had we only fixed what was reported, nothing would have changed and the ticket would have been closed.
  • Cancelling now tells you what actually happened. Three different things can be true — it stopped, it will stop in a moment, or there was nothing running — and they used to look identical. If we cannot reach the part of the system doing the work, we now say so plainly rather than pretending, because that is the one case where the work might still be going.
  • Translation had two Cancel buttons and only one of them worked. Which one you reached depended on which page you happened to be on. Both now do the same thing, decided by what you are cancelling rather than where you are standing.
  • One honest caveat. If the drafting is already deep inside a single long step, Cancel asks it to stop and it finishes that step first — so on a very short piece it may complete anyway. The message says so rather than pretending otherwise, and closing that last gap is a separate piece of work.
  • Nothing to do at your end. If you use the editing tools, Cancel now means cancel.

Version 2.181.0

August 21, 2026

An update that would have reported success while changing nothing

  • One piece of our software was set up to receive updates differently from everything else — and the difference meant it had quietly stopped receiving them. It was still running an older version from a fortnight ago, while the rest had moved on.
  • What makes that worth writing up is how it would have failed. Following our own written instructions to update it would have finished without a single error, reported healthy, and left the old version running. Nothing anywhere would have said otherwise. A step that cannot fail visibly is the kind of problem we most want to find, because it can hide for as long as nobody happens to look.
  • It has been brought into line with everything else, and moved to where the rest of its kind live. It had sat apart since it was written, which had already misled two of our own documents into describing it as something it is not.
  • We added an automatic check so it cannot drift out of line again. Our preference is always to replace “remember to do this” with something that simply refuses — the same approach as the check we added yesterday. This one guards two mistakes rather than one, and the second can still catch us out in future, which is what makes it worth having rather than decorative.
  • Two of our own notes were wrong, and we corrected them rather than working around them. One described a feature we deleted last week as though it were still there; another still recommended a step that this change reverses.
  • Nothing to do at your end, and nothing you can see has changed.

Version 2.180.0

August 20, 2026

A part of the system had been talking to machines that no longer exist

  • One of the services behind the site still contained a whole section for producing spoken audio — pointed at equipment we retired months ago. It started up every day, announced what it was going to use, and every one of those things was long gone. The site’s actual voice audio has come from somewhere else entirely since last year.
  • It is now removed, along with the settings that pointed at it. That service has gone from twenty jobs to eleven over the last two changes, which makes it cheaper to run and considerably easier to understand.
  • One setting was quietly pointing at the wrong machine, and we found it by accident. It never caused a problem because a local override always took precedence — which is precisely why nobody noticed. We have corrected it now, before an unrelated piece of work removes that override and turns a harmless mistake into a real one.
  • Our own notes were wrong too, and that is the part worth admitting. The handbook we consult before making changes listed this audio work as something the service still did. It had not been true for months, and anyone reading it — including us — would have believed it.
  • Nothing to do at your end, and nothing you can hear or see has changed.

Version 2.179.0

August 20, 2026

We deleted a large piece of code that had stopped doing anything

  • Around two thousand lines have been removed from one of the background services that supports the site. It used to draft articles and produce translations. That work moved into the site itself a few weeks ago, and this was the half left behind — still there, still starting up every day, and never once used.
  • We proved nothing was calling it before deleting it, rather than assuming. The site had stopped, and so had everything else we run. The only mention left anywhere was a note explaining that it had moved.
  • Why this is worth doing at all: code that still exists but is never used is worse than no code, because the next person to read it reasonably assumes it matters. It quietly presents itself as the way something works, long after that stopped being true — and then someone changes it, or trusts it, and loses a day.
  • We also found the checks could not have caught a mistake here, so we made one ourselves before finishing. That is worth saying plainly: a green tick is only ever evidence about the thing it actually looks at.
  • Nothing to do at your end, and nothing you can see has changed.

Version 2.178.0

August 20, 2026

This page had grown too long again, and we left it later than we should have

  • Versions 2.150 to 2.162, and 2.163 to 2.170, now live on two pages of their own — linked at the bottom of this one and listed in the release archive. Nothing has been removed, and every link anyone has shared to one of those entries still works; it simply takes you to the new page instead.
  • Two new pages rather than one, and that is the honest part of this note. When we last split this page we did it early, with room to spare, and said so here. This time a long run of releases went by without anyone looking, and by the time we did there was more than a single page’s worth to move.
  • What would have caught it was a check we already had, and never ran. A reminder to run it would have been the wrong fix, so the check is now automatic: it reports how much room is left every single time we work on the site, and refuses the change outright if this page has grown too far. The thing we forgot to do is no longer something anyone has to remember.
  • Why we bother splitting at all: this page once grew large enough to stop the site building, which took the whole thing down while we worked out why. Moving older entries off is what stops that happening again, and a page that only ever grows will always get there eventually.
  • Nothing to do at your end, and nothing on the site itself has changed.

Version 2.177.0

August 20, 2026

A safety check was accusing us of a fault we did not have

  • Yesterday’s note said we had found a fault in how our writing tools handle a missing reference service. We had not. The fault was in the check itself, and this entry corrects the record.
  • What the check does is important, so it is worth explaining. Our written pieces are grounded in cited source material. If that material cannot be fetched, the tools must refuse to write rather than quietly produce something ungrounded — because nothing about the result would look wrong. The check exists to prove that refusal really happens.
  • It was pulling the plug on the wrong thing. The service it tried to disable had been moved to different hardware, and the old one switched off. So it was unplugging something already gone, the tools carried on correctly, and the check called that a failure.
  • Now corrected, the check passes on every count — including the one it was wrong about. The refusal works, and always did.
  • The lesson we are keeping: a test that can never pass is as useless as one that can never fail. This one had started training us to expect a red mark, which is exactly how a real problem would slip by unnoticed one day.
  • Nothing to do at your end, and nothing was ever wrong with the site.

Version 2.176.0

August 20, 2026

Clearing out the console for a tool that moved to its own home

  • One of our editing tools is becoming its own separate product, and its control panels here had already been switched off and pointed at the new site months ago. The pages themselves were still sitting in the code, doing nothing and reading as current to anyone looking. They are now removed.
  • Nothing changes for anyone using the site. The old addresses still send you to the right place, exactly as they did before, and everything the tool is actually used for is untouched.
  • We deliberately left a similar-looking panel alone. It shares a name with the tool that moved, but it is really the window onto the reference library that our written pieces draw their citations from — so removing it would take away the only way to see whether that library is healthy. Different job, same name, kept.
  • Checking this change turned up a real fault elsewhere, which we have written up separately. If one particular background service is unavailable, our writing tools carry on without their reference material instead of stopping. Nothing produced that way is visibly wrong, which is exactly why it needed catching. That service is healthy today; the fix is queued.
  • Nothing to do at your end.

Version 2.175.0

August 20, 2026

Tidying up our own notes about how the site search works

  • Nothing changed on the site itself. This is housekeeping on our internal documentation, which we version and publish here like everything else.
  • The document describing how search would work was still written as a plan, months after it was built. It has been retired to our archive with a note saying so, and replaced by a much shorter one describing what actually exists.
  • The replacement is deliberately brief. Most of the explanation already sits alongside the code it describes, and copying it into a second place is how two versions of the same rule end up disagreeing — which has caused us real problems before.
  • We also found a neighbouring document still describing a different piece of work as unstarted, when that had shipped too. Rewriting it is a bigger job for another day, so for now it carries a clear warning at the top rather than quietly misleading the next person who opens it.
  • Nothing to do at your end.

Version 2.174.0

August 20, 2026

Our editing tools were sending enormous images to draw tiny pictures

  • The screens our team uses to write and publish were downloading far more than they needed. One of them fetched around 69 megabytes of pictures to show a page of thumbnails; it now fetches under two. The pictures look exactly the same — they are simply sent at the size they are actually drawn at, in a more efficient format.
  • The worst example was a row of small icons. Each one was a large, full-resolution image being shrunk down to about the size of a full stop, and there were nine of them on one screen. Together they were over three megabytes. They are now about four kilobytes.
  • We had already written this off as not worth doing. A note from the earlier round of this work said those icons were small enough to ignore. Nobody had measured them; when we did, they turned out to be the single worst case of the lot. A number written down from memory sent us straight past the biggest win.
  • Nothing was made smaller in the visual sense. One image we checked kept every pixel of its original resolution and still dropped by 97% — the whole saving came from the format, not from throwing anything away.
  • One fix was a bug rather than a saving. A page that shows author photographs quietly falls back to a second file type when the first is missing. The way it decided to do that would have stopped working the moment we changed how the image was fetched, and everyone whose photo used that second type would have silently lost it. Found before it shipped, and fixed.
  • Nothing to do at your end — this is all behind the scenes, on the editing side.

Version 2.173.0

August 20, 2026

The short links our own tools copy, and a tidy-up we thought we had finished

  • Every place in our editing tools that shows or copies a short link now gets it from one place. Fourteen of them used to work it out for themselves, from details stored when the link was first created. Nothing looked wrong — they all happened to agree — but they would have stopped agreeing the moment we ever moved where short links live, which is the one situation the setting exists to handle.
  • The one that mattered most ends up inside a video. A short link is drawn onto the story videos we produce. Until now the browser worked that link out and sent it to be burned in — so a stale answer would have been baked permanently into a file people download and keep, rather than sitting in a copy button where it can be put right. The server now works it out itself and ignores anything the browser offers.
  • We thought there were seven. There were fourteen. The original count came from searching for the shape we assumed the mistake would take, and it took three different shapes — including one that ran the whole thing backwards, pulling a correct answer apart in order to rebuild it. No search for a web address could ever have found that one.
  • Two of them could have shown you one link and copied another. On those screens the label and the copy button sit on the same thing, and each worked the link out separately. Fixing only the half we had already found would have made that worse rather than better — which is the argument for counting properly before starting.
  • The build now refuses this mistake rather than trusting us to remember it. We already had one automatic check here and it was blind to this whole category, which it said so itself. There is now a second one covering exactly what the first cannot see, and each is checked against a deliberate mistake to prove it still notices.
  • Nothing to do at your end. Short links you already have keep working, and they always did.

Version 2.172.0

August 20, 2026

The rest of the jump is gone, and a calendar bug we found on the way

  • The “Upcoming Events” panel was the other half of yesterday’s jumping home page. It held a fixed-size grey placeholder while it went and fetched what to show, and the real content was never the same size — so everything below it lurched as it settled. It now arrives filled in, at the right size, first time.
  • This one happened on every single visit, not just on days with something scheduled. Between the two fixes, the measurement is now roughly a three-hundredth of what it was.
  • We could not simply make the placeholder bigger, which was the obvious idea. Its correct size depends on how many events there are and how long their names are, so any fixed number would have been right the day we measured it and quietly wrong afterwards.
  • The one that matters most is a calendar bug we found while in there. The setting that adjusts our calendar for moon sighting was being read in a way that, if the reading ever failed, silently fell back to “no adjustment” — which is indistinguishable from someone having deliberately set it to none. A brief hiccup could therefore have listed a commemoration on the wrong day, with nothing appearing to be wrong. Where we cannot read that setting, we now show no Hijri dates at all rather than dates we are not sure of. A date that is visibly missing sends you to ask; a confidently wrong one does not.
  • And if part of the home page cannot load, only that part says so now. It used to be that the page could not fail this way at all, because it was assembled in advance; making it fetch things properly introduced the risk, so the fix went in alongside. You will see a short line where the panel would be, rather than a panel that looks empty — or, worse, a page that will not load at all.
  • Nothing to do at your end.

Version 2.171.0

August 20, 2026

The home page no longer jumps about while it loads

  • If you opened the home page and started reading, the text could suddenly shove itself down the screen. That was today’s event card arriving late: the page was sent to you before we had worked out whether there was a programme on, so it laid itself out as though there wasn’t, and then had to rearrange everything once the answer came back.
  • We now work out the answer before sending the page, so what arrives is already correct and nothing has to move. On a quiet day with nothing scheduled, nothing appears and nothing shifts — which is why we did not simply leave an empty gap where the card might go.
  • The measurement was roughly five times worse than the level considered poor, and the jump was worst for the people we would least want it to be worst for — anyone on a fast connection. On a slow one the answer arrives before the page is drawn, so there is nothing to see.
  • Which is also why we had missed it. The standard tool for grading this deliberately tests on a throttled connection, and gave us a perfect score. We very nearly filed the whole thing as a non-issue on the strength of that. It took measuring it the way an actual visitor experiences it to see it at all.
  • Separately: a session that had already finished could briefly show a greyed-out “Join via Zoom” button before it vanished. Nothing was joinable and nothing was broken, but a finished majlis should not advertise a room at all, even for a moment. It no longer does — on the event pages too, where this had been happening unnoticed for some time.
  • Nothing to do at your end.