№ 04 — CHANGELOG
Ce qu'on a
livré.
Chaque fonctionnalité, fix et amélioration de la boîte à outils FerrLabs. Pas de roundups marketing — juste ce qui a atterri, et pourquoi.
RSS ↗FerrFlow · Auto-detect self-hosted forges
FerrFlow now recognises self-hosted GitLab, GitHub Enterprise, and Gitea/Forgejo instances automatically — no need to set `forge` by hand for a git host on your own domain.
FerrFlow · Bitbucket support
FerrFlow now recognises Bitbucket Cloud repositories and handles their releases — no more scripting a hook to get automatic release tagging on Bitbucket.
FerrFlow · Faster repeat runs via commit-graph
On large repositories, FerrFlow now writes a git commit-graph on the first run so that later `check` and `release` walks are materially faster — a benefit that repeat users (pre-commit hooks, local dev, warm CI runners) get for free.
FerrFlow · Robust BREAKING CHANGE detection
FerrFlow now recognises mixed-case, hyphenated, and lowercase `BREAKING CHANGE` footers — and a `!` typed inside the scope (`feat(api!):`) — so a real breaking change no longer slips through and skips the major bump.
FerrFlow · ferrflow schema
A new `ferrflow schema` subcommand prints the config JSON schema that is now bundled into the binary — so editor tooling and pre-commit hooks can validate `.ferrflow.json` completely offline.
FerrFlow · ferrflow doctor
A new `ferrflow doctor` subcommand runs read-only diagnostics on your repo, config, and forge setup and prints a categorised report — so "is my setup sane?" has a first-class answer instead of grepping `--verbose` logs.
FerrFlow · Telemetry removed — the CLI no longer phones home
FerrFlow no longer collects any usage telemetry. The module is gone from the binary entirely, along with the network calls it made on every command — which also makes monorepo commands dramatically faster.
FerrFlow · Linked and fixed package version groups
New `linked` and `fixed` workspace options let a set of monorepo packages share a version — when one bumps, the whole group moves to the same version, the way changesets and lerna do it.
FerrFlow · Migrate from semantic-release in one command
A new `ferrflow migrate` command reads your existing `.releaserc` and generates the equivalent FerrFlow config — mapping tag format, branches, and the common plugins, and surfacing anything without an equivalent instead of guessing.
FerrFlow · Six new release hook points — post-commit, pre-tag, post-tag, pre-release, on-success, on-error
The release lifecycle gains six new hook points so you can run commands at the exact commit/tag/push boundaries — publish between tag and push, notify once when a release finishes, or react to a failure with the error code in hand.
FerrGrowth · Five new builder blocks — button, rich hero, CTA section, navbar, footer
The page builder gains a standalone button primitive and four layout blocks — a rich hero with background image and overlay, a CTA conversion band, a top navbar, and a multi-column footer — so you can reproduce a real website's full page chrome without leaving the builder.
FerrFlow · Windows arm64 and Linux armv7 prebuilt binaries
FerrFlow now ships prebuilt, signed binaries — and matching npm packages — for Windows on ARM (aarch64) and 32-bit ARM Linux (armv7). The release matrix grows from 5 targets to 7, so `npm i ferrflow` and direct downloads now work on Surface/Snapdragon Windows laptops and 32-bit Raspberry Pi / SBCs.
FerrFlow · ferrflow publish auto-scopes to the triggering tag
ferrflow publish now figures out which package to publish from the tag that triggered the run — so one workflow publishes each package on its own tag, no per-package wiring. It also takes multiple package names, and a --all flag to force everything.
FerrFlow · control parallelism with --jobs / FERRFLOW_JOBS
FerrFlow now exposes a global --jobs <N> flag (and FERRFLOW_JOBS env var) to cap how many threads it uses for CPU-parallel work. Default stays all logical cores; --jobs 1 forces single-threaded — handy for constrained CI runners and reproducible benchmarks.
FerrFlow · declarative publishers — publish to cargo, npm, docker, helm & more on release
FerrFlow can now publish your packages to registries declaratively from ferrflow.json — cargo, npm, docker (multi-arch + Sigstore), helm, GitHub release assets and webhooks — replacing hand-rolled postPublish shell hooks. Shipped across FerrFlow v5.4–v5.7.
FerrFlow · bot releases now work under branch rulesets (v5.2.2)
The FerrFlow bot identity pushes releases correctly even when the release branch is protected by a ruleset that bypasses ferrflow[bot]. Shipped in FerrFlow v5.2.2.
Admin · Editable org subscriptions + global discounts + promo codes
Staff can now edit any org's subscriptions inline from the admin console, and a new Billing page manages site-wide percentage discounts and user-redeemable promo codes with stacking rules.
CT log search
Find every TLS certificate ever issued for a domain by querying the public Certificate Transparency logs (crt.sh) — great for subdomain discovery and rogue-cert detection.
CORS tester
Send a preflight + actual request from a configurable Origin and see exactly which CORS headers the server returns — with pass/fail diagnostics.
Mixed content scanner
Scan an HTTPS page for HTTP-only src / href / action / poster / data-src resources that modern browsers block.
OG card preview
See how a URL renders as a Twitter card, LinkedIn share and Slack unfurl — side by side, with warnings for missing or oversized fields.
Meta tag inspector
Fetch any URL and see every meta + link tag grouped by namespace — standard, OpenGraph, Twitter, Facebook, http-equiv, link.
ASCII / Unicode inspector
Codepoint-by-codepoint breakdown of any string — UTF-8 bytes, UTF-16 units, HTML entities, CSS escape and Unicode block.
Punycode converter
Internationalised domain names (IDN) to ASCII Punycode and back, using the browser's native URL parser.
IP / CIDR calculator
IPv4 and IPv6 CIDR math — network, broadcast, usable host range, netmask, total hosts, and address classification.
User-Agent parser
Break down any User-Agent string into browser, engine, OS, device and bot heuristics — no remote call.
HTTP status lookup
Searchable dictionary of HTTP status codes — number, reason phrase, category and what each one actually means in practice.
Sitemap validator
Fetch a sitemap.xml or a sitemap index, validate the XML, list child sitemaps or sample the URLs with lastmod / changefreq / priority.
Robots.txt analyzer
Fetch and parse a domain's robots.txt, simulate a crawl decision for any User-Agent + path, list every declared sitemap.
Security headers grader
Score any URL on CSP, HSTS, X-Frame, X-Content-Type, Referrer-Policy, Permissions-Policy, COOP and CORP. A+ to F grade out of 90 points.
HTTP header inspector
Fetch any URL, see every response header, the full redirect chain, and the time it took. Like curl -ILv but rendered nicely.
Reverse DNS
IP address (v4 or v6) → PTR hostname lookup. Useful for tracing the rDNS of a mail server or checking that your IP resolves to the hostname you think it does.
DNS lookup
A · AAAA · MX · TXT · NS · SOA · SRV in one shot, queried in parallel against Cloudflare's public resolvers.
FerrLens · Diff tool is live
Paste two blobs, get a side-by-side or unified diff with inline character highlights. Whitespace and case toggles. Fully client-side — the URL fragment encodes both inputs so you can share without uploading anything.
FerrLens · Dates now render in your local timezone
Snapshot timestamps and scan-fetched-at on shared SEO pages used to render in the server's timezone. They now show in yours. Plus a reusable SSE hook so future streaming tools share the same pattern as the SEO checker.
Spam score — SpamAssassin-style heuristics
Drop a subject + body, get a 0-10 spam score with the exact rules that flagged each line. Runs entirely in your browser — your draft never leaves the page.
Email verifier (v0)
Syntax + MX record check + disposable-provider list + role-based local-part detection. Real SMTP probe comes later.
DNSBL blacklist checker
Query an IP or domain against 30 major DNSBLs (Spamhaus, SpamCop, Barracuda, SORBS, UCEProtect, Mailspike, …) in parallel. Verdict in under a second.
SPF / DKIM / DMARC inspector
Pull, parse and score a domain's email-authentication TXT records — SPF mechanisms, DMARC policy + reports, ~30 common DKIM selectors checked in parallel.
FerrLens disponible en français
38 nouvelles routes /fr/ — home, pricing, account, les 8 pages légales, le changelog et les 21 outils — avec un sélecteur EN/FR en haut de chaque page.
Compressed, opaque share links
Share links from any tool now embed state as a single lz-string-compressed JSON blob instead of plain key=value pairs — 30-70% shorter, no longer human-readable.
FerrLens · SEO checker is now live-streaming, and ~3× faster
The SEO checker no longer waits 20 s before showing anything. Core Web Vitals appear in ~3 s, then full Lighthouse scores fill in. Chromium is now pooled, K8s right-sized, perf flags fixed.
Text stats
Characters, words, lines, sentences, paragraphs, reading time and approximate LLM token count for any block of text.
Credit card / IBAN validator
Validate credit card numbers with the Luhn algorithm and issuer detection, or IBANs with a mod-97 check and per-country length validation.
File hash
Drop a file, get its MD5, SHA-1, SHA-256 and SHA-512 — computed locally, the file never leaves your browser.
JWT signature verify
Verify a JWT against a public key (PEM or JWK) — HS, RS, PS and ES families, all algorithms — through the native Web Crypto API.
Number base converter
Convert between binary, octal, decimal and hex with BigInt arithmetic — no precision loss even on 128-bit numbers.
Slugify
Turn any string — accented, punctuated, multi-word — into a clean URL slug. Configurable separator, max length, and case.
Case converter
Convert between 11 case styles — camelCase, PascalCase, snake_case, SCREAMING_SNAKE, kebab-case, COBOL-CASE, dot.case, Title Case, Sentence case, lower, UPPER.
FerrLens · User menu with tier badge in the navbar
Signed-in users now see an avatar + tier pill in the FerrLens navbar instead of a plain Account link. The dropdown surfaces email, plan, Upgrade CTA and Sign out.
Password generator
Generate strong passwords with configurable charsets, a "no look-alikes" mode, an entropy bar and a crack-time estimate — backed by crypto.getRandomValues.
Color converter
HEX ↔ RGB ↔ HSL ↔ OKLCH with a live colour preview, alpha-aware.
Timestamp converter
Convert between Unix seconds, Unix milliseconds and ISO 8601, with a live view in any IANA timezone plus a relative reading ("3 days ago").
HMAC generator
Generate HMAC-SHA1/256/384/512 of a message with a key in UTF-8, hex or Base64 — through the native Web Crypto API, in your browser.
URL / Base64 / Base64-URL / hex encoder
Encode and decode between text and URL-percent / Base64 / Base64-URL (RFC 4648 §5) / hex, with a single shared input that toggles direction in one click.
Hash generator
MD5, SHA-1, SHA-256, SHA-384 and SHA-512 of any input. SHA-* through the native Web Crypto API, MD5 through a small pure-JS implementation. Your input never leaves the browser.
FerrLens · Sign in with your FerrLabs account
ferrlens.com now uses the central FerrLabs identity, so the same account works across every product site. Cross-domain auth handled server-side by the Astro SSR layer — no token in JavaScript.
FerrLens · SEO checker runs Lighthouse locally
ferrlens.com now runs a real Lighthouse against a real Chromium in-cluster, instead of waiting for Google PageSpeed Insights. Faster, no quota, more signals.
FerrLabs · Org switcher in every product sidebar + cross-app create-org link
All four product apps (Vault, Track, Growth, Fleet) now show the same org switcher dropdown in the sidebar. 'Create an organisation' deep-links to the central labs portal instead of being a dead end.
FerrVault · API package shipped to GHCR for the first time
ferrvault-api is now a proper independently-versioned package with its own Docker image and FerrFlow release lane. End of the "API lives in the app repo but never gets built" era.
FerrTrack · 'My issues' wired to the API + mocked nav stripped
Inbox no longer fans out one request per project. The 'My issues' page is real data. Subscribed, Active cycle, Roadmap, Docs and Teams are gone until they have a backing data model.
FerrTrack · Org-scoped reads + new GET /v1/issues (breaking)
Closes a cross-tenant data leak — issue, user, and comment reads now enforce org ownership. Adds /v1/issues with assignee/status/kind filters to replace the Inbox N+1 fan-out.
FerrVault · End-to-end backend rewrite — every screen talks to a real endpoint
Mocks are gone. Vault edit/delete, secret version history, and the K8s operator token page now hit real APIs. Sidebar trimmed to the three surfaces that actually have a data model.
FerrGrowth · Forms CRUD — create, update, delete, list submissions
The 'New form' button now opens a real modal instead of doing nothing. POST/PATCH/DELETE on /v1/sites/:slug/forms plus a submissions list endpoint, all org-scoped.
FerrLabs · Product APIs accept the BFF session cookie — auth no longer 401s in cookie mode
Every product API (Vault, Track, Growth, Fleet) now falls back to the fl_session HttpOnly cookie when no Authorization header is present. Fixes a hard 401 for all BFF-routed traffic.
Legal pages published — DPA, subprocessors, security
ferrfleet.com now hosts the standalone Data Processing Addendum, subprocessor list, and security overview in EN and FR.
FerrLabs · server-side telemetry emit wired into auth + org + subscription handlers
API now emits the documented events when accounts sign up, log in, orgs are created, members added, subscriptions activate / change tier / cancel.
app.ferrlabs.com · telemetry opt-out toggles in Preferences and a new Privacy page
Per-user toggle on /prefs and a new /privacy page with the org-wide toggle for owners and admins.
FerrFlow · DO_NOT_TRACK env var + first-run telemetry notice
Telemetry now honours DO_NOT_TRACK=1 alongside FERRFLOW_TELEMETRY=0, and the first invocation prints a one-line notice pointing to ferrlabs.com/telemetry.
FerrLabs · telemetry ingestion endpoint + opt-out plumbing
POST /v1/telemetry now persists envelopes, organizations and users get a telemetry_opt_out flag, and the toggle endpoints are live in app.ferrlabs.com.
FerrLabs · /telemetry preview of the on-by-default commitment
New transparency page documenting every event we plan to collect, the hashing scheme, and the opt-out paths. Marked draft until the events actually emit.
FerrLabs · CI i18n + langue désactivée quand pas de miroir
Tous les sites passent par un check CI parité fr/en + résolution de clés. Le toggle FR/EN sur une page sans miroir est désormais visiblement désactivé (strikethrough + tooltip) au lieu de no-op silencieux.
FerrFlow · docs au style Claude
ferrflow.com/docs/ adopte le langage visuel de docs.claude.com — fond off-white, accent FerrFlow orange, code blocks soft-dark, callouts à barre accent, layout 3 colonnes, composants <Card>/<CardGroup>/<Note>.
FerrLabs · changelog disponible en français
ferrlabs.com/fr/changelog/ et /fr/changelog/<slug>/ + flux RSS FR. La chrome (header, breadcrumb, boutons, dates) suit la langue ; les entrées restent en anglais (source unique de vérité).
FerrLabs · Navbar + Footer enfin traduits sur les 3 sites SaaS
FerrTrack / FerrVault / FerrGrowth: les pages /fr/ affichaient une navbar et un footer en anglais. Tout passe maintenant par t(lang, key).
FerrLabs · public changelog
New /changelog/ on every FerrLabs site — editorial entries for what shipped, when, and why. Source of truth at FerrLabs/Changelog (public repo).
FerrLabs · editorial scrollbar everywhere
Hairline scrollbar with slate thumb — applied via @ferrlabs/styles base + inlined on sites that do not consume the package. Firefox supported via scrollbar-width.
FerrLabs · auto-redirect French browsers + translate=no on code
First-time visitors with browser locale starting with `fr` are redirected once to /fr/. Code blocks tagged translate="no" so Google Translate stops mangling shell snippets.
FerrFlow · editorial features grid, install grid, dark CTA
The body of ferrflow.com now matches the new editorial design — six feature cards in a single bordered grid, four install methods side by side, dark contrast CTA block.
FerrLabs · noindex on private app surfaces
Every app/admin/auth UI now ships meta robots + robots.txt + nginx X-Robots-Tag for defence-in-depth no-indexing. Search engines stop crawling auth flows and dashboards.
FerrLabs · sitemaps + structured robots.txt for every marketing site
ferrlabs.com / ferrflow.com / ferrvault.com / ferrtrack.com / ferrgrowth.com all ship a generated sitemap.xml + a robots.txt that points to it. Hreflang alternates included for the bilingual sites.
FerrLabs · org profile rewritten
github.com/FerrLabs landing now reads like a proper org: one paragraph per public product, links to ferrflow.com / ferrvault.com / ferrtrack.com / ferrgrowth.com / games.ferrlabs.com. No mention of internal tooling.
FerrLabs · cross-product nav in every footer
Each marketing site footer now lists the other FerrLabs products with their accent dot. Visitors on ferrflow.com discover ferrvault.com without going back to the holding site.
FerrLabs · brand-glyph favicons across every product
Each product site now ships a favicon matching its navbar glyph. No more generic concentric circles.
FerrLabs · branded OG images for social previews
Slack / LinkedIn / X previews now render a branded card (1200x630) with the product glyph + Fraunces wordmark + tagline.
FerrLabs · typographic [FL] logo
Replaced the placeholder concentric-circles logo with a typographic [FL] mark — DM Mono brackets around Fraunces 900 letters.
FerrLabs · editorial footer
4-column footer with brand colophon, product chips with live-status glow, "All systems normal" pulse — replaces the generic SaaS footer.
FerrFlow v4.2 · pre-release channels
Ship `alpha`, `beta`, and `rc` releases without touching your floating tags.
FerrLabs · editorial holding-site refresh
New design system for ferrlabs.com — paper palette, Fraunces display, list-style products, scroll-blur navbar, sticky-bottom footer.
FerrLabs · products switch to a list layout
The 4 product slots on ferrlabs.com are now a hairline-divided list with Fraunces 64px names, accent dot, italic tagline. Replaces the asymmetric card grid.
FerrGrowth · editorial Navbar + Footer
growth.ferrlabs.com now ships the FerrLabs editorial design — Fraunces display, paper palette, violet accent.
FerrTrack · editorial Navbar + Footer
track.ferrlabs.com now ships the FerrLabs editorial design — Fraunces display, paper palette, indigo accent.
FerrVault · editorial Navbar + Footer
vault.ferrlabs.com now ships the FerrLabs editorial design — Fraunces display, paper palette, emerald accent.
FerrFlow · editorial hero on the landing page
New display headline (Fraunces 900, italic accent), softer paper background, monospace eyebrows.
FerrFlow · changelog ordering fix
Changelog entries are now sorted by commit date instead of alphabetically inside each section.