=== Umbra Bookshelf === Contributors: umbratools Tags: books, series, isbn, authors, newsletter, publishing Requires at least: 6.0 Tested up to: 6.6 Requires PHP: 7.4 Stable tag: 1.1.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Complete book management for authors and publishers: catalogue and ISBN tracking, series, pen names, retail links, rating sync, GDPR consent, and newsletter delivery. == Description == Umbra Bookshelf is a single plugin covering the full book workflow. It consolidates three previously separate plugins: * **Books** (formerly BD Bookshelf) — the catalogue: ISBN/ASIN variants, author records, series, retail sites and per-format buy links, Goodreads and Amazon rating synchronisation, SEO rows, shortlink click tracking, GDPR consent banners, and CSV/post import. * **Library** (formerly BD BookShelfHelper) — the WordPress-native model: the `book` post type and `series` taxonomy, pen names, a focused data-entry screen, shortlinks, reviews and ratings, plus a migration screen. * **Email** (formerly BD SimpleEmail) — newsletter delivery: subscribers and newsletters, a `[bdm_signup]` shortcode, signup and unsubscribe handling via AJAX and `admin_post`, Gemini-assisted composition, and Gmail/SMTP sending. Everything now sits under a single **Umbra Bookshelf** admin menu. = Upgrading from the old plugins = Umbra Bookshelf reads and writes the same database tables, option keys, post meta, cron hooks and shortcodes as the three plugins it replaces. Install Umbra Bookshelf, then deactivate BD Bookshelf, BD BookShelfHelper and BD SimpleEmail. **Do not delete** them from the Plugins page first — deleting runs their uninstall routines, which drop your tables and options. If you ran BD BookShelfHelper, the first page load after upgrading reconciles your database automatically. The old table layout is kept aside as `wp_bd_books_legacy_library` and `wp_bd_series_legacy_library` so nothing is lost; you can drop those once you are satisfied the migration went well. The shortcodes `[bd-book]`, `[bd-books]` and `[bdm_signup]` are unchanged, so existing posts keep working. The admin menu locations have changed: see the specification in `spec/SPEC_Umbra_Bookshelf_Plugin.md` for the full menu map. == Frequently Asked Questions == = Do I need to migrate my books? = Usually no. Table names, option keys, post meta keys and shortcodes are deliberately unchanged; deactivate the old plugins rather than deleting them. The one exception is a site that ran BD BookShelfHelper: its `bd_books` and `bd_series` tables had a different layout, and those are reconciled automatically on upgrade, with the originals kept aside. = The admin menu looks different. = It is one menu now instead of three. The catalogue, library and email screens are all still present as submenus, and Settings is split into catalogue settings and library settings. = Where do ratings come from? = Goodreads, refreshed every 12 hours. Amazon ratings are not scraped. Amazon retail *links* still work as normal. = Are there known problems? = Yes — see `docs/KNOWN-ISSUES.md`, which is included with the plugin. == Changelog == = 1.1.0 = * Relicensed to GPLv2 or later for WordPress.org compatibility. The plugin headers previously said GPLv2 while the licence files said Apache-2.0. * The catalogue schema is now canonical for `bd_books` and `bd_series`. A site that ran BD BookShelfHelper is reconciled automatically, preserving book IDs, ratings and post links; the old tables are kept aside rather than dropped. * Goodreads is now the only rating source, with a single implementation and one 12-hour cron event. Duplicated Amazon rating scraping removed. * `Umbra_SEO` is now active, emitting meta, Open Graph, Twitter card and sitemap data for book detail pages. * Fixed a missing default cover image and a missing email admin script, both of which caused 404s. * Admin settings screen for ratings now notes that Goodreads is the only source. = 1.0.0 = * Initial release of the consolidated plugin. * Merged BD Bookshelf, BD BookShelfHelper and BD SimpleEmail into one plugin under a single admin menu. * Renamed plugin headers, text domains, classes, constants, asset handles and admin slugs to the Umbra Bookshelf identity. * Preserved all database tables, option keys, post meta, cron hooks, nonces and shortcodes, so existing installs need no migration. * Registered the top-level admin menu once instead of three times. * Fixed a duplicate-class fatal error between the catalogue's theme-compatibility shim and the library module's helper class. * Fixed duplicate AJAX handler, duplicate Settings submenu, and colliding asset handles across modules. * Added `spec/SPEC_Umbra_Bookshelf_Plugin.md`, `docs/KNOWN-ISSUES.md`, `docs/ARCHITECTURE.md`, and the `tests/` verification suite.