Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
3 changes: 2 additions & 1 deletion public/_worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down
Binary file added public/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
95 changes: 18 additions & 77 deletions public/easyconvert-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
148 changes: 14 additions & 134 deletions public/easyconvert-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicon-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicon-32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/icon-192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/icon-512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 19 additions & 2 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,25 @@
<meta name="apple-mobile-web-app-status-bar-style" content="default">

<!-- Favicon -->
<link rel="icon" href="easyconvert-logo.svg" type="image/svg+xml">
<link rel="alternate icon" href="easyconvert-icon.svg" type="image/svg+xml">
<link rel="icon" href="easyconvert-icon.svg" type="image/svg+xml">
<link rel="icon" href="favicon-32.png" sizes="32x32" type="image/png">
<link rel="icon" href="favicon-16.png" sizes="16x16" type="image/png">
<link rel="apple-touch-icon" href="apple-touch-icon.png">

<!-- Link previews (the site is noindex; these are for shared links) -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="EasyConvert">
<meta property="og:title" content="EasyConvert - Free PDF Table to Excel/CSV Converter">
<meta property="og:description" content="Convert PDF tables to Excel or CSV entirely in your browser. No upload, no signup, no data collection. Hebrew and Arabic RTL supported.">
<meta property="og:url" content="https://convert.nx1xlab.dev">
<meta property="og:image" content="https://convert.nx1xlab.dev/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="EasyConvert - free PDF table converter to Excel and CSV">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="EasyConvert - Free PDF Table to Excel/CSV Converter">
<meta name="twitter:description" content="Convert PDF tables to Excel or CSV entirely in your browser. No upload, no signup, no data collection.">
<meta name="twitter:image" content="https://convert.nx1xlab.dev/og-image.png">

<!-- PWA Manifest -->
<link rel="manifest" href="/manifest.json">
Expand Down
14 changes: 10 additions & 4 deletions public/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
]
}
Binary file added public/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions public/sw.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down