Skip to content

Latest commit

 

History

History
458 lines (253 loc) · 20.8 KB

File metadata and controls

458 lines (253 loc) · 20.8 KB

Changelog

🚀 Release @addon-core/storage v0.7.0 (2026-07-18)

💥 Breaking Changes

  • LockManager is now exported as WebLockManager. Update package-root imports to use WebLockManager; the old LockManager alias is not retained.

  • set rejects undefined, and flat keys or namespaces containing ":" are rejected. Unnamespaced SecureStorage keys now use secure:: instead of secure:, so legacy ciphertext requires explicit raw migration. Listener data or corruption errors now terminate the affected registration and surface asynchronously.

  • support aggregate batch update comparison

✨ Features

  • add batch storage operations and subscriptions (dff46a7)

    • add multi-key overloads for get, set, and update
    • add subscribe with FIFO event formatting and keep watch as a per-key projection
    • align Storage, SecureStorage, and MonoStorage locking, corruption, recovery, and no-op semantics
    • introduce strict physical-key decoding and explicit SecureStorage legacy migration
    • cover runtime, type-level, locking, codec, React, and batch-planner behavior
  • helpers: add functional storage API (5c2c43c)

    • add one-shot get/set and provider factories for all storage areas
    • support secure and mono providers through typed overloads
    • document provider reuse and cover runtime and type contracts
  • support aggregate batch update comparison (18d9e78)

  • types: support storage without explicit state (70dce43)

    • add default state generics across providers, factories, and related public types
    • preserve strict schema typing while documenting the loose playground mode
    • cover genericless and typed usage with compile-time assertions

📝 Documentation

  • restructure README around functional API (f7f841b)

    • make functional helpers and storage-area selection the primary onboarding path
    • consolidate class, batch, locking, watch, secure, and MonoStorage documentation
    • clarify provider scope, recovery behavior, public errors, and runtime limits
  • update package description (053e844)

    Highlight the functional API, type safety, batch operations, encryption, and subscriptions in npm package metadata.

🧹 Chores

  • release: align breaking-change bumps before 1.0 (96c550c)

    • treat breaking commits as minor releases on 0.x and major releases on 1.x
    • recognize bang syntax, parser flags, notes, and breaking footers consistently
    • preserve the minor release policy for revert commits
    • add focused release-policy tests and contributor documentation

🛠️ Refactoring

  • locking: rename LockManager to WebLockManager (daecdaa)

    • move the Web Locks implementation and tests into src/locking
    • add a locking barrel and re-export built-in lockers from the package root
    • keep WebLockManager as the default locker for storage providers
    • document the built-in implementation and verify its public type export

🙌 Contributors

🚀 Release @addon-core/storage v0.6.0 (2026-05-04)

✨ Features

  • add custom equality comparison for update method (89874b9)

    • Introduce compare option for update() to skip writes based on custom equality logic.
    • Extend StorageUpdateOptions with compare field for precise control over update logic.
    • Ensure no-op writes do not trigger unnecessary updates or storage writes.
    • Add comprehensive test coverage for compare usage.
    • Update documentation with examples to demonstrate custom compare usage.

📝 Documentation

  • improve atomic updates section in README (f457ced)

    • Expand explanation of atomic updates for browser extensions.
    • Provide examples for extension state shared across multiple contexts.
    • Clarify use cases such as counters, retries, toggles, and queue metadata.

🙌 Contributors

🚀 Release @addon-core/storage v0.5.0 (2026-04-09)

✨ Features

  • add LockManager to serialize concurrent operations (8b9d49c)

    • Introduce LockManager for atomic storage updates, leveraging the Web Locks API.
    • Enhance storage operations with lock options for update, remove, and clear.
    • Expand test coverage to include concurrency handling and custom locks implementation.
  • enhance package metadata and dependencies (87a6a31)

🐛 Bug Fixed

  • handle non-string values in SecureStorage changes gracefully (65f3e9e)

  • release: specify npm registry in release-it config (b540405)

📝 Documentation

  • add CI badge to README (79fd044)

  • improve and expand documentation for storage features (bb0af71)

    • Provide clearer descriptions of storage APIs, features, and use cases.
    • Enhance examples for SecureStorage, MonoStorage, atomic updates, and React bindings.
    • Include notes on Web Locks API reliance, namespaces, and storage areas.
    • Update examples with modern TypeScript syntax and best practices.

🤖 CI

  • husky: update pre-commit hook to handle partially staged files (6c14915)

  • release: update release workflow, Node version, and npm config (f62686e)

🧹 Chores

  • deps: update dependencies and lockfile to latest versions (82b41d1)

  • update formatting, mailmap, and test label icon (4ee7b34)

    • Adjusted .release-it.cjs to include an icon for the "test" label.
    • Updated jest.config.ts to enforce consistent spacing within objects.
    • Added .mailmap file to consolidate and standardize author email aliases.

🛠️ Refactoring

  • release: simplify and clean up release-it configuration (ff864e1)

  • simplify and standardize async storage operations (ae61d0c)

    • Replace custom promises with callWithPromise for consistency and readability.
    • Remove unnecessary throwRuntimeError calls and redundant error handling.
    • Streamline onChanged listener management using handleListener helper.

🙌 Contributors

🚀 Release @addon-core/storage v0.4.0 (2025-10-07)

✨ Features

  • enhance watch callbacks with key differentiation (97e4557)

    • Updated watch to include key-specific callbacks and pass key names to global callbacks.
    • Refactored StorageWatchOptions into separate callback types for consistency.
    • Adjusted tests to validate key-specific callback behavior and new parameters.
    • Improved error handling in AbstractStorage for unhandled key changes.

📝 Documentation

  • update README and CONTRIBUTING guidelines for clarity (aa79667)

    • Expanded peer dependency details in README (including @types/react-dom).
    • Updated descriptions for watch() callbacks and getAll() behavior.
    • Clarified SecureStorage key formatting for namespaced storage.
    • Improved MonoStorage watch() explanation with deep comparison info.
    • Revised CONTRIBUTING.md to align with a Simplified GitFlow model.
    • Removed references to release/* and hotfix/* branches in release process.

🤖 CI

  • replace release workflows with unified release pipeline (a39f5d4)

    • Consolidated release-prepare.yml and release-publish.yml into a single release.yml.
    • Streamlined CI with dynamic matrix computation for better flexibility and coverage.
    • Updated .release-it.cjs with enhanced contributor logic and changelog formatting.
    • Introduced .gitattributes to enforce consistent line endings across the repo.
    • Improved biome configuration to exclude coverage and dist directories.

🧹 Chores

  • update dependencies and replace @adnbn/browser with @addon-core/browser (fa3bbaa)

    • Updated @addon-core/browser to v0.2.1, replacing @adnbn/browser.
    • Bumped multiple Jest-related dependencies to v30.2.0 for consistency.
    • Included new transitive dependency signal-exit v4.1.0.

🛠️ Refactoring

  • replace shallowEqual with dequal for deep equality checks (d2a5e43)

    • Removed custom shallowEqual method in favor of using dequal for better accuracy.
    • Updated MonoStorage logic to apply deep equality checks with imported dequal.
    • Adjusted .gitignore with additional entries for environment and build artifacts.
    • Updated package-lock.json with dequal dependency and removed unused modules.

🙌 Contributors

🚀 Release @addon-core/storage v0.3.6 (2025-09-26)

🛠️ Refactoring

  • update release-it config to hide unused sections (1ce0a4d)

    • Updated configuration to hide docs, build, and chore sections in changelogs.
    • Removed chore and build from patch types for version bump logic.
    • Added releaseName field in GitHub releases for better naming consistency.
  • update release-it configuration for better npm publish (ae54a77)

🚀 Release @addon-core/storage v0.3.5 (2025-09-26)

🐛 Bug Fixed

  • release-it: remove redundant releaseName field from config (92bfca4)

    • Deleted the releaseName field under the GitHub section as it is not used.
    • Simplifies the configuration for release management.

🛠️ Refactoring

  • update release-it config to hide unused sections (1ce0a4d)

    • Updated configuration to hide docs, build, and chore sections in changelogs.
    • Removed chore and build from patch types for version bump logic.
    • Added releaseName field in GitHub releases for better naming consistency.
  • update release-it configuration for better npm publish (ae54a77)

🚀 Release @addon-core/storage v0.3.4 (2025-09-25)

🐛 Bug Fixed

  • ci: migrate from semantic-release to release-it (157a07b)

    • Removed all semantic-release-related configurations and workflows.
    • Added release-it configurations for preview and publish workflows.
    • Updated package dependencies to replace semantic-release with release-it.
  • release-it: add shorthash fallback and adjust release name format (af14a46)

  • release-it: remove redundant releaseName field from config (92bfca4)

    • Deleted the releaseName field under the GitHub section as it is not used.
    • Simplifies the configuration for release management.
  • release-it: update templates for consistent formatting and naming (a8d5293)

  • release-it: use Map.get for type lookup in commit transformation (6b697be)

🤖 CI

  • add CI job and update npm install commands (009ec1f)

    • Introduced a reusable ci job in release-publish.yml and release-prepare.yml workflows.
    • Updated npm ci to npm install for dependency installation in both workflows.
  • update workflows for release management and clean up dependencies (85da77d)

    • Added name and needs: ci fields in release-publish.yml and release-prepare.yml.
    • Removed redundant npm run build step from release-publish.yml.
    • Cleaned up unused dependencies from package-lock.json for better maintenance.
  • update workflows for release preparation and publishing (af18584)

    • Added Git user configuration step in release-publish.yml for commits made by workflows.
    • Enabled hotfix/** branch triggering in release-prepare.yml for flexible hotfix management.

🧹 Chores

  • release-it: add repoUrl for commit links in changelogs (5835e68)

  • release-it: enhance configuration for structured release notes (405a947)

    • Added context to include package name in changelog and header templates.
    • Updated headerPartial and introduced mainTemplate for improved formatting.
    • Refined commitPartial to ensure proper handling of commit details.
    • Simplified npm and GitHub release configurations for consistency.
  • release-it: refactor types configuration and enhance commit processing (d11d849)

    • Refactored type definitions into a shared types array with additional metadata.
    • Introduced typesMap for better type lookup and handling during commit transformation.
    • Updated context to reuse parsed package information from package.json.
    • Enhanced transform to filter out hidden commit types and reformat body content.
    • Adjusted sorting and templates for structured and consistent release notes generation.
  • release-it: refine configuration for enhanced changelogs and bump logic (034ea8a)

    • Made "chore" commits visible in changelogs, aligning with structured release notes.
    • Enhanced recommendedBumpOpts to classify commit types and prioritize breaking changes.
    • Improved writerOpts templates for consistent formatting with fallback handling.
    • Adjusted file rules in biome.json for expanded file type handling in source and tests.

0.2.0

Minor Changes

  • 906ed65 Thanks @addon-stack! - added storage providers and utilities:

    • Storage, SecureStorage, MonoStorage
    • React hook useStorage for convenient use of storage in components
    • Factories Storage.Local/Sync/Session, namespace support, and watch for change subscriptions

    Infrastructure and tooling

    • migrate: switched to Biome for linting and code formatting
    • chore: updated npm scripts and configs for consistency and stability
    • chore: refined lint-staged, simplified pre-commit scripts
    • chore: mass auto-formatting and import ordering

    CI/CD and releases

    • chore: simplified release preparation — commit changes directly to the release branch
    • CI: current CI (type checks, tests, build, npm pack --dry-run) updated to match new scripts/linter

    Reference commits

    • feat: introduce Storage, SecureStorage, MonoStorage and useStorage hook — 4459fd5
    • migrate to Biome — 2b4d1a3
    • update scripts/configs — 8daee6b
    • lint-staged/pre-commit tweaks — 4ed5053, 5ad57ac
    • simplify release workflow — 0365825

0.1.6

Patch Changes

  • 0365825 Thanks @addon-stack! - simplify release workflow by committing changes directly to release branch

0.1.5

Patch Changes

0.1.4

Patch Changes

  • c997bd4 Thanks @addon-stack! - ### Improve release workflows for branch-based releases
    • Updated release-publish.yml to use npm publish with provenance and public access.
    • Enhanced token configurations for compatibility.
    • Modified release-prepare.yml to handle branch-based release preparation.
    • Added automatic branch creation and targeted PR updates for release branches.

0.1.3

Patch Changes

  • 4018660 Thanks @addon-stack! - Add MIT license to package and project files
    • Added MIT license to package.json.
    • Created LICENSE.md containing copyright and license details.

0.1.2

Patch Changes

  • 40c75eb Thanks @addon-stack! - ### Configure workflows for release preparation and publishing
    • Added release-prepare.yml to automate versioning and changelog generation with Changesets.
    • Renamed and updated release.yml to release-publish.yml for npm publishing.
    • Enhanced ci.yml workflow with support for workflow calls.
    • Updated Changesets configuration and added release script in package.json.

0.1.1

Patch Changes

  • 120ca74 Thanks @addon-stack! - #### 0.1.1 — Patch (upcoming)

    • Added: CI workflow for automated releases via Changesets and npm publication.
    • Added: commitlint for commit message validation.
    • Style: Unified code formatting (double quotes, indentation).
    • Chore: Cleaned up unused dependencies and added overrides for glob.

    0.1.0 — Initial Release

    • Introduced package @addon-core/storage with CJS/ESM/types exports.
    • Build: Configured bundling with @rslib/core (build, dev).
    • Tooling: Set up TypeScript, Biome, ESLint, Prettier, Jest, husky, and lint-staged.
    • Scripts: typecheck, test, test:run, test:related.
    • CI: Added ci.yml to run biome check, typecheck, tests, build, and npm pack --dry-run; includes Node 18/20/22 matrix for main and PRs to main.
    • Releases: Added release.yml using changesets/action@v1 for creating release PRs or publishing to npm (npm publish --provenance --access public).
    • Changesets: Added