The About page had been showing "Version 2.0.3 (Current)" while the
plugin reports v3.1.0 — the on-page version log was years behind
the actual changelog. Both the About and Version History sections
were also hidden behind onclick=toggleSection() buttons by default,
which is anti-UX for a page users specifically navigate to in order
to READ content.
Rewrote the left column as three plain cards using the same visual
rhythm as the side-by-side intro row that landed earlier today:
1. What WP Notes does — two paragraphs of prose
2. Who it's for — clean bulleted list (dropped the "Teachers ←
Email Notifications" entry since that feature isn't implemented
in v3.x; the claim was misleading)
3. Version history — compact, accurate, latest-first summary:
v3.1.0 (latest, with "latest" pill) → v3.0.2 → v2.x → v2.0.0.
Plus a "View the full CHANGELOG.md →" link to the canonical
history on Gitea so the on-page summary stays small.
Also fixed:
- Removed redundant duplicate paragraphs ("WP Notes is a versatile
plugin that caters to a wide range of users" appeared twice in
two consecutive lines).
- Removed invalid HTML (bare <li> outside <ul>, <p> wrapping <li>).
- Removed a buried banner image + buried Buy-Me-A-Coffee that
were inside the hidden-by-default Version History toggle —
visible to no-one. Both already exist in better positions on
the page.
Added CSS classes for the new cards (.wp-notes-about-card,
.wp-notes-about-card--versions) including a green "latest" pill
on the current version and monospaced version labels in the
plugin's blue.
Right-column feedback box unchanged. toggleSection() helper kept
(still referenced by the feedback form's submit handler — its
broken behaviour is a separate Tier 2 problem).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
15 KiB
Changelog
All notable changes to A-WP-Notes are documented here. Format: Keep a Changelog 1.1.0 — versioning: SemVer.
[Unreleased]
Changed — About page rewritten (content + layout)
The About page (Settings → WP Notes → About) has been rewritten
from "wall of nested toggle boxes with outdated content" to
"readable cards with accurate content". The left column is now
three plain cards: What WP Notes does, Who it's for, and a
Version history that actually matches the current plugin
version.
What changed:
- Removed two
<button>onclick=toggleSection()</button>wrappers around the About and Version History sections. Users came to the About page to read content — hiding it behind a toggle was anti-UX. - "Version 2.0.3 (Current)" entry was lying — the plugin is now v3.1.0. Replaced the whole version section with a compact accurate summary (v3.1.0 → v3.0.2 → v2.x → v2.0.0) plus a prominent "View the full CHANGELOG.md →" link to the canonical history on Gitea so the on-page summary doesn't have to be exhaustive.
- Removed redundant duplicate paragraphs ("WP Notes is a versatile plugin that caters to a wide range of users" appeared twice in two lines).
- Removed invalid HTML — bare
<li>outside<ul>,<p>wrapping<li>. - Removed buried banner image + Buy-Me-A-Coffee that were inside the (hidden-by-default) Version History toggle, never seen by anyone. The banner already lives at the top of the page in the side-by-side intro row; the support link already lives in the right-column feedback card.
- Dropped the "Teachers want progress with Email Notifications" use-case — email notifications aren't implemented in v3.x so the claim was misleading.
- Added three CSS card classes (
.wp-notes-about-card,.wp-notes-about-card--versions) for visual rhythm with the intro row above, plus styling for the version entries (latest pill, monospace version labels).
The right-column feedback box is unchanged. toggleSection() is
also unchanged — still defined (no harm, used by the feedback
form's broken-since-forever submit handler which is its own
Tier 2 problem).
[3.1.0] — 2026-05-25
A single-day UX polish + bug-fix release. Nine commits worth of
work, focused on the main "My Notes" admin page: stripping out
years of layout debt, tightening the menu structure, removing
duplicates, and adding the per-user persistent dismissal of the
empty-state notice. No data migration required; storage model
unchanged (notes still live in wp_options).
Removed — Tools → My Notes shortcut (with backward-compatible redirect)
The "Tools → My Notes" admin menu shortcut has been removed. It
routed to a separate bare-bones form at ?page=wp-notes-create
rendered by wp_notes_create_page() — a stripped-down create form
with no notes list, no styling, and no parity with the main page.
The shortcut was a third route to "create a note" duplicating the two that already exist and work better:
- WP Notes → My Notes in the admin sidebar (the proper page — styled form + active/completed lists + edit + restore).
- Admin bar → WP Notes → New Note quick-access (jumps to the
form on the main page via
#new-noteanchor).
Backward-compat redirect: anyone hitting the legacy
?page=wp-notes-create URL (stale bookmark, old email link, etc.)
is now wp_safe_redirect()-ed to ?page=wp-notes via an
admin_init hook. No 404 / no "you do not have sufficient
permissions" page.
Code removed:
wp_notes_add_tools_menu()registration (theadd_management_pagecall and itsadd_action('admin_menu', ...)hook).wp_notes_create_page()function body in full — the bare-bones form renderer, no longer referenced anywhere.
Added — Persistent dismissal of the empty-state notice (user_meta)
The "No active/completed notes found" notice was already dismissible per-page-load, but pressing X only hid it for the current view — it returned on the next refresh. The dismissal is now persisted to user_meta per-user-per-list-type, so once you close it, it stays closed until you reset the flag.
Mechanics:
inc/wp-notes-display.phpchecksget_user_meta(uid, 'wp_notes_dismissed_empty_<type>')before rendering and skips the notice entirely when set.wp_ajax_wp_notes_dismiss_empty(new handler inwp-notes.php) validates a nonce +edit_postscapability, then writes the flag viaupdate_user_meta(). Acceptstypeofactiveorcompleted; rejects anything else.- An inline jQuery handler in
wp_notes_add_inline_scripts()listens for clicks on.wp-notes-empty .notice-dismiss(WP core's auto- injected X button), reads the data-attributes off the notice, and fires the AJAX call. WP core still handles the visual hide. - The notice element carries
data-wp-notes-empty-typeand a fresh per-renderdata-wp-notes-noncefor the round trip.
Reset: the flag is per-user-meta keyed
wp_notes_dismissed_empty_active /
wp_notes_dismissed_empty_completed. To make the notice reappear
for a user, an admin can clear those keys (or wp_delete_user
removes them automatically). A UI button to reset dismissed notices
is not built yet — flagged as a future enhancement if needed.
Fixed — Duplicate "Create a New WP Note" form at the bottom of My Notes
A second, bare-bones "Create a New WP Note" form was being
rendered at the bottom of the My Notes page, below the active
and completed lists. The form at the top (the proper Add New Note postbox with color/size/font/emoji controls) is the intended
one — the bottom one was a duplicate, redundant from a UX standpoint.
Root cause: WordPress registers BOTH the parent menu's callback
AND a submenu's callback against the same page hook when the two
share a menu_slug. When ?page=wp-notes is requested, both fire
in registration order. The submenu was passing wp_notes_create_page
as its callback (a separate bare-form renderer used by the
Tools-menu shortcut), so its output was getting appended below the
main page.
Fix: the My Notes submenu now passes an empty string as the
callback — the standard WP pattern when a submenu just relabels the
parent (same slug, same target page). Only the parent's
wp_notes_page_callback renders now. The wp_notes_create_page
function is unchanged and still serves the Tools → My Notes
shortcut at ?page=wp-notes-create.
Fixed — Empty-state notice ("No notes found") now dismissible
The "No active notes found" / "No completed notes found" inline
notice on the My Notes page rendered with class="notice notice-info"
but no is-dismissible modifier, so WordPress's core common.js
never attached an X close button to it. Users couldn't clear the
message for the current view. Adding is-dismissible is the only
change — WP core handles the X button render + click-to-hide
automatically. Dismissal is per-page-load (the message reappears on
next refresh if the list is still empty); persistence across
reloads would need user_meta tracking and isn't built yet.
Notice inventory after this fix — every notice the plugin emits is now both dismissible AND only fires in its intended state:
| Notice | Class | Fires when |
|---|---|---|
| "No active/completed notes found" | notice notice-info is-dismissible |
List is empty |
| Migration prompt | notice notice-info is-dismissible |
wp_notes_migration_completed option is unset |
| Settings save / import errors / import success | rendered by core settings_errors() (auto-dismissible since WP 4.2) |
Only on form submission events |
Changed — Removed duplicate smiley-face button on the emoji picker
The "Add emoji" formatting option rendered two clickable elements
stacked: the "Click to add emoji" text input AND a separate button
beside it with a smiley-face dashicon. Both opened the same dropdown
picker — visually duplicated and slightly confusing. The standalone
button has been removed; clicking the input itself still opens the
picker (the JS already wired both targets to the same handler).
Keyboard navigation (Enter/Space to toggle, Escape to close)
follows focus to the input instead of the now-gone button.
Orphaned .emoji-picker-button CSS rule deleted.
Changed — Menu labels: "Create WP Note" → "My Notes", "About WP Notes" → "About"
- "Create WP Note" submenu renamed to "My Notes" (both in the WP
Notes parent menu and the Tools → quick-access shortcut). The page
is the central dashboard — create form + active list + completed
list + edit + restore — so "Create" was misleadingly narrow.
"My Notes" matches the WP-native
Posts → All Postspattern. - "About WP Notes" submenu renamed to just "About". The WP Notes brand is already carried by the parent menu, so the submenu can be plain-spoken.
- About page H1 trimmed to match the Tier-1 style on the main
page:
<h1>About</h1>+ version chip instead of the old "Welcome to WP Notes About Page v3.0.2" mouthful. Samewp-heading-inline+page-title-action+wp-header-endrecipe. - Removed a redundant nested
<div id="header">withdisplay: noneon the About page — it was dead markup leftover from an older layout.
Changed — Banner moved to About page (side-by-side intro)
- Banner image removed from the Create-Note page. It was the first thing under the page title and took up significant vertical space before the user even saw the textarea. The Create-Note page is for doing, not for reading-about.
- Banner added to the top of the About page in a new
side-by-side row: banner image on the left (capped at 320px wide,
not full-bleed), and a short intro paragraph + "Go to WP Notes →"
CTA on the right. Stacks vertically on narrow screens via
flex-wrap. Lives inside its own.wp-notes-about-introblock so it doesn't interact with the rest of the About page's nested toggles. .wp-notes-header-banner/.wp-notes-banner-imgCSS removed fromwp-notes-styles.php— no longer used.
Changed — Tier 1 UX cleanup
Single pass through wp_notes_page_callback() to remove the layout
debt that had built up over previous releases. Functionality is
unchanged; the page is shorter, has one H1, and stops contradicting
itself.
- Single H1 on the page — was five (
Welcome to WP Notes,Welcome to WP Notes v3.0.2,About WP Notes,What WP Notes Offers,What's New in WP Notes v3.0.2). Now: justWP Noteswith the version chip alongside. Accessibility + SEO. - "Welcome / About" content collapsed from THREE on-page surfaces (a dismissible top notice + a nested toggle + a manual "Show Welcome Message" button) down to a single one-line description that links to the dedicated About page where the long copy already lives.
- Duplicate "Toggle Welcome Section" buttons removed. Both outer and inner toggle buttons had the same label but different targets — genuinely confusing. Both gone.
- "What's New v3.0.0" embedded changelog block removed. It was
hard-coded to v3.0.0 while the plugin reports v3.0.2 — the embed
was lying. The real history lives in
CHANGELOG.mdnow. - "Buy me a coffee" button moved from page header to page footer — promo content should not be the first thing under the page title. Now sits at the bottom of the notes lists, centred, where footer items belong.
- Invalid HTML cleaned up —
<li>tags outside<ul>,<p>tags wrapping<div>/<ul>. Was in the deleted welcome blob, so resolved by removal. - Dead bulk-action UI removed — both the per-row checkboxes and
the "Select all" header column in
wp_notes_display_notes()andwp_notes_list_table()were rendered but nothing acted on the selection. Removed both, with an inline comment marking the spot for when real bulk-actions get wired up. Edit-form colspan adjusted (6→4) to match the new column count. - Inline
<style>and<script>blocks for the dismissed about-box (~80 lines of localStorage-based dismiss tracking and show/hide logic) deleted along with the about-box itself — WordPress's ownnotice notice-info is-dismissibleand the user-meta dismissal API are the correct path if a banner needs to return. toggleSection()JS helper removed — no toggles remain on the page after the welcome-blob deletion.
Fixed (PHP 8.2 deprecation)
${size}px→{$size}pxin the dashboard list-table render.${var}string interpolation is deprecated in PHP 8.2 and will hard-error in PHP 9.
Notes
- The dedicated About page (
Settings → WP Notes → About WP Notes) is unchanged and still renderswp_notes_about_page()frominc/wp-notes-about.php. All the long welcome/about copy lives there — exactly where it belongs. - Banner image still renders, in its own bordered container at the top of the page. Moved out of the deleted nested toggle so it actually shows.
- Storage model is unchanged — notes still live in
wp_optionsunderwp_notes/wp_done_notes. The UX cleanup is purely presentational.
Fixed
-
"Add New Note" sidebar submenu opening the WordPress post editor. The plugin registered a
wp_notecustom post type withshow_ui => trueandshow_in_menu => 'wp-notes', which caused WordPress to auto-inject "All Notes" and "Add New" submenus under the WP Notes admin menu. The "Add New" submenu routed topost-new.php?post_type=wp_note— the standard WordPress post editor — but the live plugin stores notes inwp_options(get_option('wp_notes')), not as CPT posts. Saving in the post editor wrote to the wrong storage and the new note never appeared in the WP Notes list. Discovered 2026-05-25.Fixed by setting
show_uiandshow_in_menutofalseon thewp_noteCPT, andshow_ui/show_admin_column/show_in_resttofalseon thewp_note_categorytaxonomy. The CPT and taxonomy remain registered sowp_notes_migrate_to_cpt()can still usewp_insert_post()if/when the migration is run. The form on the actual WP Notes page (the one that POSTs to the same admin page) continues to work unchanged.
Notes
- The plugin currently uses two storage models: the active one is
wp_options(keywp_notes, with completed notes inwp_done_notes). The CPT + meta storage is the target of an unfinished migration; the helperwp_notes_migrate_to_cpt()is defined but unused by the live UI. Until that migration is completed, hiding the CPT from the admin UI prevents users from accidentally writing to the wrong store.
[3.0.2] — 2025-05-10 (last released version, baseline)
The v3 "without all the crap" release. Trimmed from the v1.1.5 feature-creep era which had bolted on:
- AI chat (multiple variants)
- AI personalities
- Journal mode
- Speedtest
- Tamagotchi (yes, really)
- Backup
- And more
v3 strips back to the essentials:
- Notes list (in
wp_options) - Create note form (color, size, font, emoji)
- Admin bar quick-access menu
- Settings page
- Import / Export
- About page
- Update checker
This baseline entry exists for historical context; future releases should keep adding entries above and remove this note once a real changelog history accrues.