diff --git a/CHANGELOG.md b/CHANGELOG.md index b23c254..cfb1f1f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.5.0] - 2026-07-25 +### Added + +- New monochrome logo and icon: a grid monogram that forms an "E" from table cells, matching the app's soft-black palette (the previous mark was a blue-to-green gradient that predated the monochrome redesign) +- Proper icon set: PNG favicons (16 and 32), an Apple touch icon, and 192/512 PWA icons alongside the SVG +- Link preview support: a 1200x630 social card (`og-image.png`) plus OpenGraph and Twitter card metadata, so shared links and the GitHub social preview render with the brand card + +### Changed + +- The PWA manifest now lists raster icons at the sizes installers expect, and the service worker precaches the new favicon set + ### Security - Table extraction hardened against denial-of-service PDFs: the column-detection histogram is built from a difference array (O(items + size) instead of O(rows x size) work), and fragment merging skips rows with more than 400 fragments, so a crafted PDF degrades gracefully instead of freezing the tab @@ -17,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Renovate's custom cdnjs manager now matches the single-quoted library URLs in `app.js` and `sw.js`; previously only `index.html` was tracked, so automated library updates would have left the PDF.js worker and the service-worker cache list on the old version +- The `_worker.js` asset allowlist now matches the icons that actually ship (it previously listed `/icons/icon-192x192.png` and `/icons/icon-512x512.png`, paths that did not exist) ## [1.4.0] - 2026-07-25 diff --git a/public/_worker.js b/public/_worker.js index af0adbc..76ddb2b 100755 --- a/public/_worker.js +++ b/public/_worker.js @@ -9,7 +9,8 @@ export default { '/manifest.json', '/robots.txt', '/easyconvert-logo.svg', '/easyconvert-icon.svg', '/nx1xlab-logo.png', '/nx1xlab-logo.ico', - '/icons/icon-192x192.png', '/icons/icon-512x512.png' + '/favicon-16.png', '/favicon-32.png', '/apple-touch-icon.png', + '/icon-192.png', '/icon-512.png', '/og-image.png' ]; if (allowed.includes(path)) { diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000..2aa8b85 Binary files /dev/null and b/public/apple-touch-icon.png differ diff --git a/public/easyconvert-icon.svg b/public/easyconvert-icon.svg index 5693cf2..d980b7b 100755 --- a/public/easyconvert-icon.svg +++ b/public/easyconvert-icon.svg @@ -1,77 +1,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + diff --git a/public/easyconvert-logo.svg b/public/easyconvert-logo.svg index f30015b..4ac1036 100755 --- a/public/easyconvert-logo.svg +++ b/public/easyconvert-logo.svg @@ -1,134 +1,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + diff --git a/public/favicon-16.png b/public/favicon-16.png new file mode 100644 index 0000000..a76e627 Binary files /dev/null and b/public/favicon-16.png differ diff --git a/public/favicon-32.png b/public/favicon-32.png new file mode 100644 index 0000000..0f2dd75 Binary files /dev/null and b/public/favicon-32.png differ diff --git a/public/icon-192.png b/public/icon-192.png new file mode 100644 index 0000000..e9c246c Binary files /dev/null and b/public/icon-192.png differ diff --git a/public/icon-512.png b/public/icon-512.png new file mode 100644 index 0000000..63dee0c Binary files /dev/null and b/public/icon-512.png differ diff --git a/public/index.html b/public/index.html index 818a2e8..cb3327f 100755 --- a/public/index.html +++ b/public/index.html @@ -16,8 +16,25 @@ - - + + + + + + + + + + + + + + + + + + + diff --git a/public/manifest.json b/public/manifest.json index 9b69eee..29fc754 100755 --- a/public/manifest.json +++ b/public/manifest.json @@ -17,10 +17,16 @@ "purpose": "any maskable" }, { - "src": "easyconvert-logo.svg", - "sizes": "any", - "type": "image/svg+xml", - "purpose": "any" + "src": "icon-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "any maskable" + }, + { + "src": "icon-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "any maskable" } ] } diff --git a/public/og-image.png b/public/og-image.png new file mode 100644 index 0000000..c7b3062 Binary files /dev/null and b/public/og-image.png differ diff --git a/public/sw.js b/public/sw.js index 271a05a..5999803 100755 --- a/public/sw.js +++ b/public/sw.js @@ -7,6 +7,9 @@ const urlsToCache = [ '/manifest.json', '/easyconvert-logo.svg', '/easyconvert-icon.svg', + '/favicon-32.png', + '/favicon-16.png', + '/apple-touch-icon.png', '/nx1xlab-logo.png', 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js',