Repository navigation
WorkbookLens 2.2.0
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.