# 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] ### 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_')` 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: `

About

` + 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 `