Skip to content
This repository was archived by the owner on Mar 9, 2026. It is now read-only.

Releases: roottool/safe-formdata

v0.2.2

05 Mar 14:40
Immutable release. Only release title and notes can be modified.
067f7da

Choose a tag to compare

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-validator skill documentation to match its specification

What's Changed

Documentation

  • docs: reduce AI-like writing in source JSDoc and library documentation by @roottool in #66

Other Changes

  • refactor(skills): trim boundary-validator SKILL.md to spec by @roottool in #65

Full Changelog: v0.2.1...v0.2.2

v0.2.1

03 Mar 15:17
Immutable release. Only release title and notes can be modified.
06820e6

Choose a tag to compare

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": false to package.json for reliable tree-shaking in bundler environments
  • ⚙️ Enable isolatedDeclarations: true as preparation for Oxc-based .d.ts generation
  • 📝 Remove removeComments so JSDoc comments are preserved in emitted .d.ts files
  • 🔒 Annotate FORBIDDEN_KEYS as ReadonlySet<string> to prevent accidental mutation at the type level

What's Changed

Other Changes

  • refactor: TypeScript config improvements and code quality fixes by @roottool in #63

Full Changelog: v0.2.0...v0.2.1

v0.2.0

01 Mar 18:44
Immutable release. Only release title and notes can be modified.
ec01447

Choose a tag to compare

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 always readonly [] and carried no information)
  • Breaking: Narrow ParseIssue.key from key?: unknown to key: string (required, typed)
  • Breaking: Narrow issues on 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

  • feat!: v0.2.0 — reshape ParseIssue and strengthen ParseResult types by @roottool in #59

Documentation

  • ci: automate CHANGELOG extraction for GitHub Release and release PR workflow by @roottool in #60

Full Changelog: v0.1.4...v0.2.0

v0.1.4

01 Mar 14:43
Immutable release. Only release title and notes can be modified.
07dffcc

Choose a tag to compare

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

  • chore: Convert formatter from Biome + Prettier to Oxfmt by @roottool in #54

Full Changelog: v0.1.3...v0.1.4

v0.1.3

31 Dec 07:33
Immutable release. Only release title and notes can be modified.
97ad436

Choose a tag to compare

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

  • docs: improve documentation with JSDoc and reorganized README for v0.1.3 by @roottool in #44

Full Changelog: v0.1.2...v0.1.3

v0.1.2

30 Dec 16:41
Immutable release. Only release title and notes can be modified.
b407cd2

Choose a tag to compare

What's Changed

Documentation

Other Changes

Full Changelog: v0.1.1...v0.1.2

v0.1.1

30 Dec 11:17
Immutable release. Only release title and notes can be modified.
v0.1.1
71bd813

Choose a tag to compare

What's Changed

Documentation

  • docs: Add check:source script 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

23 Dec 01:07
Immutable release. Only release title and notes can be modified.
v0.1.0
0c1a59c

Choose a tag to compare

What's Changed

  • Add TypeScript configuration and core FormData parser by @roottool in #2

Documentation

  • Add documentation for this project by @roottool in #1

CI

Other Changes

New Contributors

Full Changelog: https://github.com/roottool/safe-formdata/commits/v0.1.0