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>
This commit is contained in:
2026-05-25 09:13:51 +01:00
parent 5c8f1716a3
commit 875ff6c25a
7 changed files with 73 additions and 35 deletions
+35 -1
View File
@@ -1,6 +1,6 @@
# Changelog # Changelog
All notable changes to **WP Logbook** (formerly **A-WP-Notes** through v3.1.0) are documented here. All notable changes to **Logbook** (formerly **A-WP-Notes** through v3.1.0, then **WP Logbook** in v3.2.0v3.3.0) are documented here.
Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/) — versioning: [SemVer](https://semver.org/). Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/) — versioning: [SemVer](https://semver.org/).
--- ---
@@ -9,6 +9,40 @@ Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/) — versi
--- ---
## [3.3.1] — 2026-05-25
**Naming: dropped the `WP` prefix. The 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 a rename during submission review. Dropping it now
makes the name cleaner *and* sidesteps that future hurdle if/when
the plugin lands on the marketplace.
### Changed
- All user-facing brand mentions: `WP Logbook``Logbook` across
plugin header, admin menu, admin bar, dashboard widget, settings
H1, main page H1, About page intro, About page card heading,
feedback email subjects/body, error_log prefix, updater panel
copy, and styles docblock.
- About page version-history card gets a new top entry for v3.3.1
with the green "latest" pill; v3.3.0 demoted to the previous slot.
- CHANGELOG header line updated to track the full naming lineage:
*A-WP-Notes (≤v3.1.0) → WP Logbook (v3.2.0v3.3.0) → Logbook
(v3.3.1+)*.
### Notably NOT changed
- Historical CHANGELOG entries for v3.2.0 (the original "WP
Logbook" rebrand) still say "WP Logbook" — that was the correct
name at the time and rewriting it would be revisionist.
- Same zero-migration commitment as the v3.2.0 rebrand: internal
function names, constants, DB option keys, user_meta keys, file
paths, plugin slug, and text domain all unchanged. Pure
user-facing string change.
---
## [3.3.0] — 2026-05-25 ## [3.3.0] — 2026-05-25
**New feature: self-hosted update checker.** WP Logbook is hosted on **New feature: self-hosted update checker.** WP Logbook is hosted on
+2 -2
View File
@@ -40,10 +40,10 @@ function wp_notes_admin_bar_menu($wp_admin_bar) {
$notes = get_option('wp_notes', array()); $notes = get_option('wp_notes', array());
$count = count($notes); $count = count($notes);
// Main WP Logbook menu item // Main Logbook menu item
$wp_admin_bar->add_node(array( $wp_admin_bar->add_node(array(
'id' => 'wp-notes', 'id' => 'wp-notes',
'title' => sprintf('WP Logbook <span class="count">%d</span>', $count), 'title' => sprintf('Logbook <span class="count">%d</span>', $count),
'href' => admin_url('admin.php?page=wp-notes'), 'href' => admin_url('admin.php?page=wp-notes'),
)); ));
+12 -8
View File
@@ -2,7 +2,7 @@
// wp-notes-about.php // wp-notes-about.php
/** /**
* Function to display the "About" page for WP Logbook plugin. * Function to display the "About" page for Logbook plugin.
*/ */
function wp_notes_about_page() { function wp_notes_about_page() {
?> ?>
@@ -53,11 +53,11 @@ function wp_notes_about_page() {
<div class="wp-notes-about-intro"> <div class="wp-notes-about-intro">
<div class="wp-notes-about-intro__img"> <div class="wp-notes-about-intro__img">
<img src="<?php echo esc_url(WP_NOTES_URL); ?>assets/wp-notes-banner.jpg" <img src="<?php echo esc_url(WP_NOTES_URL); ?>assets/wp-notes-banner.jpg"
alt="WP Logbook banner"> alt="Logbook banner">
</div> </div>
<div class="wp-notes-about-intro__body"> <div class="wp-notes-about-intro__body">
<h2>WP Logbook <span style="color:#646970; font-weight:400;">v<?php echo esc_html(WP_NOTES_VERSION); ?></span></h2> <h2>Logbook <span style="color:#646970; font-weight:400;">v<?php echo esc_html(WP_NOTES_VERSION); ?></span></h2>
<p>WP Logbook is a lightweight task &amp; logbook plugin for WordPress. Log your daily work, mark tasks as done, and keep a tidy record right inside the dashboard &mdash; perfect for freelancers showing clients what's been delivered.</p> <p>Logbook is a lightweight task &amp; logbook plugin for WordPress. Log your daily work, mark tasks as done, and keep a tidy record right inside the dashboard &mdash; perfect for freelancers showing clients what's been delivered.</p>
<p style="margin-bottom:0;"> <p style="margin-bottom:0;">
<a href="<?php echo esc_url(admin_url('admin.php?page=wp-notes')); ?>" class="button button-primary">Go to My Log →</a> <a href="<?php echo esc_url(admin_url('admin.php?page=wp-notes')); ?>" class="button button-primary">Go to My Log →</a>
</p> </p>
@@ -101,10 +101,10 @@ function wp_notes_about_page() {
} }
</style> </style>
<!-- What WP Logbook does --> <!-- What Logbook does -->
<div class="wp-notes-about-card"> <div class="wp-notes-about-card">
<h2>What WP Logbook does</h2> <h2>What Logbook does</h2>
<p>WP Logbook is a lightweight task &amp; logbook plugin that lives entirely inside the WordPress admin. Type a note, format it with colour / size / font / emoji, mark it done when the work is finished, restore it later if you need to revisit. Everything is stored in the site's own database &mdash; nothing leaves your server.</p> <p>Logbook is a lightweight task &amp; logbook plugin that lives entirely inside the WordPress admin. Type a note, format it with colour / size / font / emoji, mark it done when the work is finished, restore it later if you need to revisit. Everything is stored in the site's own database &mdash; nothing leaves your server.</p>
<p>I built it for my own client work as a transparent &ldquo;here's what I did this week&rdquo; logbook, so customers can see clearly what they're paying for. It turned out to be just as useful for any small team or single user who wants notes attached to the WordPress dashboard rather than a separate app.</p> <p>I built it for my own client work as a transparent &ldquo;here's what I did this week&rdquo; logbook, so customers can see clearly what they're paying for. It turned out to be just as useful for any small team or single user who wants notes attached to the WordPress dashboard rather than a separate app.</p>
</div> </div>
@@ -125,7 +125,11 @@ function wp_notes_about_page() {
<h2>Version history</h2> <h2>Version history</h2>
<ul> <ul>
<li> <li>
<span class="ver">v3.3.0</span> &mdash; 25 May 2026 <span class="latest">latest</span><br> <span class="ver">v3.3.1</span> &mdash; 25 May 2026 <span class="latest">latest</span><br>
Dropped the <code>WP</code> prefix &mdash; the plugin is now just <strong>Logbook</strong>. Cleaner name, also clears a potential WordPress.org trademark-policy hurdle if/when the plugin ever lands on the marketplace.
</li>
<li>
<span class="ver">v3.3.0</span> &mdash; 25 May 2026<br>
Self-hosted update checker. Settings &rarr; Updates panel polls the Gitea repo via its JSON API, compares against the running version, and shows a download link when a new release is tagged. Includes &ldquo;View on Gitea&rdquo; and &ldquo;View all releases&rdquo; quick links. No auto-install &mdash; manual download keeps things safe. Self-hosted update checker. Settings &rarr; Updates panel polls the Gitea repo via its JSON API, compares against the running version, and shows a download link when a new release is tagged. Includes &ldquo;View on Gitea&rdquo; and &ldquo;View all releases&rdquo; quick links. No auto-install &mdash; manual download keeps things safe.
</li> </li>
<li> <li>
+3 -3
View File
@@ -1,6 +1,6 @@
<?php <?php
/** /**
* Feedback Form for WP Logbook Plugin * Feedback Form for Logbook Plugin
* *
* This file contains the HTML and AJAX handling for the feedback form. * This file contains the HTML and AJAX handling for the feedback form.
*/ */
@@ -95,7 +95,7 @@ function wp_notes_submit_feedback() {
// Example: Send feedback via email // Example: Send feedback via email
$to = 'david@icanhelp.ie'; $to = 'david@icanhelp.ie';
$subject = 'WP Logbook Feedback'; $subject = 'Logbook Feedback';
$body = "Name: $name\nEmail: $email\nMessage: $message"; $body = "Name: $name\nEmail: $email\nMessage: $message";
$headers = array('Content-Type: text/plain; charset=UTF-8'); $headers = array('Content-Type: text/plain; charset=UTF-8');
@@ -148,7 +148,7 @@ function wp_notes_submit_help() {
// Example: Send help request via email // Example: Send help request via email
$to = 'david@icanhelp.ie'; $to = 'david@icanhelp.ie';
$subject = 'WP Logbook Help Request'; $subject = 'Logbook Help Request';
$body = "Name: $name\nEmail: $email\nMessage: $message"; $body = "Name: $name\nEmail: $email\nMessage: $message";
$headers = array('Content-Type: text/plain; charset=UTF-8'); $headers = array('Content-Type: text/plain; charset=UTF-8');
+1 -1
View File
@@ -6,7 +6,7 @@ if (!defined('ABSPATH')) {
} }
/** /**
* Add required styles for WP Logbook * Add required styles for Logbook
*/ */
function wp_notes_admin_styles() { function wp_notes_admin_styles() {
?> ?>
+2 -2
View File
@@ -1,6 +1,6 @@
<?php <?php
/** /**
* WP Logbook — self-hosted update checker against the Gitea repo. * Logbook — self-hosted update checker against the Gitea repo.
* *
* Polls the Gitea Releases API for the latest tagged release and * Polls the Gitea Releases API for the latest tagged release and
* compares its tag (e.g. "v3.3.0") against WP_NOTES_VERSION. * compares its tag (e.g. "v3.3.0") against WP_NOTES_VERSION.
@@ -180,7 +180,7 @@ function wp_notes_render_updates_panel() {
<div class="wp-notes-updates" style="max-width:720px; margin-top:24px; padding:18px 20px; background:#fff; border:1px solid #ccd0d4; border-radius:4px;"> <div class="wp-notes-updates" style="max-width:720px; margin-top:24px; padding:18px 20px; background:#fff; border:1px solid #ccd0d4; border-radius:4px;">
<h2 style="margin-top:0;">Updates</h2> <h2 style="margin-top:0;">Updates</h2>
<p style="margin:0 0 12px;"> <p style="margin:0 0 12px;">
WP Logbook is self-hosted on Gitea. Click <strong>Check now</strong> to ask the repo whether there's a newer release than the one you're running. Logbook is self-hosted on Gitea. Click <strong>Check now</strong> to ask the repo whether there's a newer release than the one you're running.
</p> </p>
<p id="wp-notes-update-status" style="margin:0 0 12px;"> <p id="wp-notes-update-status" style="margin:0 0 12px;">
+18 -18
View File
@@ -1,11 +1,11 @@
<?php <?php
/** /**
* WP Logbook — WordPress work-logbook plugin * Logbook — WordPress work-logbook plugin
* *
* Plugin Name: WP Logbook * Plugin Name: Logbook
* Plugin URI: https://icanhelp.ie/wp-notes * Plugin URI: https://icanhelp.ie/wp-notes
* Description: A lightweight task &amp; logbook plugin for WordPress. Log your daily work, mark tasks done, and keep a tidy record inside the dashboard. Perfect for freelancers showing clients what's been delivered and students proving work to teachers. * Description: A lightweight task &amp; logbook plugin for WordPress. Log your daily work, mark tasks done, and keep a tidy record inside the dashboard. Perfect for freelancers showing clients what's been delivered and students proving work to teachers.
* Version: 3.3.0 * Version: 3.3.1
* Requires at least: 5.0 * Requires at least: 5.0
* Requires PHP: 7.2 * Requires PHP: 7.2
* Author: IR240474 * Author: IR240474
@@ -33,7 +33,7 @@ if (!isset($wp_notes_init)) {
$wp_notes_init = true; $wp_notes_init = true;
// Plugin Constants // Plugin Constants
if (!defined('WP_NOTES_VERSION')) define('WP_NOTES_VERSION', '3.3.0'); if (!defined('WP_NOTES_VERSION')) define('WP_NOTES_VERSION', '3.3.1');
if (!defined('WP_NOTES_FILE')) define('WP_NOTES_FILE', __FILE__); if (!defined('WP_NOTES_FILE')) define('WP_NOTES_FILE', __FILE__);
if (!defined('WP_NOTES_PATH')) define('WP_NOTES_PATH', plugin_dir_path(__FILE__)); if (!defined('WP_NOTES_PATH')) define('WP_NOTES_PATH', plugin_dir_path(__FILE__));
if (!defined('WP_NOTES_URL')) define('WP_NOTES_URL', plugin_dir_url(__FILE__)); if (!defined('WP_NOTES_URL')) define('WP_NOTES_URL', plugin_dir_url(__FILE__));
@@ -44,7 +44,7 @@ if (!isset($wp_notes_init)) {
if (!function_exists('wp_notes_log_error')) { if (!function_exists('wp_notes_log_error')) {
function wp_notes_log_error($message) { function wp_notes_log_error($message) {
if (defined('WP_DEBUG') && WP_DEBUG === true) { if (defined('WP_DEBUG') && WP_DEBUG === true) {
error_log('[WP Logbook] ' . $message); error_log('[Logbook] ' . $message);
} }
} }
} }
@@ -169,8 +169,8 @@ if (defined('WP_NOTES_PATH')) {
// Admin Menu // Admin Menu
function wp_notes_admin_menu() { function wp_notes_admin_menu() {
add_menu_page( add_menu_page(
'WP Logbook', 'Logbook',
'WP Logbook', 'Logbook',
'manage_options', 'manage_options',
'wp-notes', 'wp-notes',
'wp_notes_page_callback', 'wp_notes_page_callback',
@@ -179,7 +179,7 @@ function wp_notes_admin_menu() {
); );
// "My Log" — the main landing submenu. Same slug as the parent // "My Log" — the main landing submenu. Same slug as the parent
// menu so clicking either WP Logbook or My Log lands on the same // menu so clicking either Logbook or My Log lands on the same
// central dashboard (the parent's wp_notes_page_callback already // central dashboard (the parent's wp_notes_page_callback already
// renders form + active list + completed list). // renders form + active list + completed list).
// //
@@ -218,7 +218,7 @@ function wp_notes_admin_menu() {
'wp_notes_import_export_page' 'wp_notes_import_export_page'
); );
// About submenu — the WP Logbook brand is already carried by the // About submenu — the Logbook brand is already carried by the
// parent menu, so the submenu can be plain-spoken. // parent menu, so the submenu can be plain-spoken.
add_submenu_page( add_submenu_page(
'wp-notes', 'wp-notes',
@@ -291,7 +291,7 @@ function wp_notes_settings_page() {
settings_errors('wp_notes_settings'); settings_errors('wp_notes_settings');
?> ?>
<div class="wrap"> <div class="wrap">
<h1>WP Logbook Settings</h1> <h1>Logbook Settings</h1>
<form method="post" action="options.php"> <form method="post" action="options.php">
<?php <?php
settings_fields('wp_notes_settings'); settings_fields('wp_notes_settings');
@@ -313,7 +313,7 @@ function wp_notes_settings_page() {
// Settings section callback // Settings section callback
function wp_notes_section_callback() { function wp_notes_section_callback() {
echo '<p>Configure default settings for WP Logbook.</p>'; echo '<p>Configure default settings for Logbook.</p>';
} }
// Font setting callback // Font setting callback
@@ -705,8 +705,8 @@ function wp_notes_ajax_submit_feedback() {
]; ];
$topics_pretty = array_map(function ($t) use ($topic_labels) { return $topic_labels[$t] ?? $t; }, $topics); $topics_pretty = array_map(function ($t) use ($topic_labels) { return $topic_labels[$t] ?? $t; }, $topics);
$subject = sprintf('[%s] WP Logbook feedback from %s', $site, $user->display_name ?: $user->user_login); $subject = sprintf('[%s] Logbook feedback from %s', $site, $user->display_name ?: $user->user_login);
$body = "Feedback received via WP Logbook → About page\n"; $body = "Feedback received via Logbook → About page\n";
$body .= str_repeat('-', 48) . "\n\n"; $body .= str_repeat('-', 48) . "\n\n";
$body .= 'From: ' . ($user->display_name ?: $user->user_login) . ' <' . $user->user_email . ">\n"; $body .= 'From: ' . ($user->display_name ?: $user->user_login) . ' <' . $user->user_email . ">\n";
$body .= 'Site: ' . home_url() . "\n"; $body .= 'Site: ' . home_url() . "\n";
@@ -820,7 +820,7 @@ function wp_notes_save_edit() {
} }
/** /**
* Main WP Logbook page — central hub for note management * Main Logbook page — central hub for note management
*/ */
function wp_notes_page_callback() { function wp_notes_page_callback() {
if (!current_user_can('edit_posts')) { if (!current_user_can('edit_posts')) {
@@ -840,7 +840,7 @@ function wp_notes_page_callback() {
?> ?>
<div class="wrap"> <div class="wrap">
<!-- Header Section with WordPress Admin Styling --> <!-- Header Section with WordPress Admin Styling -->
<h1 class="wp-heading-inline">WP Logbook</h1> <h1 class="wp-heading-inline">Logbook</h1>
<span class="page-title-action">v<?php echo esc_html(WP_NOTES_VERSION); ?></span> <span class="page-title-action">v<?php echo esc_html(WP_NOTES_VERSION); ?></span>
<hr class="wp-header-end"> <hr class="wp-header-end">
@@ -1396,7 +1396,7 @@ function wp_notes_dashboard_widget() {
function wp_notes_add_dashboard_widgets() { function wp_notes_add_dashboard_widgets() {
wp_add_dashboard_widget( wp_add_dashboard_widget(
'wp_notes_dashboard_widget', 'wp_notes_dashboard_widget',
'WP Logbook', 'Logbook',
'wp_notes_dashboard_widget' 'wp_notes_dashboard_widget'
); );
} }
@@ -1407,7 +1407,7 @@ function wp_notes_register_cpt() {
$labels = array( $labels = array(
'name' => __('Notes', 'a-wp-notes'), 'name' => __('Notes', 'a-wp-notes'),
'singular_name' => __('Note', 'a-wp-notes'), 'singular_name' => __('Note', 'a-wp-notes'),
'menu_name' => __('WP Logbook', 'a-wp-notes'), 'menu_name' => __('Logbook', 'a-wp-notes'),
'add_new' => __('Add New', 'a-wp-notes'), 'add_new' => __('Add New', 'a-wp-notes'),
'add_new_item' => __('Add New Note', 'a-wp-notes'), 'add_new_item' => __('Add New Note', 'a-wp-notes'),
'edit_item' => __('Edit Note', 'a-wp-notes'), 'edit_item' => __('Edit Note', 'a-wp-notes'),
@@ -1640,7 +1640,7 @@ function wp_notes_migration_notice() {
?> ?>
<div class="notice notice-info is-dismissible"> <div class="notice notice-info is-dismissible">
<p> <p>
<?php _e('WP Logbook needs to migrate your existing notes to the new storage system.', 'a-wp-notes'); ?> <?php _e('Logbook needs to migrate your existing notes to the new storage system.', 'a-wp-notes'); ?>
<a href="<?php echo esc_url(admin_url('admin.php?page=wp-notes-settings&action=migrate')); ?>" class="button button-primary"> <a href="<?php echo esc_url(admin_url('admin.php?page=wp-notes-settings&action=migrate')); ?>" class="button button-primary">
<?php _e('Start Migration', 'a-wp-notes'); ?> <?php _e('Start Migration', 'a-wp-notes'); ?>
</a> </a>