Repository navigation
Releases
Releases · jiaojiaodubai/banyan
Release v0.5.0-beta.1
🚀 Features
- creators-ext: Record what CSL cannot hold for a creator — a mixed role such as 译注, a nationality and a dynasty. "Extend Creator Information…" in the creator row edits the type, both names and the three labels, keeps them as
creators-extrecords inextra, and binds them intoBanyanItem(), so a style readscreator.role/.nationality/.dynasty; CJK name order, record matching and concurrent edits are handled in the window (d2322e4) - field presets: Styles can declare an
ITEM_FIELD_PRESETSarray to add "Quick Marks" to the item context menu; applying a mark writes its declared key/value pairs onto the selected items — as real fields when the key is valid for the item type, otherwise asextralines (0f33315) - A mark can leave a value to the user by declaring
null: applying it opens the write dialog with the key fixed and asks for the value - Only one style feeds the menu at a time, chosen in the preferences (by default the style last used for rendering)
- Conflicting values are never overwritten silently: applying a mark asks whether to skip or overwrite, with an option to apply the answer to the remaining items
- field validation: Styles can declare an
ITEM_FIELD_VALIDATORSobject to add "Check Fields" to the item context menu; checks may be synchronous or async (10-second per-check timeout), run on each selected editable item, and open a non-modal report tree grouped by item, showing every checker's description and result (bb736f2) - Only one style feeds the item menu at a time; quick marks and field checks share the same style preference
- style chooser: When no style is supplied, preselect the style chosen for the item menu (or the last used style) before falling back to the first entry
- style chooser: Show the selected style's title, citation type, update date, description and global options in a resizable details pane; the splitter is keyboard-operable, and Cancel returns no selection
- style options: Styles declare
STYLE_OPTIONSfor document-wide options;generate()receives the values through the readonly globaloptions. The core resolves effective values, while the settings UI and automation retain the stored values. - style editor: Preview a style's global options and the last run's sandbox findings beside the output; trace lines stay in their own console section
- parameters:
CITATION_PARAMS/CITE_PARAMSdescribe author inputs asstate(boolean orstatesenum),value(plain or rich markup string) orlist(repeated value fields).defaultValue,applicable,forcedValueandvalidatecover defaults, applicability, locked values and free-value checks without exposing widgets. - The core resolves all three scopes before
generate(); hidden values fall back todefaultValue, forced values are read-only, andcitation.sourcepreserves stored values instead of writing defaults back. - item list: Show one
extrakey's value as its own item-list column, chosen in a new "Item list" section of the preferences (the column appears in Zotero's column settings once a key is set) (7777a96) - style runtime: A style can declare
STYLE_DEPENDENCIESandSTYLE_RESOURCES:callStyle()runs another installed style'sgenerate()over the same contexts andloadResource()reads a declared file, both bounded by the core's caps and timeout and returning{ ok: false, reason, message }the caller can fall back from. The plugin supplies the optionalresolveStylecapability, so a delegated style is found byINFO.idin the style index and reads from the samebanyandirectory.
🩹 Fixes
- extra field: Keep key/value lines at the top of
extraand sort them by key, as Zotero's own documentation requires and citeproc reads them contiguously (1ef4e51) - menu: List item actions in order of use — creator extensions, write extra field, quick marks, multilingual copies, relations, field checks, output rendering last — and quote "Extra" in the write-field label (a2b5c79)
- multilingual: Name a retyped item after the type switch: a book → bookSection move falls back to
bookTitleand then to the item key instead of showing an empty title (0e8d2f2) - controls: Align native Zotero inputs and menus with their labels; match rich-text previews to native input dimensions; open rich-text editing from the preview; keep list controls on one line with inline labels and native add/remove buttons; size the cite popup to its content; show descriptions in tooltips
- validation: Block citation confirmation as soon as a citation or cite parameter is invalid, mark the offending bubble/field, and show errors in a dialog that focuses the first invalid control instead of reserving lines under controls
- rich-text dialog: Use the shared dialog footer metrics and button order, unify the heading and inner padding, and mark the confirm button as the default action
- style editor: Wrap long lint/error lines and keep their containers within the output pane; wrap the copied runtime-error text instead of scrolling horizontally
- ui: Align the style list and the uncited-items tree with Zotero's own item trees — same cell padding and icon gap — so labels are not flush with the row edge (9fe9dc9)
- debug: Open the citation and bibliography dialogs with the last used style instead of the alphabetically first style, so a style without cite parameters does not produce an empty cite popup during manual checks
🎨 Styles
- breaking: Style inputs use
STYLE_OPTIONS/CITATION_PARAMS/CITE_PARAMS. Each entry declareskind: "state" | "value" | "list"withdefaultValue, and optionalapplicable/forcedValue/validate; no compatibility aliases are kept. - breaking: rich parameter values are restricted markup strings with
format: "rich";listrows contain string fields only. - breaking: Keys of
item.extrafollow Zotero's own variable-line syntax now, so lines such astex.shorttitle: Fooorsee:stay prose and are no longer read as keys - breaking: Item identity is the opaque string
id;key,uriandrelationsare no longer exposed to styles, and the durable reference is the host-privatez:uriextension key - The style editor validates
ITEM_FIELD_PRESETS(banyanStyle/validate-field-presets) andITEM_FIELD_VALIDATORS(banyanStyle/validate-item-field-validators)
💅 Refactors
- core:
⚠️ Extract the host-agnostic style runtime into the Banyan Toolchain's@banyan/core: the plugin now supplies the Gecko sandbox, the three required host capabilities plus the optionalresolveStyleand item conversion, while the core owns loading, parameters, output normalization and diagnostics; the editor lint bundle comes from the same toolchain revision (56eaa2d) - ui: Give every dialog window Zotero's own conventions — one shared stylesheet and opener utility, footers inside
<body>, platform button order, XUL<menulist>pickers, bounded resize ranges and locale placeholders (be2853f) - menu: Aggregate the item menu from per-feature contributions (
typings/menu.d.ts) instead of one function that knew every feature; share the selection and message helpers, and rebuild the menu when the style index changes (17027e7) - types: Move
StyleSummaryandStyleFileout of the author-facingtypings/style.d.tsintotypings/styleIndex.d.ts, so the generated editor and AI copies no longer carry plugin-internal shapes (9b0a2b7) - prefs: Give each preference section its own heading and description, and rename the message ids after the headings (e9607ff)
- comments: Remove stale, scaffold-style and prompt-style comments across the sandbox, dialogs and preferences; drop the unused
exportHostObjecthelper and refresh the core-extraction notes (b123f54)
✅ Tests
- Add
test/sandboxHost.test.tsto cover the Gecko host adapter: host-global isolation, readonly contexts, utility/console replacement, HTML parsing, file boundaries, validator/list provenance, generate timeouts, diagnostics and binary bridging (56eaa2d) - Prefix style findings with
[style=<id> / <title>]so batchstyle-loadproblems can be traced back to a file - Publish the real-GUI acceptance suite under
test-gui/— scope and cases, fixture set and schema, Local API injection harness and test styles — replacing the tracked manual checklist, browser harness, generated test narratives and pre-push gate (ed06f39)
📖 Documentation
- Add
docs/CONTRIBUTING.mdfor environment setup, directory ownership, engineering constraints, test layers and release instructions; link it from both READMEs (9b7f4f9) - Move the GUI acceptance document, fixtures and injection tooling to
test-gui/; replace local core references with links to the published toolchain repository and keep the document as a status-free test specification for both...
Release v0.4.0
🚀 Features
- multilingual: Create and edit multilingual copies of an item (1a00f59)
🩹 Fixes
- inaccessible-items: Resolve merged duplicates and unreachable access reasons (93e0cf6)
🏡 Chore
- deps: Upgrade zotero-plugin-toolkit to 5.2.0 (9adfc69)
- icons: Note the Zotero source and license of the editor glyphs (cb578f3)
❤️ Contributors
- Jiaojiaodubai (@jiaojiaodubai)
Release v0.3.0
🩹 Fixes
- lifecycle: Release dialog trees, registrations, and locks cleanly (555f185)
- ui: Prevent text selection in virtualized tables (e359104)
💅 Refactors
- citedItemsSearch: Back cited-items rows with in-memory searches (0c42573)
📖 Documentation
- readme: Rework badges and split style authoring from installation (ad278b4)
❤️ Contributors
- Jiaojiaodubai
Release v0.2.0
🚀 Features
- style: Require id for bibliography-title; sync typings, normalization, tests, docs, and WPS (f7173ad)
🩹 Fixes
- sandbox: Make markup splitting work in the in-Zotero test page (b5fcc1c)
- typings: Make style-facing declarations standalone-valid and clarify AI guidelines (17cd5b1)
- sandbox: Resolve DOM node types locally when splitting markup (fc5dc63)
📖 Documentation
- Merge style guidelines into tutorial and document two authoring workflows (dd2baaf)
- Detail downloading the AI Style Workplace folder and supplying publisher format requirements (e6448de)
🏡 Chore
🤖 CI
- Fix lint/test jobs - ignore pnpm-lock formatting and run node-only style-lint tests via mocha+tsx (20a7394)
❤️ Contributors
- Jiaojiaodubai (@jiaojiaodubai)
Release v0.1.0
🚀 Features
- CitedItemsSearch, citation column; enhance document lock (6768c93)
- Add cslType support for itemType constraints in style components (9bbe62a)
- Implement item retrieval with merge fallback and sync live item data for citations (72febbe)
- Add formatDate utility (6aac35a)
- Enhance localization for inaccessible items; update style dialog button IDs (354edd8)
- Enhance style component visibility; refactor style handling in bubble input; remove
/styles/list?includeUI=true(db681c5) - word: Bundle & install VBA .dotm template instead of Office.js add-in (2041680)
🩹 Fixes
- CslType type error; enhance: styleDialog focus behavior (c5c336c)
💅 Refactors
- Streamline style loading and ID handling; improve error logging (0a186a9)
📖 Documentation
- Add bilingual README describing the plugin, its word-processor front ends, and contribution flow (78c354e)
🏡 Chore
- Add WPS/Word source submodules and assemble integration add-ins before build/release (aa9984a)
- Bump deps on release:prepare and refresh lockfile via pnpm update (2c2f579)
❤️ Contributors
- Jiaojiaodubai (@jiaojiaodubai)
Release Manifest
This release is used to host update.json, please do not delete or modify it!
Updated in UTC 2026-10-27T04:02:37.652Z for version 0.5.0-beta.1