Releases: roottool/safe-formdata
v0.2.2
Overview
This release improves the clarity of JSDoc comments and library documentation by replacing overly formal, AI-generated phrasing with more direct and natural language. Internal skill documentation has also been trimmed to stay aligned with its specification. No API changes or breaking changes are included.
Highlights
- 📝 Rewrite JSDoc and library documentation to use plain, human-friendly language
- ✂️ Trim
boundary-validatorskill documentation to match its specification
What's Changed
Documentation
Other Changes
Full Changelog: v0.2.1...v0.2.2
v0.2.1
Overview
This patch release contains tooling and TypeScript configuration improvements with no changes to runtime behavior or public API. The main additions are reliable tree-shaking support for bundlers and groundwork for Oxc-based type declaration generation.
Highlights
- 📦 Add
"sideEffects": falsetopackage.jsonfor reliable tree-shaking in bundler environments - ⚙️ Enable
isolatedDeclarations: trueas preparation for Oxc-based.d.tsgeneration - 📝 Remove
removeCommentsso JSDoc comments are preserved in emitted.d.tsfiles - 🔒 Annotate
FORBIDDEN_KEYSasReadonlySet<string>to prevent accidental mutation at the type level
What's Changed
Other Changes
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Overview
This release tightens the type definitions around ParseIssue and ParseResult, removing a field that carried no information and strengthening key type constraints. These changes reduce API surface area and ensure that parse failures are always accompanied by at least one actionable issue, improving predictability for library consumers.
Highlights
- Breaking: Remove
ParseIssue.path(was alwaysreadonly []and carried no information) - Breaking: Narrow
ParseIssue.keyfromkey?: unknowntokey: string(required, typed) - Breaking: Narrow
issueson failure to a non-empty tuple[ParseIssue, ...ParseIssue[]]
Breaking changes — In the 0.x series, minor version bumps are treated as effectively major releases.
ParseIssue.path removed
The path field has been removed from ParseIssue.
// v0.1.x
interface ParseIssue {
code: IssueCode;
path: readonly []; // removed
key?: unknown;
}
// v0.2.0
interface ParseIssue {
code: IssueCode;
key: string; // narrowed (see below)
}Migration: Remove all references to issue.path. Because path was always an empty array, any reference to it was effectively a no-op and can be deleted outright.
ParseIssue.key narrowed to required string
key existed in v0.1.x as key?: unknown. It is now required and typed as string.
// v0.1.x
interface ParseIssue {
code: IssueCode;
key?: unknown; // optional, untyped
}
// v0.2.0
interface ParseIssue {
code: IssueCode;
key: string; // required, typed
}Migration: Remove any undefined guards on issue.key and update type annotations that reference ParseIssue.key as unknown.
issues on failure narrowed to a non-empty tuple
// v0.1.x
issues: ParseIssue[]
// v0.2.0
issues: [ParseIssue, ...ParseIssue[]]When parsing fails (data === null), the type now guarantees at least one issue is present.
Migration: Accessing result.issues[0] remains safe. No changes to narrowing logic are required. However, if you reference the ParseResult type explicitly, you may need to update type annotations.
What's Changed
Breaking Changes
Documentation
Full Changelog: v0.1.4...v0.2.0
v0.1.4
Overview
This release focuses on CI/CD hardening and toolchain modernization. The formatter stack has been consolidated from Biome + Prettier to Oxfmt, CI workflows now have explicit top-level permissions, and dependency review coverage has been improved. Documentation quality is also improved by textlint checks.
Highlights
- 🔧 Formatter Consolidation - Migrated from Biome + Prettier to Oxfmt for a simpler, unified formatting pipeline
- 🔐 CI Security - Added top-level permissions to all workflow files for least-privilege enforcement
- 🔍 Dependency Review - Added missing dependency-review job to the CI pipeline
- 📝 Documentation Quality - Fixed textlint violations and removed trailing colons from comments and docs
What's Changed
Documentation
- refactor: replace prepublishOnly with explicit publish workflow by @roottool in #46
- fix/docs: remove trailing colons from comments and documentation by @roottool in #56
- docs: fix textlint violations in documentation by @roottool in #57
CI
- ci: add top-level permissions to workflow files by @roottool in #52
- fix(ci): add missing dependency-review job to CI workflow by @roottool in #53
- chore(ci): remove deprecated deny-licenses option from dependency-review by @roottool in #55
Other Changes
Full Changelog: v0.1.3...v0.1.4
v0.1.3
Overview
This release focuses on documentation improvements to enhance the developer experience and onboarding process. All type definitions now include comprehensive JSDoc comments, and the README has been reorganized with a "philosophy-first" structure to better communicate the boundary-focused design principles.
Highlights
- 📚 Comprehensive JSDoc - All type definitions now include detailed documentation for better IDE integration
- 🚀 Improved Onboarding - New Installation and Quick Start sections help users get started
- 🎯 Philosophy-First Structure - README reorganized to emphasize boundary-focused philosophy before implementation
- 💡 Clear Type Patterns - Explicit documentation of type narrowing with
data !== null
What's Changed
Documentation
Full Changelog: v0.1.2...v0.1.3
v0.1.2
v0.1.1
What's Changed
Documentation
- docs: Add
check:sourcescript to CONTRIBUTING.md by @roottool in #14 - docs: Add status badges to README by @roottool in #15
- docs: Enhance documentation with comprehensive security policy and issue templates by @roottool in #18
CI
- ci: Add CI-specific format check script by @roottool in #21
- ci: improve release workflow automation by @roottool in #28
- ci: Fix git config username and email for GitHub Actions bot by @roottool in #29
- ci: Use GitHub App token for release PR creation by @roottool in #30
Other Changes
- refactor: Simplify return statement with ternary operator by @roottool in #11
- ci: Remove redundant prepublishOnly step from publish workflow by @roottool in #12
- docs: Fix script name references in documentation by @roottool in #13
- docs: Fix typo by @roottool in #16
- docs: Fix issue template formatting and remove redundant links by @roottool in #19
- docs: Improve PR template clarity and formatting by @roottool in #20
- chore: Add Renovate configuration for automated dependency updates by @roottool in #22
- chore: improve documentation and tooling configuration by @roottool in #23
- chore: Enable global automerge and config migration in Renovate by @roottool in #24
- docs: Clarify why no multiple values or repeated keys by @roottool in #25
- Add comprehensive usage examples by @roottool in #26
- docs: improve examples documentation and remove redundant comments by @roottool in #27
- Update prepare-release-pr.yml by @roottool in #31
- ci: improve release workflow branch management by @roottool in #32
- ci: Fix to commit by @roottool in #33
- Update prepare-release-pr.yml by @roottool in #34
- fix ci by @roottool in #35
- ci: Change run-name by @roottool in #37
New Contributors
- @safe-formdata[bot] made their first contribution in #36
Full Changelog: v0.1.0...v0.1.1
v0.1.0
What's Changed
Documentation
CI
Other Changes
- Change config about testing by @roottool in #3
- test: Add a test case by @roottool in #4
- Update
filesproperty and documents by @roottool in #5 - docs: Some documentation changes by @roottool in #6
- ci: Fix regex by @roottool in #8
- ci: Fix regex again by @roottool in #9
New Contributors
Full Changelog: https://github.com/roottool/safe-formdata/commits/v0.1.0