diff --git a/.planning/todos/pending/2026-06-23-test-reference-manager-exports.md b/.planning/todos/pending/2026-06-23-test-reference-manager-exports.md new file mode 100644 index 0000000..ac04013 --- /dev/null +++ b/.planning/todos/pending/2026-06-23-test-reference-manager-exports.md @@ -0,0 +1,49 @@ +--- +created: 2026-06-23T00:00:00Z +title: Test more reference-manager exports (Mendeley, Zotero, EndNote, etc.) +area: testing +files: + - /Users/danknauss/Developer/GitHub/wp-bibliography-block/src/lib/parser.js + - /Users/danknauss/Developer/GitHub/wp-bibliography-block/src/lib/free-text-parser.js + - /Users/danknauss/Developer/GitHub/wp-bibliography-block/docs/supported-input-style-matrix.md + - /Users/danknauss/Developer/GitHub/wp-bibliography-block/docs/qa-matrix-checklist.md + - /Users/danknauss/Developer/GitHub/wp-bibliography-block/docs/free-text-samples.md +--- + +## Problem + +Input parsing (DOI, PubMed/PMID, BibTeX, free text) is exercised mostly with +hand-authored or single-source samples. Real users will paste exports straight +out of reference managers — Mendeley, Zotero, EndNote, Papers, RefWorks, +JabRef, etc. — and each tool has its own quirks in how it emits BibTeX (entry +types, field naming, brace/escaping conventions, `month` formats, non-ASCII +handling, abstracts/keywords/file fields) and RIS. We don't yet have a +systematic test corpus of real exports, so we can't be confident the parser +handles them gracefully. + +## Solution + +Build a small corpus of real export files captured from the major reference +managers (start with Zotero and Mendeley, then EndNote/JabRef) covering common +record types: journal article, book, book chapter, conference paper, report, +webpage. Feed each through the parser and verify the resulting CSL-JSON and +rendered citations are correct (or degrade cleanly with a clear notice when a +field/format is unsupported). Capture findings in the supported-input-style +matrix and QA checklist, and add regression fixtures/tests for any +manager-specific quirks that currently break or silently drop data. + +Decision: RIS input is explicitly out of scope for now. Borges supports RIS as +an export format for citation-manager interoperability, but not as an import +format. Reference-manager testing should focus first on BibTeX, CSL-JSON, DOI, +PMID, and free-text export paths; revisit RIS import only as a separately scoped +feature. + +## Acceptance targets + +- A fixtures set of real (anonymized) exports from at least Zotero and Mendeley + across the common record types. +- Parser behavior verified for each; regression tests added for any quirk that + was mishandled. +- `docs/supported-input-style-matrix.md` and `docs/qa-matrix-checklist.md` + updated to reflect which reference-manager exports are supported. +- An explicit in/out-of-scope decision recorded for RIS. diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b6d51e..8c1158b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Stabilize numeric citation reorder E2E coverage against editor readiness races. +- Clarify that RIS is supported for export, not import. ## [1.4.1] - 2026-06-20 diff --git a/bibliography-builder.php b/bibliography-builder.php index f784704..080ef3f 100644 --- a/bibliography-builder.php +++ b/bibliography-builder.php @@ -2,7 +2,7 @@ /** * Plugin Name: Borges Bibliography Builder * Plugin URI: https://github.com/dknauss/Borges/ - * Description: Create accessible bibliographies from DOI, PubMed, BibTeX, RIS, CSL-JSON, and manual citations. + * Description: Create accessible bibliographies from DOI, PubMed, BibTeX, CSL-JSON, and free text; export RIS. * Version: 1.4.2 * Requires at least: 6.4 * Tested up to: 7.0 diff --git a/package.json b/package.json index 79320ea..f9c1025 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "borges-bibliography-builder", "version": "1.4.2", - "description": "A WordPress block plugin that creates accessible, structured bibliographies from DOI, PubMed, BibTeX, RIS, CSL-JSON, and manual citation entries.", + "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", "main": "build/index.js", diff --git a/readme.txt b/readme.txt index 5a67d55..b165682 100644 --- a/readme.txt +++ b/readme.txt @@ -9,13 +9,13 @@ Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html -Create accessible, structured bibliographies from DOI, PubMed, BibTeX, RIS, CSL-JSON, and manual citation entries. +Create accessible, structured bibliographies from DOI, PubMed, BibTeX, CSL-JSON, free text, and manual entries — with RIS export. == Description == Named for Jorge Luis Borges (1899–1986), the Argentine writer and librarian known for stories about infinite libraries, imaginary books, and labyrinths of knowledge, Borges Bibliography Builder brings order to scholarly references in WordPress. -The **Borges Bibliography Builder** transforms DOI(s), PubMed/PMID records, BibTeX, RIS, CSL-JSON, manual entries, and supported free-text citations into a semantically rich, deduplicated, auto-sorted reference list. +The **Borges Bibliography Builder** transforms DOI(s), PubMed/PMID records, BibTeX, CSL-JSON, manual entries, and supported free-text citations into a semantically rich, deduplicated, auto-sorted reference list with RIS export for citation managers. **One-click import.** Paste a DOI and Crossref resolves the metadata instantly. Paste a PubMed/PMID identifier and Borges resolves it through an authenticated WordPress REST proxy to NCBI/PMC citation metadata. Paste BibTeX or formatted citations for books, articles, chapters, webpages, reviews, and theses. @@ -40,7 +40,7 @@ The **Borges Bibliography Builder** transforms DOI(s), PubMed/PMID records, BibT 1. Upload the plugin files to `/wp-content/plugins/borges-bibliography-builder/`, or install directly through the WordPress plugin screen. 2. Activate the plugin through the 'Plugins' screen in WordPress. 3. Add the "Bibliography" block to any post or page. -4. Paste DOI(s), PubMed/PMID identifiers, BibTeX, RIS, CSL-JSON, or supported citations for books, articles, chapters, and webpages — or add citations manually. +4. Paste DOI(s), PubMed/PMID identifiers, BibTeX, CSL-JSON, or supported citations for books, articles, chapters, and webpages — or add citations manually. == Frequently Asked Questions == @@ -52,7 +52,7 @@ The package includes seed PO/MO files for translator review and import in French = What citation input formats does the Borges Bibliography Builder support? = -Bare DOIs, DOI URLs, PubMed/PMID identifiers, BibTeX, RIS, CSL-JSON, manual citation entries, and supported formatted citations for books, articles, chapters, webpages, reviews, and theses/dissertations. Free-text citations that include an inline DOI or labeled PMID are routed through the DOI/PubMed resolvers before falling back to the heuristic parser. You can paste multiple entries at once, up to 50 per paste, and each bibliography holds up to 200 citations in total. +Bare DOIs, DOI URLs, PubMed/PMID identifiers, BibTeX, CSL-JSON, manual citation entries, and supported formatted citations for books, articles, chapters, webpages, reviews, and theses/dissertations. Free-text citations that include an inline DOI or labeled PMID are routed through the DOI/PubMed resolvers before falling back to the heuristic parser. RIS is supported as an export format, not as an import format. You can paste multiple entries at once, up to 50 per paste, and each bibliography holds up to 200 citations in total. = Does the ABNT style implement NBR 6023:2018? = @@ -94,7 +94,7 @@ PHP 7.4+ and WordPress 6.4+. Borges Bibliography Builder is tested up to WordPre 1. Front-end bibliography output with hanging indents, italic titles, and linked DOIs, styled by the active theme. 2. Discover the Bibliography block in the block inserter by searching for "Bibliography." -3. Paste DOIs, PubMed/PMID identifiers, BibTeX, RIS, CSL-JSON, or free-text citations into the import form; hover any entry to reveal copy, edit, and delete actions. +3. Paste DOIs, PubMed/PMID identifiers, BibTeX, CSL-JSON, or free-text citations into the import form; hover any entry to reveal copy, edit, and delete actions. 4. Switch to Manual Entry to build a citation field by field — Publication Type, Author, Title, Container, Publisher, Year, Pages, DOI, and URL. 5. Correct imported or free-text citations in place with the structured field editor — fix individual fields without retyping the whole entry. 6. For numbered styles such as IEEE and Vancouver, reorder entries with the up and down controls (or Alt+Arrow keys) to set citation numbering. @@ -142,6 +142,7 @@ PubMed/PMID input connects through the plugin's authenticated WordPress REST pro * Fall back from embedded-identifier resolution to the heuristic free-text parser before showing unsupported-input guidance. * Add free-text sample documentation for supported embedded DOI/PMID citation inputs. * Stabilize numeric citation reorder E2E coverage against editor readiness races. +* Clarify that RIS is supported for export, not import. = 1.4.1 = * Clean up after the plugin when it is deleted: uninstalling now removes the plugin's cached data — the formatter and PubMed/PMID transients (across all sites on multisite) and its object-cache groups where the host supports it. Bibliography blocks already saved in your posts are left untouched.