Releases: DrummingBird1/GOGEnhancer
Release list
v2.6.0
v2.6.0 (current) — Genre detection from the game page
- Real genre detection — visiting a game page now reads its actual
"Genre:" field (confirmed values: Horror, Role-playing, Strategy) and
caches the result per slug (gameGenres, local/per-device). Card styling
and the wishlist genre filters use this cache when available, falling back
to the old franchise/keyword regex (GENRE_PATTERNS) for anything not yet
visited or outside those three genres (sci-fi, indie — GOG appears to
classify those under its separate, unverified "Tags" cloud, not "Genre:",
so they're left on the regex for now). Detection is text-label based
rather than tied to a specific CSS class, since GOG's Angular markup shifts
between releases; it silently no-ops if the label isn't found, so the
worst case is identical to pre-2.6.0 behavior. - Addresses part of the "Genre detection is slug-pattern matching" known
limitation — narrower than a full fix (3 of 5 buckets), see above for why.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.5.1
v2.5.1 (current) — What's new panel
- Popup changelog — after an update, opening the popup now shows a short
"What's new" panel with that release's highlights, dismissible with a "Got
it" button. Tracks a newlastSeenVersionkey (local, per-device) so it
only surfaces versions you haven't acknowledged yet — including any you
skipped if the browser was closed across several releases. Source of truth
islib/changelog.js; add an entry there on every user-facing version bump.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.5.0
v2.5.0 (current) — Smart prices & historical lows
Adds price-trust signals while browsing, plus reliability plumbing:
- 💎 Lowest-price badge — cards for games sitting at their tracked all-time
low now carry a gold "Low" badge, so you spot a genuine deal without opening
the game page. Reuses the price-history you already collect; toggle it in the
popup ("Lowest-price badge"). - Stale-rate warning — a converted price whose FX rate is over 48h old, was
never fetched, or last failed to refresh now shows in amber with a ⚠, instead
of quietly using a frozen rate. - Rate provenance in tooltips — the conversion tooltip now shows the exact
rate used and its age ("1 USD = 3.65 ILS · updated 4h ago"). - Tag-colour dot on cards — a small corner dot, tinted by your first tag,
marks games you've tagged while browsing the store. - Storage-routing CI guard — a new test asserts every key in
defaults.js
is routed instorage.js, catching the "falls through to local" trap at PR
time. Refreshed dev dependencies to clear Dependabot advisories.
Internally: the archive step in build.ps1 (added in this cycle) automatically
tucks the previous webstore zip into dist/archive/ on every version bump.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.4.1
v2.4.1 (current) — Repo restructure: extension/ + store/
Housekeeping only — no code or behavior changes. The repo root now cleanly
separates what ships from what doesn't:
extension/holds the entire shippable extension (manifest + all code +
icons). This is what you Load-unpacked and whatbuild.ps1zips. All 34 code
files moved here as git renames, so per-file history is preserved.store/holds Web-Store material that never ships:STORE_LISTING.mdand
screenshots/.- Repo docs (
README,PRIVACY,LICENSE,CLAUDE.md) and dev tooling
(build.ps1,tests/,package.json,.github/) stay at the root. - Updated to match:
build.ps1now zipsextension/; test imports point at
../extension/…; the ESLint service-worker glob and the release workflow's
manifest-path both targetextension/.
If you Load-unpacked from the repo before: point Chrome at the extension/
subfolder now, not the repo root.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.4.0
v2.4.0 (current) — Support links
- Patreon support links added in four unobtrusive spots: a "☕ Support this
project" button in the popup footer (translated EN/HE), a "Support development"
card in Advanced Options, an optional line on the onboarding wizard's final
step, and a Support section in the README. All are plain external links — no
new permissions, no fetches, no tracking. Every feature stays free. - Store-listing screenshot guidance updated to warn against shipping the
current screenshots (captured from a real session) and to reshoot with a
signed-out/demo profile so no personal account data is exposed.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.3.2
v2.3.2 (current) — Privacy cleanup of repo metadata
Housekeeping pass that removed personal identifiers from the public repo's
tracked files (commit history was already clean — all commits use the GitHub
noreply email):
- Removed a personal email address that appeared in a
CLAUDE.mdworkflow note. - Replaced the machine-specific local path in
CLAUDE.mdwith a generic
<repo-root>placeholder. - Changed the copyright holder and "built for" lines (
LICENSE,README.md,
options footer) from a personal name + city to theDrummingBird1handle /
neutral wording. - Fixed stale
v2.1version pills in the onboarding and options headers.
No code or behavior changes.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.3.1
v2.3.1 (current) — Security audit hardening
A full security/privacy review found the codebase solid (no XSS, no privacy
leaks, minimal permissions). These are the hardening fixes it produced:
notifLogno longer grows unbounded. The background dedup log (one
timestamped key per fired notification) is now pruned of entries older than
90 days on each daily run. Refund + price-alert + wishlist-jump checks were
consolidated into a singlerunDailyJobs()that prunes afterwards.- Defense-in-depth on tag colors. The one spot that interpolated a tag
color into an HTMLstyleattribute (dashboard game cards) now passes it
through a render-time#hexvalidator (safeHexColor), so it can't become a
CSS-injection vector even if a future write-path forgets to validate. All
other color usages already went through CSSOMsetProperty(injection-proof). AGENTS.mdgitignored. A per-machine Codex mirror of CLAUDE.md (with a
machine-specific path) is no longer flagged as untracked repo noise.
No functional behavior changes. All 34 tests pass; ESLint clean.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.3.0
v2.3.0 (current) — i18n, price alerts, sale heatmap, tag packs
New features
- Hebrew UI — full Hebrew translation of the popup, plus interface-language selector in Advanced Options → Look & feel. Framework lives in
lib/i18n.js(dictionary-based, supports[data-i18n]and[data-i18n-attr]markup). Sets<html lang>+dir="rtl"automatically. - Per-game price alerts — every game-page panel now has an alert section. Type a threshold, hit Save, and the daily background alarm fires a desktop notification when the latest recorded price drops below it. Per-slug + per-threshold dedup via
notifLog. Requires the existing opt-indesktopNotificationstoggle. - Cover-art color sampling — the game-page panel's border and header pill take on the dominant color sampled from the page's
og:imagecover art. Spotify-style. Falls back to the theme accent if the image is CORS-blocked. - Mini sparkline in hover quick-look — the tooltip that appears when you hover a game card in a listing now contains a tiny SVG sparkline of the last 10 snapshots.
- Sale calendar heatmap — new dashboard section showing a 12-month grid colored by how often you've observed ≥1 price drop in each month, across your whole tracked library. Identifies the "hot months" GOG drops prices.
- Shared tag packs — export the currently-visible games as a
gog-plus-pack-…json(includes tags, notes, purchase dates, tag colors), and import packs others share with you. Merge mode — never overwrites existing notes / purchase dates / colors. - Advanced dashboard search — operators in the search box:
tag:rpg,lowest:<10,lowest:>5,snapshots:>3,since:2026. Combine freely with plain-text substring search.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
v2.2.0
v2.2.0 — Hover quick-look, year selector, dashboard polish
New features
- Hover quick-look on game cards — hover any game card in a listing and a rich tooltip shows current price, all-time low, your tags, and last visit date. Reuses the existing
data-gog-plus-tiptooltip system; only stamped on cards that have data. - Year-in-review with year selector — the dashboard's year-in-review section is no longer locked to the current year. A dropdown appears when you have history spanning multiple years; pick any year to see its stats.
- Sortable dashboard columns — sort tagged games by name, last visit date, tag count, or snapshot count. New toolbar dropdown.
- Per-game JSON export — small
↓button on every dashboard game card. One click downloadsgog-plus-{slug}-{date}.jsonwith that game's tags, note, purchase date, and full price history. Backup-friendly. - Custom hex tag colors — beyond the 8 preset swatches, the color picker now has a native color input. Pick any color from the OS color dial.
- History depth control — number input in Advanced Options → Developer (range 10–500, default 100).
lib/storagehistoryMaxEntriessetting feedscontent/price-history.jsvia cached read + onChange. - Storage usage estimate — extra stat card in the dashboard shows
X KB · Y% of 5 MB local quota(computed locally, no Web Storage API call needed).
Bug fixes
- Sparkline + price-history stats now normalize every snapshot to the user's target currency via the USD rate matrix. Previously, after changing target currency the chart silently mixed old-currency and new-currency values.
runMigrations()is now atomic across the v1→v2 split. Iflocal.setfails, settingsVersion stays at 1 and the migration retries next run. If onlysync.removefails afterwards, data is preserved in local and the stale sync entries are logged but don't block progress.
Visual polish
- 280 ms color cross-fade across panels, tooltips, badges, banner, and wishlist filter chips when switching themes. Disabled for
prefers-reduced-motion. - Ambient background drift — the radial-gradient overlay on
body::beforenow subtly shifts position+scale over a 90 s loop. Imperceptible motion, hints at depth. Reduced-motion friendly.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
Full Changelog: v2.1.1...v2.2.0
v2.1.1
v2.1.1 — Cross-currency wishlist filters, Light theme, polish
Bug fixes
- Wishlist
< $10/< $25filters now work in any locale. Page price is parsed inpageCurrency.codeand converted to USD via the rate matrix before comparing — previously the regex only matched$and silently no-op'd for EU/UK/IL users. cleanLayoutCSS no longer hardcodes/promo/20230and/promo/20240. It now keys off.gog-plus-expiredwhichhideExpiredSalesstamps dynamically againstcurrentYear, so the layout stays accurate as years roll.- Toolbar badge color now follows the picked theme (Neon → magenta, CRT → green, Sunset → orange, Classic → purple, Light → deep purple). Previously locked to magenta regardless.
New features
- Light theme added as the fifth picker option. Inverts the background/text palette while keeping accents recognizable. Renders panels and tooltips as bright "windows" on GOG's dark pages — high contrast, very scannable. Selectable from Advanced Options → Look & feel and from onboarding step 4.
- Live theme preview on the options page. Clicking a swatch now updates the page's accent colors immediately (the surrounding UI flashes to the new palette) instead of requiring a reload to see the change.
- Compact density toggle in the tag dashboard toolbar. One click switches the entire dashboard (stat cards, year-in-review, tag pills, game cards) to a tighter layout. Useful for power users with many tags. Persisted per device in
tagDashboardDensity.
Infrastructure
- GitHub Actions CI:
.github/workflows/test.ymlrunsnpm test+npm run linton every push tomainand on every PR. - ESLint flat config with extension-specific globals (chrome.*, GOGPlusStorage, GOG_PLUS_DEFAULTS, etc.).
npm run lintis now part of the test workflow. .gitattributespins LF for text files in the repo (PowerShell stays CRLF, binaries unchanged). Keeps diffs on GitHub clean across contributors with differentcore.autocrlfsettings.- 10 new Vitest specs for
content/price-history.js:recorddedup + trim to 100,lowest,stats, and the input-validation edge cases. Total 34 tests, all passing.
Download gog-enhancer-webstore.zip below and load it as an unpacked extension, or wait for the Chrome Web Store listing.
Full Changelog: https://github.com/DrummingBird1/GOGEnhancer/commits/v2.1.1