Delete the commit, not the page
A commit deleted while you are reading it now stays on screen, dimmed, with its buttons switched off. Only a reload still gives you the old 404.

You are halfway through a reply when the commit's author deletes it. The page does not jump to a 404. The commit fades to half strength, a toast says "This commit was deleted," and its star, bookmark, reply and the rest go dead under the cursor. If it is the commit the page is about, a sheet in the site's rail style covers everything. It prints fatal. Then it prints bad object with the last seven characters of the id, and offers one way out. Back to your log, or Go to the home page if you are a guest. Esc and clicks outside do nothing.
Credit xHeaven, who gave the browser a memory for what it just lost. A small list of dead commit ids and page paths lives in the page, and the notification poll that already runs every 30 seconds now watches the page's own commit and keeps the page when the server answers 404 instead of swapping in the error screen. Every action that gets a 404 marks its commit the same way, so one failed star dims the whole card for good. The sheet has three scripts. They are commit, photo, and page.
One catch. The poll only watches the commit the page is about. A reply deleted further down the thread keeps every button until you press one. Then it dims and toasts. So the page's own sheet can take up to 30 seconds to arrive unless you touch something first.
Also in this story
Key files · #610
- resources/
js/ use-deleted-resources.tshooks/ - resources/
js/ deleted-resources.tslib/ - resources/
js/ deleted-page-dialog.tsxcomponents/ - resources/
js/ error-message.tsxcomponents/ - resources/
js/ app-layout.tsxlayouts/ - resources/
js/ commit-card.tsxcomponents/ - resources/
js/ commit-thread.tsxcomponents/ - resources/
js/ error.tsxpages/