Skip to content

Releases: KeithCu/writeragent

0.8.50

Choose a tag to compare

@KeithCu KeithCu released this 12 Jul 21:51

New Features

  • First version of LibrePy.oxt. Includes =PY(), analysis tools, and OCR, but no search, sidebar, AI / MCP, or Calc formula to =PY() conversion. Don't install both as they are currently incompatible. The files created from either are compatible.
  • Deep Research loop from https://github.com/assafelovic/gpt-researcher
  • Support for markdown files in the document research sub-agent and for vector search
  • Tables specialized toolset (@Augusto-Zolet)
  • get_image, crop, and friendly orientation (@Augusto-Zolet)
  • MCP experience: shared manual, multi-doc, echo, report_bug, stdio bridge (@Augusto-Zolet)
  • OCR fixes
  • Support LanguageTool (need python-language-tool installed in venv + binary installed elsewhere)
  • Support Vale style guide (WIP)
  • Support Harper grammar checker (will auto-install if not already installed), using harper-ls, thanks @hippietrail
  • Create LibreHarper.oxt with just the Harper grammar checker support, status shows in LibreOffice status bar.
  • Use embeddings (if available) for web research similarity

Smaller Improvements & Fixes

  • Switch to requiring Rocher (bundles Monaco) in external venv rather than including (saves 1 MB)
  • Require langdetect to be in user's venv, don't bundle it to save 500KB
  • Remove all Cython / sounddevice binaries but let people download from GitHub to run in LibreOffice
  • Use proper subprocess calls for snap / flatpak in more places, hide console for sub-process calls on Windows
  • Generate new session ids when document is renamed, thank you @WriterOfBadFanFics
  • Fix prompt for Web Research regression and add test case, thanks @slu-010101
  • Fix bugs with bare model IDs for Z.ai, thanks @ant0n-z
  • Localize the Monaco script editor
  • Fix json-repair import issue, thanks @its-Sohan
  • Fix Mac build issues, thanks @hippietrail
  • fix subprocess calls on Windows showing a console.
  • Fix Python <3.12 typecheck issue, thanks @codeisnotcode
  • Decrease latency for grammar errors showing up.

Huge thanks to @Augusto-Zolet for 30 improvements across tables, images, MCP, and more.

v 0.8.50

  • Fix various Harper issues found by @hippietrail
  • Simplify calling helper functions
  • Auto-cleanup of deleted cells from a spilled function
  • Fix crash when re-downloading Cython binaries already loaded in process.

v 0.8.27

Choose a tag to compare

@KeithCu KeithCu released this 30 May 22:28

v 0.8.14
Python:

  • Multi-range support: =PYTHON("np.mean(data)", A1:C10, D1:F10)
  • Allow Python cell references to other (shared) code snippets in the first parameter, instead of only code.
  • Shared kernel for Python Calc / Writer and Init script per spreadsheet
  • Multiple Python scripts per user, can save in the document.
  • Optimize Python -> Numpy serialization, switch to pickle Protocol 5 + Split grid.
  • Crosshair verification + hypothesis testing of single/multi-range split-grid serialization
  • Python Calc / Writer scripts with color-syntax highlighting. Need PyQT6 + a few other packages in venv.
  • Add Cython x64 Linux builds for split-grid pack.
  • Tell LLMs about the =Python(), and force them to use it over delegation to specialized in Calc.

Other:

  • Basic multi-doc support for files in same directory as current file. ("Pull the value of A9 from my spreadsheet X and put it in this document", "Summarize my document Y and put it in this document.") Show document opens in chat history. Clarify when to use public web research versus private document search.
  • Save ignored grammar rules in the file.
  • Fix Python IPC on Windows.
  • Rich text sidebar
  • Make proper subprocess calls when LO is part of a Flatpak or Snap.

v 0.8.15

  • Add "reasoning" as another type of thinking tokens to look for, thanks: @WriterOfBadFanFics
  • Fix Gnome Rich Text control creation
  • Add more release logging for rich text HTML / copy failure cases
  • Init scripts are called "Init" in calc rather than a separate menu item
  • Strip HTML when streaming in the rich-text control before re-render.
  • Try to do a better job not mis-interpreting final_answer
  • Explain to the LLM it has both a rich-text sidebar and a rich-text document it can send text to.
  • Return reasoning tokens (in same format as sent) for future tool rounds.

v 0.8.16

  • Try to simplify / fix rich layout issues.
  • Add MCP tool call to list_open_documents, and accept an optional parameter of a file name for every MCP tool-call. Thanks for the input, @slu-010101
  • Applied 5 PRs from @Augusto-Zolet for: handling nbsp in search, MCP and long-running edits, preserving formatting with styles & editing text inside tables. Thank you!!

v 0.8.17

  • More work on rich text scrolling
  • Fix regression with grammar errors not being restored from save.

v 0.8.18

  • Unify text search strategies
  • Fuzzy web research cache (strips out fluff words in different languages and does Jaccard similarity).
  • Explain to models better when to use sidebar versus document.
  • Parallel background grammar checker if your backend can handle it (up to 8). It costs the same, so why not?
  • Chart MCP tweaks

v 0.8.19

  • Fix hang when calling UNO for fuzzy research locale info from a background thread

v 0.8.20

  • OCR (via Docling, must be installed in user's venv). Run Python script -> extract_text / extract_structure.
  • New Calc data analysis tools: describe_data, kpi_summary, detect_outliers, quick_stats, format_currency, format_percent, clean_and_prepare, pivot_aggregate, group_summary, compare_periods, correlation_matrix, run_regression, cluster_numeric, monte_carlo

v 0.8.21

  • Add quant helpers (fetch_historical_data, technical_analysis, portfolio_tearsheet, efficient_frontier)
  • Add optimization helpers (optimize_portfolio, linear_programming, solve_scheduling_problem)
  • Visualization helpers (quick_plot, correlation_heatmap, time_series_plot)
  • Sidebar status control fix

v 0.8.22

v 0.8.23

v 0.8.24

  • Add local langdetect as an option instead of using LLMs to detect / correct language.
  • Make Python -> Test dialog incremental instead of waiting for 10 seconds, and fix docling import timeout bug.
  • Add Units conversion helpers using the Pint library.
  • Fix more places that could show deleted tracked changes.
  • Simplify OCR settings UI

v 0.8.25

v 0.8.26

  • FTS or embeddings cache. Supports ODT, ODS, ODG and ODP
  • Vendor websockets library for CDP
  • ARM Mac binaries only, shrink logo to to save space

v 0.8.27

  • LanceDB / Zvec vector store backends
  • Fix Mac issue with emojis in the plain text console, thanks @jd-boyd
  • reviewable agent edits — tracked changes with inline review, thanks @Augusto-Zolet
  • guard host-side numpy import in finalize_python_return, thanks @Augusto-Zolet

Version 0.8.13

Choose a tag to compare

@KeithCu KeithCu released this 17 May 22:54

v 0.8.0

  • Grammar checker errors persist across sessions. Stores clean hashes + errors inside the document.
  • Add optional automatic language detection before grammar checking.
  • New “Insert LaTeX Math…” dialog.
  • Python execution support, =PYTHON() formula in Calc, delegate_to_specialized(domain='Python') for the agent. Runs code from an external Python in a separate process with sandboxing.
  • Fixed librarian mode getting stuck in welcome state, thank you @slu-010101
  • Enter sends message by default in chat.
  • Removed sending multiple system messages, credit @zhangxiaoxing
  • Support for Z.ai and their /v4 URL, credit @ant0n-z.
  • Reorganized Calc / Draw tool APIs and improved context handling.
  • Updated translations to be less robotic.

V 0.8.2:

  • Tell LLMs about the =Python(), and force them to use it over delegation to specialized in Calc.
  • Combine the chart functions into one manage_charts and fix a chart edit bug. Move to the specialized tier.
  • numpy (np), sympy (sp), pandas (pd) and math are automatically imported so no need to import from =Python("") Try to get LLMs to not also import numpy, etc.
  • Basic multi-doc support for files in same directory as current file. Must save files first. ("Pull the value of A9 from my spreadsheet X and put it in this document", "Summarize my document Y and put it in this document.") Surface document opens in chat history. Clarify when to use web research versus document search.
  • Librarian onboarding tweaks
  • Make config parsing more robust.
  • Try to save (Ignore-All) grammar rules in the file.

v 0.8.3:

  • Allow Python cell references to other (shared) code snippets in the first parameter, instead of only code.
  • Attempted fixed for HTTP Options CORS issues for Sam
  • Add Python execution timeout, default 10s
  • Give better tool hints to MCP
  • Enable listing local images in the specialized images domain. Images inserted as links by default.

v 0.8.4:

  • Binary format for data transfers LO to/from Numpy, 5-10x faster and 50% smaller than standard JSON, using float64. Handles strings + integers, 1d lists, etc.
  • Allow local origin MCP requests checkbox (enabled by default) + a whitelist of allowed domains in JSON
  • WIP Python notebook import
  • Clicking Stop while sub-agents were making network requests works better
  • Add grep multiple files tool to document research sub-agent
  • Split Prompt function and Python function to separate types.
  • Give Python sub-agent import hints and tell main agent to use the Python/Numpy agent for all math tasks.
  • Fix binary decode from Numpy to sub-agent

v 0.8.5

  • Consider .intern an internal domain, automatically safe with MCP, for @slu-010101
  • Optimize Python -> Numpy serialization, switch to pickle Protocol 5 + Split grid.
  • Coerce single entry lists to the underlying value automatically, and to integers if possible.

v 0.8.6

  • Multi-range support: =PYTHON("np.mean(data)", A1:C10, D1:F10)

v 0.8.7

  • Removed stubbed specialized Writer domains which shouldn't have been exposed yet.
  • Crosshair verification + hypothesis testing of single/multi-range split-grid serialization
  • Python scripts can generate matplotlib images which are inserted into the active spreadsheet
  • WIP: Edit Python Calc / Writer scripts with color-syntax highlighting. Need PyQT6 + a few other packages in venv.

v 0.8.8

  • WIP: rich text sidebar mostly works, except scrolling ;-)
  • Fix external venv IPC on Windows.

v 0.8.9

  • Shrink subsequent Monaco launch time
  • SVG support from matplotlib to Calc

v 0.8.10

  • Add network batching to prevent rich text sidebar from updating too frequently and fix regular/bold text.
  • the rich sidebar crashes on exit, no clear Python fix, just ignore for now.
  • Create proper shells when LO is part of a Flatpak or Snap.

v 0.8.11

  • Fixed scrolling with the rich text sidebar.

v 0.8.12

  • Remove musl-linux builds
  • Add Cython x64 Linux builds for split-grid pack.

v 0.8.13

  • Shared kernel for Python Calc / Writer
  • Init script per spreadsheet
  • multiple scripts per user, can save in the document.
  • New strategy for a rich text control
  • Use Monaco editor for LaTeX

Version 0.7.7.11

Choose a tag to compare

@KeithCu KeithCu released this 02 May 21:38
  • A realtime grammar proofreader that runs asynchronously, you can right-click suggestions and apply fixes. Enable in Settings - Doc. See dev-plan for details. Because it's async, there is a delay when it shows up, but keep working and the blue underlines will appear. Turn on setting "Pause Grammer while Chat/Agent runs" if your system can't handle simultaneous requests. There are tricks to shorten the latency which will be worked on later.
  • Enhanced HTML import capabilities to support embedded TeX or MathML, which become formatted as native math objects. Thanks to latex2mathml for the code.
  • Calc Tools: New insert_cell_html tool for rich text insertion.
  • Headless support (for MCP servers) Thank to meichenberger for the idea.
  • Localization: Now supports 34 locales including much of Europe, and more non-Western: (de, es, fr, it, ja, ko, pl, pt, ru, zh_CN, zh_TW, hi_IN, id, bn_IN, ur_PK, nl, sv, da, fi, ca, el, cs, hu, ro, nb_NO, nn_NO, uk, tr, sk, bg, hr, lt, lv, et).

Update 5/4/26: Fix for Sam regarding harmony tool-call parsing
Update 5/4/26: Redo translations to be less robotic
Update 5/5/26: Another fix for Sam on issues for librarian not getting out of welcome mode
Update 5/5/26: Enter to Send / Record, shift-enter to insert CR
Update 5/11/26: Re-organized and added more test cases for grammar checker. Persist changes between sessions so re-opening a file doesn't trigger re-work. For now, stored in a sqlite, perhaps should be stored with document?
Update 5/11/26: A fix to prevent multiple system messages which breaks some system, based on ideas from @zhangxiaoxing. Thank you for the PR!
Update 5/11/26: Fix log level of grammar so release doesn't spam logs.
Update 5/12/26: Fix occasional hang during background grammar checking.
Update 5/12/26: Store grammar errors with document instead of sqlite.
Update 5/13/26: Fix handling of Z.ai which uses /v4 instead of /v1. Thanks for reporting the issue, @ant0n-z
Update 5/13/26: Do a better job handling URLs with no API keys yet.
Update 5/13/26: Add optional support to auto-check each language first, refactored into FSM.
Update 5/13/26: Fixed Calc bug for insert one cell with comma in text triggering CSV import; reorganized the tool calling APIs and shrunk the core Calc ones for better focus. Exposed sheets in context so they can know where they are. Trimmed Calc and Draw/Impress core context but added current sheet and a way to switch sheet. Exposed some core tools to specialized domains so they can do more.
Update 5/14/26: Refactoring, strip debug logs from release builds, Anthropic / Gemini / Grok tweaks from LibreAI, do binary search in find_text. Fix bug where research subagent didn't know the current date.
Update 5/14/26: Fix bug with failing to get document context on a selected table.
I'm looking for Calc users who want to work on this (and know how to code)
Update 5/16/26: =Python() support with ranges, including external venvs in a sub-process, also exposed to LLMs.

v0.7.6

Choose a tag to compare

@KeithCu KeithCu released this 25 Apr 23:54
  • A realtime grammar proofreader that runs asynchronously, you can right-click suggestions and apply fixes. Enable in Settings - Doc. See dev-plan for details. Turn on setting "Pause Grammer while Chat/Agent runs" if your system can't handle simultaneous requests well.
  • Enhanced HTML import capabilities to support embedded TeX or MathML. Thanks to latex2mathml for the code!
  • Calc Tools: New insert_cell_html tool for rich text insertion
  • Headless support (for MCP servers) Thank to meichenberger for the idea!
  • Localization: Now supports 34 locales: (de, es, fr, it, ja, ko, pl, pt, ru, zh_CN, zh_TW, hi_IN, id, bn_IN, ur_PK, nl, sv, da, fi, ca, el, cs, hu, ro, nb_NO, nn_NO, uk, tr, sk, bg, hr, lt, lv, et)

Update April 26: Added support for more languages in the grammar checker.
Update April 28: Many fixes to the async checker.
Update April 29: More fixes to the grammar checker. Should work well with the agent.
Update April 30: Few fixes filed by @slu-010101
Update May 1: Issues with Harmony parsing format, made an attempted fix. Restored logic encouraging LLMs to use colors in Writer.
Update May 2::Fix an issue seen by @slu-010101.

Enjoy, and send suggestions or PRs.

v0.7.5

Choose a tag to compare

@KeithCu KeithCu released this 19 Apr 01:05
  • Writer selection editing with tracked changes: implemented streamed rewrite sessions with proper undo handling and track changes integration (based on code from @real-henry-le. Thank you!)
  • Calc Analysis Tools: Added Goal Seek, Solver, Pivot Tables, and filtering functionality
  • Writer extended navigation tools: GetSurroundings, ListSections, GotoPage, ReadSection, GetHeadingChildren
  • Forms support in Writer, Calc and Draw, based on code from OnlyOffice AI Assistants
  • Google Gemini Integration: Native support for Gemini tool calls and response handling (Gemini API)
  • JSON Parsing: JSON repair logic inspired by Hermes-Agent.
  • OpenRouter model information based on https://orca.orb.town/
  • Improve the eval testing, run a new test
  • Added openrouter_chat_extra in writeragent.json for advanced provider, etc. control
  • Better default models for Together AI

Version 0.7.4

Choose a tag to compare

@KeithCu KeithCu released this 04 Apr 23:34
  • Translate the "Chat with Document" string in the XML file.
  • Fix bug when audio recording failed and it would keep trying
  • Nested tool support for track-changes, footnotes, bookmarks, and richer page-layout features the LLMs should be able to call.
  • Support complicated shapes ("create an octagon")
  • Promote adding comments to top-level API (the rest in a specialized tool-set) and encourage LLMs to use add_comment when asked to "review" or "give feedback" on a document.
  • Web research is now a specialized tool like the other ones, which saves context.
  • The librarian won't switch out of document mode so quickly now and will give tips if the user is interested.
  • Don't try to find the list of models until the URL is valid when the user is typing
  • Fix bug of LibreOffice crashing when hitting Esc in the Edit selection dialog box.
  • Make the app not hang when looking up the model list.
  • Auto-start HTTP server when MCP is enabled (local connections only)

Version 0.7.2

Choose a tag to compare

@KeithCu KeithCu released this 28 Mar 19:31

What's Changed

  • Fix bug where failed talk with document attempts would try again even when you typed a prompt. (Workaround is to restart LibreOffice.)
  • Experimental support for an onboarding Librarian Agent and Memory feature (saved in config/Memories/User.md.)
  • Refactor the Writer/Calc API into general and specialized domains LLMs can request.
  • Translation into Spanish, French, Portuguese, German, Japanese, Italian, Russian, and Polish
  • Added an approval flow for web research, and fixed bugs found by @slu-010101. Thank you!
  • Create pure state machines for easier testing, verification.
  • Add type checking, proper version support, increase test coverage

Version 0.71-beta

Choose a tag to compare

@KeithCu KeithCu released this 22 Mar 18:44

Enjoy, and let me know of any bugs.

What's Changed

  • Experimental support for an onboarding Librarian Agent and Memory feature. (saved in config/Memories/User.md file)
  • Refactor the Writer API into general and specialized domains LLMs can request.
  • Add type-checking
  • Full translation into Spanish, French, Portuguese, Russian, German, Japanese, Italian, and Polish
  • Fixed issue with translated strings being used to control system behavior, and getting confused. Fixes: #193. Also removed junk newlines which would showup sometimes.
  • Added an approval flow for web research, and fixed 2 bugs found by @slu-010101. Thank you!
  • Auto-cleanup json files
  • Improved logging and centralized UI control.
  • Improved control layout issues
  • Refactored UNO listeners and utilities to reduce boilerplate.
  • Added extensive tests, including for safe_json_loads and streaming.
  • Security fix: replaced ast.literal_eval with safer alternatives.
  • Enhanced modularity: moved modules to chatbot package, auto-discovery
  • Pure state machines for verification, other cleanups