Skip to content

Releases

Release v0.5.0-beta.1

Release v0.5.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@jiaojiaodubai jiaojiaodubai released this 02 Nov 03:32

compare changes

🚀 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-ext records in extra, and binds them in toBanyanItem(), so a style reads creator.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_PRESETS array 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 as extra lines (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_VALIDATORS object 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_OPTIONS for document-wide options; generate() receives the values through the readonly global options. 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_PARAMS describe author inputs as state (boolean or states enum), value (plain or rich markup string) or list (repeated value fields). defaultValue, applicable, forcedValue and validate cover defaults, applicability, locked values and free-value checks without exposing widgets.
  • The core resolves all three scopes before generate(); hidden values fall back to defaultValue, forced values are read-only, and citation.source preserves stored values instead of writing defaults back.
  • item list: Show one extra key'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_DEPENDENCIES and STYLE_RESOURCES: callStyle() runs another installed style's generate() over the same contexts and loadResource() 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 optional resolveStyle capability, so a delegated style is found by INFO.id in the style index and reads from the same banyan directory.

🩹 Fixes

  • extra field: Keep key/value lines at the top of extra and 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 bookTitle and 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 declares kind: "state" | "value" | "list" with defaultValue, and optional applicable / forcedValue / validate; no compatibility aliases are kept.
  • breaking: rich parameter values are restricted markup strings with format: "rich"; list rows contain string fields only.
  • breaking: Keys of item.extra follow Zotero's own variable-line syntax now, so lines such as tex.shorttitle: Foo or see: stay prose and are no longer read as keys
  • breaking: Item identity is the opaque string id; key, uri and relations are no longer exposed to styles, and the durable reference is the host-private z:uri extension key
  • The style editor validates ITEM_FIELD_PRESETS (banyanStyle/validate-field-presets) and ITEM_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 optional resolveStyle and 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 StyleSummary and StyleFile out of the author-facing typings/style.d.ts into typings/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 exportHostObject helper and refresh the core-extraction notes (b123f54)

✅ Tests

  • Add test/sandboxHost.test.ts to 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 batch style-load problems 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.md for 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...
Read more

Release v0.4.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 11:20

🚀 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

Release v0.3.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 11:18

🩹 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

Choose a tag to compare

@github-actions github-actions released this 21 Sep 05:42

🚀 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

  • deps: Refresh pnpm-lock.yaml (f7b07a8)
  • typings: Apply prettier formatting to style.d.ts (ef11a8e)

🤖 CI

  • Fix lint/test jobs - ignore pnpm-lock formatting and run node-only style-lint tests via mocha+tsx (20a7394)

❤️ Contributors

Release v0.1.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 08:11

🚀 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

Release Manifest

Release Manifest Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Sep 08:11

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