Test thoroughly when upgrading to new minor versions
Report issues to help stabilize APIs before 1.0
Post-1.0 (Future)
Once we reach version 1.0.0, we will strictly follow Semantic Versioning:
MAJOR Version (X.0.0)
Breaking changes that may require code updates:
Removal of deprecated APIs
Changes to core parsing behavior
Changes to function signatures
Changes to return types
Migration Support:
Deprecation warnings in previous MINOR versions
Migration guides in release notes
Detailed CHANGELOG entries
MINOR Version (1.X.0)
New features and enhancements without breaking existing code:
New parsing options
New execution strategies
New utility functions
Performance improvements
New engine presets
Guarantees:
Backward-compatible
No breaking changes to existing APIs
Safe to upgrade without code changes
PATCH Version (1.0.X)
Bug fixes and minor improvements:
Bug fixes
Documentation updates
Performance optimizations (non-breaking)
Security patches
Guarantees:
Backward-compatible
No new features
Safe to upgrade immediately
Special Considerations
TypeScript Type Definitions
TypeScript type definitions are part of the public API, but have special versioning considerations:
MAJOR: Intentional breaking changes to type definitions
MINOR: May include breaking changes to TypeScript type definitions due to:
TypeScript introducing breaking changes in its own minor updates
Adopting features available only in newer TypeScript versions
Raising the minimum required TypeScript version
New types, expanded unions, new optional properties
PATCH: Type fixes that don't change behavior
Why TypeScript Breaking Changes in MINOR Versions:
TypeScript itself may introduce breaking changes in minor version updates. When we adopt newer TypeScript features or respond to TypeScript's own breaking changes, we may need to update type definitions in a way that breaks compatibility with older TypeScript versions.
Recommendation:
Pin the web-csv-toolbox minor version (not just patch) to control upgrade timing
Test type compatibility when upgrading to new minor versions
Upgrade TypeScript version in your project as needed to match library requirements
Dependency Updates
Dependency updates follow these rules:
Security patches: May be included in PATCH versions even if they change behavior slightly
Major dependency updates: Only in MAJOR versions
Minor dependency updates: May be included in MINOR versions if backward-compatible
Runtime Environment Support
Changes to supported runtime environments are versioned based on the tier of support and impact:
Node.js Version Support
Node.js is our primary supported runtime, and we follow strict versioning rules:
Dropping Node.js LTS versions that reach EOL: MAJOR version
Adding support for new Node.js LTS versions: MINOR version
Non-LTS Node.js versions (odd-numbered): No versioning guarantee - community support only
Changes to Tier 2 (Active Support) environments: MINOR version
Changes to Tier 3 (Community Support) environments: No versioning guarantee
Fixing environment-specific bugs: PATCH version (all tiers)
Rationale:
Tier 1 (Node.js and browsers) have predictable release schedules and EOL dates, allowing us to provide stable versioning guarantees. Tier 2 and Tier 3 environments are less predictable, so we provide best-effort support without strict versioning guarantees.
During the pre-1.0 phase (0.x.x), APIs may change in MINOR versions without deprecation warnings. Once we reach 1.0.0, we follow a formal deprecation policy.
Post-1.0 Deprecation Process
When we need to remove or change an API in v1.0.0+:
During 0.x.x versions, we may introduce breaking changes in MINOR versions without deprecation warnings. See Pre-1.0 (Current: 0.x.x) section for details.
Release Cadence
We do not have a fixed release schedule, but generally:
PATCH releases: As needed for bug fixes (days to weeks)
MINOR releases: Every 1-3 months for new features
MAJOR releases: When significant breaking changes are needed (no fixed schedule)