99475e80f2
A single-day UX polish + bug-fix release. Nine prior commits worth of work culminating today: - Hidden phantom wp_note CPT submenus that misrouted Add New Note to the standard WP post editor (commit05d8ad5). - Tier 1 page-callback cleanup: single H1, collapsed triple about/welcome surfaces, removed duplicate Toggle Welcome buttons, deleted lying v3.0.0 embedded changelog, moved Buy-Me-A-Coffee header → footer, removed dead bulk-action checkboxes, PHP 8.2 ${size}px → {$size}px deprecation (commit930e605). - Banner moved from My Notes page top to About page as a 320px-wide side-by-side intro row (commit868911d). - Menu rename: "Create WP Note" → "My Notes", "About WP Notes" → "About"; About page H1 trimmed to match Tier 1 style (commitb34d2d8). - Removed the duplicate smiley-face button beside the emoji input (commit3f881b0). - Made the "No notes found" empty-state notice dismissible (commit71df974). - Fixed the duplicate "Create a New WP Note" form rendering at the bottom of the My Notes page — root cause was WP firing both parent and submenu callbacks for the shared menu_slug (commitc773a21). - Added persistent per-user dismissal of the empty-state notice via user_meta + AJAX, so closing it stays closed across page reloads (commit35920fe). - Removed the Tools → My Notes shortcut and added a backward- compatible redirect for stale ?page=wp-notes-create bookmarks (commit3801cc2). Bump: - wp-notes.php header Version: 3.0.2 → 3.1.0 - WP_NOTES_VERSION constant 3.0.2 → 3.1.0 - CHANGELOG [Unreleased] block moved under [3.1.0] - 2026-05-25 No data migration required. Storage model unchanged (wp_options). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
278 lines
13 KiB
Markdown
278 lines
13 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to **A-WP-Notes** are documented here.
|
|
Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/) — versioning: [SemVer](https://semver.org/).
|
|
|
|
---
|
|
|
|
## [Unreleased]
|
|
|
|
---
|
|
|
|
## [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:
|
|
|
|
1. **WP Notes → My Notes** in the admin sidebar (the proper page —
|
|
styled form + active/completed lists + edit + restore).
|
|
2. **Admin bar → WP Notes → New Note** quick-access (jumps to the
|
|
form on the main page via `#new-note` anchor).
|
|
|
|
**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 (the `add_management_page`
|
|
call and its `add_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.php` checks
|
|
`get_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 in `wp-notes.php`)
|
|
validates a nonce + `edit_posts` capability, then writes the flag
|
|
via `update_user_meta()`. Accepts `type` of `active` or
|
|
`completed`; 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-type` and a fresh
|
|
per-render `data-wp-notes-nonce` for 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 Posts` pattern.
|
|
- **"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. Same
|
|
`wp-heading-inline` + `page-title-action` + `wp-header-end` recipe.
|
|
- Removed a redundant nested `<div id="header">` with `display: none`
|
|
on 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-intro` block so
|
|
it doesn't interact with the rest of the About page's nested
|
|
toggles.
|
|
- **`.wp-notes-header-banner` / `.wp-notes-banner-img` CSS removed**
|
|
from `wp-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: just
|
|
`WP Notes` with 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.md` now.
|
|
- **"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()` and
|
|
`wp_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 own `notice notice-info is-dismissible` and 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}px` in 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 renders `wp_notes_about_page()` from
|
|
`inc/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_options`
|
|
under `wp_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_note` custom post type with
|
|
`show_ui => true` and `show_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 to
|
|
`post-new.php?post_type=wp_note` — the standard WordPress post
|
|
editor — but the live plugin stores notes in `wp_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_ui` and `show_in_menu` to `false` on the
|
|
`wp_note` CPT, and `show_ui` / `show_admin_column` /
|
|
`show_in_rest` to `false` on the `wp_note_category` taxonomy. The
|
|
CPT and taxonomy remain registered so `wp_notes_migrate_to_cpt()`
|
|
can still use `wp_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` (key `wp_notes`, with completed notes in
|
|
`wp_done_notes`). The CPT + meta storage is the *target* of an
|
|
unfinished migration; the helper `wp_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.
|