Skip to content

Commit e0a9715

Browse files
committed
chore: Consolidate as v0.8.0 release
Consolidates all features (Impact Classification, Whitespace Intelligence, and Multi-TFM Support) into v0.8.0 release since v0.8.0 was never published. Changes: - Updated CHANGELOG.md: Changed [0.9.0] to [0.8.0] - Expanded v0.8.0 section to include all three major features - Updated README.md: Changed all v0.9.0 references to v0.8.0 - Updated docs/tfm-support.md: Changed version to 0.8.0+ This release includes: - Impact Classification (v0.7.0 features) - Whitespace Intelligence (v0.8.0 features) - Multi-Target Framework Support (previously v0.9.0) Ready for v0.8.0 release to main.
1 parent 773a61a commit e0a9715

File tree

3 files changed

+55
-20
lines changed

3 files changed

+55
-20
lines changed

CHANGELOG.md

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,46 +13,81 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313
- Git integration (compare commits, branches)
1414
- F# support via FSharp.Compiler.Service
1515

16-
## [0.9.0] - 2026-01-20
16+
## [0.8.0] - 2026-01-20
1717

1818
### Added
1919

20+
#### Impact Classification
21+
- **Automatic Impact Classification** - Every change is categorized by its potential impact on consumers
22+
- Breaking Public API - Changes that break external consumers (method signature changes, removed public members)
23+
- Breaking Internal API - Changes that break internal consumers (internal method renames, parameter changes)
24+
- Non-Breaking - Safe changes with no execution impact (private field renames, code reordering)
25+
- Formatting Only - Pure whitespace/comment changes
26+
- **Visibility Tracking** - Each change includes visibility information (public, internal, private, protected)
27+
- **Caveat Warnings** - Warnings for edge cases (e.g., "parameter rename may break named arguments")
28+
- **Impact Filtering** - Filter changes by impact level in JSON output
29+
30+
#### Whitespace Intelligence
31+
- **4 Whitespace Modes** - Fine-grained whitespace handling
32+
- Exact - Preserve all whitespace (default)
33+
- IgnoreLeadingTrailing - Ignore leading/trailing whitespace
34+
- IgnoreAll - Ignore all whitespace differences
35+
- LanguageAware - Language-specific handling (exact for Python/YAML, normalized for C#/Java)
36+
- **Automatic Issue Detection** - Detects indentation changes, mixed tabs/spaces, trailing whitespace, line ending changes
37+
- **Whitespace Warnings** - Visual indicators in HTML output for whitespace issues
38+
- **CLI Options** - `--whitespace-mode` and `-w` shortcut for `--whitespace-mode ignore-all`
39+
2040
#### Multi-Target Framework (Multi-TFM) Support
2141
- **Target Framework Analysis** - Analyze code differences across multiple .NET target frameworks simultaneously
2242
- **TFM-Specific Change Detection** - Identify which changes apply to specific target frameworks vs. all frameworks
2343
- **Conditional Compilation Awareness** - Properly handles `#if` directives and framework-specific code
2444
- **Per-TFM Semantic Analysis** - Runs full Roslyn analysis for each target framework with correct compilation symbols
45+
- **Parallel TFM Processing** - Optimized multi-TFM analysis with parallel processing
2546

2647
#### CLI Enhancements
48+
- `--impact-level` - Filter by impact: `breaking-public`, `breaking-internal`, `non-breaking`, `all`
49+
- `--include-non-impactful` - Include non-breaking and formatting changes in JSON output
50+
- `--include-formatting` - Include formatting-only changes
51+
- `--whitespace-mode` - Whitespace handling mode
2752
- `--target-framework` / `-t` - Specify one or more target frameworks for analysis (can be repeated)
2853
- `-T` / `--target-frameworks` - Specify semicolon-separated list of target frameworks (e.g., "net8.0;net10.0")
2954
- TFM validation with helpful error messages for invalid framework identifiers
3055
- Support for common TFM formats: `net8.0`, `net10.0`, `netcoreapp3.1`, `netstandard2.0`, `net462`, etc.
3156

3257
#### Output Format Enhancements
33-
- **JSON Output** - Added `targetFrameworks` array in metadata and `applicableToTfms` per change
34-
- **HTML Output** - Displays target frameworks in summary and annotates TFM-specific changes
35-
- **Text/Plain Output** - Shows TFM annotations like `[.NET 8.0]` for framework-specific changes
36-
- **Terminal Output** - Rich display of multi-framework analysis results
58+
- **Impact Indicators** - Color-coded impact badges in HTML, impact properties in JSON
59+
- **Whitespace Warnings** - Visual indicators for whitespace issues in HTML output
60+
- **TFM Annotations** - Target framework information in all output formats
61+
- JSON: `targetFrameworks` array in metadata and `applicableToTfms` per change
62+
- HTML: TFM badges and framework-specific indicators
63+
- Text/Plain: TFM annotations like `[.NET 8.0]` for framework-specific changes
3764

3865
#### Architecture Improvements
66+
- `ImpactClassifier` - Analyzes and classifies change impact
67+
- `WhitespaceAnalyzer` - Detects whitespace issues
68+
- `TfmSymbolResolver` - Maps TFMs to preprocessor symbols
69+
- `TfmParser` - Validates and parses TFM strings
70+
- `PreprocessorDirectiveDetector` - Pre-scan optimization for conditional compilation
3971
- `TfmResultMerger` - Intelligent merging of per-TFM analysis results
40-
- `TfmChangeCorrelator` - Correlates changes across TFMs to identify commonalities
41-
- Enhanced `DiffResult` model with `TargetFrameworks` and per-change `ApplicableToTfms`
42-
- Optimized multi-TFM analysis with parallel processing
72+
- Enhanced `DiffResult` model with impact breakdown and TFM metadata
73+
- Enhanced `Change` model with `Impact`, `Visibility`, `Caveats`, and `ApplicableToTfms` properties
4374

4475
#### Documentation
45-
- Comprehensive TFM support guide (`docs/tfm-support.md`)
46-
- Sample files demonstrating conditional compilation scenarios
47-
- Usage examples for single and multiple framework analysis
76+
- **Impact Classification Guide** (`docs/impact-classification.md`) - Complete guide to impact levels, filtering, and use cases
77+
- **Whitespace Handling Guide** (`docs/whitespace-handling.md`) - Whitespace modes and best practices
78+
- **Multi-TFM Support Guide** (`docs/tfm-support.md`) - Multi-target framework analysis and conditional compilation
79+
- Sample files demonstrating TFM scenarios and whitespace handling
80+
- Updated API documentation with programmatic examples
4881

4982
### Changed
50-
- Enhanced `DiffOptions` with `TargetFrameworks` property
51-
- Updated all output formatters to handle TFM metadata
52-
- Improved error messages for TFM-related validation failures
83+
- Enhanced `DiffOptions` with `ImpactLevel`, `IncludeNonImpactful`, `IncludeFormatting`, `WhitespaceMode`, and `TargetFrameworks` properties
84+
- Updated all output formatters to display impact, whitespace warnings, and TFM metadata
85+
- JSON output defaults to showing only breaking changes (`IncludeNonImpactful: false`)
86+
- HTML output defaults to showing all changes for review
5387

5488
### Performance
5589
- Multi-TFM overhead is minimal (~2-2.5x for 3 frameworks vs. single framework)
90+
- Pre-scan optimization skips multi-TFM analysis when no `#if` directives exist
5691
- Parallel TFM processing where possible
5792
- Efficient change correlation algorithms
5893

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Fine-grained whitespace handling with language-aware detection:
4545

4646
See [Whitespace Handling Guide](docs/whitespace-handling.md) for comprehensive details.
4747

48-
### Multi-Target Framework Analysis (v0.9.0) 🎯
48+
### Multi-Target Framework Analysis (v0.8.0) 🎯
4949

5050
Analyze code changes across multiple .NET target frameworks simultaneously:
5151

@@ -207,7 +207,7 @@ roslyn-diff diff <old-file> <new-file> [options]
207207
| `--whitespace-mode <mode>` | | Whitespace handling: `exact`, `ignore-leading-trailing`, `ignore-all`, `language-aware` | `exact` |
208208
| `--ignore-whitespace` | `-w` | Shortcut for `--whitespace-mode ignore-all` | `false` |
209209

210-
**Multi-TFM Options (v0.9.0):**
210+
**Multi-TFM Options (v0.8.0):**
211211
| Option | Short | Description | Default |
212212
|--------|-------|-------------|---------|
213213
| `--target-framework <tfm>` | `-t` | Target framework moniker (repeatable: `-t net8.0 -t net10.0`) | `null` (NET10_0 assumed) |
@@ -284,7 +284,7 @@ roslyn-diff diff old.cs new.cs --json analysis.json
284284
{
285285
"$schema": "roslyn-diff-output-v2",
286286
"metadata": {
287-
"version": "0.9.0",
287+
"version": "0.8.0",
288288
"timestamp": "2026-01-19T22:45:12Z",
289289
"mode": "roslyn",
290290
"analyzedTfms": ["net8.0", "net10.0"],
@@ -568,7 +568,7 @@ See the [Synaptic Canvas documentation](https://github.com/randlee/synaptic-canv
568568

569569
- **[Impact Classification Guide](docs/impact-classification.md)** - Complete guide to impact levels, filtering, caveats, and use cases (v0.7.0)
570570
- **[Whitespace Handling Guide](docs/whitespace-handling.md)** - Whitespace modes, language-aware detection, and best practices (v0.8.0)
571-
- **[Multi-TFM Support Guide](docs/tfm-support.md)** - Multi-target framework analysis, conditional compilation detection, and advanced scenarios (v0.9.0)
571+
- **[Multi-TFM Support Guide](docs/tfm-support.md)** - Multi-target framework analysis, conditional compilation detection, and advanced scenarios (v0.8.0)
572572
- [Output Formats](docs/output-formats.md) - Format specifications, JSON Schema v2, and feature comparison
573573
- [Sample Outputs](samples/README.md) - Example diffs with impact classification
574574

docs/tfm-support.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Multi-Target Framework Support Guide
22

3-
**Version:** 0.9.0+
3+
**Version:** 0.8.0+
44
**Last Updated:** January 2026
55

66
roslyn-diff includes comprehensive support for analyzing code changes across multiple .NET target frameworks (TFMs). This allows developers to understand how changes behave differently across framework versions, particularly when using conditional compilation (`#if`, `#elif`) or framework-specific APIs.
@@ -389,7 +389,7 @@ Multi-TFM information appears in two places:
389389
{
390390
"$schema": "roslyn-diff-output-v2",
391391
"metadata": {
392-
"version": "0.9.0",
392+
"version": "0.8.0",
393393
"analyzedTfms": ["net8.0", "net10.0"],
394394
"options": {
395395
"targetFrameworks": ["net8.0", "net10.0"]

0 commit comments

Comments
 (0)