github quazardous/nelson-mcp v0.9.2

latest releases: v0.14.4, v0.14.3, v0.14.2...
3 months ago

First published build since v0.8.2 — this .oxt includes everything from 0.9.0, 0.9.1 and 0.9.2.

[0.9.2] — 2026-07-24

Fixed

  • save_document_as no longer overwrites the original file (#19) — it now persists via storeAsURL (a real "File > Save As") instead of storeToURL (an export/copy), so the open document rebinds to the new location. Previously the model stayed bound to its original URL, so a later save_document wrote back to — and silently overwrote — the source file while the save-as target stayed frozen
  • Distinct documents no longer share a doc_id (#20) — the per-document id is stored inside the file, so a copied or save_document_as'd file used to inherit the source's id, making two open documents collide and id: addressing target the wrong one. get_doc_id now detects when a persisted id is already in use by another open document and reassigns a fresh one (self-healing on the next save); save_document_as proactively mints a new id for the freshly written file so it gets its own identity from the start

[0.9.1] — 2026-07-24

Fixed

  • CJK-locale Windows startup crash (#16, #17) — on Windows systems whose ANSI code page is not UTF-8 (zh-CN cp936/GBK, ja-JP cp932, ko-KR cp949…), extension registration aborted with UnicodeDecodeError while options_handler.py read _layout.py at import time (an em-dash byte is illegal in GBK). Registration stopped there, Jobs.xcu never registered, and the MCP server never started even though the extension looked installed. The four startup-critical reads (_layout.py, version.py, _build_id.py, module.yaml) now open explicitly with encoding="utf-8". Thanks @7errry for the diagnosis, fix, and verification on Windows 11 zh-CN / LO 26.2.4.2

[0.9.0] — 2026-06-28

Added

  • fit_image tool (#10) — auto-fit a Writer image using its real content aspect ratio (read server-side from the embedded image data, so it stays correct even after a manual rotation). fit="width"/"height" keep one dimension and recompute the other; fit="frame" fits the image to its parent text frame's inner width and resizes the frame height to match. Resets cropping
  • wrap_image_in_frame tool (#12) — wrap an existing frameless Writer image into a captioned text frame, preserving size/rotation/anchor. Reuses the embedded image data directly, so it works even when the source file path is unknown
  • Image rotation (#9) — set_image_properties gains a rotation parameter (degrees clockwise), mapped to Writer's GraphicRotation
  • get_image_info enrichment (#12) — now returns native_width_px, native_height_px, native_ratio (real content ratio) and rotation, plus an OriginURL fallback for the otherwise-empty graphic_url
  • Search backend option — new search_backend Writer option (direct exact/regex, default, vs index stemmed/fuzzy). search_in_document gains a per-call backend override; the index backend falls back to direct for regex or when the index module is unavailable

Changed

  • replace_image adapts to aspect ratio (#8) — by default (fit="width") it now resets cropping and recomputes the height from the new image's aspect ratio, so portrait↔landscape swaps are no longer distorted. fit="height" keeps the height; fit="exact" preserves the previous behaviour (old frame size). Explicit width_mm/height_mm still override
  • search_in_document searches text frames (#5) — body + text frames are now both searched (toggle with include_frames), so image captions/legends placed in frames are findable. Frame matches carry the frame name, a snippet, and the anchor paragraph. Results gain source, backend, body_count, frame_count fields
  • goto_page returns page topology (#13) — by default also returns the images, tables and text frames on the target page (pass topology=false to skip), removing the need for a follow-up get_page_objects call

Don't miss a new nelson-mcp release

NewReleases is sending notifications on new releases.