بنقرة واحدة
changelog
// Adds changelog entries to readme.txt following keepachangelog format. Use when updating the Unreleased section or documenting changes for a release.
// Adds changelog entries to readme.txt following keepachangelog format. Use when updating the Unreleased section or documenting changes for a release.
Writes blog posts for simple-history.com matching the author's voice and style. Use when drafting posts, announcements, or marketing copy.
How to design and regenerate marketing screenshots for the wordpress.org plugin page (banner-1544x500.png, screenshot-1.png, etc). Covers the event mix that converts, the reproducible WordPress Playground pipeline that bakes it, and every non-obvious gotcha from previous shoots. Use when refreshing screenshot-1.png, banners, or any image showing the Simple History event log.
Query Google Analytics (GA4) for simple-history.com traffic, top pages, referrers, and the premium_* UTM campaigns that tag admin links. Use when the user asks about visits, traffic sources, which admin links lead to the site, upsell click-through, or campaign performance.
Guidance for writing and running tests in Simple History. Covers which framework to use, how to run existing tests, and how to create new ones (including the codegen recording workflow).
Surface and triage local issues that are safe and quick for an AI to implement and easy for a human to verify. Use when the user wants to "knock out issues", asks for "quick wins", "low-hanging fruit", "what's easy to do right now", or wants a batch of small tasks to work through in one session.
Guides implementation of structured action links on log events. Use when adding get_action_links() to a logger or migrating from get_log_row_details_output().
| name | changelog |
| description | Adds changelog entries to readme.txt following keepachangelog format. Use when updating the Unreleased section or documenting changes for a release. |
| allowed-tools | Read, Edit |
Add entries to the Simple History plugin's readme.txt changelog.
## Changelog → ### Unreleased- Fixed post creation via Gutenberg autosave not being logged. [#599](https://github.com/bonny/WordPress-Simple-History/issues/599)
- (hyphen + 3 spaces)Changelogs are for humans, not machines. Write for both technical and non-technical WordPress users.
Write for the user:
Be honest and complete:
🧪 **Experimental** — prefix (see "Experimental features" section below)Keep it concise:
Helpers::get_filtered_history_url())Too long → tightened (real example):
❌ New installs now create the history tables with `$wpdb->get_charset_collate()` (matching
WordPress core's pattern since 4.2) instead of a hardcoded `CHARSET=utf8`. On modern hosts
this means tables are created as `utf8mb4`, so they can store 4-byte UTF-8 characters
like emoji in event context — previously a post title with an emoji could silently drop
the entire context row, leaving log entries like `Updated ""` with no user attribution.
The contexts table's `key` index is now a 191-char prefix index so it stays under
InnoDB's 767-byte limit on older row formats. Existing installs are unchanged by this
release; a follow-up will add an opt-in conversion path for older tables.
✅ New installs create history tables as `utf8mb4` (using `$wpdb->get_charset_collate()`),
so emoji and other 4-byte UTF-8 characters in event context are preserved instead of
silently dropping the entire context row. Existing installs are unchanged; an opt-in
conversion path for older tables will follow.
What was cut: WP core history ("since 4.2"), the broken-log example (Updated ""), and the InnoDB 767-byte index reasoning. What was kept: the user-visible effect (emoji preserved, context not dropped) and the scope note (existing installs unchanged, follow-up coming).
Don't write:
Use these standard categories from Keep a Changelog:
Features gated behind the experimental features setting use a consistent format that signals the gating and invites curiosity.
Format:
- 🧪 **Experimental** — Description of the feature, written like any other entry.
Rules:
🧪 **Experimental** — (test-tube emoji + bold label + em-dash + space).Preamble in Unreleased:
The Unreleased section starts with a one-line blockquote that explains what the marker means. This lives once at the top of Unreleased — don't duplicate it in older releases:
> 🧪 **Experimental** entries are gated behind the experimental features setting (Settings → Simple History → Experimental). Enable it to try them, then share feedback so we know what to ship for everyone.
Why this format:
Examples:
✅ 🧪 **Experimental** — Failed application password authentication on REST API and XML-RPC requests is now logged as a warning…
✅ 🧪 **Experimental** — "History" column on post and page list tables showing recent activity at a glance.
❌ "History" column on post and page list tables… (experimental) (trailing tag — old format)
❌ "History" column on post and page list tables… Requires experimental features to be enabled. (boilerplate phrase — superseded by the 🧪 prefix)
❌ 🧪 History column… (missing **Experimental** label)
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.
✅ 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
readme.txt (project root)## Changelog → ### Unreleased## Changelog