Skip to content
Open
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
184 changes: 184 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,190 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.8.1](https://github.com/Arkptz/mitm2openapi/compare/v0.8.0...v0.8.1) - 2026-05-30

### Added

- *(generate)* integrate envelope detection into build()
- *(generate)* integrate operationId strategy into builder
- *(cli)* add envelope detection CLI flags
- *(generate)* integrate tag rules strategy into builder
- add envelope module for discriminator-based response splitting
- *(cli)* add operationId and tag strategy CLI flags
- add operation_id module with camelCase derivation and collision resolution
- add tag_rules module with regex-based tag matching
- *(generate)* integrate redaction with collected examples
- *(generate)* collect request body examples
- *(cli)* add --max-examples flag with default cap of 5
- *(cli)* re-introduce --param-regex with functional implementation
- *(discover)* add cross-request variability detection for path params
- *(generate)* merge request body schemas across multiple captures
- add redaction module for example sanitization
- *(cli)* add --skip-options flag to filter OPTIONS requests
- *(discover)* extend param detection with UPPER_CASE, hex, base58 heuristics
- *(cli)* add --strict flag to escalate warnings to errors
- feat!(builder): merge response schemas per status code
- feat!(cli): remove unused --param-regex flag
- *(report)* track cap firings and parse errors in processing report
- *(cli)* add --report flag for structured processing summary
- *(tnetstring)* emit byte offset and error kind on parse halt
- *(har)* add streaming HAR entry iterator
- *(reader)* add stream_mitmproxy_file and stream_mitmproxy_dir
- *(tnetstring)* add streaming iterator TNetStringIter
- *(path_matching)* validate path parameter identifiers
- *(cli)* expose --max-input-size, --max-payload-size, --max-depth, --max-body-size, --allow-symlinks
- *(reader)* reject symlinks, non-regular files, and oversized inputs
- *(schema)* enforce 64-level JSON recursion depth limit
- *(tnetstring)* enforce 256-level recursion depth limit
- *(tnetstring)* cap payload size at 256 MiB
- *(error)* add typed variants for parse and input limits
- *(discover)* add --exclude-patterns and --include-patterns glob filters
- *(level2)* add crAPI integration test (compose, Playwright scenarios, normalize, oasdiff, nightly workflow)
- *(demo)* add 3-phase demo GIF pipeline (capture → generate → browse Swagger UI)
- *(level1)* add Petstore golden integration test (compose, seed, discover, generate, oasdiff)
- add tag extraction, header/cookie filtering, remaining CLI settings
- add error recovery — skip corrupt flows, continue
- add format auto-detection with heuristic scoring
- wire discover and generate subcommands end-to-end in main.rs
- implement YAML serialization with comment injection
- implement x-path-templates discovery with parameterized suggestions
- implement OpenAPI spec assembly from processed requests
- implement mitmproxy flow reader — tnetstring to CapturedRequest
- implement HAR reader with CapturedRequest trait
- implement parameter extraction and endpoint naming
- implement path_to_regex, template matching, param suggestions
- implement value_to_schema producing openapiv3::Schema
- implement tnetstring parser with mitmproxy unicode extension
- define error types with thiserror
- define CapturedRequest trait and shared types
- add CLI skeleton with discover and generate subcommands
- initialize Rust project with Cargo.toml and all dependencies

### Fixed

- *(docs)* escape enum:[false] in changelog to fix mdbook linkcheck
- *(cli)* show correct value name and help text for --redact-patterns
- *(cli)* stop splitting --redact-patterns on comma, fail invalid regex under --strict
- *(envelope)* pin discriminator field to boolean enum:[false] in ApiError
- *(envelope)* merge all error bodies in infer_api_error, not just first
- *(test)* normalize CRLF in snapshot comparison, add .gitattributes eol=lf
- *(output)* sort maps for deterministic YAML output
- *(changelog)* remove duplicate Unreleased section
- *(mitmproxy)* wire --max-payload-size to tnetstring parser, fix clippy
- *(tests)* replace single-arm match with if let
- resolve clippy warnings and example name leaking sensitive values
- *(mitmproxy)* decompress response bodies based on content-encoding header
- *(har)* apply header size caps consistent with mitmproxy reader
- *(reader)* reject symlinked directory inputs and entries
- *(builder)* use .get() in dedup_schema_variants to satisfy indexing_slicing lint
- *(reader)* warn on skipped directory entries and malformed overrides
- *(schema)* union array element schemas and tighten dict heuristic
- *(test)* gate Unix-specific path-failure test behind cfg(unix)
- *(output)* write YAML via tempfile and atomic rename
- *(builder)* skip requests with unknown HTTP methods instead of aliasing to GET
- *(params)* preserve multi-byte UTF-8 in urlencoding_decode
- *(builder)* cap form-field count per request at 1000
- *(har)* validate schemes and status codes, log base64 failures, cap bodies
- *(reader)* validate port/status ranges, enforce strict UTF-8, and cap field sizes
- *(test)* gate symlink and FIFO tests behind cfg(unix)

### Other

- release v0.8.0
- Merge pull request #53 from Arkptz/feat/enrichments
- *(changelog)* add bugfix entries from MEXC integration testing
- document operationId, tags, and envelope features
- *(integration)* add end-to-end test for operationId, tags, and envelope
- add snapshot test pinning current generate output
- release v0.6.0
- *(integration)* add full pipeline test with all new features
- update cli-reference, pipeline, introduction, README for new features
- *(builder)* add examples accumulator infrastructure
- release v0.5.2
- *(security)* cover symlink directory and entry rejection
- *(readme)* trim content migrated to book, add docs badge
- *(book)* add mdBook scaffold with book.toml and all chapter content
- adjust CHANGELOG/CONTRIBUTING headings for mdBook inclusion
- regenerate demo.gif [skip ci]
- release v0.5.1
- *(bench)* refresh benchmark results
- *(bench)* drop small fixture tier
- *(readme)* add benchmarks section linking to automated results
- *(bench)* seed benchmarks.md with methodology and placeholders
- regenerate demo.gif [skip ci]
- release v0.5.0
- *(readme)* document --strict flag and benchmark CI
- *(strict)* verify strict mode exit codes
- release v0.4.1
- *(lint)* deny clippy::indexing_slicing at crate level
- extract is_numeric_string and is_uuid to shared module
- *(output)* lazy-init regex via LazyLock
- *(error)* replace guarded unwrap sites with pattern matching
- release v0.4.0
- *(readme)* remove --param-regex mention from CLI reference
- *(cli)* verify --param-regex is rejected as unknown argument
- *(builder)* cover multi-status response aggregation
- refactor!(error): mark Error enum as non_exhaustive
- regenerate demo.gif [skip ci]
- release v0.3.0
- *(readme)* document --report flag and parse halt diagnostics
- *(report)* verify report file schema and contents
- *(tnetstring)* verify parse halt diagnostics and no-resync on binary payload
- release v0.2.6
- *(output)* verify atomic write preserves target on failure
- *(deps)* move tempfile to runtime dependencies
- release v0.2.5
- *(builder)* verify unknown method is skipped and standard methods preserved
- release v0.2.4
- *(params)* add UTF-8 roundtrip and overlong rejection cases
- regenerate demo.gif [skip ci]
- release v0.2.3
- *(readme)* document per-field size and validation limits
- release v0.2.2
- *(readme)* mention HAR streaming in resource limits and supported formats
- *(har)* verify streaming does not materialize all entries
- *(reader)* switch HAR dispatch to streaming iterator
- regenerate demo.gif [skip ci]
- release v0.2.1
- *(readme)* document resource-limit flags and streaming behavior
- *(main)* switch discover and generate to streaming pipeline
- *(path_matching)* cache compiled regexes in CompiledTemplates
- *(builder)* add discover_paths_streaming variant
- regenerate demo.gif [skip ci]
- release v0.2.0
- update Cargo.lock for globset dependency
- *(security)* cover symlink, FIFO, and oversize input rejection
- *(har)* bound format-detection read to 4 KiB
- *(builder)* replace custom glob matcher with globset
- release v0.1.2
- add tests/fixtures/poc placeholder directory
- regenerate demo.gif [skip ci]
- release v0.1.1 ([#9](https://github.com/Arkptz/mitm2openapi/pull/9))
- *(readme)* add Why? section explaining the Python-vs-Rust trade-off
- *(deps)* bump assert_cmd from 2.2.0 to 2.2.1 in the all-cargo group ([#7](https://github.com/Arkptz/mitm2openapi/pull/7))
- regenerate demo.gif [skip ci]
- gitignore leftover .ruff_cache
- add SECURITY and CODE_OF_CONDUCT
- add release-plz for automated changelog and crates.io publishing
- restructure README with badges and feature list
- add crate-level rustdoc
- add crates.io metadata
- add MIT license
- regenerate demo.gif [skip ci]
- add generated demo.gif and demo.mp4 artifacts
- document --exclude-patterns and --include-patterns
- *(nix)* add oasdiff + integration test and demo tooling to devshell
- add CONTRIBUTING with local testing instructions
- *(level1)* add integration workflow with naive (required) + strict (informational) jobs
- ignore integration test artifacts and demo build outputs
- add README with installation, usage, migration guide from Python
- add GitHub Actions (test, clippy, fmt, build, release)
- add golden OpenAPI YAML files for integration test comparison
- add generated fixture files for all test scenarios
- add Python fixture generator for tnetstring flow dumps and HAR files
- add nix flake devshell with Rust toolchain and mitmproxy
- add .gitignore for Rust, Python, IDE, and Nix artifacts

## [0.8.0](https://github.com/Arkptz/mitm2openapi/compare/v0.7.0...v0.8.0) - 2026-05-30

### Added
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 = "mitm2openapi"
version = "0.8.0"
version = "0.8.1"
edition = "2021"
authors = ["Arkptz <arkptz@gmail.com>"]
description = "Convert mitmproxy flow dumps and HAR files to OpenAPI 3.0 specs — fast Rust rewrite of mitmproxy2swagger"
Expand Down