bg_image
header

Changelog

A Changelog is a file or document that lists the changes and updates made to software or a project. It provides a chronological record of new features, bug fixes, improvements, and breaking changes (changes that break backward compatibility). A changelog helps users and developers track the development progress of a software project and understand what changes have been made in a particular version.

Key Components of a Changelog:

  1. Version Numbers: Each set of changes is associated with a version number (e.g., 1.2.0), often following SemVer (Semantic Versioning) principles.
  2. Types of Changes: Changes are categorized into sections, such as:
    • Added: New features or functionalities.
    • Changed: Modifications to existing features.
    • Fixed: Bug fixes.
    • Deprecated: Features that are outdated and will be removed in future versions.
    • Removed: Features that have been removed.
    • Security: Security-related improvements or patches.
  3. Description of Changes: Each change is briefly described, sometimes with additional details if necessary.

Example of a Changelog:

# Changelog

## [1.2.0] - 2023-09-19
### Added
- New user authentication system.
- Ability to reset passwords via email.

### Fixed
- Resolved bug with session timeout after 30 minutes of inactivity.

### Changed
- Updated the UI for the login screen.

## [1.1.0] - 2023-08-10
### Added
- New dark mode theme for the dashboard.

### Security
- Patched vulnerability in file upload functionality.

Benefits of a Changelog:

  • Transparency: A changelog clearly shows what has changed from version to version.
  • Documentation: It serves as a useful reference for users who want to know what features or fixes are included in a new release.
  • Traceability: Developers can track previous changes, which is important for troubleshooting or when upgrading.

Changelogs are particularly common in open-source projects, as they provide the community with a transparent and clear overview of the project's development.

 

 


Conventional Commits

Conventional Commits are a simple standard for commit messages in Git that propose a consistent format for all commits. This consistency facilitates automation tasks such as version control, changelog generation, and tracking changes.

The format of Conventional Commits follows a structured pattern, typically as:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Components of a Conventional Commit:

  1. Type (Required): Describes the type of change in the commit. Standard types include:

    • feat: A new feature or functionality.
    • fix: A bug fix.
    • docs: Documentation changes.
    • style: Code style changes (e.g., formatting) that don't affect the logic.
    • refactor: Code changes that neither fix a bug nor add features but improve the code.
    • test: Adding or modifying tests.
    • chore: Changes to the build process or auxiliary tools that don't affect the source code.
  2. Scope (Optional): Describes the section of the code or application affected, such as a module or component.

    • Example: fix(auth): corrected password hashing algorithm
  3. Description (Required): A short, concise description of the change, written in the imperative form (e.g., “add feature” instead of “added feature”).

  4. Body (Optional): A more detailed description of the change, providing additional context or technical details.

  5. Footer (Optional): Used for notes about breaking changes or references to issues or tickets.

    • Example: BREAKING CHANGE: remove deprecated authentication method

Example of a Conventional Commit message:

feat(parser): add ability to parse arrays

The parser now supports parsing arrays into lists.
This allows arrays to be passed as arguments to methods.

BREAKING CHANGE: Arrays are now parsed differently

Benefits of Conventional Commits:

  • Consistency: A uniform format for commit messages makes the project history easier to understand.
  • Automation: Tools can automatically generate versions, create changelogs, and even release builds based on commit messages.
  • Traceability: It becomes easier to track the purpose of a change, especially for bug fixes or new features.

Conventional Commits are especially helpful in projects using SemVer (Semantic Versioning) because they enable automatic versioning based on commit types.