Skip to content

Bootstrap the standalone changelog package and reusable CLI commands #1

@coisa

Description

@coisa

Summary

Bootstrap a standalone fast-forward/changelog package to own the Fast Forward changelog domain and expose reusable CLI commands for changelog automation.

Problem

Changelog parsing, mutation, rendering, and release-version inference currently live inside fast-forward/dev-tools, while fast-forward/github-actions also needs part of that behavior for workflow automation. Keeping the changelog domain inside dev-tools makes reuse awkward, increases coupling between packages, and blocks the longer-term goal of turning dev-tools into an aggregator of smaller CLI-focused packages.

Goal

Create a standalone fast-forward/changelog package that:

  • owns the changelog document model, parser, renderer, and release-oriented domain services;
  • provides commands that can run standalone through its own application;
  • allows fast-forward/dev-tools and fast-forward/github-actions to register or proxy those commands locally without reimplementing the domain.

Scope

  • Create the new fast-forward/changelog package repository and bootstrap it as an installable Composer package.
  • Move the generic changelog domain from fast-forward/dev-tools into this package.
  • Provide dedicated services for changelog loading, release-note rendering, version inference, promotion, and entry management.
  • Provide a standalone Symfony Console application for the package.
  • Provide changelog commands that are reusable from other applications.
  • Prepare fast-forward/dev-tools and fast-forward/github-actions to depend on this package instead of owning changelog domain logic directly.

Proposed Commands

  • changelog:resolve-version
  • changelog:render-release-notes
  • changelog:entry
  • changelog:promote
  • changelog:show or an equivalent command name if we consolidate output behavior

Acceptance Criteria

  • A new public Composer package named fast-forward/changelog exists under the php-fast-forward organization.
  • The package is installable standalone and exposes its own console entrypoint and application class.
  • The package does not depend on fast-forward/dev-tools.
  • Generic changelog document, parser, renderer, and mutation logic live in the new package.
  • The package exposes reusable Symfony Console commands for changelog automation.
  • The initial command set covers release-version resolution and release-note rendering at minimum.
  • The package structure supports later migration of entry-management and promotion commands without API churn.
  • fast-forward/dev-tools can depend on the package and register its commands instead of owning the changelog domain.
  • fast-forward/github-actions can depend on the package and inject or proxy the commands it needs.
  • README and package metadata describe the standalone CLI use case and the embeddable-command use case.

Non-Goals

  • Completing the full migration of every changelog-related command in the same first PR.
  • Reworking unrelated GitHub Actions commands or PHP version resolution logic.
  • Turning dev-tools into a pure aggregator in this first step beyond the changelog extraction seam.

Notes

  • Prefer a package structure that keeps command orchestration thin and pushes changelog behavior into focused services.
  • Prefer names and namespaces that make the standalone package readable both when used directly and when embedded into larger console applications.
  • Keep output deterministic for workflow and CI usage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions