diff --git a/CLOSED.md b/CLOSED.md deleted file mode 100644 index a7e9291..0000000 --- a/CLOSED.md +++ /dev/null @@ -1,54 +0,0 @@ -# CLOSED - -**This repository is archived and closed. Development continues in -[`Umbra-Bookshelf`](https://git.mini-eq/umbragit/Umbra-Bookshelf).** - -Closed: 2026-10-18 - ---- - -## Why - -This repository held three separate WordPress plugins — **BD Bookshelf**, -**BD BookShelfHelper** and **BD SimpleEmail** — that shipped the same product -surface under three different admin menus. They were consolidated into a single -plugin, **Umbra Bookshelf**, which now lives in its own repository. - -## What moved where - -| Was | Is now | -|---|---| -| `bd-bookshelf-plugin/` | `Umbra-Bookshelf/umbra-bookshelf/includes/books/` | -| `bd-bookshelfhelper/` | `Umbra-Bookshelf/umbra-bookshelf/includes/library/` | -| `bd-simpleemail/` | `Umbra-Bookshelf/umbra-bookshelf/includes/email/` | -| `SPEC_BD_Bookshelf_Plugin.txt` | `Umbra-Bookshelf/umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md` | -| `SPEC_BD_BookHelper_Plugin.txt` | `Umbra-Bookshelf/umbra-bookshelf/spec/archive/` | -| `bd-bookshelf/` (theme) | `Umbra-Bookshelf/theme/` — unchanged, still a separate artifact | - -The `v1.0.0` tag marks the final state of the consolidated plugin before the -repository was closed. - -## This repository is read-only - -No further commits will be made. The history is preserved for provenance — -including the original separate plugins, which are recoverable at the tags and -commits before `dec7329`. - -Do not install the individual plugins from here. They were never designed to run -together: they collide on the `bd_books` and `bd_series` tables, both register -an admin menu, and they attach duplicate handlers to the same AJAX actions and -cron hooks. See `Umbra-Bookshelf/umbra-bookshelf/docs/KNOWN-ISSUES.md`. - -## Upgrading an existing site - -Install **Umbra Bookshelf** from the new repository, then **deactivate** BD -Bookshelf, BD BookShelfHelper and BD SimpleEmail in WordPress. - -**Deactivate, do not delete.** Deleting a plugin runs its uninstall routine, -which drops your database tables and options. Umbra Bookshelf reads and writes -the same table names, option keys, post meta, cron hooks and shortcodes, so -existing data carries over untouched. - -The admin menu structure changed: three top-level menus became one -**Umbra Bookshelf** menu. The full submenu map is in -`Umbra-Bookshelf/umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md`. diff --git a/README.md b/README.md new file mode 100644 index 0000000..de2d4d3 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# Umbra Bookshelf + +The WordPress book-management solution for authors and publishers. + +Umbra Bookshelf began as three separate plugins — **BD Bookshelf**, +**BD BookShelfHelper** and **BD SimpleEmail** — and is now a single consolidated +plugin. This repository continues the history of the original +[Bookshelf](https://git.mini-eq/umbragit/Bookshelf) repository, which is now +closed and archived. + +## Repository layout + +| Path | What it is | +|---|---| +| `umbra-bookshelf/` | **The plugin.** Books, library and email modules. Start at [`umbra-bookshelf/readme.txt`](umbra-bookshelf/readme.txt). | +| `theme/` | The `bd-bookshelf` WordPress theme. A separate artifact, deliberately **not** renamed in the consolidation. | +| `archive/pre-umbra-releases/` | Release zips of the three pre-merge plugins. Superseded — do not install. | +| `Old/` | Earlier plugin and theme snapshots, kept for reference. | +| `docs/`, mockups, images, `.docx`/`.zip` specs | Design material carried over from the original repository. | + +## Documentation + +* [`umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md`](umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md) + — the authoritative specification: identity, naming rules, architecture, + module responsibilities, admin menu map, lifecycle. +* [`umbra-bookshelf/docs/ARCHITECTURE.md`](umbra-bookshelf/docs/ARCHITECTURE.md) + — why the plugin is shaped this way. +* [`umbra-bookshelf/docs/KNOWN-ISSUES.md`](umbra-bookshelf/docs/KNOWN-ISSUES.md) + — defects carried over from the merge, including one deliberately deferred. +* [`umbra-bookshelf/spec/archive/`](umbra-bookshelf/spec/archive/) — pre-merge + specifications, retained for provenance only. + +## Development + +```bash +# static checks: syntax, duplicate classes, unresolved requires and assets, +# leftover old identifiers, preserved storage contracts +python3 umbra-bookshelf/tests/verify_structure.py + +# runtime boot against stubbed WordPress (each context needs its own process) +php umbra-bookshelf/tests/smoke_runtime.php front +php umbra-bookshelf/tests/smoke_runtime.php admin +``` + +## Upgrading from the old plugins + +Umbra Bookshelf uses the same database tables, option keys, post meta, cron +hooks and shortcodes as the three plugins it replaces, so existing data carries +over without migration. + +Install Umbra Bookshelf, then **deactivate** BD Bookshelf, BD BookShelfHelper +and BD SimpleEmail. Do not delete them — deleting runs their uninstall routines, +which drop your tables and options. + +## Status + +`v1.0.0` is the first consolidated release. The most important outstanding +problem is documented in +[`docs/KNOWN-ISSUES.md`](umbra-bookshelf/docs/KNOWN-ISSUES.md) §1: the books and +library modules still create `bd_books` and `bd_series` with two incompatible +schemas. This predates the consolidation — merging the plugins made it +unconditional, and resolving it requires a data migration. + +## Licence + +Apache-2.0 — see [`LICENSE`](LICENSE) and [`NOTICE`](NOTICE). diff --git a/bd-bookshelf.zip b/archive/pre-umbra-releases/bd-bookshelf.zip similarity index 100% rename from bd-bookshelf.zip rename to archive/pre-umbra-releases/bd-bookshelf.zip diff --git a/bd-bookshelf.zip.zip b/archive/pre-umbra-releases/bd-bookshelf.zip.zip similarity index 100% rename from bd-bookshelf.zip.zip rename to archive/pre-umbra-releases/bd-bookshelf.zip.zip diff --git a/bd-bookshelfhelper.zip b/archive/pre-umbra-releases/bd-bookshelfhelper.zip similarity index 100% rename from bd-bookshelfhelper.zip rename to archive/pre-umbra-releases/bd-bookshelfhelper.zip diff --git a/bd-simpleemail.zip b/archive/pre-umbra-releases/bd-simpleemail.zip similarity index 100% rename from bd-simpleemail.zip rename to archive/pre-umbra-releases/bd-simpleemail.zip diff --git a/bd-bookshelf/404.php b/theme/404.php similarity index 100% rename from bd-bookshelf/404.php rename to theme/404.php diff --git a/bd-bookshelf/archive-book.php b/theme/archive-book.php similarity index 100% rename from bd-bookshelf/archive-book.php rename to theme/archive-book.php diff --git a/bd-bookshelf/archive-series.php b/theme/archive-series.php similarity index 100% rename from bd-bookshelf/archive-series.php rename to theme/archive-series.php diff --git a/bd-bookshelf/archive.php b/theme/archive.php similarity index 100% rename from bd-bookshelf/archive.php rename to theme/archive.php diff --git a/bd-bookshelf/assets/css/admin-style.css b/theme/assets/css/admin-style.css similarity index 100% rename from bd-bookshelf/assets/css/admin-style.css rename to theme/assets/css/admin-style.css diff --git a/bd-bookshelf/assets/css/editor-style.css b/theme/assets/css/editor-style.css similarity index 100% rename from bd-bookshelf/assets/css/editor-style.css rename to theme/assets/css/editor-style.css diff --git a/bd-bookshelf/assets/css/style.css b/theme/assets/css/style.css similarity index 100% rename from bd-bookshelf/assets/css/style.css rename to theme/assets/css/style.css diff --git a/bd-bookshelf/assets/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 b/theme/assets/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 rename to theme/assets/fonts/S6u9w4BMUTPHh6UVSwaPGR_p.woff2 diff --git a/bd-bookshelf/assets/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 b/theme/assets/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 rename to theme/assets/fonts/S6u9w4BMUTPHh6UVSwiPGQ.woff2 diff --git a/bd-bookshelf/assets/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 b/theme/assets/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 rename to theme/assets/fonts/S6u9w4BMUTPHh7USSwaPGR_p.woff2 diff --git a/bd-bookshelf/assets/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 b/theme/assets/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 rename to theme/assets/fonts/S6u9w4BMUTPHh7USSwiPGQ.woff2 diff --git a/bd-bookshelf/assets/fonts/S6uyw4BMUTPHjx4wXg.woff2 b/theme/assets/fonts/S6uyw4BMUTPHjx4wXg.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/S6uyw4BMUTPHjx4wXg.woff2 rename to theme/assets/fonts/S6uyw4BMUTPHjx4wXg.woff2 diff --git a/bd-bookshelf/assets/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 b/theme/assets/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 rename to theme/assets/fonts/S6uyw4BMUTPHjxAwXjeu.woff2 diff --git a/bd-bookshelf/assets/fonts/fonts.css b/theme/assets/fonts/fonts.css similarity index 100% rename from bd-bookshelf/assets/fonts/fonts.css rename to theme/assets/fonts/fonts.css diff --git a/bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt7A-W2r.woff2 b/theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt7A-W2r.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt7A-W2r.woff2 rename to theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt7A-W2r.woff2 diff --git a/bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtHA-Q.woff2 b/theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtHA-Q.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtHA-Q.woff2 rename to theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtHA-Q.woff2 diff --git a/bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtXA-W2r.woff2 b/theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtXA-W2r.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtXA-W2r.woff2 rename to theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXtXA-W2r.woff2 diff --git a/bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt_A-W2r.woff2 b/theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt_A-W2r.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt_A-W2r.woff2 rename to theme/assets/fonts/nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_qiTXt_A-W2r.woff2 diff --git a/bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTLYgFE_.woff2 b/theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTLYgFE_.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTLYgFE_.woff2 rename to theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTLYgFE_.woff2 diff --git a/bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTPYgFE_.woff2 b/theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTPYgFE_.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTPYgFE_.woff2 rename to theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTPYgFE_.woff2 diff --git a/bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTjYgFE_.woff2 b/theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTjYgFE_.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTjYgFE_.woff2 rename to theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTjYgFE_.woff2 diff --git a/bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTzYgA.woff2 b/theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTzYgA.woff2 similarity index 100% rename from bd-bookshelf/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTzYgA.woff2 rename to theme/assets/fonts/nuFiD-vYSZviVYUb_rj3ij__anPXDTzYgA.woff2 diff --git a/bd-bookshelf/assets/images/Icon_Quill_BDMurphy_Black_WhtBG.jpg b/theme/assets/images/Icon_Quill_BDMurphy_Black_WhtBG.jpg similarity index 100% rename from bd-bookshelf/assets/images/Icon_Quill_BDMurphy_Black_WhtBG.jpg rename to theme/assets/images/Icon_Quill_BDMurphy_Black_WhtBG.jpg diff --git a/bd-bookshelf/assets/images/banner.jpg b/theme/assets/images/banner.jpg similarity index 100% rename from bd-bookshelf/assets/images/banner.jpg rename to theme/assets/images/banner.jpg diff --git a/bd-bookshelf/assets/js/navigation.js b/theme/assets/js/navigation.js similarity index 100% rename from bd-bookshelf/assets/js/navigation.js rename to theme/assets/js/navigation.js diff --git a/bd-bookshelf/assets/js/social-share.js b/theme/assets/js/social-share.js similarity index 100% rename from bd-bookshelf/assets/js/social-share.js rename to theme/assets/js/social-share.js diff --git a/bd-bookshelf/comments.php b/theme/comments.php similarity index 100% rename from bd-bookshelf/comments.php rename to theme/comments.php diff --git a/bd-bookshelf/footer.php b/theme/footer.php similarity index 100% rename from bd-bookshelf/footer.php rename to theme/footer.php diff --git a/bd-bookshelf/front-page.php b/theme/front-page.php similarity index 100% rename from bd-bookshelf/front-page.php rename to theme/front-page.php diff --git a/bd-bookshelf/functions.php b/theme/functions.php similarity index 100% rename from bd-bookshelf/functions.php rename to theme/functions.php diff --git a/bd-bookshelf/header.php b/theme/header.php similarity index 100% rename from bd-bookshelf/header.php rename to theme/header.php diff --git a/bd-bookshelf/home.php b/theme/home.php similarity index 100% rename from bd-bookshelf/home.php rename to theme/home.php diff --git a/bd-bookshelf/inc/ajax-handlers.php b/theme/inc/ajax-handlers.php similarity index 100% rename from bd-bookshelf/inc/ajax-handlers.php rename to theme/inc/ajax-handlers.php diff --git a/bd-bookshelf/inc/book-api.php b/theme/inc/book-api.php similarity index 100% rename from bd-bookshelf/inc/book-api.php rename to theme/inc/book-api.php diff --git a/bd-bookshelf/inc/book-helpers.php b/theme/inc/book-helpers.php similarity index 100% rename from bd-bookshelf/inc/book-helpers.php rename to theme/inc/book-helpers.php diff --git a/bd-bookshelf/inc/customizer.php b/theme/inc/customizer.php similarity index 100% rename from bd-bookshelf/inc/customizer.php rename to theme/inc/customizer.php diff --git a/bd-bookshelf/inc/nav-menu.php b/theme/inc/nav-menu.php similarity index 100% rename from bd-bookshelf/inc/nav-menu.php rename to theme/inc/nav-menu.php diff --git a/bd-bookshelf/inc/setup.php b/theme/inc/setup.php similarity index 100% rename from bd-bookshelf/inc/setup.php rename to theme/inc/setup.php diff --git a/bd-bookshelf/inc/short-urls.php b/theme/inc/short-urls.php similarity index 100% rename from bd-bookshelf/inc/short-urls.php rename to theme/inc/short-urls.php diff --git a/bd-bookshelf/inc/template-tags.php b/theme/inc/template-tags.php similarity index 100% rename from bd-bookshelf/inc/template-tags.php rename to theme/inc/template-tags.php diff --git a/bd-bookshelf/inc/theme-admin.php b/theme/inc/theme-admin.php similarity index 100% rename from bd-bookshelf/inc/theme-admin.php rename to theme/inc/theme-admin.php diff --git a/bd-bookshelf/inc/theme-options.php b/theme/inc/theme-options.php similarity index 100% rename from bd-bookshelf/inc/theme-options.php rename to theme/inc/theme-options.php diff --git a/bd-bookshelf/inc/widgets.php b/theme/inc/widgets.php similarity index 100% rename from bd-bookshelf/inc/widgets.php rename to theme/inc/widgets.php diff --git a/bd-bookshelf/index.php b/theme/index.php similarity index 100% rename from bd-bookshelf/index.php rename to theme/index.php diff --git a/bd-bookshelf/page-about.php b/theme/page-about.php similarity index 100% rename from bd-bookshelf/page-about.php rename to theme/page-about.php diff --git a/bd-bookshelf/page-books.php b/theme/page-books.php similarity index 100% rename from bd-bookshelf/page-books.php rename to theme/page-books.php diff --git a/bd-bookshelf/page-contact.php b/theme/page-contact.php similarity index 100% rename from bd-bookshelf/page-contact.php rename to theme/page-contact.php diff --git a/bd-bookshelf/page-full-width.php b/theme/page-full-width.php similarity index 100% rename from bd-bookshelf/page-full-width.php rename to theme/page-full-width.php diff --git a/bd-bookshelf/page-no-sidebar.php b/theme/page-no-sidebar.php similarity index 100% rename from bd-bookshelf/page-no-sidebar.php rename to theme/page-no-sidebar.php diff --git a/bd-bookshelf/page-reviews.php b/theme/page-reviews.php similarity index 100% rename from bd-bookshelf/page-reviews.php rename to theme/page-reviews.php diff --git a/bd-bookshelf/page-signup.php b/theme/page-signup.php similarity index 100% rename from bd-bookshelf/page-signup.php rename to theme/page-signup.php diff --git a/bd-bookshelf/page-unsubscribe.php b/theme/page-unsubscribe.php similarity index 100% rename from bd-bookshelf/page-unsubscribe.php rename to theme/page-unsubscribe.php diff --git a/bd-bookshelf/page.php b/theme/page.php similarity index 100% rename from bd-bookshelf/page.php rename to theme/page.php diff --git a/bd-bookshelf/readme.txt b/theme/readme.txt similarity index 100% rename from bd-bookshelf/readme.txt rename to theme/readme.txt diff --git a/bd-bookshelf/resources.txt b/theme/resources.txt similarity index 100% rename from bd-bookshelf/resources.txt rename to theme/resources.txt diff --git a/bd-bookshelf/screenshot.jpg b/theme/screenshot.jpg similarity index 100% rename from bd-bookshelf/screenshot.jpg rename to theme/screenshot.jpg diff --git a/bd-bookshelf/search.php b/theme/search.php similarity index 100% rename from bd-bookshelf/search.php rename to theme/search.php diff --git a/bd-bookshelf/single-book.php b/theme/single-book.php similarity index 100% rename from bd-bookshelf/single-book.php rename to theme/single-book.php diff --git a/bd-bookshelf/style.css b/theme/style.css similarity index 100% rename from bd-bookshelf/style.css rename to theme/style.css diff --git a/bd-bookshelf/taxonomy-series.php b/theme/taxonomy-series.php similarity index 100% rename from bd-bookshelf/taxonomy-series.php rename to theme/taxonomy-series.php diff --git a/bd-bookshelf/template-parts/social-share.php b/theme/template-parts/social-share.php similarity index 100% rename from bd-bookshelf/template-parts/social-share.php rename to theme/template-parts/social-share.php diff --git a/umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md b/umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md index a345f3b..b967180 100644 --- a/umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md +++ b/umbra-bookshelf/spec/SPEC_Umbra_Bookshelf_Plugin.md @@ -73,7 +73,7 @@ post content. Renaming any of them silently orphans existing data. One legacy PHP class name is retained by design: `class-umbra-theme-compatibility.php` declares `Umbra_Theme_Compatibility` and then `class_alias('Umbra_Theme_Compatibility', 'BD_BookShelfHelper')` so the -unmodified `bd-bookshelf` theme's static `BD_BookShelfHelper::` calls keep working. +unmodified `theme/` (bd-bookshelf) theme's static `BD_BookShelfHelper::` calls keep working. ---