Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.3.0] - 2026-04-22

### Added

- `check <file>` workbook and sheet quality scans with a stable JSON summary, stats, and findings contract.
- Fixed v1.3.0 rule registry covering `blank_headers`, `duplicate_headers`, `blank_rows`, `blank_columns`, `null_ratio`, `duplicate_values`, `type_drift`, and `formula_presence`.
- TUI findings panel support for browsing quality-check results without leaving the terminal.
- Regression coverage for rule positives and negatives, workbook and sheet targeting, threshold filtering, finding order, and exit-code behavior.

## [1.2.0] - 2026-04-21

### Added
Expand All @@ -21,12 +30,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- JSON Lines output for stream-friendly record processing.
- Read-only TUI query preview with `:preview` and `:pv`.
- Regression coverage for filtering, output shapes, invalid query errors, no-match results, help text, and query preview behavior.
- CI formatting enforcement with `cargo fmt --check`.

### Changed

- Enriched read metadata now reports applied filters, selected columns, returned row count, truncation, and output shape.
- Package version updated to `1.2.0`.

## [1.1.0] - 2026-04-21

Expand All @@ -35,7 +42,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `inspect columns <file> --sheet <name>` to profile column headers, generated safe names, duplicate headers, inferred types, non-null ratios, formula ratios, and sample values.
- `inspect tables <file> --sheet <name>` to detect table-like regions with ranges, header rows, dimensions, and confidence scores.
- Regression coverage for structure inspection cases including duplicate headers, blank headers, preamble sections, late headers, multi-table sheets, mixed-type columns, formula columns, and non-ASCII column names.
- Release branch CI triggers for `release/**` branches.

## [1.0.0] - 2026-04-20

Expand Down Expand Up @@ -195,7 +201,8 @@ This is the initial release of excel-cli, a lightweight terminal-based Excel vie
- Copy, cut, and paste functionality with `y`, `d`, and `p` keys
- Support for pipe operator when exporting to JSON

[Unreleased]: https://github.com/fuhan666/excel-cli/compare/v1.2.0...HEAD
[Unreleased]: https://github.com/fuhan666/excel-cli/compare/v1.3.0...HEAD
[1.3.0]: https://github.com/fuhan666/excel-cli/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/fuhan666/excel-cli/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/fuhan666/excel-cli/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/fuhan666/excel-cli/releases/tag/v1.0.0
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "excel-cli"
version = "1.2.0"
version = "1.3.0"
edition = "2021"
description = "Excel CLI for AI, scripting, and terminal users. Headless JSON API for automation, plus a Vim-like TUI for interactive browsing and editing."
license = "MIT"
Expand Down
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ An Excel CLI for AI, scripting, and terminal users. Inspect and read headlessly
- Edit cell contents directly in the terminal
- Export data to JSON format
- Select, filter, paginate, and stream read results for automation
- Run workbook and sheet quality checks with stable JSON findings
- Delete rows and columns
- Search functionality with highlighting
- Read-only query preview in the TUI
- Review quality-check findings inside the TUI
- Command mode for advanced operations

## Installation & Uninstallation
Expand Down Expand Up @@ -95,6 +97,15 @@ excel-cli read records path/to/your/file.xlsx --sheet Orders \
--limit 50 \
--output-shape jsonl

# Check workbook data quality with the full rule set
excel-cli check path/to/your/file.xlsx

# Check one sheet with selected rules
excel-cli check path/to/your/file.xlsx --sheet Orders --rules duplicate_values,type_drift

# Return only warning and error findings
excel-cli check path/to/your/file.xlsx --severity-threshold warning

# Open interactive TUI browser
excel-cli ui path/to/your/file.xlsx
```
Expand Down Expand Up @@ -154,6 +165,28 @@ excel-cli read records report.xlsx --sheet Orders --output-shape jsonl

Invalid selected columns, unknown filter columns, unsupported operators, malformed filters, invalid numeric comparisons, and invalid regular expressions return structured `invalid_query` errors with exit code `6`.

### Quality Checks

`check` runs the fixed quality-rule registry against a whole workbook or a single sheet and emits the same stable JSON envelope as the other headless commands. By default it scans every sheet, returns `info`, `warning`, and `error` findings, exits `1` when the filtered result set is non-empty, and exits `0` when no findings remain after filtering.

Supported rules:
- `blank_headers`: flag blank header cells inside the detected header row
- `duplicate_headers`: flag duplicate normalized header names
- `blank_rows`: flag fully blank rows inside the used range
- `blank_columns`: flag fully blank columns inside the used range
- `null_ratio`: flag columns with blank-value ratios above the built-in thresholds
- `duplicate_values`: flag repeated values in the candidate identifier column
- `type_drift`: flag mixed dominant and drift data types in a column
- `formula_presence`: report sheets that still contain formulas in the checked data region

Use `--sheet <name>` to limit the scan to one sheet, `--rules <comma,separated,ids>` to run a subset in registry order, and `--severity-threshold <info|warning|error>` to filter returned findings. `data.summary` counts only the returned findings, while `data.stats.finding_count_before_threshold` preserves the total before threshold filtering and `data.stats.rules_run` records the normalized rule order.

```bash
excel-cli check report.xlsx
excel-cli check report.xlsx --sheet 客户 --rules blank_headers,duplicate_headers
excel-cli check report.xlsx --rules null_ratio,duplicate_values,type_drift --severity-threshold warning
```

### Exit Codes

| Code | Meaning |
Expand Down
Loading
Loading