Skip to content

WorkbookLens 2.2.0

Choose a tag to compare

@chenweixin123 chenweixin123 released this 21 Aug 18:02
· 12 commits to main since this release
7b4cda2

WorkbookLens 2.2.0 expands deterministic, reviewable repair for workbook layout and display defects while preserving fail-closed safety.

Highlights

  • Adds WL016-WL021 for clipped or blocked text, border-edge inconsistencies, inflated used ranges, identifier scientific notation, saved views positioned away from content, and whitespace-only tails.
  • Adds reviewed OOXML repairs for row height, column width, wrapping, borders, saved views, and exact tail cleanup.
  • Keeps every layout-changing patch out of --safe-only and requires explicit selection plus --accept-layout-risk.
  • Hardens the local web UI with Host/Origin/Referer validation, CSRF protection, restrictive headers, and request-size limits before multipart parsing.
  • Preserves formulas, values, data types, number formats, merged ranges, intentional custom-height rows, and protected or unsupported workbook structures through source-bound preconditions and post-repair rescans.

Local and private by default

WorkbookLens runs on the user's computer. The CLI reads local paths directly, and the optional browser UI listens only on 127.0.0.1. Workbook files are not uploaded to a remote WorkbookLens service.

Install the wheel with Python 3.11+:

uv tool install .\workbooklens-2.2.0-py3-none-any.whl
workbooklens --version
workbooklens serve --port 8765

Then open http://127.0.0.1:8765/.

Compatibility

  • Supported repair target: .xlsx
  • .xlsm remains read-only
  • .xls, .xlsb, .ods, and Google Sheets are not supported
  • Patch-plan schema is now version 2; regenerate older plans before applying them

Verification

  • 403 tests passed with 82.16% local coverage
  • CI passed on Ubuntu, Windows, and macOS with Python 3.11-3.14
  • Fresh-wheel installation and demo passed on all three operating systems
  • Ruff, mypy, pip-audit, Twine strict, artifact allowlist, CodeQL, dependency review, and SHA256 verification passed

See CHANGELOG.md for the complete change list.