fix(images): repair three regressions from the self-hosting migration - #1911
Merged
zksquirrel merged 1 commit intoJul 29, 2026
Merged
Conversation
The self-hosted-image migration (ZecHub#1888, `3ec05852`) left 74 `_unavailable.svg` placeholders across `site/`. Most need the missing image re-hosted, which is a frontend-repo change. These three are fixable here and are outright regressions, not just missing files. 1. `Using_Zcash/Zcash_Mining_Pools.md` — a working **inline base64 `data:` image** was replaced with `_unavailable.svg`. A data URI makes no network request at all, so it was already the most privacy-preserving form possible; the migration downgraded a working image to a placeholder for no benefit. Restored verbatim from `3ec05852^`. 2. `ZFAV_Club/Guides_for_Creators/Livestream_Setup.md` — the migration regex matched a link **nested inside image alt text** and overwrote its href, destroying an author-credit link: Author: [decentralistdan](https://twitter.com/decentralistdan) -> Author: [decentralistdan](/content-images/_unavailable.svg) This is a link, not an image, so it costs nothing at page load; it only resolves if a reader clicks it. Restored, and it now matches the identical credit line still intact two lines below (line 22). 3. `Research/ZK_Shielded_Asset_Platforms.md` — malformed image reference: .png) Root cause: the original URL ended in `Untitled_(4).png`, whose unescaped parentheses already broke markdown parsing at the first `)`. The migration substituted up to that point and left `.png)` as stray literal text. Removed the stray fragment. The image itself still needs re-hosting. Not addressed here: the remaining `_unavailable.svg` placeholders, which need the source images fetched and added to the frontend's `public/content-images/`. The heaviest are `Using_Zcash/Spend_Zcash/Top_10_Places_to_spend_ZEC.md` (19), `zechubglobal/*/zksnarks` (6 each) and `ZFAV_Club/Guides_for_Creators/Community_Broadcasting.md` (4). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The self-hosted-image migration (#1888,
3ec05852) left 74_unavailable.svgplaceholders acrosssite/. Most of those need the missing image fetched and added to the frontend'spublic/content-images/, which is azechub-wikichange and out of scope here.These three are different: they are fixable in this repo and they are outright regressions — each one replaced something that was working.
Three lines changed, one per file.
1. A working inline image was downgraded to a placeholder
site/Using_Zcash/Zcash_Mining_Pools.mdThe page carried an inline base64
data:image. A data URI issues no network request at all, so it was already the most privacy-preserving form an image can take — there was nothing to self-host. The migration replaced it with_unavailable.svg, turning a working, leak-free image into a broken one for no benefit.Restored verbatim from
3ec05852^. Verified:data:imageoccurrences go 0 → 1,_unavailable1 → 0.2. An author-credit link was destroyed
site/ZFAV_Club/Guides_for_Creators/Livestream_Setup.mdline 20The migration regex matched a link nested inside image alt text and overwrote its href:
This is a link, not an image, so it costs a reader nothing at page load — it only resolves if they click. The identical credit line two lines below (line 22, the visible caption) was untouched, so the page currently contradicts itself; this restores the pair to matching.
3. Malformed image reference
site/Research/ZK_Shielded_Asset_Platforms.mdline 93Root cause worth recording: the original URL ended in
Untitled_(4).png, and those unescaped parentheses already broke markdown parsing at the first). The migration substituted up to that point and left.png)behind as stray literal text rendering on the page. This removes the stray fragment. The image itself still needs re-hosting, so the placeholder stays for now.Scope
This PR fixes only the three regressions above. The other
_unavailable.svgplaceholders insite/are not addressed here and are not caused by the migration — they pre-date it. Spot-checked example:Using_Zcash/Spend_Zcash/Top_10_Places_to_spend_ZEC.mdreferences its images as relative paths from a Notion export (Places%20to%20Spend%20ZEC%20b8e9…/…png) whose asset directory was never committed to the repo, so those images have been broken since the page was added and resolve to a 404 today. The migration's placeholder is an accurate report of a pre-existing loss, not damage it caused.They are worth cleaning up, but that is separate work and separate from this PR.
Why this matters beyond the three lines
These placeholders are currently blocking translation work. In the companion PR (#1910) the translated trees are brought in line with the self-hosted image URLs, but 11 pages are deliberately held back because their English side now points at
_unavailable.svgwhile the translations still hold working URLs — propagating the placeholder would degrade 18 locales to match a regression. Those 11 pages stay flagged stale until the images are recovered, so fixing them upstream unblocks that last slice.🤖 Generated with Claude Code