Release v2.0.0
✅ Custy v2.0.0 — Stable Major Release
Custy v2.0.0 promotes the feature set reviewed in v2.0.0-rc.1 to the stable
2.0 release line. No new Custy command behavior was introduced after RC.1; the
final promotion combines repository cleanup with historical tag normalization
and recovery of missing GitHub Releases and container packages.
Custy 2.0 evolves the project from a mostly monolithic Git automation script
into a structured developer-productivity CLI with discoverable commands,
explicit release pipelines, centralized configuration, safer previews, and
clearer extension points.
🌟 Highlights
- Typer and Rich CLI with focused initialization, validation, versioning, changelog, commit, tag, push, backup, and cleanup commands.
- Reusable
custy run dev,custy run release, andcusty run fullprofiles with visible, deterministic step ordering. - Namespaced
.config/custy/config.tomlconfiguration with CLI → configuration → default resolution. - Rebuilt changelog generation with Conventional Commit parsing, configurable grouping and cleaning, pending content, release sorting, links, metadata, statistics, and Jinja templates.
- Determinate changelog progress for
Unreleasedcontent and every discovered Git tag. - Consistent dry-run behavior that retains read-only discovery and validation while simulating intended file, editor, Git, and remote mutations.
- SemVer, PEP 440, Commitizen, date, and Git-count version strategies with separated Git execution and service boundaries.
- Multi-remote synchronization, structured message backups, retention cleanup, and protected branch-cleanup rules.
- Expanded CLI, core, integration, regression, configuration, logging, UI, workflow, dry-run, cleanup, and changelog test coverage.
- Docker, Docker Compose, modular Make targets, GitHub Actions, GitLab CI, pre-commit, packaging, and release automation.
- A dedicated bilingual Custy documentation hub through the Devalltect Docs portal.
🧹 Changes Since v2.0.0-rc.1
- Removed temporary development notes, scratch change lists, and completed version-specific TODO files.
- Archived the v2.0.0 development scope, decisions, completed work, future ideas, and release checklist in the tracking history.
- Performed final repository housekeeping for the stable release.
- Normalized historical Custy tags from PEP 440-oriented notation to Semantic Versioning notation.
- Recreated missing GitHub Releases for historical Custy 1.x versions from their corresponding tags.
- Rebuilt missing historical container images from their corresponding tags with Reflow and published them to GitHub Container Registry.
There are no additional supported-command behavior changes between
v2.0.0-rc.1 and v2.0.0.
📦 Repository and Distribution Recovery
The historical Custy repository distribution was normalized and restored as
part of the stable-release preparation:
- Historical version tags now follow the repository's Semantic Versioning convention.
- Historical prerelease identifiers use SemVer notation instead of the former PEP 440 notation.
- Missing GitHub Release pages for the Custy 1.x release line were reconstructed from their corresponding historical tags.
- Missing historical container images were rebuilt from the source associated with each tag using Reflow.
- Rebuilt images were published to GitHub Container Registry through GitHub Packages.
- Source tags, GitHub Releases, and container-image tags now use a more consistent versioning and distribution structure.
This recovery does not introduce source changes into those historical
versions. Publication timestamps for reconstructed GitHub Releases and
container images reflect the recovery operation and may differ from the
original software release dates.
Users and automation that reference former PEP 440-formatted Git tags,
release URLs, or container tags must update those references to their
corresponding SemVer names.
For example:
- Former tag:
v1.4.0rc1 - SemVer tag:
v1.4.0-rc.1
💻 For Custy Users
- Run
custy initto create editable project configuration and templates. - Run
custy validatebefore consequential repository operations. - Use individual commands for focused operations or a
custy runprofile for an ordered pipeline. - Place global options before the command, such as
custy --dry-run run release. - Remember that dry-run can read real project and Git state and may write diagnostic logs, but intended project, Git, and remote mutations are simulated.
🧰 For Contributors and Integrators
- CLI presentation and core behavior are separated under
app/cliandapp/core. - Git services, pipeline steps, version strategies, changelog processing, initialization, cleanup, UI, and configuration expose focused responsibilities.
- Smaller components and explicit protocols, services, factories, builders, presenters, and strategies make behavior easier to locate, test, replace, and extend.
- Modular development tooling and documented architecture simplify local validation and release maintenance.
📚 Documentation
The Devalltect Docs portal is the primary documentation experience for the
Custy 2.0 release line. It covers installation, commands, configuration,
pipelines, workflows, troubleshooting, user guidance, architecture, and
contributor workflows in both supported documentation languages:
- English (default): https://devalltect00.github.io/devalltect-docs/docs/custy
- Indonesian: https://devalltect00.github.io/devalltect-docs/id/docs/custy
Repository-local documentation may remain useful for project history and
source-level references, but users should follow the portal for current Custy
2.0 usage guidance.
⚠️ Upgrade Notes for 1.x Users
- Python 3.14 or newer is required.
- Replace
.custor.tomlwith the generated.config/custy/config.tomlconfiguration and review every generated value. - Review editable resources under
.config/custy/templatesbefore running commit or release workflows. - Replace
custy allwithcusty run releaseorcusty run fullas appropriate. - Replace
custy commit-tag-bumpwith focused commands or a supportedcusty runprofile. - Replace
custy cleaned-backupswithcusty cleanup backups. - Replace
custy clean-brancheswithcusty cleanup branches. - Use
custy changelog generatefor standalone changelog generation. - Update Git, release, dependency, and container references that still use the former PEP 440 tag notation.
- Review
custy --helpand command-specific help before migrating automation.
⚠️ Experimental Feature
The custy workflow branch-policy command remains experimental. Its behavior
may change in later releases, so use it cautiously and preview intended
operations before allowing mutations.
✅ Release Status
- Version:
v2.0.0 - Previous version:
v2.0.0-rc.1 - Strategy: Semantic Versioning
- Stability: Stable for supported commands;
custy workflowremains experimental - Historical distribution: GitHub Releases and GHCR images restored
- Historical tag convention: Normalized to SemVer
Thank you for testing the release candidate and helping make Custy 2.0 ready
for its stable release line.
Release: v2.0.0
Author: Devalltect / Rizky Fernandes
📅 Release Information
- Version:
2.0.0 - Python Package Version:
2.0.0 - Release Type:
release - Project:
devalltect00/Custy - Commit: 9ff1d453