<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Free the Tools: what's new</title>
    <link>https://freethetools.com/changelog/</link>
    <description>New tools, changes and fixes in Free the Tools.</description>
    <language>en</language>
    <lastBuildDate>Sun, 11 Oct 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://freethetools.com/changelog.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Free the Tools 1.6.0</title>
      <link>https://freethetools.com/changelog/#v1-6-0</link>
      <guid isPermaLink="true">https://freethetools.com/changelog/#v1-6-0</guid>
      <pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3>
<ul>
<li>Colour Converter: type a colour as HEX, RGB, HSL or a CSS name, or pick one, then copy it in every form, find the nearest CSS name and check its WCAG contrast against white and black.</li>
<li>The stats page lists searches that found nothing, so the most-wanted missing tools are visible to everyone. Only short words, no numbers or emails, and only after 5 searches on 3 days.</li>
<li>Suggest a tool in three short steps, from any page or straight from a search with no results.</li>
<li>The support page says what a card gift shows on your statement, and that a monthly gift can be stopped at any time.</li>
<li>A terms of use page, linked from the footer: free tools with no warranty or liability, voluntary tips and refunds for mistaken ones, copyright, and the name.</li>
<li>Unix Timestamp Converter (Everyday, Time): turn a Unix timestamp in seconds, milliseconds or microseconds into a date in UTC and your time zone, or a date into a timestamp, in the browser.</li>
<li>URL Encode and Decode (Developer, Encode): make text safe for a web address, read an encoded one, or split an address into its parts and query parameters, in the browser.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The freethetools package for AI assistants is version 0.1.2, with four new tools: <code>convert_colour</code>, <code>url_encode</code>, <code>url_decode</code> and <code>convert_unix_timestamp</code>.</li>
<li>Clearer wording: &quot;Your files stay on your device&quot; instead of &quot;Nothing is uploaded&quot;, and share images no longer count the tools, since more keep coming.</li>
<li>Time Zone Converter: the chosen day in words, buttons to step by an hour or a day, a Now button, and a 24-hour strip per city with working hours shaded. Press an hour on a strip to pick it.</li>
<li>Merge, Split, Rotate and Fill PDF Form show pictures of the pages. Rotate turns them as you choose a direction; Split marks the pages you typed. The finished PDF shows its first page beside Download.</li>
<li>Compress, Resize and Convert Images and the File Converter: a Compare button slides between the original and the result. Converted sound files get a player.</li>
<li>Unit Converter: the answer is rounded to four digits, with the exact value underneath. The swap button stays on phones.</li>
<li>Results that change as you type (times, units, counts, passwords, hashes) flash briefly, so the change is seen.</li>
<li>Tool pages: the Favourite button sits beside the tool&#39;s name, so the first control is higher on the page.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Privacy page: names the company and its country, not a city.</li>
</ul>
<h3>Security</h3>
<ul>
<li>Browsers now always use HTTPS for freethetools.com: the site sends a Strict-Transport-Security header, valid for one year, so a typed <code>http://</code> address can&#39;t be intercepted before the redirect.</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Free the Tools 1.5.0</title>
      <link>https://freethetools.com/changelog/#v1-5-0</link>
      <guid isPermaLink="true">https://freethetools.com/changelog/#v1-5-0</guid>
      <pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3>
<ul>
<li>AI assistants: llms.txt, llms-full.txt and the AI page say when a tool fits, how to ask for a missing one and how to add one. A new AGENTS.md guides coding agents.</li>
<li>Requested tools: vote for one or sponsor it straight from the list. The badge now says &quot;Requested&quot;.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Library: result files sit in compact rows with Download and Share side by side.</li>
<li>The freethetools package for AI assistants is version 0.1.1: Time Zone Converter handles clock changes, Hash Generator and Unit Converter list the valid choices in their errors, and the MCP Registry entry has the logo.</li>
<li>Russian: shorter tool names and buttons, using the words Russian tool sites use.</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Translated pages no longer show a &quot;translated by machine&quot; note at the top.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>The sitemap now lists the usage stats page, and gives each tool page the date it last changed.</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Free the Tools 1.4.0</title>
      <link>https://freethetools.com/changelog/#v1-4-0</link>
      <guid isPermaLink="true">https://freethetools.com/changelog/#v1-4-0</guid>
      <pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3>
<ul>
<li>Norwegian bokmål (Norsk bokmål): the home page, groups, tool pages and the &quot;not built yet&quot; pages are now in Norwegian at /nb/, with a language switcher in the footer. The tools themselves are still in English.</li>
<li>Spanish (Español): the home page, groups, tool pages and the &quot;not built yet&quot; pages are now in Spanish at /es/. The tools themselves are still in English, and the Spanish text is a machine draft that has not been checked yet.</li>
<li>Russian (Русский): the home page, groups, tool pages and the &quot;not built yet&quot; pages are now in Russian at /ru/. The tools themselves are still in English, and the Russian text is a machine draft that has not been checked yet.</li>
<li>One-step installs for AI assistants: a Claude Code plugin, a Gemini CLI extension, and &quot;Add to Cursor&quot; and &quot;Add to VS Code&quot; buttons, plus the OpenAI Codex setting, on the AI assistants page.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Video to GIF: a clip is never shorter than 1 second. When the end is before the start, the end moves to 2 seconds after it, and a line under the times says what changed. Before, it silently made a 0.1-second GIF.</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Free the Tools 1.3.0</title>
      <link>https://freethetools.com/changelog/#v1-3-0</link>
      <guid isPermaLink="true">https://freethetools.com/changelog/#v1-3-0</guid>
      <pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3>
<ul>
<li>A new page for AI assistants, with a prompt to copy, setup for each assistant and the list of tools they can use. It is also available as Markdown at /ai.md.</li>
<li>Search shortcut switch: a new checkbox in the footer turns off the &quot;/&quot; key that jumps to search. Your choice is kept in this browser.</li>
<li>Video to GIF (Images, Convert): turn a short clip or screen recording into a GIF, in the browser.</li>
<li>Every tool that is not built yet now has its own page at the address it will have. It says what the tool will do, shows how many people want it, and has an &quot;I want this&quot; button. You can also sponsor it or tell us what you need.</li>
<li>One form, &quot;Suggest a tool or report a problem&quot;, for suggestions and problems. No account is needed. Your message goes by email to the maintainers and is not stored on the site.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>&quot;Suggest a tool&quot;, &quot;Report a problem&quot; and &quot;ask us to build it&quot; now open the new form instead of GitHub. GitHub links stay for people who want to build a tool.</li>
<li>Every page except home tells search engines where it sits (Free the Tools › group › tool), and tool pages name Sapience Design as an organisation, not a person.</li>
<li>The top bar reads Library (with a books icon), Favourites (All tools on other pages), GitHub, then a yellow &quot;Donate&quot; button, which goes straight to Ko-fi. About moves to the footer. On phones the bar fits on one line.</li>
<li>After a tool finishes, a small card under the Download button asks for a donation, at most once per visit and never after an error. &quot;Next time&quot; hides it for that visit.</li>
<li>The footer has &quot;Donate&quot; and &quot;Sponsor a tool&quot;. Group pages and the &quot;Nothing found&quot; search message offer to sponsor a missing tool so it is built sooner.</li>
<li>About explains why the tools are free and what donations pay for. The support page is now &quot;Donate or sponsor a tool&quot;.</li>
<li>Hash Generator and Unit Converter: when you give an unknown algorithm or category, the error now lists the choices that work.</li>
<li>UUID Generator and Case Converter: a new answer in each FAQ. UUID Generator says how many IDs you can make at once. Case Converter says what happens to numbers and emoji.</li>
<li>&quot;Saved&quot; and &quot;Like&quot; are now one heart, called Favourites: adding a tool to your favourites also counts one like, and removing it takes the like back.</li>
<li>The home page shows &quot;Your favourites&quot; at the top once you have kept a tool, with a link to manage them.</li>
<li>The site says &quot;Sapience Design&quot; instead of &quot;Sapience&quot; when it names the studio behind it.</li>
<li>About, the home page, the README, the setup guide and <code>/llms.txt</code> say the <code>freethetools</code> package is on npm and in the official MCP Registry, with links.</li>
<li>CSV to JSON, JSON Formatter, Base64, Hash Generator, JWT Decoder, Password Generator, QR Code Maker, Regex Tester and UUID Generator: the spec table now says each one works offline once the page has loaded.</li>
<li>Case Converter, Markdown to HTML, Text Diff, Word Counter, File Converter, Time Zone Converter, Unit Converter, Compress Images, Convert Image Format, Remove Photo Location, Resize Images and Fill PDF Form: the spec table now says each one works offline once the page has loaded.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Search: &quot;miles&quot;, &quot;weight&quot;, &quot;distance&quot; and other long unit names now find Unit Converter.</li>
<li>Search: &quot;open protected pdf&quot; and &quot;decrypt pdf&quot; find Unlock PDF.</li>
<li>Time Zone Converter: a time that the clocks skip now moves forward by the gap, and a time that happens twice uses the first one. The page says so when this happens.</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Free the Tools 1.2.0</title>
      <link>https://freethetools.com/changelog/#v1-2-0</link>
      <guid isPermaLink="true">https://freethetools.com/changelog/#v1-2-0</guid>
      <pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3>
<ul>
<li>The <code>freethetools</code> package for AI assistants is published: version 0.1.0 on npm, and listed in the official MCP Registry. Claude Code, Claude Desktop, Cursor and other assistants can run the tools on your own computer with <code>npx -y freethetools mcp</code>. The package has its own version number, separate from the site.</li>
<li>&quot;How it works&quot; (<code>/how-it-works/</code>): a diagram of what comes in, what stays on your device and what goes out; exactly what is sent; six checks anyone can do (the Network tab, going offline, where files go, the security policy, the code, and Verify this site); and a live list of everything the site keeps in this browser, with a Clear button for each. Linked from About, the footer and every tool&#39;s &quot;Your files stay on this device&quot; note.</li>
<li><code>/llms-full.txt</code>: every tool with its details and questions in one plain-text file for language models, linked from <code>/llms.txt</code>.</li>
<li>A privacy notice at <code>/privacy/</code>, linked from the footer, and a line on the About page that the tools come without warranty.</li>
<li><code>/support/</code>: how to give back (building or requesting a tool, telling someone, company sponsorship of a tool as a credit only; a tip on Ko-fi (any amount, once or monthly), and GitHub Sponsors once it is approved), linked from the footer. GOVERNANCE.md gains the money rules: donations and sponsorship never buy features, placement, ranking, data or tracking.</li>
<li>When traffic passes what the free database plan can take, the site counts 1 in 5, 10 or 20 visits and views and adds that many each time, so totals stay accurate. The rate comes from the last 7 days of visits. Below 15,000 visits a day, every visit is counted. See ADR 0009.</li>
<li>A &quot;What&#39;s new&quot; page at <code>/changelog/</code> and an RSS feed at <code>/changelog.xml</code>, both built from this file. The footer version links to the page.</li>
<li>Verifiable builds: every build writes <code>integrity.json</code>, the SHA-256 of each deployed file, and the new Verify this site page (<code>/verify/</code>) checks the live files against it in your browser. Anyone can rebuild a commit and compare the hashes (<a href="docs/adr/0012-verifiable-builds.md">ADR 0012</a>).</li>
<li>HEIC to JPG (Images, Convert): turn iPhone HEIC photos into JPG or PNG in the browser, one or many at once. Safari uses its own decoder; other browsers use libheif compiled to WebAssembly, run in a worker.</li>
<li>&quot;Download all&quot; saves every file a tool made as one ZIP (Split PDF, PDF to Images, Compress, Convert, Resize and Remove Photo Location), with Share where the browser can share a ZIP.</li>
<li>Tools work offline after a visit. A small service worker keeps the home page and each tool you open, so the tool still runs with the network off. Tool pages say &quot;Works offline&quot; once this is active. An offline page lists the tools kept on your device.</li>
<li>Docs: how to self-host a copy of the site, and the search policy that says which pages are built for search (ADR 0011).</li>
<li>Reading pages (About, How it works, Privacy, Support, What&#39;s new, Verify) list their sections in an &quot;On this page&quot; panel beside the text on wide screens, and mark the one being read. The text keeps a comfortable line length.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The Library reads as recent files: jobs grouped by day (Today, Yesterday, then dates) and named by the job (&quot;Combine PDFs into one&quot;), each file a card with its picture (images) or kind, size, Download and Share. Settings sit under Details in plain words (Yes and No, not true and false). A search covers tools and file names, and a filter shows jobs by you or by AI agents. The package&#39;s folder moves to a small &quot;For AI assistants&quot; section at the bottom, and an empty library shows only a way on.</li>
<li>Recorded settings no longer run an option&#39;s description into its name: &quot;Every page on its own&quot;, not &quot;Every page on its own One file per page&quot;.</li>
<li>The home page headline is &quot;Everyday tools should be free.&quot; A &quot;Why this exists&quot; section near the bottom says what the site stands for: everyday tools shouldn&#39;t cost money, come with ads, put your files at risk or be hard to find. The About page and the README open with the same lines.</li>
<li>The home page has more room: &quot;Most people come for&quot; shows four tools at a time (two on tablets, one on phones) and the rest scroll sideways, with arrow buttons for mouse and keyboard; sections and cards have wider gaps.</li>
<li>The note &quot;Usage numbers can&#39;t load right now&quot; is gone. When usage numbers are missing, the label beside &quot;All tools&quot; already says the tools are shown A to Z.</li>
<li>The <code>freethetools</code> package also refuses to save <code>.mjs</code>, <code>.cjs</code>, <code>.scpt</code>, <code>.workflow</code>, <code>.ps1xml</code>, <code>.inf</code> and <code>.cpl</code> files, which can run programs.</li>
<li>Group pages list ten more requested tools, each linked to its open request (#63 to #72).</li>
<li>Usage counts are harder to inflate: a tool&#39;s likes for one day stay within plus or minus 500, and each daily count of views, uses, results and errors stops at 100,000. Requests with more than 5 fields are refused.</li>
<li>A tool added by a new release counts right away. The stats service looks for new tools again (at most once a minute) instead of rejecting them until it restarts.</li>
<li>The Compress PDF FAQ now says the tool works offline after you have opened it once.</li>
<li>Home, About, the README and <code>/llms.txt</code> say how AI assistants such as Claude and Cursor can use the tools: free, with no login, on the person&#39;s own computer through the <code>freethetools</code> package, so files are never uploaded. About also says how much a browser can do, and what comes next.</li>
<li>Links to other sites, such as GitHub, Ko-fi and the licence pages, open in a new tab. The page you were on stays put, so a job half done in a tool is not lost, and screen readers say &quot;opens in a new tab&quot;.</li>
<li>Adding a file shows &quot;Reading…&quot; on the drop area at once, and every file tool shows &quot;Working on it…&quot; before it starts, with a bar that keeps moving while the page is busy. Split PDF reads a file once instead of three times, says early when a PDF is locked, and shows how many files it has made.</li>
<li>Image tools list Video to GIF as wanted, linked to its request (#93).</li>
</ul>
<h3>Removed</h3>
<ul>
<li>The Python command-line version of Compress PDF (<code>shrink_pdf.py</code>) and the <code>cli</code> field of <code>tool.json</code>. The <code>freethetools</code> npm package runs every tool on your computer instead, with one engine for the site, the package and agents.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Verify this site no longer reports <code>_headers</code> as a mismatch. It is an instruction file for the host, not a file the site serves, so it is left out of the fingerprint list.</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Free the Tools 1.1.0</title>
      <link>https://freethetools.com/changelog/#v1-1-0</link>
      <guid isPermaLink="true">https://freethetools.com/changelog/#v1-1-0</guid>
      <pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate>
      <description><![CDATA[<p>The first release since launch: 27 new tools (28 in all), a new design, tools for AI agents with a library of every job, Share, anonymous usage totals, and WCAG 2.2 AA checks on every page.</p>
<p><strong>For contributors:</strong> <code>tool.json</code> now requires <code>task</code>, the job the tool does in a few words (&quot;Make a PDF smaller&quot;).</p>
<h3>Changed (design round 4)</h3>
<ul>
<li>New look and layout from the v4 design: cream paper, ink outlines, a yellow highlight, and a tint and mark for each group; Bricolage Grotesque headings; Phosphor icons. Light and dark themes.</li>
<li>The sidebar is gone. A top bar holds the name, About and Saved; the home page has the search box, group chips, sorting (Most used, Newest, Most liked, A–Z), &quot;Most people come for&quot; and a card per group.</li>
<li>Tools are named by the job they do (&quot;Make a PDF smaller&quot;), with the product name in a tag. <code>tool.json</code> gains <code>task</code> (required) and <code>icon</code> (optional).</li>
<li>Every tool is laid out as numbered steps. File tools now run when you press the button (choose, options, run, save) instead of on drop, and show &quot;Working on it&quot;, &quot;Done&quot; and plain-language problems, with &quot;Do another&quot;. Text tools still work as you type.</li>
<li>Share images, the favicon and the app icons are redrawn in the new style.</li>
<li>Search ranks a half-typed word (&quot;compres&quot;) above a near miss in a task name (&quot;Compare&quot;).</li>
<li>Dark mode keeps the light mode&#39;s feel: neutral charcoal, light outlines and shadows, and the same pastel group colours a step dimmer, with dark text on them.</li>
<li>Pages use a 1280 px container shared by the top bar, content and footer (was 1080 px, with the bar full width), and text stops at a 65-character line. The home page shows six popular tools and three group cards per row; tool pages have a fixed side column and show options side by side when there is room.</li>
<li>Each group card on the home page has one way in: a &quot;See all 7 tools&quot; pill in its header (&quot;7 tools&quot; when the card is narrow).</li>
<li>&quot;Sort by&quot; sits on the &quot;All tools&quot; line, or beside a group&#39;s results when a group is chosen. It hides during a text search, whose results are in best-match order. &quot;Nothing found&quot; is centred under the search box.</li>
<li>Every chosen file shows its details: photos get a thumbnail and their type and size in pixels; PDFs show their pages and paper size, and PDF to Images draws page 1. Compress PDF warns about a password-locked PDF before you run it. Remove Photo Location lists the location, date, camera and other hidden data it found as soon as a photo is added, or says the photo is already safe to share.</li>
</ul>
<h3>Changed (hosting)</h3>
<ul>
<li>The site answers only on freethetools.com and <a href="http://www.freethetools.com">www.freethetools.com</a>, not on a workers.dev address.</li>
<li>Branch previews are made on demand by a maintainer (<code>npm run preview:cloud</code>) instead of automatically, so their links, which show account details, are no longer posted to public pull requests.</li>
</ul>
<h3>Added (releases)</h3>
<ul>
<li>Releases: <code>npm run release -- &lt;version&gt;</code> cuts a release on a branch, and merging it tags the commit and publishes a GitHub Release with the notes from this file (<code>docs/how-to/release.md</code>). The footer of every page shows the version, linked to its notes.</li>
</ul>
<h3>Added (tools)</h3>
<ul>
<li>Unlock PDF (pdf, new Security section): removes a PDF&#39;s password, or its printing and copying restrictions, with qpdf compiled to WebAssembly (<code>@jspawn/qpdf-wasm</code>, Apache-2.0). Lossless: pages, forms and the rest of the file are kept. It asks for the password only when a PDF needs one to open, never guesses, and never keeps it: not in the page, the library or the stats. Also an agent tool, <code>unlock_pdf</code>, on the page and in the package.</li>
<li>Share: a Share button next to every result to download, on tool pages, in the AI agent activity panel and in the library. It opens the device&#39;s own share menu (mail, messages, AirDrop, Nearby Share, Files) through the Web Share API, and shows only where the browser can share that kind of file. A completed share counts as a success in the anonymous totals and records the job in the library, like a download.</li>
<li>Markdown to HTML (text): Markdown to HTML and HTML to Markdown, with a live, cleaned preview, Copy and Download. Uses marked, Turndown and DOMPurify.</li>
<li>File Converter (everyday): drop any files, it detects each type from its first bytes and converts in the browser, one row per file. Images (PNG, JPEG, WebP, GIF, BMP, ICO, SVG, AVIF) to PNG, JPEG, WebP, BMP or ICO; audio to 16-bit WAV; CSV, TSV and JSON to each other; Markdown and HTML to each other or to plain text. Links to the specialised tools, and to the tool request form for anything it can&#39;t convert yet.</li>
</ul>
<h3>Added (extended stats)</h3>
<ul>
<li>Anonymous visit totals, one per browser session, with separate daily counts of referring site (a name such as &quot;Google&quot;, never a link), country and device type (phone, tablet, desktop); shown on /stats/ for the last 30 days.</li>
<li>Per-tool outcomes: results downloaded or copied, and errors when a tool can&#39;t process something; /stats/ shows a &quot;Worked&quot; rate. See ADR 0007.</li>
</ul>
<h3>Added (AI agents)</h3>
<ul>
<li>Tools for AI agents, so assistants use Free the Tools instead of installing software (ADR 0008). Each tool folder can have an <code>agent.js</code>: a name, a description, an input schema and a <code>run</code> function built on <code>core.js</code>. The contract is <code>src/agent/contract.js</code>. 25 agent tools in 22 folders, all checked and run by <code>npm test</code>.</li>
<li>The <code>freethetools</code> npm package (<code>packages/freethetools/</code>): <code>npx freethetools mcp</code> is an MCP server for Claude Code, Claude Desktop, Cursor and other clients, and <code>freethetools run &lt;tool&gt;</code> is a command line. It runs the same definitions on the person&#39;s computer, with Ghostscript as WebAssembly, and keeps a library of every job in a <code>freethetools</code> folder in the home folder. Setup: <code>docs/how-to/use-with-ai.md</code>. Not published to npm yet.</li>
<li>WebMCP on tool pages: where the browser has <code>document.modelContext</code>, a tool page registers its agent tools (<code>src/agent/page.js</code>), plus <code>list_page_files</code>. An agent names a file the person added to the page, or passes <code>{ name, base64 }</code> for a file up to 10 MB. Every call shows in an &quot;AI agent activity&quot; panel with download links. Other browsers see no change, and other pages load none of this code. Agent calls are not counted in the anonymous stats.</li>
<li>A library of every job, kept in this browser (IndexedDB): results the person downloads, recorded without editing any tool, and agent calls. Records keep the options used, never text, secrets or form answers. New page <code>/library/</code> (not indexed) lists records with settings, inputs and downloadable results, deletes one record or all, shows the space used, and in Chrome and Edge opens the <code>freethetools</code> package&#39;s folder. A &quot;Library&quot; link sits beside Saved in the top bar.</li>
<li><code>src/data/origin-trials.json</code> holds WebMCP origin-trial tokens; each becomes a <code>&lt;meta http-equiv=&quot;origin-trial&quot;&gt;</code> tag.</li>
</ul>
<h3>Accessibility</h3>
<ul>
<li>Every page, in light and dark, on desktop and phone, is checked against WCAG 2.2 AA with axe-core in CI (<code>e2e/a11y.spec.js</code>).</li>
<li>Fixed: muted text contrast on grey surfaces, the faded Compress PDF example, drop zones whose spoken name didn&#39;t match their visible text, Regex Tester highlights in dark mode, and the phone header bar is now a landmark. Audit: <code>docs/research/2026-09-28-accessibility-speed-audit.md</code>.</li>
<li>Browser tests now cover the manual accessibility pass (<code>e2e/a11y-manual.spec.js</code>): a keyboard-only walk, roles and live regions, reflow at 320 and 640 px, text spacing, and focus not hidden by sticky bars.</li>
<li>Fixed: search results, the selected result, group filters and sorting are announced to screen readers, and the JWT, QR and Regex error boxes are announced.</li>
</ul>
<h3>Added (share images)</h3>
<ul>
<li>Link previews: every page has a 1200×630 share image (<code>og:image</code>, <code>twitter:card</code>), drawn at build time from the tool&#39;s product shot, name and tagline (<code>src/lib/og.js</code>, <code>src/pages/og/</code>). Text is converted to outlines from the site&#39;s own fonts, so images are the same on every machine.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Compress PDF works in <code>npm run dev</code>: the worker is a plain script and receives its Ghostscript arguments from the page. If the worker can&#39;t load, files added afterwards show the error instead of spinning.</li>
</ul>
<h3>Added (checks)</h3>
<ul>
<li>Live check (<code>npm run check:live</code>, <code>.github/workflows/live.yml</code>): every page on freethetools.com, on desktop and phone, daily and after each production deploy. It fails on page errors, enforced CSP violations, requests to other origins, stats writes or sideways scroll, and warns about report-only policies added by Cloudflare.</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Architecture explanation brought up to date: the stats Worker, themes, search, fonts and all pages.</li>
<li><code>openapi.yaml</code> 1.1.0 describes <code>GET /api/stats/summary</code>; <code>/llms.txt</code> links the stats; the commands reference covers local and production database migrations.</li>
</ul>
<h3>Added (theme, search, stats)</h3>
<ul>
<li>Light, Dark and System themes with a switch in the sidebar, remembered per browser and applied before the first paint.</li>
<li>Search with typo tolerance, partial words, synonyms (&quot;combine&quot; finds Merge) and arrow-key navigation (MiniSearch, MIT).</li>
<li>Sorting on every shelf: Featured, Most used, Most liked, Newest, A–Z.</li>
<li>Anonymous usage totals (views, uses) and likes per tool, via a small Worker and Cloudflare D1; a public /stats/ page shows the numbers and what is and isn&#39;t collected. See ADR 0006.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The sidebar is a full-height panel with its own surface, pinned theme switch, and a scrollbar only on hover; the footer moved into the content column; thin theme-coloured scrollbars everywhere; dark mode lifted off black.</li>
<li>Pledge wording: &quot;no tracking&quot; became &quot;no tracking of you; only anonymous totals&quot;.</li>
</ul>
<h3>Added</h3>
<ul>
<li>15 new tools: Merge PDFs, Split PDF, Rotate Pages, Images to PDF, Word Counter, Case Converter, Text Diff, JSON Formatter, CSV to JSON, Base64, Hash Generator, UUID Generator, QR Code Maker, Unit Converter, Time Zone Converter.</li>
<li>Batch two: Compress Images, Resize Images, Convert Image Format, Remove Photo Location (lossless), PDF to Images (pdf.js), Fill PDF Form (beta), Password Generator, JWT Decoder, Regex Tester.</li>
<li>Shared DropZone and ToolShot components and tool interface styles.</li>
<li>Browser tests for every tool page (clean load, no outside requests) and end-to-end file flows.</li>
</ul>
<h3>Changed</h3>
<ul>
<li><p>Deploys now run on Cloudflare Workers Builds from <code>main</code>; the GitHub deploy workflow and its secret are removed, so no Cloudflare credentials live in GitHub. Branches in this repository get preview links.</p>
</li>
<li><p>Redesign for a calmer, more confident look: one type scale and 8-point spacing, a large opening statement, the available tool shown as a feature, planned tools as a list instead of placeholder cards, sentence-case sidebar with an overview per group, and a new footer.</p>
</li>
<li><p>Typography follows Cloudflare&#39;s open-source Kumo scale (12, 13, 14, 16, 20, 24 and 30px) in Inter Variable, with Kumo&#39;s neutral colours. Outfit is replaced by Inter.</p>
</li>
<li><p>Pricing labels removed everywhere (price stickers, &quot;free forever&quot; lines and the price row in specs). The app icon and wordmark no longer show a price.</p>
</li>
</ul>
]]></description>
    </item>
    <item>
      <title>Free the Tools 1.0.0</title>
      <link>https://freethetools.com/changelog/#v1-0-0</link>
      <guid isPermaLink="true">https://freethetools.com/changelog/#v1-0-0</guid>
      <pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3>
<ul>
<li>The site: catalogue, two-level sidebar, search, Saved tools, About and Licences pages.</li>
<li><strong>Compress PDF</strong> (<code>/pdf/compress/</code>): Ghostscript in the browser, four quality presets, keep-first-page option, and a Python command-line version.</li>
<li>Content Security Policy on every page, blocking connections to other origins.</li>
<li>Machine-readable catalogue at <code>/api/tools.json</code> (with <code>openapi.yaml</code>), <code>/llms.txt</code>, sitemap and robots file.</li>
<li>Tool template and <code>npm run new-tool</code> scaffolder.</li>
<li>Tests: tool unit tests, built-site checks, browser tests on desktop and phone, Python CLI tests.</li>
<li>Open-source project files: contributor guide with DCO sign-off, Contributor Covenant 2.1, security policy, governance, trademarks, issue and pull-request templates, CI, CodeQL, OpenSSF Scorecard and Dependabot.</li>
</ul>
]]></description>
    </item>
  </channel>
</rss>
