Commit Graph

9 Commits

Author SHA1 Message Date
ranger 0c20833fe5 release: 3.1.0 → 3.2.0 — rebrand A-WP-Notes → WP Logbook
The plugin's identity has shifted over the day's work — from a notes
pad to a work-logbook with time tracking, earnings, and a Wallet
tile on the v4 roadmap. "WP Notes" undersold what it had become and
collided semantically with WordPress's notes-as-memos connotation;
"WP Logbook" matches both the freelancer use case ("logbook for
clients") and the student use case ("logbook for teachers"), and
matches the exact word the plugin's own About-page intro had been
using all day.

USER-FACING CHANGES
- Plugin Name header: A-WP-Notes → WP Logbook
- Description header rewritten to reflect the work-logbook framing
- Admin menu top-level: WP Notes → WP Logbook
- Admin sidebar submenu: My Notes → My Log (matches new parent —
  reads cleanly as "WP Logbook → My Log")
- Admin bar count menu: WP Notes (N) → WP Logbook (N)
- Dashboard widget title: WP Notes → WP Logbook
- Settings page H1: WP Notes Settings → WP Logbook Settings
- Main page H1: WP Notes → WP Logbook
- About page: every brand mention updated; "Go to WP Notes →" CTA
  now reads "Go to My Log →" to match the new submenu
- About page version history now leads with v3.2.0 (this release)
  as latest, demotes v3.1.0 to the previous entry
- CPT menu_name label: WP Notes → WP Logbook (cosmetic only — CPT
  hidden from admin UI since the duplicate-form fix in v3.1.0)
- Migration notice text updated
- Email-feedback subject + body intro updated
- Legacy feedback.php subjects (WP Notes Feedback / Help Request)
  → WP Logbook variants
- error_log() prefix [WP Notes] → [WP Logbook]

ZERO-MIGRATION COMMITMENT — these stay unchanged
- All wp_notes_* function names
- All WP_NOTES_* constants
- All DB option keys (wp_notes, wp_done_notes, wp_notes_settings,
  wp_notes_migration_completed, wp_notes_version,
  wp_notes_dismissed_empty_active|completed)
- All user_meta keys
- Admin page slug 'wp-notes' (preserves bookmarks, admin-bar
  #new-note anchor, and the legacy ?page=wp-notes-create redirect)
- Plugin text domain 'a-wp-notes'
- File and directory names (wp-notes.php, inc/wp-notes-*.php,
  assets/wp-notes-banner.jpg)
- Gitea repo name (ranger/a-wp-notes-v3) — David can rename on the
  Gitea side separately if he wants

The rename is purely user-facing strings. Existing installs see the
new name appear after a plugin file refresh, with zero behaviour
change. No re-activation needed.

VERSION BUMP
- wp-notes.php header Version: 3.1.0 → 3.2.0
- WP_NOTES_VERSION constant: 3.1.0 → 3.2.0
- CHANGELOG: new [3.2.0] section that bundles the rename with the
  post-3.1.0 unreleased work (About-page rewrite, feedback form)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:28:50 +01:00
ranger bc7d6986a8 feat: Leave Feedback form — multi-select checkboxes + actually-working submit
The right-column "Leave Feedback" form on the About page has been
expanded from two radio buttons (user picked one of two) to seven
checkboxes (user can pick any), plus an optional message textarea.
The submit button — which previously called toggleSection() on
element IDs that never existed and did nothing — now AJAX-posts
to a new server-side handler that emails the site admin via
wp_mail().

FORM OPTIONS (checkboxes — multi-select)
- I have ideas to improve this plugin
- I need help with this plugin
- I found a bug
- I'd like to request a new feature
- I'd like to share my use case
- Just saying thanks
- Other

SUBMISSION FLOW
- Client-side: at least one checkbox OR a message is required; an
  inline hint shows otherwise.
- AJAX POST wp_notes_submit_feedback with topics[] + message + nonce.
- Server handler (manage_options capability + nonce checked)
  sanitizes input, allow-lists the seven topic keys, builds a
  plain-text email body (sender + site URL + plugin version +
  checked topics with pretty labels + message), and ships it to
  get_option('admin_email') via wp_mail() with Reply-To set to the
  submitting user.
- Inline success message replaces the form on success; inline error
  lets the user retry on failure.

The toggleSection() helper that the old broken handler used is kept
defined for now — it's no longer referenced anywhere on the About
page, so it's flagged in the changelog for a future Tier-2 removal
pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 08:13:52 +01:00
ranger 184a124315 ux: rewrite About page — readable cards, accurate version history
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>
2026-05-25 08:04:07 +01:00
ranger 35920fea07 feat: persist empty-state notice dismissal via user_meta
The "No active/completed notes found" notice was already dismissible
per-page-load (WP core's X button hides it), but pressing X only
cleared 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 closed it stays closed across page loads until the flag is
reset.

MECHANICS
- inc/wp-notes-display.php now checks get_user_meta(uid,
  'wp_notes_dismissed_empty_<type>') before rendering and skips the
  notice render entirely when set.
- New AJAX handler wp_ajax_wp_notes_dismiss_empty validates a nonce
  and the edit_posts capability, then writes the flag via
  update_user_meta(). type=active|completed; anything else 400s.
- 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) and fires the AJAX call. The visual hide is
  still WP core's job.
- 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. wp_delete_user removes them
automatically. A UI button to reset dismissed notices is not built
yet — flagged in the changelog as a future enhancement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 07:57:26 +01:00
ranger 71df974a93 ux: make the "No notes found" empty-state notice dismissible
The 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. Users had no way to
clear the empty-state message for the current view.

Audited every notice the plugin emits while I was in there — the
migration notice and the settings_errors() calls were already
correctly dismissible AND only fired in their intended state. The
empty-state notice was the only laggard. All four notice paths now
share the same contract: dismissible by the user, AND only rendered
when the underlying state warrants it.

Dismissal is per-page-load (WP core's default behavior — clicking X
hides the element for the current view only). Cross-page-load
persistence would need user_meta or a transient and isn't built
yet; flagged in the changelog for a future enhancement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 07:51:39 +01:00
ranger b34d2d8f70 ux: rename "Create WP Note" → "My Notes" and "About WP Notes" → "About"
The "Create WP Note" submenu was misleadingly narrow — that page is
the central dashboard (create form + active list + completed list +
edit + restore). Renamed to "My Notes" to match the WP-native
"Posts → All Posts" pattern and reflect that users land there for
everything, not just creation.

"About WP Notes" → "About": the WP Notes brand is already carried by
the parent menu, so the submenu can be plain-spoken.

CHANGES
- wp-notes.php: WP Notes submenu "Create WP Note" → "My Notes"
- wp-notes.php: Tools menu shortcut "Create WP Note" → "My Notes"
  (same target page)
- wp-notes.php: WP Notes submenu "About WP Notes" → "About"
- wp-notes.php: callback docblock updated to reflect new name
- inc/wp-notes-about.php: page H1 trimmed to match the Tier-1 style
  on the main page (h1 "About" + version chip + wp-header-end hr),
  replacing the previous "Welcome to WP Notes About Page v3.0.2"
- inc/wp-notes-about.php: removed a redundant nested
  <div id="header"> with display:none that was dead markup leftover
  from an older layout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 07:44:04 +01:00
ranger 868911dfa6 ux: move banner from Create-Note page to About page (side-by-side intro)
The banner image was the first thing under the page title on the
Create-Note page — taking significant vertical space before the user
saw the textarea. The Create-Note page is for *doing*, not for
*reading-about*.

CHANGES
- Banner removed from wp_notes_page_callback() — Create-Note page
  now opens straight into the form.
- Banner added to the top of the About page in a new side-by-side
  row: 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.
- The side-by-side block lives in its own .wp-notes-about-intro
  container so it doesn't tangle with the rest of the About page's
  pre-existing nested toggles (those are still on the Tier 2 list).
- .wp-notes-header-banner / .wp-notes-banner-img CSS removed from
  wp-notes-styles.php — no longer referenced anywhere.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 07:41:09 +01:00
ranger 930e605b2d ux: Tier 1 cleanup of wp_notes_page_callback — single H1, collapse triple welcome surfaces, footer support link
Single-pass UX cleanup of the main WP Notes admin page. Functionality
unchanged; the page is shorter, has one H1, and stops contradicting
itself.

CHANGES
- Single H1 on the page (was five different H1s).
- Welcome/about content collapsed from THREE on-page surfaces (top
  dismissible notice + nested toggle + Show/Close button row) to one
  single description line linking to the dedicated About page where
  the long copy already lives.
- Two duplicate "Toggle Welcome Section" buttons with the SAME label
  but different targets — both removed.
- Embedded "What's New v3.0.0" changelog block deleted: it was
  hard-coded to v3.0.0 while the plugin reports v3.0.2. The real
  history is in CHANGELOG.md.
- "Buy me a coffee" button moved from page header to page footer —
  promo shouldn't be the first thing under the page title.
- Invalid HTML cleaned up (li outside ul, p wrapping div/ul) by way
  of removing the welcome blob that contained it.
- Dead bulk-action UI removed: per-row checkboxes and "Select all"
  header in both wp_notes_display_notes() and wp_notes_list_table()
  rendered but nothing acted on the selection. Removed with inline
  comments marking the spot for when real bulk-actions land. Edit
  form colspan adjusted to match the new column count.
- ~80 lines of inline style+script for the about-box dismissal
  removed (localStorage tracking, show/hide handlers, two style
  blocks). WordPress's notice notice-info is-dismissible + user-meta
  is the right path if a banner needs to return.
- toggleSection() JS helper removed (no toggles remain).
- Small CSS additions to inc/wp-notes-styles.php for the header
  banner and footer-support link.

ALSO FIXED
- PHP 8.2 deprecation: ${size}px → {$size}px in the dashboard
  list-table render. ${var} interpolation is deprecated since 8.2
  and will hard-error in 9.0.

NET DIFF: wp-notes.php -213 lines, total -111 lines across 4 files
(plus a new CHANGELOG entry). Storage model unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 07:37:07 +01:00
ranger 433de27d9b chore: archive A-WP-Notes v3.0.2 — minimalist parallel fork
Imports the v3.0.2 line of A-WP-Notes as it existed on M5 at:
  Local Sites/wordpress/public/wp-content/plugins/a-wp-notes/

This is a deliberately minimal parallel fork of the plugin, distinct
from the v1.2.0 line in ranger/a-wp-notes. It carries only the core
note-taking functionality:

  wp-notes.php                       — plugin bootstrap + admin UI
  inc/wp-notes-display.php           — note rendering
  inc/wp-notes-about.php             — About page
  inc/wp-notes-feedback.php          — feedback module
  inc/wp-notes-styles.php            — style enqueues
  inc/wp-notes-updater.php           — self-hosted updater stub
  inc/admin-bar.php                  — admin bar integration
  js/wp-notes-feedback.js            — feedback front-end
  js/Chart.js                        — charting (bundled)
  assets/wp-notes-banner.jpg         — plugin banner

The AI ecosystem (chat, personalities, MCP), speed-test system, OS info
pages, and the bulk of the v1.2.0 / v2.0.x feature surface are
intentionally absent — this fork was created by copying the plugin to a
second WP install and trimming back to a lighter baseline.

Archived for comparison and parallel-line testing. No further development
is planned on this line; the active line continues at v1.2.0 in
ranger/a-wp-notes.
2026-05-22 16:43:03 +01:00