FTFreeTools
Changelog

What changed in every release

Every change since the first commit, newest first. The version number here is the same one in the footer. Entries try to describe what you will notice, not which module we refactored.

Current version
v0.9.2
Releases
11
Changes
40
  1. v0.9.2

    Life Script written by a real model: house quota plus bring-your-own-key

    • New

      Press "Write one with AI" and the model writes the nine acts itself — main line, concrete scenes, crossroads, reminders. The chart becomes an input rather than fixed copy: wording changes run to run, the skeleton stays.

    • New

      Two channels: the house free quota (same-origin POST to a server function, which calls Cloudflare Workers AI; the token lives only in server env vars) and bring-your-own-key (the browser calls DeepSeek / Groq / OpenRouter and other OpenAI-compatible providers directly, never through this site).

    • Improved

      Nothing leaves until you ask: the chart summary (birth time + four pillars + ten gods + luck pillars) is sent and discarded, never stored or logged. Without generating, the site makes no outbound request at all. The /verify outbound list and local-storage list are updated to match.

    • Improved

      The offline sample stays the default view: with no key, an exhausted quota, or simply no appetite for the network, you still get the reproducible script. AI is a layer on top, not a requirement.

    TasksT77
  2. v0.9.1

    Life Script: a chart read as nine acts with concrete scenes

    • New

      New Life Script section: nine acts from ages 0-6 to 56+, each with a main line, two concrete scenes, a Ten Gods footnote, a key year, one crossroad and one reminder.

    • New

      The script is derived deterministically: the same birth details always yield the same script, with no model call and no network request. Try another phrasing simply switches between written variants.

    • Improved

      Each act labels its luck pillar, whether it clashes, combines, rubs or seeps against the day branch, and whether the decade is supported or spending down, so the reasoning stays visible.

    TasksT77
  3. v0.9.0

    BaZi chart ships: 97 KB of calendar math, zero requests

    • New

      New BaZi chart tool: a birth date yields the four pillars with hidden stems, Ten Gods, Na Yin and twelve stages, plus weighted element balance, a strength score, and the luck and annual pillars.

    • New

      Optional true solar time: give the birthplace longitude and the chart is corrected by 4 minutes per degree plus the equation of time, with the adjustment itemised in the result.

    • Improved

      The 97.7 KB calendar library only loads on click, so the first load is unchanged at 101.3 KB; it gets its own single-chunk exception, still enforced by the bundle guard.

    TasksT70
  4. v0.8.0

    Changelog ships: every release, item by item

    • New

      New /changelog and /en/changelog pages list every change newest-first, each tagged new / improved / fixed and tied to its task id.

    • Improved

      The footer version now derives from this log instead of a hand-written number that goes stale — and it links here.

    • Improved

      New npm run check-changelog guard: a version that disagrees with package.json, a tool missing from the log, or an unknown task id all fail the check.

    TasksT68
  5. v0.7.0

    Privacy proof page: "your input never leaves the tab", now checkable

    • New

      New /verify page: four criteria (outbound XHR, sendBeacon, service worker, third-party origins) plus the full list of outbound requests and local storage keys, each with its trigger condition.

    • New

      Backed by npm run check-verify: an unregistered network egress, a storage key that does not match the code, or a "zero requests" claim all fail.

    • Improved

      The size gate now measures a single visit (first load plus the tool in use) instead of a site-wide total that grows forever and alerts on a number no one downloads.

    TasksT67
  6. v0.6.0

    19 → 26 tools: the JSON family and the format converters

    • New

      Three JSON tools: a collapsible tree with virtual scrolling, a structural diff where key order does not matter, and JSON ⇄ CSV with union headers so no column is silently dropped.

    • New

      XML formatter plus HTML entity codec with 13 machine-readable error codes carrying line and column; SVG → React with attribute mapping split into aria/data, class and hyphenated cases.

    • New

      Name-case converter with nine output styles plus slug and placeholder text, and an IPv4 subnet calculator done in pure bit arithmetic with RFC 3021 handling for /31 and /32.

    • Improved

      The UUID tool now covers v7 and ULID following the RFC 9562 bit layout, and can read the creation time back out of an id.

  7. v0.5.0

    English site opens for indexing: the whole site in two languages

    • New

      All 366 hard-coded strings across 19 tool components moved into dictionaries; /en dropped noindex and is now open for indexing.

    • Improved

      Tool copy is split per tool and ships with each lazy chunk, so first-load size stayed flat instead of growing with the tool count.

    • New

      Added robots.txt pointing at the sitemap; every bilingual URL carries hreflang alternates.

    • Fixed

      .vercelignore now uses .next*/ to cover every build-directory variant; the previous list let hundreds of MB of local build output hit the 100MB upload limit.

    TasksT21T21.4T21.7
  8. v0.4.0

    Video to prompt: from pixel statistics to a model running in the tab

    • New

      Video-to-prompt L1: local decoding, shot splitting and colour / brightness / motion statistics produce a bilingual prompt skeleton without any network call.

    • New

      L3 runs a quantised Florence-2 (181MB) in the browser via transformers.js: mirror first, graceful degradation, weights proxied same-origin and never stored server-side.

    • Improved

      Added a video category — first real test of "adding a category is a one-line change".

    TasksT55T55-L3
  9. v0.3.0

    Worth returning to: favourites, recents and the i18n skeleton

    • New

      Favourites and recents on the home page, stored only in local storage, synced across tabs, degrading quietly on corrupt data.

    • New

      i18n skeleton: Chinese keeps the root paths, English lives under /en, with bilingual metadata, hreflang, sitemap and a switcher — no existing URL changed.

    • Improved

      The category system became a single source of truth, cutting a new category from three edits to one — and fixing a long-standing broken ?cat= deep link.

    • Fixed

      Fixed a blank QR page: the ESM build of qrcode-generator 2.x has no stringToBytesFuncs, so UTF-8 bytes now come from TextEncoder; .next-run* was also excluded from uploads.

    TasksT15T16T21
  10. v0.2.0

    High-frequency tools and a keyboard entry point

    • New

      JSON → TypeScript / Go / Rust / Zod: arrays are inferred as a union, so a key present in only some elements becomes optional.

    • New

      Cron parser and visual builder: when both day fields are restricted it follows Vixie's either-matches semantics, and unrecognised expressions are reported rather than silently rewritten.

    • New

      SQL formatter and minifier: a hand-written zero-dependency lexer where MySQL, PostgreSQL and SQLite quoting and comment rules genuinely differ.

    • New

      Cmd+K command palette with recents, category filtering and keyboard navigation, sharing one matching rule with the home search.

  11. v0.1.0

    First release: 15 everyday tools, most of them computing in the tab

    • New

      15 tools shipped: JSON / YAML formatting, base64, URL codec, hashing, JWT decoding, timestamps, UUIDs, passwords, regex testing, text stats, diffing, colour, QR codes and request info.

    • Improved

      Password, hash, JWT and QR moved from the server into the browser; request-info is the only server endpoint left.

    • Improved

      Added first-party aggregate analytics: no cookies, no fingerprinting, never any input content.

    • Improved

      Size gate wired into CI: 120KB first load and 80KB per chunk are hard limits that fail the build.

    • New

      The skeleton: routing, site search, category filters, light and dark themes, and an input-as-you-type editor layout.