Skip to content

Releases: Tianshang301/TianshangScribe

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 20:36
32cfa36
TianshangScribe v0.8.1: parse fix, textbox auto-stacking, write_cell …

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 22 Aug 16:15
TianshangScribe v0.8.0: Excel/PPT engine overhaul + 12-tool MCP server

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 09:19
chore(release): bump version to 0.7.1 (PyPI/GitHub) — fix PPT --comme…

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 16:04
docs: sync version references to 0.7.0 and publish Windows .exe via CI

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 13:32

v0.6.0 — Naming unification (breaking)

Aligns all user-facing identifiers with the tianshang scheme (mirroring TianshangCAD). Migration notes in MIGRATION.md.

Breaking changes

  • Environment variable prefix SCRIBE_*TIANSHANG_SCRIBE_*.
    SCRIBE_AUTH_TOKENTIANSHANG_SCRIBE_AUTH_TOKEN, SCRIBE_API_KEYSTIANSHANG_SCRIBE_API_KEYS, SCRIBE_CORS_ORIGINSTIANSHANG_SCRIBE_CORS_ORIGINS, SCRIBE_HOST/PORT/TRANSPORTTIANSHANG_SCRIBE_HOST/PORT/TRANSPORT, SCRIBE_LOG_LEVEL/LOG_JSONTIANSHANG_SCRIBE_LOG_LEVEL/LOG_JSON, SCRIBE_RATE_LIMIT_MAX/WINDOWTIANSHANG_SCRIBE_RATE_LIMIT_MAX/WINDOW. Dockerfile and docker-compose updated in lockstep.
  • MCP server console script renamed scribe-mcptianshang-scribe-server (mirrors TianshangCAD's tianshangcad-server). python -m tianshang_scribe.mcp.server and the Docker entry point are unchanged.
  • Prometheus metric names now use the tianshang_scribe_ prefix: scribe_operation_duration_secondstianshang_scribe_operation_duration_seconds, scribe_operations_totaltianshang_scribe_operations_total.
  • Docker named volume renamed scribe_outputtianshang_scribe_output; existing volumes must be migrated manually.

Assets

  • .deb package for Debian/Ubuntu (this release asset)
  • PyPI: pip install tianshang-scribe==0.6.0
  • EXE binaries via CI artifacts (Actions tab)

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Aug 02:25
v0.4.0: production observability + M1-M3 (coverage gate 80, scheduler…

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Aug 09:10

[0.3.0] - 2026-08-11

Added

  • Engineering baseline aligned with TianshangCAD: src/utils/ helpers,
    pytest filterwarnings=error, ruff expanded rule set, mypy strict for
    new modules, coverage configuration, and shared tests/conftest.py fixtures.
  • Standard governance documents: CHANGELOG.md, SECURITY.md,
    CODE_OF_CONDUCT.md, THIRD_PARTY_LICENSES.md, MIGRATION.md.
  • MCP server migrated to the official mcp>=2.0 SDK under src/mcp/
    (stdio + Streamable HTTP + SSE), removing the package-name collision with
    the SDK and aligning with TianshangCAD's src/<pkg>/mcp/ layout.
  • MCP hardening modules: schemas.py (pydantic models + as_dict
    normalization), auth.py (Bearer tokens), rate_limit.py (token bucket),
    metrics.py (Prometheus-style counters/histograms), security.py
    (read-only / destructive classification used in tool annotations).
  • src/mcp/transport.py: stdio / SSE / Streamable HTTP wiring plus ASGI
    middleware (auth, CORS, rate limiting, metrics) for the HTTP transports.
  • src/mcp/prompts.py: 5 prompt workflows (summarize, batch fill, convert,
    latex polish, compare) exposed via prompts/list.
  • src/mcp/tools/_registry.py: central tool registry; 7 tools now served
    (create, edit, fill_template, convert, extract, validate,
    compare). Tool inputSchemas are derived from Annotated signatures.
  • Tool descriptions rewritten to a three-sentence template that discloses
    side effects (writes, output_path defaults, in-place overwrite, PDF engine
    dependency) and read-only guarantees, consistent with the readOnlyHint /
    destructiveHint annotations; server instructions now disclose bearer-token
    auth and rate limits. Guarded by tests/test_mcp_descriptions.py.
  • validate_template / compare_documents promoted to first-class tools.
  • fill_template writes its data payload to a unique temp file instead of a
    shared mcp_template_data.json, removing a cross-session race.
  • MCP tests: tests/mcp/test_sse.py (SDK SSE protocol: initialize +
    tools/list + tools/call), tests/mcp/mcp_stdio_smoke.py (9 steps),
    tests/mcp/mcp_agent_sim.py (11 end-to-end scenarios) via the shared
    tests/mcp/_mcp_client.py stdio client.
  • --extract full modes: text / tables / images / structure /
    metadata across Word, Excel and PPT (extract_text, extract_tables,
    extract_images, extract_structure on each engine).
  • --add-table: add Word tables from inline "H1,H2|a1,a2" or @file.csv
    (WordEngine.add_table_data).
  • Reverse conversions: .md/.html inputs auto-convert to Word and .json
    to Excel (src/transform/reverse.py, ExcelEngine.import_json); new
    dependencies htmldocx + markdown.
  • Batch processing: --batch flag and --files "reports/*.docx" glob;
    per-file execution continues on failure with a summary. Click/Typer's
    Windows argv glob expansion is disabled so patterns reach the CLI literally.
  • --compress-media (PPT): recompress/resize images via Pillow
    (PptEngine.compress_media); pillow declared as a direct dependency.
  • Interactive file session: tianshang-scribe open <file> enters a REPL
    (src/cli/repl.py InteractiveSession) that holds the document in memory
    and supports add/heading/table/math/replace/delete/style/
    extract/info/path/save/help/quit. Explicit save persists;
    quitting with unsaved changes prompts first.

Changed

  • Local MCP package relocated from top-level mcp/ to src/mcp/.
    Entry point: python -m src.mcp.server; CLI alias scribe-mcp.
  • src/utils/file_utils.py introduced; check_overwrite now delegates to it.
  • CLI restructured from a single Typer callback group into a one-shot plain
    command plus an open subcommand app, dispatched in main_cli by the first
    argument. Options may now appear before or after the positional
    input_file (e.g. tianshang-scribe file.docx --add "hi").
  • Shared CLI options (--latex-style, -w/-e/-p) are defined once as
    constants and reused by both apps so the parameters stay in sync.
  • parse_table_input moved to src/cli/global_opts.py and shared by the
    one-shot --add-table, the REPL table command, and batch mode.

Removed

  • Top-level mcp/ namespace package (conflicted with the official mcp SDK).
  • Legacy src/mcp/transport_sse.py (superseded by transport.py).

TianshangScribe v0.2.0 — SSE MCP + Zero-Dependency PDF

Choose a tag to compare

@Tianshang301 Tianshang301 released this 29 Jul 16:14

TianshangScribe v0.2.0 — SSE MCP + Zero-Dependency PDF

New Features

SSE MCP Server — Cloud Agent platform ready

  • python -m mcp.server --transport sse --port 8080
  • GET /sse + POST /message — full SSE transport
  • Works with Dify, Coze, FastGPT, Claude Code, Cursor
  • Zero external HTTP deps (pure asyncio + stdlib)
  • 3/3 SSE tests pass

office2pdf PDF Engine — No more LibreOffice dependency

  • Primary engine: office2pdf (~2MB Rust binary, cross-platform)
  • Fallback: LibreOffice headless (high-fidelity)
  • Auto-detection priority chain
  • Covers Word, Excel, PPT — same unified converter
  • Removed docx2pdf (Windows-only, requires MS Word)

Deliverables

File Size Description
tianshang-scribe.exe 34.7 MB Standalone Windows executable
tianshang_scribe-0.2.0-py3-none-any.whl 45 KB Python wheel

Quick Start

# CLI
tianshang-scribe -w --create --math '\frac{a}{b}' -o test.docx

# SSE MCP (cloud Agent platforms)
python -m mcp.server --transport sse --port 8080

# stdio MCP (Claude Code / Cursor)
python -m mcp.server

Quality

  • 160 tests · 3 SSE tests · ruff · mypy · CI (9 matrix)
  • AGENTS.md Phase 2: ~85% complete
  • Apache-2.0 license

Full Changelog

  • SSE HTTP transport for MCP Server (asyncio stdlib, zero deps)
  • office2pdf primary PDF engine (replaces docx2pdf + LibreOffice requirement)
  • --transport sse|stdio with --host/--port for MCP
  • Auto-detection: office2pdf > LibreOffice > error with install instructions
  • CORS support on SSE endpoints
  • Session management with heartbeats
  • Bilingual README updates (Transport Modes section)

TianshangScribe v0.1.1

Choose a tag to compare

@Tianshang301 Tianshang301 released this 29 Jul 15:53

TianshangScribe v0.1.1

Cross-platform CLI Office document processing tool with LaTeX math & MCP Server.

Features

Word — LaTeX style markup (18 commands), OMML math formulas (120+ symbols), template filling with loops, TOC generation, headers/footers, watermarks, markdown/HTML export

Excel — CSV import/export, formula writing, data sorting, charts (bar/line/pie), JSON/HTML export, sheet management, password protection

PPT — Slide management, layout control, speaker notes, 17 transition types, OMML math rendering, image export (via LibreOffice)

LaTeX Engine — Recursive descent parser, nested style commands, auto-detection of math without $ wrappers, CJK+Western font separation, math typography (AMS/Elsevier/Springer standard)

MCP Server — 5 tools via stdio JSON-RPC, zero external MCP dependency, structured error codes, dry_run/backup options, Agent-ready content block format

Pipeline — stdin/stdout, file merge/split, auto type detection, exit codes 0/1/2/3

Deliverables

File Size Description
tianshang-scribe.exe 34.7 MB Standalone Windows executable
tianshang_scribe-0.1.1-py3-none-any.whl 45 KB Python wheel

Install

pip install tianshang-scribe
# or
git clone https://github.com/Tianshang301/TianshangScribe.git
cd TianshangScribe && pip install -e ".[dev]"

Quick Test

tianshang-scribe -w --create --math '\frac{a}{b}' -o test.docx
tianshang-scribe -e --create -a Name -a Alice --to-json -o out.json
tianshang-scribe -p --create --slide-add --transition fade -o deck.pptx

MCP Usage

{
  "mcpServers": {
    "tianshang-scribe": {
      "command": "python",
      "args": ["-m", "mcp.server"]
    }
  }
}

Quality

  • 160 tests · ruff · mypy · CI (9 matrix: 3 OS x 3 Python)
  • AGENTS.md compliance: ~87% (Phase 1: 100%, Phase 2: ~67%)
  • Apache-2.0 license

TianshangScribe v0.1.0

Choose a tag to compare

@Tianshang301 Tianshang301 released this 29 Jul 10:28

Initial Release

TianshangScribe — Cross-platform CLI Office document processing tool.

Features

  • Word: LaTeX style markup, OMML math formulas, TOC, headers/footers, watermarks, template filling
  • Excel: CSV import/export, formulas, sorting, charts (bar/line/pie), protection, JSON/HTML export
  • PPT: Slide management, layouts, speaker notes, transitions (17 types), OMML math, image export
  • LaTeX: 18 style commands, 120+ math symbols, recursive nesting, small caps, paragraph formatting
  • Pipeline: stdin/stdout, file merge, auto type detection, exit codes

Attachments

  • tianshang-scribe.exe (34.7 MB) — standalone Windows executable

Install

git clone https://github.com/Tianshang301/TianshangScribe.git
cd TianshangScribe
pip install -e ".[dev]"