Skip to content

Releases: CocoRoF/edit2docs

v0.16.1 — live model list (GET /v1/models)

Choose a tag to compare

@CocoRoF CocoRoF released this 06 Aug 03:16

Hosted service adds GET /v1/models: the studio's model picker is now live — it proxies the Anthropic Models API with the caller's BYOK key (newest first) and falls back to a curated list when no key is supplied. Keys are pass-through only, never stored.

v0.16.0 — extension-scoped tool exposure

Choose a tag to compare

@CocoRoF CocoRoF released this 06 Aug 03:09

tool_specs(extension="xlsx") and doc_guide(fmt=...) return only the verbs, topics, and description detail relevant to a file's format — backed by a new tool_matrix capability table (SSOT). Opt-in and fully backward-compatible: the unscoped default is unchanged. arrange_doc is hidden for .docx; set_doc_text/arrange_doc/build_doc descriptions specialize per format. 900 tests pass.

v0.15.1 — arrange_doc (complete)

Choose a tag to compare

@CocoRoF CocoRoF released this 06 Aug 02:46

Use this, not 0.15.0. v0.15.0 tagged only the version bump — the arrange_doc verb, engine, agent-tool wiring and doc_guide topic were accidentally left uncommitted, so the 0.15.0 wheel has no arrange_doc. 0.15.1 ships the complete implementation.

arrange_doc — deterministic STRUCTURAL edits: duplicate / move / delete whole slides (.pptx) and sheets (.xlsx); rename sheets. No key; byte-preserving. Built on contextifier 0.5.0. 880 tests pass.

v0.15.0 — arrange_doc (structural slide/sheet ops)

Choose a tag to compare

@CocoRoF CocoRoF released this 06 Aug 02:36

New 9th deterministic verb arrange_doc: duplicate / move / delete whole slides (.pptx) and sheets (.xlsx); rename sheets. Structure, not content. No Anthropic key; byte-preserving — a copy ADDS parts, untouched slides/sheets stay byte-identical (charts & notes cloned independently, images shared).

arrange_doc(doc, [{"op":"duplicate","target":0,"to":3}])   # copy slide 0 to position 3
arrange_doc(doc, [{"op":"move","target":4,"to":0}])        # move slide 4 to front
arrange_doc(doc, [{"op":"rename","target":"Sheet1","name":"Summary"}])  # xlsx

Built on contextifier 0.5.0's new raw primitives. Wired across the library, agent tools, local MCP, and doc_guide('arrange'). 880 tests pass. Full changelog: README Version history.

v0.14.1 — cap mcp<2.0.0 (server crash-loop fix)

Choose a tag to compare

@CocoRoF CocoRoF released this 05 Aug 10:23

Dependency fix. mcp 2.0.0 (freshly released) dropped the mcp.server.fastmcp module that edit2docs.mcp.server imports. The unbounded mcp>=1.0.0 floor silently resolved 2.0.0 on a clean build, crash-looping edit2docs serve with ModuleNotFoundError: No module named 'mcp.server.fastmcp'.

Capped to mcp>=1.0.0,<2.0.0 (resolves 1.29.0, which still ships FastMCP). Library consumers that don't import the hosted-server path (e.g. geny-executor) were unaffected. Full suite green (868 passed).

Full changelog: README Version history.

v0.14.0 — themed decks (deterministic design)

Choose a tag to compare

@CocoRoF CocoRoF released this 15 Jul 05:45

build_doc pptx specs gain an optional theme{bg, accent, ink, muted, panel, rail, page_numbers, font} — plus design layouts stat / quote / comparison. A designed deck (deep-navy + orange, accent rail, page numbers, 16:9, type hierarchy) is now ONE deterministic call with zero model usage. Without theme, legacy template layouts are unchanged.

v0.13.0 — hierarchical skill structure (progressive disclosure)

Choose a tag to compare

@CocoRoF CocoRoF released this 14 Jul 05:48

The tool set is now a Claude-Skill-shaped hierarchy: ultra-compact tool descriptions up front (frontmatter, ≤320 chars test-enforced), the GENERATE | EDIT | INSPECT family map behind doc_guide() (body), and deep per-task guides behind doc_guide(topic) (resources): build, generate, edit, edit.text, edit.chart, edit.xml, render, recipes.slides, recipes.colors. Topics form a dotted tree; parents join children; unknown topics fall back to the map.

Every backend: ANTHROPIC_TOOLS, new OPENAI_TOOLS, tool_specs(fmt), MCP server (descriptions from one source of truth), and doc_guide(names={...}) renders the guides with a host's renamed tools (e.g. geny-executor's DocAnalyze).

v0.12.0 — consolidated 8-verb agent surface; XML part create/delete

Choose a tag to compare

@CocoRoF CocoRoF released this 14 Jul 05:21

The tool list is the product. Agent surface consolidated 10 → 8 verbs, each complete:

  • set_doc_xml now creates missing parts (content_type registers the Override) and deletes parts — multi-part operations like adding a slide are pure tool calls (tested: slide xml + rels + content type + presentation.xml wiring, reopened by python-pptx).
  • set_doc_text absorbs chart edits (a chart key routes to the chart engine — title/data + embedded workbook sync).
  • render_doc gains to='md' and replaces the separate preview_doc tool.
  • Surface: generate_doc · build_doc · edit_doc · render_doc · set_doc_text · read_doc_xml · set_doc_xml · analyze_doc (6/8 keyless). Library verbs unchanged. MCP server mirrors the same 8.

v0.11.0 — direct OOXML XML editing (read_doc_xml / set_doc_xml)

Choose a tag to compare

@CocoRoF CocoRoF released this 14 Jul 04:56

Documents ARE XML. New universal deterministic primitive (no LLM, no key) on contextifier's byte-preserving raw layer:

  • list_doc_parts(doc) — map of every part (slides, charts, styles, sheets…)
  • get_doc_xml(doc, part) — a part's exact XML text
  • set_doc_xml(doc, part, edits|xml) — exact find/replace patches or whole-part replace; result must stay well-formed XML or nothing is written; untouched parts stay byte-identical

Together with the structured verbs this expresses every edit OOXML can — recolor chart bars, fonts, fills, geometry — through tools instead of raw python-pptx. Wired across all three surfaces (facade, agent_tools, MCP). Tested end-to-end: chart-series recolor via XML patch, read back as FF0000 by python-pptx.

v0.10.0 — build_doc (deterministic generation, no LLM)

Choose a tag to compare

@CocoRoF CocoRoF released this 14 Jul 04:29

edit2docs is a list of TOOLS first; the built-in LLM is just one consumer.

New deterministic verb build_doc(spec, output) — generate_doc's rendering engine without the model. An agent driving its OWN model produces the interchange artifact; build_doc renders the file with zero edit2docs model calls, no API key. Output extension picks the engine:

  • .docx ← markdown string (docx_from_markdown)
  • .xlsx{sheets:[...]} (xlsx_from_spec)
  • .pptx{slides:[{layout,title,subtitle|bullets,notes}]}new deterministic pptx_from_spec builder (python-pptx built-in layouts: title/content/section/title_only/two_content/blank)

Wired across all three tool surfaces: simple facade (public verb), agent_tools (ANTHROPIC_TOOLS + run_tool), and the local MCP server. pptx uses standard built-in layouts — generate_doc remains the LLM path for designed decks.

Now all 8 agent-tools work as tools; 6 of 8 are fully deterministic/keyless (analyze, preview, render, set_text, edit_chart, build_doc). 737 unit tests green + 6 new.