This document provides formal guidance on structuring and writing changelog entries for the AWS Deadline Cloud client repository.
- Changelog Structure
- Writing Guidelines
- Breaking Changes
- Deprecations
- Features
- Bug Fixes
- Performance Improvements
- Experimental
- Fixes to Unreleased Changes
- Examples
- Review Checklist
Each release in the changelog MUST follow this standardized section order:
- BREAKING CHANGES (if applicable)
- DEPRECATIONS (if applicable)
- Features
- Bug Fixes
- Performance Improvements (if applicable)
- Experimental (if applicable)
BREAKING CHANGES: Changes that break backward compatibility and require user action.
DEPRECATIONS: Features or APIs that will be removed in a future release. Users should be warned but functionality still works.
Features: New functionality or enhancements to existing features.
Bug Fixes: Corrections to defects in existing functionality.
Performance Improvements: Changes that improve performance without altering functionality.
Experimental: Features behind feature flags or marked as subject to change.
- User-focused language: Write from the customer's perspective, not the implementation perspective
- Action-oriented: Describe what changed and the impact, not how it was implemented
- Concise but complete: Provide enough context to understand the change without being verbose
- Present tense: Use present tense for describing the state after the change
Breaking changes require special attention and MUST include:
- Clear description of what broke
- Migration path or workaround
- Code examples when applicable
### BREAKING CHANGES
* [Brief description of the change] (#PR) ([commit])
* [Detailed explanation of what broke]
* [Migration path or how to adapt]
* [Code example if applicable]### BREAKING CHANGES
* `deadline.ui.show_job_bundle_submitter`: Input parameter renamed from `submitter_name` to `submitter_info` and now expects a `deadline.dataclasses.SubmitterInfo` object as input. (#940) ([`74a3b01`])
* The function signature has changed to accept a structured object instead of a string
* **Migration**: Replace `show_job_bundle_submitter(submitter_name="MyName")` with `show_job_bundle_submitter(submitter_info=SubmitterInfo(submitter_name="MyName"))`Deprecations MUST include:
- What is being deprecated
- What to use instead
- When it will be removed (if known)
## DEPRECATIONS
* [What is deprecated] has been deprecated. [What to use instead] should now be used. [When removal will occur if known]## DEPRECATIONS
* The CLI `bundle gui-submit --submitter-name` option has been deprecated. `--submitter-info` should now be used to provide the name. This option will be removed in version 1.0.0.
* `--timezone` is being deprecated in favor of `--timestamp-format` for the `job logs` command. `--timezone` will be removed in a future release.Fixes that only impact unreleased changes (changes not yet in a published release) should generally NOT be included in the changelog as separate entries.
Fixes to unreleased changes should generally be omitted from the changelog. Instead, describe features in their final working state without mentioning intermediate bugs or fixes. The changelog is for released functionality, not development history.
Consider two commits that were merged for the same feature:
feat: add job retry functionality
fix: job retry fails when retry count exceeds 5
Let's assume that the fix: commit fixes a bug in the feat: commit, but the feat: commit had not been released before the fix: commit was merged.
When drafting the changelog for the release, these two changes would be merged into a single chaneglog entry:
GOOD:
### Features
* Add job retry functionality with configurable retry limitsBAD:
### Features
* Add job retry functionality
### Bug Fixes
* Fix job retry failing when retry count exceeds 5Features should describe what the user can now do and when it's useful.
Good examples:
* Add `deadline job wait` command to monitor job completion with configurable polling intervals
* Support automatic download of job attachments output
* Add detailed tooltips to grayed-out submit buttonPoor examples:
* Added new function to API
* Implemented job waiting
* Updated UIBug fixes should describe the problem that was fixed as the customer experienced it, not the technical implementation.
Good examples:
* Job submission error when submitting same jobs with the same title over 100 times in a single day.
* Re-queued jobs downloading the same output more than once with cli
* Process hangs on exit with high volume of telemetryPoor examples:
* Fixed a bug in the submission code
* Updated the download logic
* Changed the telemetry handlerPerformance improvements:
- SHOULD quantify the improvement when possible (e.g., "2x faster", "50% reduction")
- MUST specify when it applies (e.g., "for large file uploads", "during job submission")
Good examples:
* Improve concurrency during bundle submission by threading local s3 cache db connections and enabling WAL mode by default (40% faster for bundles with 1000+ files)
* Speed up job bundle submissions by reducing redundant stat calls (2x faster for bundles with deep directory structures)
* Reduce memory usage during large file uploadsPoor examples:
* Made uploads faster
* Improved performance
* Optimized codeUse a dedicated Experimental section at the end of the changelog for features that:
- Are behind feature flags
- Have public APIs and functional behavior under development and subject to change without following normal breaking change policies
Experimental features must be grouped under parent bullets by feature name, with specific changes as sub-bullets. When a feature group requires a feature flag, document the flag name in the parent bullet point.
### Experimental
These changes are experimental and are subject to change.
* [Feature name] (requires `FEATURE_FLAG_NAME=true`):
* [Specific change description]
* [Another change for same feature]
* [Another feature name]:
* [Change description]### Experimental
These changes are experimental and are subject to change.
* MCP Server:
* Add get_session_logs to mcp server (#909) ([`c9f83a4`])
* Incremental/Automatic Downloads (requires `ENABLE_INCREMENTAL_DOWNLOAD=true`):
* Add storage profile support for incremental download (#773) ([`d7fd976`])
* Add internal functions to support path mapping (#764) ([`5a28a64`])When a feature graduates from experimental to stable:
- Move it to the appropriate section (Features, etc.)
- Note that it's now stable
- Document any API changes made during the experimental phase
Example:
### Features
* Incremental job output downloads are now stable and enabled by default (previously experimental)
* API changes from experimental version: `download_incremental()` renamed to `download_outputs()`## 0.55.0 (2025-01-15)
### BREAKING CHANGES
* Remove deprecated `create_job_response` attribute from `ui.dialogs.SubmitJobToDeadlineDialog` (#791) ([`6587e4e`])
* This attribute was deprecated in 0.51.1 and always returned `None`
* **Migration**: Use the `job_id` attribute instead, which is set when job submission succeeds
## DEPRECATIONS
* The `--legacy-format` option has been deprecated. Use `--format=legacy` instead. This option will be removed in version 1.0.0.
### Features
* Add `deadline job wait` command to monitor job completion with configurable polling and timeout
* Support automatic download of job attachments output for completed jobs
* Add detailed tooltips to grayed-out submit button explaining why submission is disabled
### Bug Fixes
* Job submission error when submitting same jobs with the same title over 100 times in a single day
* Process hangs on exit with high volume of telemetry
* HashDB does not retry when failing to open
### Performance Improvements
* Improve concurrency during bundle submission by threading local s3 cache db connections (40% faster for bundles with 1000+ files) (#896) ([`ba15300`])
* Speed up job bundle submissions by reducing redundant stat calls (2x faster for bundles with deep directory structures) (#860) ([`6e6e3ff`])
### Experimental
These changes are experimental and are subject to change.
* Incremental Downloads:
* Add storage profile support for incremental download (requires `ENABLE_INCREMENTAL_DOWNLOAD=true`) (#773) ([`d7fd976`])Before finalizing a changelog, verify:
- Sections are in the correct order
- Breaking changes describe what broke and include migration paths
- Deprecations specify what to use instead
- Bug fixes describe the problem that was fixed from the user perspective
- Performance improvements specify when they apply and ideally quantify improvements
- Experimental features are grouped by feature name with feature flags documented
- All entries are user-focused, not implementation-focused
- Fixes to unreleased changes are omitted or merged with original features