All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Changelogs are for humans, not machines.
- Include an entry for every version, with the latest first.
- Group similar changes under: Added, Changed, Improved, Deprecated, Removed, Fixed, Documentation, Performance, CI.
- "Test" is NOT a valid changelog category - tests should be mentioned within the related feature or fix entry, not as standalone entries.
- Use an "Unreleased" section for upcoming changes.
- Follow Semantic Versioning where possible.
- Use ISO 8601 date format: YYYY-MM-DD.
- Avoid dumping raw git logs; summarize notable changes clearly.
All contributors (including maintainers) should update CHANGELOG.md when creating PRs:
- Add entries to the
[Unreleased]section - Add your changes under the appropriate category (Added, Changed, Improved, Deprecated, Removed, Fixed, Documentation, Performance, CI) - Follow the changelog format - See examples below for structure and style
- Group related changes - Similar changes should be grouped together
- Be descriptive - Write clear, user-focused descriptions of what changed
- Mention tests when relevant - Tests should be mentioned within the related feature or fix entry, not as standalone entries
- Category order - Use this order in each version section: Added, Changed, Improved, Deprecated, Removed, Fixed, Documentation, Performance, CI (omit empty)
Example:
## [Unreleased]
## [0.1.2] - 2026-04-18
### Added
- **Redeployment Webhook**: Added support for prod environment
- New environment input validation and webhook URL construction
### Fixed
- **Configuration Check**: Fixed script handling of empty variable values
- Script now properly detects unset variables vs empty strings
### CI
- **Workflow**: Added workflow_dispatch trigger for manual testing
- Allows manual testing of webhook calls from GitHub Actions UINote: During releases, maintainers will move entries from [Unreleased] to a versioned section (e.g., ## [0.2.0] - 2025-02-XX).
- Staging vs prod only:
call-redeployment-webhookandset-image-tag-on-serveracceptenv: prodorenv: stagingonly (notest). Staging usesREDEPLOYMENT_WEBHOOK_SECRET_STAGINGand hook path...-staging. GitHub Environments should bestagingandprod.
-
Webhook URL construction: Host IP variable is now named
SERVER_HOSTinstead ofVPS_IP. -
Webhook and SSH use VPS_IP: call-redeployment-webhook and set-image-tag-on-server now use variable VPS_IP (instead of DOMAIN_NAME) for the webhook URL host and SSH destination. Use when the main domain points elsewhere (e.g. Vercel). Callers must set VPS_IP in the environment (repo or org variables).
-
Webhook ID: REDEPLOYMENT_HOOK_ID is no longer a secret but now a var
-
Set image tag on server: Input renamed
service→app_name, now required (no default)- Callers must pass explicit service/app name (e.g. htmt-api, htmt-db, afp); filename on server is
${app_name}-tag - Updated workflow comment and tag description examples
- Callers must pass explicit service/app name (e.g. htmt-api, htmt-db, afp); filename on server is
- Release automation: Added
.github/scripts/release.shandVERSIONfile to automate release chores- Script inserts the release section under
[Unreleased], bumpsVERSION, commits, tags, and pushes the tag
- Script inserts the release section under
- Configuration Check: Replaced script-based validation with inline bash in workflow
- Workflow now validates required secrets/variables directly without requiring script file
- Fixes issue where script was unavailable when workflow called from other repositories
- Removed dependency on
checkoutaction in check-required-config job
- Webhook Secret: Renamed
TEST_SERVER_REDEPLOYMENT_WEBHOOK_SECRETtoREDEPLOYMENT_WEBHOOK_SECRET- More generic naming that works across environments
- Updated workflow and documentation to reflect new name
- Configuration Check Script: Removed
.github/scripts/check-required-config.sh- No longer needed since validation is now inline in the workflow
- Script was not accessible when workflow called from other repositories
- README: Clarified secret and variable configuration
- Added note that this repository doesn't need secrets/variables configured
- Updated guidance to recommend repository-level secrets by default
- Clarified that calling repositories must configure secrets/variables
- Improved setup instructions with clearer organization vs repository level guidance
- Added manual webhook call example with curl command for testing
- Call Redeployment Webhook Workflow: Reusable GitHub Actions workflow for triggering server redeployment webhooks
- Supports both
workflow_dispatch(manual trigger) andworkflow_call(reusable workflow) - Validates required configuration (secrets and variables) before proceeding
- Verifies environment is set to
test(currently only test environment supported) - Calls redeployment webhook endpoint with authentication
- Validates webhook response matches expected output
- Provides clear error messages for common failure scenarios
- Supports both
- Configuration Check Script:
.github/scripts/check-required-config.shfor validating required secrets and variables- Accepts arguments in format
s:NAME(secret) orv:NAME(variable) - Reports missing configuration with clear error messages
- Supports both command-line arguments and stdin input
- Accepts arguments in format
- README: Comprehensive documentation for reusable workflows
- Usage examples (basic and with dependencies)
- Required configuration (secrets and variables tables)
- Setup instructions
- Workflow behavior and error handling details
- Webhook endpoint construction
- Troubleshooting guide
- Contributing guidelines
- CHANGELOG: Initial changelog following Keep a Changelog format with contributor guidelines