MemeStack version history - 5 versions
MemeStack by Ed_Relight
MemeStack version history - 5 versions
Be careful with old versions! These versions are displayed for testing and reference purposes.You should always use the latest version of an add-on.
Latest version
Version 0.5.1
Released Sep 17, 2026 - 123.99 KBWorks with firefox 142.0 and laterSaves cards are picture-first tiles. The 0.5.0 card stacked three text rows (status, host · time, actions) under a 3:2 thumbnail box and spent ~40% of its height on them. Now the picture takes the whole column — a bordered ≈187×173 tile, contain-fit, never a crop — and the chrome collapses onto it: the status rides the tile as a small corner chip (✓ Saved, ⟳ Analyzing…, ⧉ Already in the index, an amber ⧉ Looks similar…), the truthful 3-phase upload track is a thin bar along the tile's bottom edge, and ONE caption line beneath carries host · time and the same View / Keep mine / Retry buttons. Card height is unchanged at 200px, so two full rows still fit the fixed box in every state.
A save with nothing to show says why, in the tile. Failed, stalled and not-yet-uploaded rows (and a thumbnail that 404s) put their status message centred in the tile instead of a grey placeholder beside squeezed text — a rejection reason or the "site may block downloads" instruction finally has room.
The near-duplicate card keeps its amber emphasis (tile edge + chip) and both choices on its caption line; its meta ellipsises to the score ("91% similar…"), host and time staying in the tooltip.Source code released under All Rights Reserved
Older versions
Version 0.5.0
Released Sep 16, 2026 - 123.68 KBWorks with firefox 142.0 and laterFixed-size popup — 420×580. The browser sizes a popup to its document, so every tab switch, Settings toggle and appearing scrollbar used to resize the window. body now has a fixed height, exactly one region per tab scrolls (the Find results, the Saves grid), and both reserve their scrollbar gutter (scrollbar-gutter: stable) so All → Saved → Collections never shifts the grid sideways. Nothing is ever clipped: e2e/popup-visuals.mjs now asserts, in every scenario, that .app's scroll height equals its client height.
2×2 image grids on both tabs. Find: 2 columns of ≈188px near-square tiles the thumbnail contain-fits on a muted ground (no cropped meme text), with the aspect reserved so the grid never reflows as thumbnails load. Saves: the v0.1 40px rows are now cards in the same 2-column grid — a 3:2 contain-fit thumbnail box, then status, host · time and the View / Keep mine / Retry actions. Every v0.1 row contract (thumbnail suppression on failed/stalled, View targets, phase track) is unchanged.
Search commits on Enter or the search button, not on a timer. v0.3's 400 ms debounce searched every half-typed prefix and flashed a fresh grid per keystroke. Typing now never fetches; clearing the box returns to the default view at once; a held Enter is one submit. The Collections name filter stays live (client-side, no fetch). The search button doubles as the load indicator.
The header name links to your memestack.ai profile (/u/{pubkey}, or /u/{id} for an email-only account), opening in a new tab.
Settings moved from a bottom-of-Saves disclosure to a header gear overlay — reachable from both tabs, and opening it no longer changes the popup's height. Same two settings, same wire contract.
Added
Enlarged preview on hover / keyboard focus. Dwelling ≈350 ms on a Find tile opens a pointer-transparent overlay showing the same thumbnail at popup width (about 2× the tile) with its caption; moving off (or blurring) closes it, and a click still copies + pastes. Not shown over a tile that is displaying an outcome, and never after a mouse click focuses a tile.
Remembered search. The last committed query and scope survive the popup closing (a paste closes it) for 30 minutes of inactivity — popup-page localStorage, no chrome.storage schema change. The record is keyed to the identity that made it (user id, or anonymous): a logout or account switch never restores — let alone replays — the previous user's query, and the next identity's own default overwrites it on open (Codex adversarial review finding, fixed before submission).
Dialog focus containment. Settings and the logout confirm move focus into themselves, wrap Tab, hand focus back to the gear / Log out on close, and mark everything behind the scrim inert — Tab from the gear used to reach the covered Log out button, and Enter there logs out and wipes local save history (Codex adversarial review finding, fixed before submission).Source code released under All Rights Reserved
Version 0.4.0
Released Aug 17, 2026 - 122.13 KBWorks with firefox 142.0 and laterAdded
"Continue with Email" on the login screen — a peer button beside the Lightning QR, opening memestack.ai's one-click connect page (which handles email or Lightning login and hands the extension its restricted token). The email path always existed via that page, but nothing in the popup said so — the first screen read as crypto-required to walletless installs.
Reserved-hostname refusals (shared SSRF guard): internal-by-definition names — .local, .localhost, .internal, .lan, .home, .corp, .mail, .home.arpa, and single-label hostnames — are refused before ANY network I/O. Closes the mDNS/search-domain gap the DNS lookup structurally could not see: public DNS answers empty for printer.local while the browser resolves it via mDNS, so the old check passed exactly the names it existed to stop.
Changed
DoH failure mode split — fail-open on an unreachable resolver. The pre-download 1.1.1.1 safety lookup no longer fails the save when the resolver cannot be reached: corporate networks and Pi-hole-class setups block DoH endpoints wholesale, and the old fail-closed rule turned every save there into an unexplained refusal. A resolver that ANSWERS "private network" still always refuses, in every mode. Extension-only (resolverUnavailable: 'allow') — server callers of the shared guard keep the fail-closed default byte-for-byte.
DNS lookups parallelized — the A and AAAA queries now run concurrently, halving the lookup latency added to every save.
Icons: transparent corners. Toolbar/store icons are now rasterized from the vector favicon; the previous set inherited opaque white corners from a flattened PNG, visible on dark toolbars and store surfaces.
Store artifacts renamed bitcoin-index-extension- → memestack-extension-* (wxt zip.name; the internal workspace package name is unchanged).
Internal / tooling
Packaging guard hardened: scripts/assert-manifest.mjs gained --zip mode (asserts the actual upload artifact — a --dist assertion once passed a stale clean build while the zips were contaminated) plus a package-wide dev-URL scan (http://localhost, localhost:<port>). Added after wxt zip --mode prod (Vite mode prod ≠ production) baked .env's localhost URLs into the packages. Rule: never pass --mode to wxt zip.
e2e/popup-visuals.mjs pinned to the Saves tab — 0.3.0's default-Find tab left every Saves-view scenario timing out.
Site disclosures updated alongside (/privacy §5: Insert flow + the DoH fail-open behavior; store reviewer notes likewise).Source code released under All Rights Reserved
Version 0.3.0
Released Aug 16, 2026 - 124.96 KBWorks with firefox 142.0 and laterNew in 0.3.0 — Find & Paste:
• A new Find tab in the popup: search MemeStack's public gallery without signing in, or your own saved images and collections once signed in.
• Click a result to copy it to your clipboard as a PNG; on sites whose editors accept pasted images, it's inserted straight into the field you were typing in.
• Open the popup with Alt+M, or right-click a text field and choose "Insert image from MemeStack".
• No new permissions — the permission set is identical to 0.1.Source code released under All Rights Reserved
Version 0.1.0
Released Aug 13, 2026 - 119.16 KBWorks with firefox 142.0 and laterSource code released under All Rights Reserved