<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>FerrFlow Changelog</title>
    <description>Every feature, fix and improvement to FerrFlow.</description>
    <link>https://ferrflow.com/fr/changelog/</link>
    <atom:link href="https://ferrflow.com/fr/changelog/rss.xml" rel="self" type="application/rss+xml" />
    <language>en-us</language>
    <item>
      <title>FerrFlow: the documentation is now open to pull requests</title>
      <link>https://ferrflow.com/fr/changelog/2026-09-03-ferrflow-docs-public/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-09-03-ferrflow-docs-public/</guid>
      <pubDate>Thu, 03 Sep 2026 09:00:00 GMT</pubDate>
      <description>The pages behind ferrflow.com/docs moved to a public repo. A wrong flag name, a stale example or a paragraph that never quite landed can now be fixed by anyone, and the fix goes live when it merges.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Ansible Galaxy collections get a version file format</title>
      <link>https://ferrflow.com/fr/changelog/2026-09-02-ferrflow-galaxyyml/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-09-02-ferrflow-galaxyyml/</guid>
      <pubDate>Wed, 02 Sep 2026 22:00:00 GMT</pubDate>
      <description>`galaxy.yml` carries a top-level `version:` like `Chart.yaml` and `pubspec.yaml` do, but versioning one meant falling back to the plain-text format and a hand-written regex. It is a first-class format now.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: your own commits set the floor for a bump, not the answer</title>
      <link>https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-own-bump-raised/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-own-bump-raised/</guid>
      <pubDate>Tue, 01 Sep 2026 20:00:00 GMT</pubDate>
      <description>A package with a fix of its own shipped as a patch even when a dependency in the same release took a minor. It now takes the stronger of the two. Expect larger bumps where a shared package and its consumers are released together.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: a dependent now takes the strongest bump reaching it</title>
      <link>https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-cascade-strongest-bump/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-cascade-strongest-bump/</guid>
      <pubDate>Tue, 01 Sep 2026 18:00:00 GMT</pubDate>
      <description>A package fed by two dependency edges of different strength took whichever arrived first, so it could ship as a patch while a package it depends on moved a minor. Expect larger bumps if your graph has a diamond in it.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: a changelog your hook rewrote is now what gets published</title>
      <link>https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-changelog-hook-rewrite/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-changelog-hook-rewrite/</guid>
      <pubDate>Tue, 01 Sep 2026 16:00:00 GMT</pubDate>
      <description>A `postBump` hook could already rewrite CHANGELOG.md and have it committed, but the tag, the release body and the release commit kept the text generated before the hook ran. They now agree.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: doctor now catches a lockfile that disagrees with its manifest</title>
      <link>https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-doctor-lockfile/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-doctor-lockfile/</guid>
      <pubDate>Tue, 01 Sep 2026 14:00:00 GMT</pubDate>
      <description>A package whose manifest and lockfile record different versions cannot build with `--locked`, and `ferrflow doctor` used to report it as healthy. It now says so, and warns before the drift happens.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: see what a release drags along before you run it</title>
      <link>https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-graph-impact/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-09-01-ferrflow-graph-impact/</guid>
      <pubDate>Tue, 01 Sep 2026 10:00:00 GMT</pubDate>
      <description>In a monorepo, releasing a widely depended-on package pulls others out with it. `ferrflow graph --impact` names them, with the version each would get, before anything is tagged.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: a package release no longer carries other packages' commits</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-29-ferrflow-scoped-package-commits/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-29-ferrflow-scoped-package-commits/</guid>
      <pubDate>Sat, 29 Aug 2026 12:00:00 GMT</pubDate>
      <description>In a monorepo, each package collected every commit since its own last tag, whatever those commits touched. That padded the changelog with other packages' work and, less visibly, let their commits decide the version bump.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: calver-short-seq, and a warning when a release is held back</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-29-ferrflow-calver-short-seq/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-29-ferrflow-calver-short-seq/</guid>
      <pubDate>Sat, 29 Aug 2026 10:00:00 GMT</pubDate>
      <description>A date-only version scheme can only publish once a day, and the second attempt was indistinguishable from having nothing to release. FerrFlow now says so out loud, and calver-short-seq gives the compact year a sequence counter.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: a crash no longer leaves the release lock or a registry token behind</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-panic-cleanup/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-panic-cleanup/</guid>
      <pubDate>Fri, 28 Aug 2026 18:00:00 GMT</pubDate>
      <description>The release binary is built to abort on panic, which skips the cleanup that runs when a release ends normally. A crash left the lock file in place, blocking the repository for half an hour, and could leave a scoped npm token on disk.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: check no longer serves a stale plan after an uncommitted edit</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-cache-staleness/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-cache-staleness/</guid>
      <pubDate>Fri, 28 Aug 2026 16:00:00 GMT</pubDate>
      <description>The cache behind ferrflow check keyed on the commit, the tags and the config, but not on the version files it actually reads. Editing a version without committing returned the previous answer for up to five minutes. Interrupted runs also left temp files that nothing ever cleaned up.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: the crates.io link after a publish points at your crate again</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-cargo-publish-url/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-cargo-publish-url/</guid>
      <pubDate>Fri, 28 Aug 2026 15:00:00 GMT</pubDate>
      <description>FerrFlow built the crates.io link from the package name in its own config rather than the one in Cargo.toml. A workspace routinely uses short names against prefixed crates, and short crate names are long since taken, so the link led to an unrelated crate instead of yours.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: the npm link after a publish points at your package again</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-npm-publish-url/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-npm-publish-url/</guid>
      <pubDate>Fri, 28 Aug 2026 14:00:00 GMT</pubDate>
      <description>FerrFlow built the npmjs.com link from the package name in its own config rather than the one in package.json. In a monorepo those differ by default, and the short names are all taken on npm, so the link led to a stranger's package instead of yours.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: an annotated tag already on the remote no longer blocks the push</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-annotated-tag-deref/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-28-ferrflow-annotated-tag-deref/</guid>
      <pubDate>Fri, 28 Aug 2026 10:00:00 GMT</pubDate>
      <description>FerrFlow compared the commit a tag points at against the tag object itself, so any annotated tag already on the remote looked like it had moved. The push failed with a message about a difference that was not there, telling you to delete a perfectly healthy tag.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: undo a release that failed partway</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-27-ferrflow-rollback/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-27-ferrflow-rollback/</guid>
      <pubDate>Thu, 27 Aug 2026 12:00:00 GMT</pubDate>
      <description>A release that dies after pushing tags used to leave you reconstructing what it did from a job log, then deleting refs by hand. ferrflow rollback reads the checkpoint that run left behind and undoes exactly what it did, refusing the parts that cannot be undone.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: a config without a workspace block now keeps its defaults</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-27-ferrflow-workspace-defaults/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-27-ferrflow-workspace-defaults/</guid>
      <pubDate>Thu, 27 Aug 2026 10:00:00 GMT</pubDate>
      <description>Omitting the workspace block from a config file silently dropped every workspace default. The remote became an empty string and the release failed at the push; the target branch became empty and said nothing at all.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: release commits from the bot now show as verified</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-bot-verified-commits/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-bot-verified-commits/</guid>
      <pubDate>Tue, 25 Aug 2026 18:00:00 GMT</pubDate>
      <description>Commits authored by ferrflow[bot] showed as unverified, and no signing key could fix it because a GitHub App cannot register one. With bot: true on GitHub, the release commit is now authored through GitHub itself, which signs it.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: a failed push now says what actually went wrong</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-push-error-classification/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-push-error-classification/</guid>
      <pubDate>Tue, 25 Aug 2026 17:00:00 GMT</pubDate>
      <description>Every push failure was reported as &quot;pushed onto a stale branch&quot; and answered by regenerating the release commit three times, whatever the real cause. Transient server errors are now retried where they belong, real races are detected by their actual wording, and permanent failures surface immediately.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: release PRs are tagged when they merge, not when they open</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-pr-mode-tags-on-merge/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-pr-mode-tags-on-merge/</guid>
      <pubDate>Tue, 25 Aug 2026 16:00:00 GMT</pubDate>
      <description>In pr mode FerrFlow tagged and published the moment it opened the release PR, on the commit before the version bump. The PR then reported nothing left to release and was never updated again. Tagging now happens after the merge, on the commit that carries the bump.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: one config file per package</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-config-include/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-25-ferrflow-config-include/</guid>
      <pubDate>Tue, 25 Aug 2026 12:00:00 GMT</pubDate>
      <description>A monorepo no longer has to declare every package in a single root config. The new include key points at per-package files, each owning its own settings, and a package path inside one of those files defaults to its directory.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow · choose whether the tag or the file is the source of truth</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-20-ferrflow-version-source-option/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-20-ferrflow-version-source-option/</guid>
      <pubDate>Thu, 20 Aug 2026 12:00:00 GMT</pubDate>
      <description>When a package has both a git tag and a version in a versioned file, FerrFlow took whichever was higher. That is still the default, and versionSource now lets a repo say the tags are the record, or that the file is.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow · release output says where the current version came from</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-20-ferrflow-version-source/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-20-ferrflow-version-source/</guid>
      <pubDate>Thu, 20 Aug 2026 10:00:00 GMT</pubDate>
      <description>The version FerrFlow starts from is resolved from a tag, a versioned file, or neither. The release and check output now names the source, so a package whose tag was never pushed is distinguishable from one that has no tags yet.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: lockfiles no longer go stale after a release</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-15-ferrflow-lockfile-refresh/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-15-ferrflow-lockfile-refresh/</guid>
      <pubDate>Sat, 15 Aug 2026 10:00:00 GMT</pubDate>
      <description>updateLockfiles could leave Cargo.lock at the previous version while the release still reported success. Both causes are fixed: the crate name is read from the manifest, and a cold registry cache no longer defeats the update.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: commit formats are configurable, and the defaults are more permissive</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-10-ferrflow-commit-formats/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-10-ferrflow-commit-formats/</guid>
      <pubDate>Mon, 10 Aug 2026 18:00:00 GMT</pubDate>
      <description>workspace.commitFormats lets you declare which commit subjects map to which bump level. The defaults now also recognise Feat:, Fix/, feature: and friends. Which is why this ships as v7.</description>
      <category>ferrflow</category>
      <category>breaking</category>
    </item>
    <item>
      <title>FerrFlow: now MIT licensed</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-07-ferrflow-mit-license/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-07-ferrflow-mit-license/</guid>
      <pubDate>Fri, 07 Aug 2026 10:00:00 GMT</pubDate>
      <description>FerrFlow moves from MPL-2.0 to MIT. Fewer obligations for everyone using it; the change ships as v6, so Action pins move from @v5 to @v6.</description>
      <category>ferrflow</category>
      <category>breaking</category>
    </item>
    <item>
      <title>FerrFlow: the Action verifies the binary it downloads</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-07-ferrflow-verified-installs/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-07-ferrflow-verified-installs/</guid>
      <pubDate>Fri, 07 Aug 2026 09:30:00 GMT</pubDate>
      <description>Releases now ship a signed SHA256SUMS, and the GitHub Action checks the archive against it: and its build provenance: before extracting anything.</description>
      <category>ferrflow</category>
      <category>security</category>
    </item>
    <item>
      <title>FerrFlow: the Action no longer interpolates its inputs into shell</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-07-ferrflow-action-input-hardening/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-07-ferrflow-action-input-hardening/</guid>
      <pubDate>Fri, 07 Aug 2026 09:00:00 GMT</pubDate>
      <description>force_version, package and version reached the Action’s run scripts as raw shell source. They now arrive as environment variables and are validated before use.</description>
      <category>ferrflow</category>
      <category>security</category>
    </item>
    <item>
      <title>FerrFlow: the hosted API moves to api.ferrflow.com</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-05-ferrflow-api-own-domain/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-05-ferrflow-api-own-domain/</guid>
      <pubDate>Wed, 05 Aug 2026 10:00:00 GMT</pubDate>
      <description>The FerrFlow API and the hosted bot token exchange now answer on api.ferrflow.com. The old api.ferrlabs.com host keeps working indefinitely.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: `diff` now shows only the package you asked about</title>
      <link>https://ferrflow.com/fr/changelog/2026-08-04-ferrflow-diff-package-scope/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-08-04-ferrflow-diff-package-scope/</guid>
      <pubDate>Tue, 04 Aug 2026 10:00:00 GMT</pubDate>
      <description>In a monorepo, `ferrflow diff &lt;package&gt; &lt;from&gt;..&lt;to&gt;` filters the range to commits that touched that package, so its commit list and changelog match what a release would actually produce.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: Migrating from changesets now finds your packages</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-28-ferrflow-changesets-workspace-discovery/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-28-ferrflow-changesets-workspace-discovery/</guid>
      <pubDate>Tue, 28 Jul 2026 14:00:00 GMT</pubDate>
      <description>`ferrflow migrate --from changesets` reads your workspace globs and scaffolds one package entry per workspace package, instead of a single root package you had to expand by hand.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Releases are signed with a single Sigstore bundle</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-27-ferrflow-cosign-bundles/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-27-ferrflow-cosign-bundles/</guid>
      <pubDate>Mon, 27 Jul 2026 20:00:00 GMT</pubDate>
      <description>From v5.48.0 each release artifact ships one `.bundle` instead of a separate `.sig` and `.crt`. Verification is one flag shorter; older releases keep working as before.</description>
      <category>ferrflow</category>
      <category>breaking</category>
    </item>
    <item>
      <title>FerrFlow: Cabal and CMake version files</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-27-ferrflow-cabal-cmake-formats/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-27-ferrflow-cabal-cmake-formats/</guid>
      <pubDate>Mon, 27 Jul 2026 14:00:00 GMT</pubDate>
      <description>FerrFlow now bumps the version in Haskell `*.cabal` files and in the `project()` call of a `CMakeLists.txt`, bringing the supported formats to 16.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Tags are pushed before releases are published</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-27-ferrflow-tags-before-releases/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-27-ferrflow-tags-before-releases/</guid>
      <pubDate>Mon, 27 Jul 2026 10:00:00 GMT</pubDate>
      <description>A release run now pushes its tags to the remote before creating the GitHub or Gitea release, so a failure in between can no longer leave a published release pointing at a tag that never landed: and annotated tag messages are no longer silently replaced.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: Concurrent releases no longer fail with E2006</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-25-ferrflow-concurrent-release-replan/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-25-ferrflow-concurrent-release-replan/</guid>
      <pubDate>Sat, 25 Jul 2026 10:00:00 GMT</pubDate>
      <description>When two release runs race, the losing run now replans against the version the winner published instead of aborting with E2006. And no longer silently drops the other packages it was about to release.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: Hosted API for validate, preview, schema and releases</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-hosted-api/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-hosted-api/</guid>
      <pubDate>Tue, 21 Jul 2026 16:00:00 GMT</pubDate>
      <description>A new hosted API at api.ferrlabs.com/v1/ferrflow/* lets you validate a config, preview version bumps and changelog, fetch the config JSON Schema, and resolve the latest release: over HTTP, with results identical to the CLI.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Compare two versions with `diff`</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-diff-command/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-diff-command/</guid>
      <pubDate>Tue, 21 Jul 2026 15:00:00 GMT</pubDate>
      <description>A new `ferrflow diff v1.4.0..v1.6.0` command shows exactly what went into a version range: the commits and their bumps, the breaking changes, the files touched, and the changelog FerrFlow would generate for the range.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Migrate reads JS and YAML configs</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-migrate-js-yaml/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-migrate-js-yaml/</guid>
      <pubDate>Tue, 21 Jul 2026 14:00:00 GMT</pubDate>
      <description>`ferrflow migrate` now imports JavaScript and YAML release configs directly: `.releaserc.js`, `release.config.js`, `.releaserc.yaml`, `.versionrc.js`, and friends: not just JSON, so you no longer have to hand-convert your config before migrating.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Migrate from changesets, release-please &amp; standard-version</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-migrate-more-tools/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-migrate-more-tools/</guid>
      <pubDate>Tue, 21 Jul 2026 13:00:00 GMT</pubDate>
      <description>`ferrflow migrate` now imports configs from changesets, release-please, and standard-version too: not just semantic-release: generating an equivalent `ferrflow.json` and a report of what mapped, what was ignored, and what needs a look.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: One persistent release PR</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-persistent-release-pr/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-persistent-release-pr/</guid>
      <pubDate>Tue, 21 Jul 2026 10:00:00 GMT</pubDate>
      <description>In `releaseCommitMode: pr`, FerrFlow now keeps a single long-lived release pull request and updates it on each new commit, instead of opening a fresh PR: and leaving a stale one. Every time the version changes.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Post-publish hooks get the release URL</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-hook-release-url/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-21-ferrflow-hook-release-url/</guid>
      <pubDate>Tue, 21 Jul 2026 08:00:00 GMT</pubDate>
      <description>`postPublish` hooks now receive `releaseUrl`: the URL of the GitHub/GitLab release FerrFlow just created: so you can link to it from a Slack notification, a dashboard, or a downstream job.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Hooks see the whole release batch</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-20-ferrflow-hook-all-packages/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-20-ferrflow-hook-all-packages/</guid>
      <pubDate>Mon, 20 Jul 2026 16:00:00 GMT</pubDate>
      <description>Release hooks now receive `allPackages`. Every package the run bumps, with its new version and bump type: so a monorepo hook can act on the batch, not just its own package.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Richer context for release hooks</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-20-ferrflow-rich-hook-context/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-20-ferrflow-rich-hook-context/</guid>
      <pubDate>Mon, 20 Jul 2026 12:00:00 GMT</pubDate>
      <description>Release hooks now receive the rendered changelog, the parsed commits, the list of bumped files, and whether the run is a monorepo or pre-release. Both as `FERRFLOW_*` env vars and on the JS/TS `ctx` object.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Auto-detect self-hosted forges</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-selfhosted-forge-autodetect/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-selfhosted-forge-autodetect/</guid>
      <pubDate>Sat, 18 Jul 2026 14:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Bitbucket support</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-bitbucket/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-bitbucket/</guid>
      <pubDate>Sat, 18 Jul 2026 13:00:00 GMT</pubDate>
      <description>FerrFlow now recognises Bitbucket Cloud repositories and handles their releases. No more scripting a hook to get automatic release tagging on Bitbucket.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Faster repeat runs via commit-graph</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-commit-graph/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-commit-graph/</guid>
      <pubDate>Sat, 18 Jul 2026 12:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>perf</category>
    </item>
    <item>
      <title>FerrFlow: Robust BREAKING CHANGE detection</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-breaking-change-variants/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-breaking-change-variants/</guid>
      <pubDate>Sat, 18 Jul 2026 11:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: ferrflow schema</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-schema-subcommand/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-schema-subcommand/</guid>
      <pubDate>Sat, 18 Jul 2026 10:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: ferrflow doctor</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-doctor/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-18-ferrflow-doctor/</guid>
      <pubDate>Sat, 18 Jul 2026 09:00:00 GMT</pubDate>
      <description>A new `ferrflow doctor` subcommand runs read-only diagnostics on your repo, config, and forge setup and prints a categorised report: so &quot;is my setup sane?&quot; has a first-class answer instead of grepping `--verbose` logs.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Telemetry removed. The CLI no longer phones home</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-17-ferrflow-telemetry-removed/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-17-ferrflow-telemetry-removed/</guid>
      <pubDate>Fri, 17 Jul 2026 15:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Linked and fixed package version groups</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-17-ferrflow-linked-fixed-groups/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-17-ferrflow-linked-fixed-groups/</guid>
      <pubDate>Fri, 17 Jul 2026 09:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Migrate from semantic-release in one command</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-16-ferrflow-migrate-semantic-release/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-16-ferrflow-migrate-semantic-release/</guid>
      <pubDate>Thu, 16 Jul 2026 09:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Six new release hook points: post-commit, pre-tag, post-tag, pre-release, on-success, on-error</title>
      <link>https://ferrflow.com/fr/changelog/2026-07-13-ferrflow-hook-points/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-07-13-ferrflow-hook-points/</guid>
      <pubDate>Mon, 13 Jul 2026 09:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: Windows arm64 and Linux armv7 prebuilt binaries</title>
      <link>https://ferrflow.com/fr/changelog/2026-06-26-ferrflow-arm-targets/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-06-26-ferrflow-arm-targets/</guid>
      <pubDate>Fri, 26 Jun 2026 10:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: ferrflow publish auto-scopes to the triggering tag</title>
      <link>https://ferrflow.com/fr/changelog/2026-06-25-ferrflow-publish-tag-scope/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-06-25-ferrflow-publish-tag-scope/</guid>
      <pubDate>Thu, 25 Jun 2026 11:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: control parallelism with --jobs / FERRFLOW_JOBS</title>
      <link>https://ferrflow.com/fr/changelog/2026-06-25-ferrflow-jobs-flag/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-06-25-ferrflow-jobs-flag/</guid>
      <pubDate>Thu, 25 Jun 2026 10:00:00 GMT</pubDate>
      <description>FerrFlow now exposes a global --jobs &lt;N&gt; 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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: declarative publishers: publish to cargo, npm, docker, helm &amp; more on release</title>
      <link>https://ferrflow.com/fr/changelog/2026-06-16-ferrflow-declarative-publishers/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-06-16-ferrflow-declarative-publishers/</guid>
      <pubDate>Tue, 16 Jun 2026 10:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: bot releases now work under branch rulesets (v5.2.2)</title>
      <link>https://ferrflow.com/fr/changelog/2026-06-07-ferrflow-bot-release-rulesets/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-06-07-ferrflow-bot-release-rulesets/</guid>
      <pubDate>Sun, 07 Jun 2026 11:00:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
    <item>
      <title>FerrFlow: DO_NOT_TRACK env var + first-run telemetry notice</title>
      <link>https://ferrflow.com/fr/changelog/2026-05-05-ferrflow-do-not-track-and-first-run-notice/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-05-05-ferrflow-do-not-track-and-first-run-notice/</guid>
      <pubDate>Tue, 05 May 2026 19:30:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: docs au style Claude</title>
      <link>https://ferrflow.com/fr/changelog/2026-04-29-ferrflow-docs-claude-style/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-04-29-ferrflow-docs-claude-style/</guid>
      <pubDate>Wed, 29 Apr 2026 16:30:00 GMT</pubDate>
      <description>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 &lt;Card&gt;/&lt;CardGroup&gt;/&lt;Note&gt;.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: editorial features grid, install grid, dark CTA</title>
      <link>https://ferrflow.com/fr/changelog/2026-04-29-ferrflow-editorial-body/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-04-29-ferrflow-editorial-body/</guid>
      <pubDate>Wed, 29 Apr 2026 11:23:00 GMT</pubDate>
      <description>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.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow v4.2: pre-release channels</title>
      <link>https://ferrflow.com/fr/changelog/2026-04-29-ferrflow-v4-2-prerelease-channels/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-04-29-ferrflow-v4-2-prerelease-channels/</guid>
      <pubDate>Wed, 29 Apr 2026 09:00:00 GMT</pubDate>
      <description>Ship `alpha`, `beta`, and `rc` releases without touching your floating tags.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: editorial hero on the landing page</title>
      <link>https://ferrflow.com/fr/changelog/2026-04-28-ferrflow-editorial-hero/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-04-28-ferrflow-editorial-hero/</guid>
      <pubDate>Tue, 28 Apr 2026 20:59:00 GMT</pubDate>
      <description>New display headline (Fraunces 900, italic accent), softer paper background, monospace eyebrows.</description>
      <category>ferrflow</category>
      <category>new</category>
    </item>
    <item>
      <title>FerrFlow: changelog ordering fix</title>
      <link>https://ferrflow.com/fr/changelog/2026-04-24-ferrflow-changelog-ordering/</link>
      <guid isPermaLink="true">https://ferrflow.com/fr/changelog/2026-04-24-ferrflow-changelog-ordering/</guid>
      <pubDate>Fri, 24 Apr 2026 11:15:00 GMT</pubDate>
      <description>Changelog entries are now sorted by commit date instead of alphabetically inside each section.</description>
      <category>ferrflow</category>
      <category>fix</category>
    </item>
  </channel>
</rss>
