changelog
Add Changelog Entry
Add entries to the Simple History plugin's readme.txt changelog.
Workflow
- Ask user for the change description (if not provided)
- Determine category: Added, Changed, Fixed, Deprecated, Removed, Security
- Add entry under
## Changelog→### Unreleased - Confirm with user
Format
- Fixed post creation via Gutenberg autosave not being logged. [#599](https://github.com/bonny/WordPress-Simple-History/issues/599)
- Start with
-(hyphen + 3 spaces) - Do NOT repeat the category verb — the heading already says Added/Changed/Fixed, so don't start entries with "Added...", "Fixed...", etc.
- Link GitHub issue/PR if available
- End with period
Writing Guidelines
Changelogs are for humans, not machines. Write for both technical and non-technical WordPress users.
Write for the user:
- Explain what changed from the user's perspective, not what you did in the code
- Provide context and scope: instead of "Optimized query" write "Improved performance on sites with large activity logs"
- Replace jargon with clarity: avoid acronyms, internal class names, or hook names unless the audience is developers
- Be specific: "Fixed timezone handling in email reports" not "Bug fixes"
- Active voice: "Fixed X" not "X was fixed"
Be honest and complete:
- Never hide breaking changes, deprecations, or security fixes
- Be upfront about what changed and why — users trust changelogs that are transparent
- Include all notable user-facing changes; selective entries undermine credibility
- Mark experimental features with a trailing "(experimental)" tag, not as a prefix
Keep it concise:
- One bullet per change, one or two sentences max
- Don't duplicate commit messages — curate and translate them into user-facing language
- Group related small changes into a single entry rather than listing each separately
- Omit internal refactors, code cleanup, and dev tooling changes unless they affect users
Don't write:
- "Bug fixes" or "Various improvements" (too vague, tells users nothing)
- "Updated code" or "Minor changes" (meaningless)
- Raw commit messages or git log dumps
- Internal hook/filter names in user-facing entries (put in developer docs instead)
Categories
Use these standard categories from Keep a Changelog:
- Added — New features and capabilities
- Changed — Modifications to existing functionality
- Deprecated — Features that will be removed in a future release
- Removed — Features that have been eliminated
- Fixed — Bug fixes
- Security — Vulnerability patches (always include these, never hide them)
Unreleased Section
Always maintain an ### Unreleased section at the top of the changelog. This lets users see what's coming and makes it easy to promote entries into a versioned release.
When releasing, move Unreleased entries into a new versioned section with the release date.
Examples
✅ Post creation via Gutenberg autosave not being logged, causing email reports to show 0 posts created.
✅ Developer mode badge to improve debugging workflow.
✅ Performance on sites with large activity logs improved by optimizing database queries.
✅ `simple_history_log()` function — use `SimpleHistory\log()` instead. Will be removed in 6.0.
❌ Added developer mode badge (redundant — heading already says "Added")
❌ Fixed post creation (redundant — heading already says "Fixed")
❌ Bug fixes
❌ Updated code
❌ Refactored SimpleHistoryLogQuery class
❌ Various improvements and optimizations
References
- WordPress Developer Blog: The Importance of a Good Changelog
- Keep a Changelog: https://keepachangelog.com
Location
- File:
readme.txt(project root) - Section:
## Changelog→### Unreleased - If Unreleased doesn't exist, create it after
## Changelog
More from bonny/wordpress-simple-history
wordpress-org-compliance
Reviews plugin code for WordPress.org compliance and trialware violations. Use when checking premium features, upsells, or license keys before submission.
17logger-messages
Enforces active voice (verb-first) for all Simple History logger messages and the Event Details API for details output. Triggers: creating a new logger class, writing or modifying a 'messages' array in get_info()/getInfo(), calling notice_message/warning_message/info_message, or implementing get_log_row_details_output().
13release
Release checklist for core and premium plugins. Covers version bumping, changelog finalization, tagging, and deployment. Triggers when user says "release", "publish", "deploy", "bump version", "prepare release".
10code-quality
Runs linting and static analysis on PHP/CSS/JS using phpcs, phpstan, and rector. Use when checking code style, fixing lint errors, or running static analysis.
10sql
Run SQL queries against the WordPress development database. Use when querying database tables, inspecting Simple History events, checking WordPress data, debugging database issues, or when the user says "run query" or "check database".
7github-project
Use when working with the Simple History GitHub project board — updating issue status, querying board items, or automating project workflows.
1