Skip to content

Commit 9c23ce9

Browse files
bumahkib7claude
andcommitted
chore: Release v0.14.0
## Added - Typestate Analysis Framework (file, lock, crypto, database, iterator) - Interactive TUI for browsing findings - Smart progress display with ETA - Powerful filtering (--severity, --rules, --category, --search) - Output limiting (--limit, --group-by) ## Fixed - Database typestate false positives on API client code - Array.prototype.find() false positives - Compiler warnings eliminated Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 336fe6e commit 9c23ce9

File tree

11 files changed

+45
-33
lines changed

11 files changed

+45
-33
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.14.0] - 2026-02-02
11+
1012
### Added
1113
- **Typestate Analysis Framework**: Track object state transitions through their lifecycle
1214
- `generic/file-typestate`: Detect use-after-close, unclosed files, double-open
@@ -18,6 +20,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1820
- Safe pattern recognition: `with`, `defer`, try-with-resources, RAII
1921
- FlowContext integration with `compute_typestate()` and `typestate_violations()` methods
2022
- `builtin_typestate_rules()` convenience function for all typestate rules
23+
- **Interactive TUI**: Browse findings with keyboard navigation (`j/k`, `Enter` for details, `s` filter severity)
24+
- **Smart Progress Display**: Real-time progress bar with ETA, file counts, and severity breakdown
25+
- **Powerful Filtering**: `--severity`, `--rules`, `--exclude-rules`, `--files`, `--category`, `--search`
26+
- **Output Limiting**: `--limit N` and `--group-by` (file/rule/severity) for large codebases
27+
28+
### Fixed
29+
- **Database Typestate False Positives**: Rule now requires database imports in file before flagging
30+
- **API Client Detection**: `cartApi.update()`, `userService.create()` no longer flagged as DB queries
31+
- **Array.find() False Positives**: Removed generic `.find(` from DB patterns, use specific ORM patterns
32+
- Compiler warnings eliminated across all crates
2133

2234
## [0.13.0] - 2026-02-02
2335

Cargo.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ members = [
1313
]
1414

1515
[workspace.package]
16-
version = "0.13.0"
16+
version = "0.14.0"
1717
edition = "2024"
1818
authors = ["Rust Monorepo Analyzer Team"]
1919
license = "MIT OR Apache-2.0"

crates/ai/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ edition.workspace = true
66
license.workspace = true
77

88
[dependencies]
9-
rma-common = { version = "0.13.0", path = "../common" }
10-
rma-parser = { version = "0.13.0", path = "../parser" }
9+
rma-common = { version = "0.14.0", path = "../common" }
10+
rma-parser = { version = "0.14.0", path = "../parser" }
1111
anyhow.workspace = true
1212
thiserror.workspace = true
1313
tracing.workspace = true

crates/analyzer/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ oxc = [
1818
]
1919

2020
[dependencies]
21-
rma-common = { version = "0.13.0", path = "../common" }
22-
rma-parser = { version = "0.13.0", path = "../parser" }
21+
rma-common = { version = "0.14.0", path = "../common" }
22+
rma-parser = { version = "0.14.0", path = "../parser" }
2323
anyhow.workspace = true
2424
thiserror.workspace = true
2525
tracing.workspace = true

crates/cli/Cargo.toml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ default = ["oxc"]
2020
oxc = ["rma-analyzer/oxc"]
2121

2222
[dependencies]
23-
rma-common = { version = "0.13.0", path = "../common" }
24-
rma-parser = { version = "0.13.0", path = "../parser" }
25-
rma-analyzer = { version = "0.13.0", path = "../analyzer", default-features = false }
26-
rma-indexer = { version = "0.13.0", path = "../indexer" }
27-
rma-ai = { version = "0.13.0", path = "../ai" }
28-
rma-daemon = { version = "0.13.0", path = "../daemon" }
29-
rma-plugins = { version = "0.13.0", path = "../plugins" }
23+
rma-common = { version = "0.14.0", path = "../common" }
24+
rma-parser = { version = "0.14.0", path = "../parser" }
25+
rma-analyzer = { version = "0.14.0", path = "../analyzer", default-features = false }
26+
rma-indexer = { version = "0.14.0", path = "../indexer" }
27+
rma-ai = { version = "0.14.0", path = "../ai" }
28+
rma-daemon = { version = "0.14.0", path = "../daemon" }
29+
rma-plugins = { version = "0.14.0", path = "../plugins" }
3030
anyhow.workspace = true
3131
clap = { workspace = true, features = ["derive", "env", "string"] }
3232
clap_complete = "4.5"

crates/daemon/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ edition.workspace = true
66
license.workspace = true
77

88
[dependencies]
9-
rma-common = { version = "0.13.0", path = "../common" }
10-
rma-parser = { version = "0.13.0", path = "../parser" }
11-
rma-analyzer = { version = "0.13.0", path = "../analyzer" }
12-
rma-indexer = { version = "0.13.0", path = "../indexer" }
9+
rma-common = { version = "0.14.0", path = "../common" }
10+
rma-parser = { version = "0.14.0", path = "../parser" }
11+
rma-analyzer = { version = "0.14.0", path = "../analyzer" }
12+
rma-indexer = { version = "0.14.0", path = "../indexer" }
1313
anyhow.workspace = true
1414
thiserror.workspace = true
1515
tracing.workspace = true

crates/indexer/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ edition.workspace = true
66
license.workspace = true
77

88
[dependencies]
9-
rma-common = { version = "0.13.0", path = "../common" }
10-
rma-parser = { version = "0.13.0", path = "../parser" }
11-
rma-analyzer = { version = "0.13.0", path = "../analyzer" }
9+
rma-common = { version = "0.14.0", path = "../common" }
10+
rma-parser = { version = "0.14.0", path = "../parser" }
11+
rma-analyzer = { version = "0.14.0", path = "../analyzer" }
1212
anyhow.workspace = true
1313
thiserror.workspace = true
1414
tracing.workspace = true

crates/lsp/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ name = "rma-lsp"
1010
path = "src/main.rs"
1111

1212
[dependencies]
13-
rma-common = { version = "0.13.0", path = "../common" }
14-
rma-parser = { version = "0.13.0", path = "../parser" }
15-
rma-analyzer = { version = "0.13.0", path = "../analyzer" }
13+
rma-common = { version = "0.14.0", path = "../common" }
14+
rma-parser = { version = "0.14.0", path = "../parser" }
15+
rma-analyzer = { version = "0.14.0", path = "../analyzer" }
1616
anyhow.workspace = true
1717
thiserror.workspace = true
1818
tracing.workspace = true

crates/parser/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ edition.workspace = true
66
license.workspace = true
77

88
[dependencies]
9-
rma-common = { version = "0.13.0", path = "../common" }
9+
rma-common = { version = "0.14.0", path = "../common" }
1010
anyhow.workspace = true
1111
thiserror.workspace = true
1212
tracing.workspace = true

0 commit comments

Comments
 (0)