Releases: KeithCu/writeragent
Release list
0.8.50
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
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
- (Experimental) Calc -> Python spreadsheet converter
- Brainstorming and Writer Planning mode, based on https://github.com/obra/superpowers
v 0.8.23
- Track changes non-selected text bug found by @zhangxiaoxing.
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
- Embeddings cache now runs in child process at full-speed to avoid tying up LO thread.
- Settings UI tweaks
- get_document_content excludes b64 images by default
- Humanizer skill (make text less robotic) from https://github.com/nousresearch/hermes-agent
- Optional Chrome (via CDP) for web research (non-headless) requests, from https://github.com/nousresearch/hermes-agent
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
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
- 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
- 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
- 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
- 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
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
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