diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ef917b..c9b6a5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,29 @@ # Changelog +## [1.1.0] — 2026-10-18 + +### Added +- Adaptive speed (off by default) slows the crawl automatically on 429 / 503 / Retry-After responses and recovers once the server answers cleanly again. +- Bot-protection detection marks pages blocked by Cloudflare, AWS WAF, Vercel, Sucuri or DataDome as "Blocked" instead of reporting them as broken links or 4xx errors. +- A site-level soft-404 probe warns when missing pages return 200, and a Soft 404 issue flags "not found" pages served with a 2xx status. +- New benchmark-driven checks (hreflang outside head, HTTP/2, page size, dead external domains, CORS and more) bring the catalogue to 181 checks (thanks @alvinycheung). +- The status bar shows every post-crawl phase, such as measuring images or running checks, with live counts. +- srcset and picture image variants are listed without being fetched unless the new Spider setting or the CLI --image-variants flag turns them on. +- Images and other resources now show their Inlinks in URL Details. +- CLI: --adaptive-speed and --image-variants flags, Yandex Metrica commands (metrica-counters, metrica-fetch) and support for desktop-saved projects. + +### Changed +- Stored page bodies are zstd-compressed with a per-project dictionary, shrinking working project files several times over on template-heavy sites. +- The Linux AppImage now starts on Ubuntu 24.04+ by disabling Chromium's sandbox only where the kernel denies unprivileged user namespaces; the .deb and .rpm keep the sandbox. +- README and the update dialog explain the macOS 15 Sequoia Gatekeeper flow (Open Anyway); the CLI now requires Node 22.13 or newer. +- README refreshed with the current feature set, counts and a new live-crawl demo GIF. + +### Fixed +- Lazy-loaded images, tracking pixels, aria-labelled links, duplicate alt text and title/meta lengths measured in code points no longer produce false alarms. +- External links are re-checked with GET and a browser User-Agent before being reported broken. +- Sentence counting no longer stalls on long unpunctuated pages (thanks @alvinycheung). +- Cookie checks show "Off" instead of 0 when all cookies are rejected, crawls mark the project as unsaved, and keyboard hints show the Command key on macOS. + ## [1.0.1] — 2026-10-13 ### Added diff --git a/apps/cli/package.json b/apps/cli/package.json index 2c1253c..d2f2c62 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,6 +1,6 @@ { "name": "@freecrawl/cli", - "version": "1.0.1", + "version": "1.1.0", "private": true, "type": "module", "bin": { diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 1aefa37..299351a 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@freecrawl/desktop", - "version": "1.0.1", + "version": "1.1.0", "private": true, "description": "FreeCrawl SEO — desktop application", "homepage": "https://github.com/kemalai/FreeCrawl-SEO-Tool", diff --git a/apps/mcp-server/package.json b/apps/mcp-server/package.json index 5bd4f58..221a17b 100644 --- a/apps/mcp-server/package.json +++ b/apps/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@freecrawl/mcp-server", - "version": "1.0.1", + "version": "1.1.0", "private": true, "type": "module", "bin": { diff --git a/package-lock.json b/package-lock.json index 4529a85..c34620b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "freecrawl-seo", - "version": "1.0.1", + "version": "1.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "freecrawl-seo", - "version": "1.0.1", + "version": "1.1.0", "hasInstallScript": true, "license": "MIT", "workspaces": [ @@ -23,7 +23,7 @@ "vitest": "^2.1.9" }, "engines": { - "node": ">=22.0.0" + "node": ">=22.13.0" }, "funding": { "type": "patreon", @@ -32,7 +32,7 @@ }, "apps/cli": { "name": "@freecrawl/cli", - "version": "1.0.1", + "version": "1.1.0", "dependencies": { "@freecrawl/core": "*", "@freecrawl/db": "*", @@ -49,7 +49,7 @@ }, "apps/desktop": { "name": "@freecrawl/desktop", - "version": "1.0.1", + "version": "1.1.0", "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", @@ -111,7 +111,7 @@ }, "apps/mcp-server": { "name": "@freecrawl/mcp-server", - "version": "1.0.1", + "version": "1.1.0", "dependencies": { "@freecrawl/db": "*", "@freecrawl/shared-types": "*" @@ -10923,7 +10923,7 @@ }, "packages/core": { "name": "@freecrawl/core", - "version": "1.0.1", + "version": "1.1.0", "dependencies": { "@freecrawl/db": "*", "@freecrawl/shared-types": "*", @@ -10952,7 +10952,7 @@ }, "packages/db": { "name": "@freecrawl/db", - "version": "1.0.1", + "version": "1.1.0", "dependencies": { "@freecrawl/shared-types": "*" }, @@ -10964,7 +10964,7 @@ }, "packages/shared-types": { "name": "@freecrawl/shared-types", - "version": "1.0.1", + "version": "1.1.0", "devDependencies": { "rimraf": "^6.0.1", "typescript": "^5.7.0" diff --git a/package.json b/package.json index 08c616d..41170d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "freecrawl-seo", - "version": "1.0.1", + "version": "1.1.0", "private": true, "description": "Open-source desktop SEO crawler — a free alternative to Screaming Frog", "license": "MIT", diff --git a/packages/core/package.json b/packages/core/package.json index dab4747..61c12cf 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@freecrawl/core", - "version": "1.0.1", + "version": "1.1.0", "private": true, "type": "module", "main": "./dist/index.js", diff --git a/packages/db/package.json b/packages/db/package.json index a3b2c87..fbccba9 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,6 +1,6 @@ { "name": "@freecrawl/db", - "version": "1.0.1", + "version": "1.1.0", "private": true, "type": "module", "main": "./dist/index.js", diff --git a/packages/shared-types/package.json b/packages/shared-types/package.json index 4838328..c486f05 100644 --- a/packages/shared-types/package.json +++ b/packages/shared-types/package.json @@ -1,6 +1,6 @@ { "name": "@freecrawl/shared-types", - "version": "1.0.1", + "version": "1.1.0", "private": true, "type": "module", "main": "./dist/index.js",