Skip to content

Releases: zuriscript/signalstory

Release 19.0.0

16 Dec 22:13
55b9328
Compare
Choose a tag to compare

We are excited to announce that signalstory officially supports Angular 19.0.0 going forward! 🚀

In the coming weeks, you can look forward to many new features as we integrate some of our custom extensions directly into the core.

Not ready to upgrade to Angular 19 yet?
No problem! If you'd like to benefit from the new features but are still using Angular 18, feel free to reach out. We may include some of these features in an 18.x branch to support your current setup.

What's Changed

Full Changelog: 18.0.0...19.0.0

18.0.0

16 Jun 21:40
4fb3f30
Compare
Choose a tag to compare

What's Changed

From now on signalstory officially supports [email protected] going forward. Of course, issues involving earlier versions of angular will still be fixed. Following Breaking changes have been previously announced and will take effect in this version:

  • Removes History plugin (use history tracker API instead)
  • Removes isModified (use modified instead)
  • Removes marksAsUnmodified (use resetStoreStatus instead)
  • Removes setUnmodifiedStatus (use setInitializedStatus instead)
  • Removes enableLogging from store config (use Logger Plugin instead)

Relevant PRs

New Contributors

Full Changelog: 17.4.0...18.0.0

17.4.0

30 Jan 01:17
752aa79
Compare
Choose a tag to compare

What's Changed

  • Transactional and multi-store history tracking: This PR is all about improving history tracking. The new API supports robust undo and redo functionalities that span an arbitrary number of stores. Furthermore, you can use transactions to group a series of related actions, ensuring they are treated as a single, atomic unit during undo and redo operations. It provides better control over the scope of tracking and is more space efficient and performant. Use canUndo and canRedo signals to stay actively informed on whether undo or redo actions are possible. Read more.

Deprecation Notice

  • StoreHistoryPlugin created by useStoreHistory() is discontinued, since the new API offers advanced features and supersedes this functionality.

Relevant PRs

  • feat(plugin-history): ✨ introduce cross-store history tracking in #87
  • refactor(core): ♻️ extract static field from HistoryTrackerBase to global constants in #88
  • docs(core): 📝 improve Readme and some docs sections in #89

Full Changelog: 17.3.0...17.4.0

17.3.0

17 Jan 08:15
536d45a
Compare
Choose a tag to compare

What's Changed

  • Introducing State Snapshot feature, providing users with the ability to capture and restore the state of multiple stores within an application. This is particularly useful for scenarios requiring transactional guarantees, enabling users to roll back across various stores. See the docs
  • Introducing new Store status signals and some renaming. You can now check if an effect has initialized a store. More info in PR #78
  • New maxLength option for the history plugin. Users can now set a maximum length for the history, providing better control over memory consumption. If left unspecified, the history will still grow without boundaries, maintaining backward compatibility with version 17.*. Starting from version 18, a defined default value for maxLength will be in place. See the updated docs
  • You can now directly configure projection functions using configureIndexedDb method
  • Docs have been improved and you can now search the docs using docsearch by algolia

Contributors Notice

For this release, I have taken the time to prepare a good environment for potential contributors and collaborators.

  • We have a Code of Conduct
  • We have specified Contributing conventions
  • We use Commitlint + Husky + Commitizen to enable conventional commits
  • We have templates for PRs and Issues
  • We use github actions to test and lint the code and to ensure that no PR breaks the tree-shakability of the library

Deprecation Notice

  • isModified() is deprecated, use modified() instead.
  • markAsUnmodified() is deprecated, use resetStoreStatus() instead.
  • setUnmodifiedStatus is deprecated, use setInitializedStatus instead.

Relevant PRs

  • feat(core): ✨ Introduce State Snapshot feature in #68
  • feat(plugin-status): ✨ enhance store status plugin and improve naming in #78
  • feat(plugin-persistence): ✨ include projection in configureIndexedDb in #79
  • feat(plugin-history): ✨ introduce pruning for limiting memory usage in #81
  • feat(core): ✨ expose StorePlugin type in #82
  • docs: 📝 add algolia docsearch support in #84
  • docs: 📝 add howtos and improve multiple doc pages in #83
  • docs: 📝 add github star button to landing page in #85
  • docs(core): 📝 add snapshot doc page in #71
  • ci: 🎡 add workflow for running tests and performing checks in #72
  • ci: 🎡 specify project in build command in #73
  • chore: 🔨 remove eslint-plugin-tree-shaking in #76
  • chore: 🔨 add better issue templates in #77
  • chore: 🔨 add ressources for contribution in #70

Full Changelog: 17.2.0...17.3.0

17.2.0

05 Jan 23:53
2e860d9
Compare
Choose a tag to compare

What's Changed

  • Introducing PerformanceCounterPlugin for Real-time Performance Analysis in #59
    Read more in the docs
  • Introducing native IndexedDb adapter in #63
    You can now use IndexedDB as persistence storage for your stores, enjoying native support, pooling, and migration features. Read more
  • Introducing custom projection hooks for persistence plugin in #63
    You can now declare functions applied before storing and after loading from storage. This can be useful for obfuscating sensitive data or for saving space. See for yourself
  • Introducing improved Feature Detection for SSR in #64
    Signalstory is now SSR friendly, so you can leave Devtoosl Plugin and Storage Plugin in the list without risking an error on the server.
    This feature has been discussed here: #53
  • Support tuple types in Immutable type definition in #60
    Now tuple types can also be wrapped in an Immutable.
  • Introducing invocationId to effect processors for distinguishing closely timed effect executions in #58
  • Bugfix: Sideeffects in effect postprocessors should be consolidated in a single finalize block in #56
  • Bugfix: Successive Processors are now fully wrapped, hence ordering is consistent with middleware encapsulation in #57
  • Lots of work on docs, images and README in #51, #52, #61, #62, #65

Full Changelog: 17.1.0...17.2.0

17.1.0

10 Dec 22:30
2e4f51e
Compare
Choose a tag to compare

What's Changed

  • Allow StorePlugins to pre and post process effects in #40
    Now you can pre and post process both Commands and Effect objects (Read more)
  • Introduce configuration object to effect creation in #41
    createEffect now takes a configuration object as parameter to allow more configuration parameters
  • Make pre and postprocessors nullable to reduce memory footprint in #42
  • Introduce StoreStatus Plugin in #43
    The new StoreStatus Plugin makes it easy to keep track of the loading and modification statuses of your store. Get notified, as soon as your store is loading during an async effect or if it has been modified since initalization (Read more).
  • Remove explicit logger and use a dedicated plugin instead in #44
    To improve and simplify the code, explicit logging activated with the enableLogging configuration has been removed. Use the Logger plugin instead (Read more).
  • Various improvements concerning docs, README, images and the sample project in #38 #39 #45 #46 #48 #49 #50

Deprecation Notice

In this version, the following features have been deprecated. It's important to note that these functionalities will continue to work until the next major release, which is expected around the same time as Angular 18. So, you've got some time to make the necessary adjustments in your code:

  • The enableLogging option in StoreConfig is deprecated. Instead, use the LoggerPlugin. At the moment, enableLogging will automatically register the plugin for you.
  • The withInjectionContext parameter in createEffect is now deprecated and will be removed. It has been integrated into the StoreEffectConfig parameter.

Full Changelog: 17.0.1...17.1.0

17.0.1

24 Nov 07:59
8b7bf00
Compare
Choose a tag to compare

We're thrilled to announce the official stable release of signalstory version 17.0.1 — a monumental leap forward in our journey! 🎉 This release, comes with long-term support, and promises a robust and dependable experience for our users. 🌟

What's Changed

  • Introducing testing utilities in #32
  • Improved Docs in #33
  • Upgrade to angular 17 in #34
  • Remove cloneAndMutateFunc due to deprecation in #35

Breaking changes

  • cloneAndMutateFunc has been removed from ImmutableStoreConfig. You have to use mutationProducerFn as of now.

Migration

  • Simply install [email protected]
  • No breaking changes except for the removal of cloneAndMutateFunc which has been declared as deprecated in earlier versions
  • What about mutate?
    Starting from Angular version 17, the mutate feature has been removed from the signal public API (read more). Additionally, the base equality function for signals has been changed, as now signal updates will trigger a notification only when the actual reference of the value object changes (applicable if the signal value is not primitive). While signalstory will continue to provide the mutate method, starting from version 17, mutate will implicitly create a shallow copy for the mutation, ensuring that consumers receive notifications.

Remark about [email protected]

Accidentally, the peer dependencies of signalstory for angular were not updated to angular 17 before publishing to npmjs. This has been fixed with [email protected]

Full Changelog: 0.1.3...17.0.1

0.1.3

12 Nov 22:04
41b7d9a
Compare
Choose a tag to compare

What's Changed

  • Make Persistence Plugin synchronous and therefore independent of signal effects in #30
  • Some docs improvements

Full Changelog: 0.1.2...0.1.3

0.1.2

28 Aug 22:28
3500e82
Compare
Choose a tag to compare

What's Changed

  • Check browser support, Fix eslint issues in #16
  • Feature/fix-built-in-plugins-precedence in #17
  • Feature/es-lint-and-agadoo in #18
  • Introducing stateEqaulityFn and stricEquality for immutable stores in #20

Deprecation Notice

  • cloneAndMutateFunc is deprecated for mutationProducerFn (has same semantics)

Full Changelog: 0.1.1...0.1.2

0.1.1

22 Aug 23:10
0facc6a
Compare
Choose a tag to compare

What's Changed

  • Improve mobile view, fix error in Readme in #8
  • Improve docs and remove vscode folder in #10
  • Introducing deep freeze plugin in #11

Full Changelog: 0.1.0...0.1.1