v3.3.2
16 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
1c93c82ef5 |
fix: update checker — fall back to /tags when no formal Gitea Release exists (v3.3.2)
The v3.3.0 update checker only queried Gitea's /releases/latest endpoint, which requires a formal Release object (created via the Gitea web UI with optional notes + zip assets attached). A plain "git tag v3.3.x && git push --tags" from the terminal does NOT create that Release object — so the checker kept returning "No releases tagged on the Gitea repo yet" even when tags existed. wp_notes_fetch_latest_release() now falls back to the /tags?limit=1 endpoint when /releases/latest returns 404 (or any non-200). It synthesises a release-like payload from the newest tag — tag_name, html_url pointing at the tag view, tag message as the body, empty assets[] so the existing download-URL logic falls through to Gitea's source-archive URL pattern (/archive/<tag>.zip). Net effect: the "Check now" button now finds the latest version whether David creates formal Gitea Releases OR just pushes tags with "git push --tags". No workflow change required. Discovered while diagnosing why "Check now" wasn't seeing today's v3.1.0/v3.2.0/v3.3.0/v3.3.1 tags (just pushed in this session) — the tags were there, the formal Release objects were not. KNOWN LIMITATION (not a bug — flagged) The Gitea repo ranger/a-wp-notes-v3 is currently private. Anonymous API requests get a 404 (Gitea's standard behaviour for private repos). The updater code is correct but can't actually reach the API on a private repo without authentication. Fix: change the repo visibility to public on Gitea — appropriate anyway for a GPL-licensed plugin headed for the WordPress.org marketplace. VERSION BUMP - wp-notes.php header 3.3.1 → 3.3.2 - WP_NOTES_VERSION constant 3.3.1 → 3.3.2 - About page version-history leads with v3.3.2; v3.3.1 demoted Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
3667b7a154 |
release: 3.3.0 → 3.3.1 — drop "WP" prefix, plugin is now just "Logbook"
David's call after a short discussion about WordPress.org marketplace considerations. WP.org's trademark policy historically discourages plugins implying official endorsement via a "WP" prefix and has been known to request rename during submission review. Dropping it now makes the name cleaner AND sidesteps that future hurdle if/when the plugin lands on the marketplace. CHANGES All user-facing brand mentions: WP Logbook → Logbook across: - Plugin header (Plugin Name + docblock) - Admin menu top-level - Admin sidebar submenu label still "My Log" (already prefix-free) - Admin bar count menu - Dashboard widget title - Settings page H1 - Main page H1 - About page intro card + "What Logbook does" card heading - Email feedback subject + body intro - Legacy feedback.php subject lines - error_log() prefix [WP Logbook] → [Logbook] - Updater panel description text - styles.php docblock VERSION - wp-notes.php header Version: 3.3.0 → 3.3.1 - WP_NOTES_VERSION constant: 3.3.0 → 3.3.1 - About page version-history card gets new top entry for v3.3.1 with green "latest" pill; v3.3.0 demoted to previous entry - CHANGELOG header line tracks the full naming lineage now: A-WP-Notes (≤v3.1.0) → WP Logbook (v3.2.0-v3.3.0) → Logbook (v3.3.1+) NOTABLY NOT CHANGED - Historical CHANGELOG entries for v3.2.0 still say "WP Logbook" — that was the correct name at the time, rewriting would be revisionist. - Same zero-migration commitment: internal function names, constants, DB option keys, user_meta keys, file paths, plugin slug 'wp-notes', and text domain 'a-wp-notes' all unchanged. - Pure user-facing string change. No data migration, no behaviour change. Existing installs see "Logbook" appear on next page refresh. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
5c8f1716a3 |
release: 3.2.0 → 3.3.0 — self-hosted update checker (Gitea API)
WP Logbook is hosted on the author's own Gitea instance (git.davidtkeane.com), not on WordPress.org, so WP's built-in update flow doesn't see new releases. This release adds a Settings → Updates panel that polls Gitea's Releases API and reports whether a newer version is available. CHANGES - inc/wp-notes-updater.php: full rewrite of the previous broken stub (it had a hard require on a non-existent vendor path and was never included from the main plugin file anyway). - wp_notes_fetch_latest_release() hits /api/v1/repos/<owner>/<repo>/releases/latest, parses, normalises. Prefers a .zip asset attached to the release; falls back to Gitea's source-archive zip URL. - wp_notes_update_status() compares against WP_NOTES_VERSION and returns 'available' | 'up-to-date' | 'unknown' (the last when no release has been tagged yet — graceful first-run UX since the repo currently has zero tags). - New AJAX endpoint wp_notes_check_updates, capability-gated (manage_options) + nonce-protected. Force-refreshes the cache. - Settings page now renders the Updates panel via wp_notes_render_updates_panel() — current status text, "Check now" button, View on Gitea / View all releases quick links, manual-install instructions, and a Download .zip button + View release notes link when an update is detected. - wp-notes.php require_once chain now includes the updater file. CACHING - Successful fetches: 12h site transient. - Negative responses (404 = no releases yet): 1h so a freshly- tagged release shows up quickly. INSTALLATION FLOW (intentionally manual) The panel does NOT auto-install. Manual path printed in the panel: download .zip → deactivate → upload via Plugins → Add New → Upload → reactivate. Notes live in wp_options so they survive the upgrade. ALSO IN 3.3.0 - Section heading rename carried from the previous unreleased block: "Add New Note" → "New Log Entry"; "Notes Todo List:" → "Log entries". Row-level "note" labels intentionally unchanged. VERSION BUMP - wp-notes.php header 3.2.0 → 3.3.0 - WP_NOTES_VERSION constant 3.2.0 → 3.3.0 - About page version history leads with v3.3.0 as latest, demotes v3.2.0 to previous entry NOTES FOR FUTURE-CLAUDE - Gitea repo currently has ZERO release tags. First run will show "No releases tagged on the Gitea repo yet." Tag v3.2.0 / v3.3.0 on Gitea and the checker will start reporting versions. - Repo coordinates live in three constants at the top of inc/wp-notes-updater.php (WP_NOTES_GITEA_HOST, _OWNER, _REPO). Override via define() in wp-config.php if the repo ever moves. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
eeaf8a0f87 |
ux: rename section headings on My Log page to match the logbook framing
The H1 says "WP Logbook" and the sidebar says "My Log" since the
v3.2.0 rebrand, but two section headings on the My Log page still
read "Add New Note" and "Notes Todo List:" — slightly jarring next
to the new identity.
CHANGES
- "Add New Note" (create form postbox) → "New Log Entry"
- "Notes Todo List:" (above active + completed lists) → "Log entries"
NOT CHANGED — intentionally
Row-level labels stay as "note" because that's the unit-of-work term
in the existing data model and the per-row UI:
- "Add Note" submit button
- "Mark as Done"
- "No active/completed notes found" empty-state notices
- Email subjects ("WP Logbook feedback…" stays, doesn't say note)
The headings are brand-y; the row-level strings are functional.
Different rename scope on purpose — minimises churn while still
making the page read consistently with its new name.
No version bump — too small to justify another release, lives in
[Unreleased] until the next phase bundles with it.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|
|
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>
|
||
|
|
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>
|
||
|
|
99475e80f2 |
release: 3.0.2 → 3.1.0
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 (commit |
||
|
|
3801cc283b |
refactor: remove Tools → My Notes shortcut, redirect legacy URL to main page
The "Tools → My Notes" admin menu shortcut routed to a separate bare-bones create form at ?page=wp-notes-create with no notes list, no styling, no parity with the main My Notes page. It was a third route to "create a note" duplicating the two that already work better: the proper WP Notes → My Notes sidebar entry, and the admin- bar "New Note" quick-jump that lands on the same page's form. CHANGES - Removed the wp_notes_add_tools_menu() registration (add_management_page + its admin_menu hook). - Deleted the wp_notes_create_page() function in full — the bare-bones renderer, no longer referenced anywhere. - Added wp_notes_redirect_legacy_create_page() on admin_init: anyone hitting the legacy ?page=wp-notes-create URL (stale bookmark, old email link, etc.) is wp_safe_redirect()-ed to ?page=wp-notes. No 404 / no "insufficient permissions" page for old links. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
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> |
||
|
|
c773a21c25 |
fix: stop the duplicate "Create a New WP Note" form rendering at the bottom of My Notes
WordPress registers BOTH the parent menu's callback AND a submenu's callback against the same page hook when they share a menu_slug, and runs both in registration order. The My Notes 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 being appended below the main page content — appearing as a duplicate "Create a New WP Note" form at the bottom of the My Notes page. The 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. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
3f881b01ca |
ux: remove 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 for users who expected one or the other to be the trigger. The button is gone. Clicking the input itself still opens the picker (the existing JS already wired both .emoji-picker-button and .emoji-input to the same click handler — the click handler now just targets .emoji-input). Keyboard navigation (Enter/Space to toggle, Escape to close) refocuses the input instead of the removed button. Orphaned .emoji-picker-button CSS rule deleted. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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>
|
||
|
|
05d8ad52ad |
fix: hide unused wp_note CPT from admin UI to stop "Add New Note" misroute
The plugin registered a wp_note CPT 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 WP
post editor — but the live plugin stores notes in wp_options
(get_option('wp_notes')), not as CPT posts. Anyone clicking that
submenu ended up writing to the wrong storage and their note never
appeared in the WP Notes list.
Fix: show_ui and show_in_menu set to false on the wp_note CPT, and
show_ui / show_admin_column / show_in_rest set to false on the
wp_note_category taxonomy. The CPT/taxonomy remain registered so the
wp_notes_migrate_to_cpt() helper can still call wp_insert_post() —
just no admin UI side-effects until the migration is completed and
the live storage swaps over.
Also adds CHANGELOG.md in Keep-a-Changelog format with the
[Unreleased] entry for this fix and a 3.0.2 baseline note for the
"trimmed from v1.1.5 feature-creep" lineage.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|
|
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. |