diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 2dc0f08..e601ad6 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -48,7 +48,7 @@ feature work (Phases 04 + 07) shipped in the 1.4.x line; both phase directories archived. Phases 05 (deferred) and 06 (sketch) remain active backlog. Future work is tracked against release versions rather than a GSD milestone label. -**Current release baseline (reconciled 2026-10-14):** `v1.11.0` (2026-10-14). +**Current release baseline (reconciled 2026-10-22):** `v1.12.0` (2026-10-22). Releases since the milestone was retired, all outside any GSD phase: - **1.4.2** (2026-06-21) — embedded-identifier resolution (Phase 07, PR #52) and @@ -83,6 +83,9 @@ Releases since the milestone was retired, all outside any GSD phase: - **1.11.0** (2026-10-14) — cited works nested in a JSON-LD `ItemList`, so link cards no longer credit a cited source as the post's author; 200-entry formatter requests. +- **1.12.0** (2026-10-22) — newsletters and feeds read correctly; particle names sort + per style; per-entry formatter cache; write abilities; Phases A–E of the + refactor memo (module split, shared style table, Psalm level 2, `checkJs`). `CHANGELOG.md` and the live WordPress.org plugin page are canonical for release contents; this note only anchors the roadmap to them. @@ -304,7 +307,7 @@ and executed through Implementation status: committed (`3d5d3de` "stabilize bibliography formatter workflows", `539b6b3` "address stabilization review notes") and shipped in the -1.3.x release line. The current public release baseline is now `v1.11.0`. +1.3.x release line. The current public release baseline is now `v1.12.0`. Completed Phase 2 outcomes: diff --git a/CHANGELOG.md b/CHANGELOG.md index e8fc182..8dc2c19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.12.0] - 2026-10-22 + ### Changed - **Faster formatting after an edit.** Adding, editing, or removing one citation in a long bibliography reformatted every entry on the server, since the formatter cached whole bibliographies. It now also remembers each formatted entry per style, so it formats only the entries that changed: about 5 ms instead of 65–105 ms for a 200-entry list. +- **Internals, for contributors.** No change to saved markup or output. The main plugin file is split into `includes/` modules (1,607 → about 800 lines), as are `includes/save-markup.php` and `src/lib/parser.js`; JS and PHP read one style table, `includes/styles.json`; Psalm runs at level 2 and `src/lib/` is type-checked with `checkJs` in CI; PHPCS checks PHP 7.4 compatibility; the runtime matrix runs the Abilities API. See `docs/planning/refactor-and-standards-memo.md`. ### Added diff --git a/README.md b/README.md index df64d9c..224ca09 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,7 @@ Editor-time PMID and formatting results are cached in the object cache and in sh ## Recent Release Highlights +- **1.12.0** — Bibliographies read correctly in newsletters and feeds (no blanket italics or broken Cite / Export panel); names with particles sort per style; no period after a "?" or "!" title; reformatting after an edit renders only the changed entries; opt-in write abilities (WordPress 6.9+) wrap the write routes. - **1.11.0** — Cited works are nested in one JSON-LD `ItemList`, so link previews such as Mastodon's no longer credit a cited source as the post's author (published posts are corrected as they render); bibliographies over 50 citations format again. - **1.10.0** — Imports library catalog numbers (OCLC, LCCN, Open Library edition IDs) and Internet Archive items and ARKs through Open Library and the Internet Archive; "Edit fields" works on every citation and saves only the fields you change; an optional Google Books API key (constant or filter) for the ISBN fallback; "Place: Publisher" and CJK author names parse correctly. - **1.9.1** — Pasted CSL-JSON (a reference manager's CSL JSON export) imports as citations; a quoted title, such as a Chicago web page, is no longer also italicized; the JSON-LD DOI link keeps its slash. diff --git a/bibliography-builder.php b/bibliography-builder.php index 315aaf9..060dcd0 100644 --- a/bibliography-builder.php +++ b/bibliography-builder.php @@ -3,7 +3,7 @@ * Plugin Name: Borges Bibliography Builder * Plugin URI: https://github.com/dknauss/Borges/ * Description: Create accessible bibliographies from DOI, PubMed, BibTeX, CSL-JSON, and free text; export RIS. - * Version: 1.11.0 + * Version: 1.12.0 * Requires at least: 6.4 * Tested up to: 7.1 * Requires PHP: 7.4 diff --git a/block.json b/block.json index 477f3fb..e352fdc 100644 --- a/block.json +++ b/block.json @@ -2,7 +2,7 @@ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 3, "name": "bibliography-builder/bibliography", - "version": "1.11.0", + "version": "1.12.0", "title": "Bibliography", "category": "text", "icon": "book-alt", diff --git a/package-lock.json b/package-lock.json index 2457c71..7c9c2d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "borges-bibliography-builder", - "version": "1.11.0", + "version": "1.12.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "borges-bibliography-builder", - "version": "1.11.0", + "version": "1.12.0", "license": "GPL-2.0-or-later", "dependencies": { "@citation-js/core": "0.7.18", diff --git a/package.json b/package.json index 684fca2..bff217e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "borges-bibliography-builder", - "version": "1.11.0", + "version": "1.12.0", "description": "A WordPress block plugin that creates accessible, structured bibliographies from DOI, PubMed, BibTeX, CSL-JSON, free text, and manual entries with RIS export.", "author": "Dan Knauss", "license": "GPL-2.0-or-later", diff --git a/readme.txt b/readme.txt index a8030fd..f599b7c 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Donate link: https://github.com/sponsors/dknauss Tags: bibliography, citation, doi, bibtex, academic Requires at least: 6.4 Tested up to: 7.1 -Stable tag: 1.11.0 +Stable tag: 1.12.0 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -193,6 +193,14 @@ OCLC numbers, LCCNs, and Open Library edition IDs connect through the plugin's a == Changelog == += 1.12.0 = +* **Added:** write abilities for AI agents and automation on WordPress 6.9+ (add, update, delete, and reorder citations; change a bibliography's settings or style). They exist only when a site turns on the write routes with the `bibliography_builder_enable_write_routes` filter, and follow the same rules: `edit_post` on the post and a preview unless asked to save. +* **Fixed:** bibliographies in newsletters and feeds. Posts sent by email (Jetpack and WordPress.com newsletters, MailPoet, WooCommerce, Newspack) or read in a feed reader no longer show every reference in italics or a broken Cite / Export panel. Posts saved earlier are cleaned up as they are sent, and switch to the new markup the next time they are saved. +* **Fixed:** names with particles ("van Duijnhoven", "de la Cruz") sort where each style puts them: under the surname proper in Chicago and Vancouver, under the particle in APA, MLA, Harvard, and the others. +* **Fixed:** no period after a quoted title that ends in "?" or "!" in Chicago and MLA. +* **Changed:** reformatting after an edit is much faster in long bibliographies: only the changed entries are formatted, about 5 ms instead of 65–105 ms for 200 entries. +* **Changed:** internal restructuring and stricter static analysis, with no change to saved markup or output. + = 1.11.0 = * **Fixed:** link cards no longer credit a cited source as the post's author. The JSON-LD listed cited works as top-level objects, and Mastodon takes the first top-level `WebPage` on a page to be the page itself, so a post citing a museum's collection page was shared "by Albertina". Cited works are now nested in one schema.org `ItemList`. Published posts are corrected as they are rendered, without being edited. * **Fixed:** bibliographies over 50 citations. The server formatter now takes up to 200 entries per request, matching the editor, instead of falling back to plain titles with a "Formatter unavailable" notice. @@ -370,6 +378,9 @@ The three changes below are hardening. None of them was exploitable; each was a == Upgrade Notice == += 1.12.0 = +Bibliographies read correctly in newsletters and feeds, names with particles sort per style, and reformatting after an edit is much faster. Adds opt-in write abilities for WordPress 6.9+. No configuration changes required. + = 1.11.0 = Stops link previews (Mastodon's, for one) from crediting a cited source as the post's author, and lets bibliographies over 50 citations format again. No configuration changes required.