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
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.
ToolsBaZi ChartTasksT77- New
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.
ToolsBaZi ChartTasksT77- New
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.
ToolsBaZi ChartTasksT70- New
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- New
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- New
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.
ToolsJSON Tree ViewerJSON DiffJSON ⇄ CSVXML Formatter & EntitiesSVG to React ComponentCase ConverterIPv4 Subnet CalculatorTasksT37T38T39T43T44T45T46T53- New
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- New
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".
ToolsVideo to PromptTasksT55T55-L3- New
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- New
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.
TasksT11T12T13T14- New
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.
- New