Skip to content

Latest commit

 

History

History
406 lines (251 loc) · 21.5 KB

File metadata and controls

406 lines (251 loc) · 21.5 KB

Changelog

v0.2.0

compare changes

Features

  • resource: Close the measured resource() parity gaps (D-45) (de56da9)
  • resource: Add opt-in focus and reconnect revalidation (D-46) (3ca942c)

Bug Fixes

  • cache: Make invalidation a flag, not a timestamp shift (D-40) (5a781f9)
  • resource: Cancel Observable loaders, honor reload(), guard SSR timers (b65f187)
  • mutation: Fail loudly on half-configured invalidation (D-44) (229520e)
  • cache: Keep in-flight records alive until the write lands (7b512f0)
  • landing: Clear the sticky header on anchors, fit 320px, honor reduced motion (5d4fc59)
  • skills: Stop shipping dangling symlinks to third-party skills (924d7dd)

Refactoring

  • example: Drop the nullish fallback hasValue() makes dead (d7c4d99)

Documentation

  • Document OIDC publishing, pin .nvmrc to a node the CLI accepts (7eca911)
  • Replace every unmeasured or false claim with a verified one (6005484)
  • plan: Mark fix-review-findings implemented (9ed7069)
  • Compare bundle size against TanStack in matching units (3ff2eef)
  • Rewrite the positioning, add non-goals and a support policy (a61f9d8)
  • ⚠️ Add a 0.2.0 migration guide, drop the untested interop claim (5500633)
  • landing: Remove AI writing tells and tighten the hero (a514d53)
  • skill: Align ziflux-expert with the shipped API (a661430)
  • Use the exact install command skills.sh publishes (905a7ff)

Build

  • Make "zero dependencies" true and enforce size in CI (1f94642)

Chores

  • skills: Refresh lock for angular-developer and impeccable (9fde482)

⚠️ Breaking Changes

Full upgrade notes in MIGRATION.md.

  • CachedResourceRef.error is now Signal<Error | undefined>, was Signal<unknown>. Code that cast it (ref.error() as ApiError) needs as unknown as ApiError.
  • hasValue() returns a type predicate, was boolean. It narrows value() to T, and is now exactly value() !== undefined, so a loader resolving undefined reports false where it previously reported true. Hand-written test doubles of CachedResourceRef must declare the predicate signature.
  • CacheEntry<T> requires an invalidated field. Affects code constructing the literal, in practice test fixtures.
  • reload() now refetches inside the staleTime window. Its contract always said it bypassed staleness checks; the freshness short-circuit ran first and made it a no-op on a fresh entry. refetchInterval inherited the same bug.
  • cachedMutation throws in dev mode when given cache without invalidateKeys, or the reverse. That configuration silently invalidated nothing before, so this is the most likely upgrade-time crash.
  • invalidate() is a flag, not a timestamp shift. A per-resource staleTime larger than the cache's can no longer swallow it, and a smaller expireTime no longer turns it into an eviction. Cost: a raced in-flight fetch is never reused, so invalidations spread over time issue one refetch each. Invalidations within a single tick still collapse into one.
  • Observable loaders are cancelled on abort. A superseded or destroyed load now kills its HttpClient request. An Observable completing without emitting rejects with a named Error instead of RxJS EmptyError.
  • No timers during server rendering. The cleanup sweep and polling are browser-only.

❤️ Contributors

v0.1.0

compare changes

⚠️ Breaking

  • Angular 22 is now required. peerDependencies move from @angular/core ^21.0.0 to ^22.0.0. One major is supported at a time — see D-39. Projects still on Angular 21 stay on 0.0.13.

Build

  • deps: Migrate to Angular 22 (d624452) Angular 21.2 → 22.0.7, TypeScript 5.9 → 6.0.3, ng-packagr 22, angular-eslint 22, typescript-eslint 8.65.

Refactoring

  • resource: Drop the redundant undefined as T assertion in cachedResource (d624452) Surfaced by the v22 diagnostics. The public type value: Signal<T | undefined> is unchanged.

Documentation

  • core: Record D-39 — Angular 22 peer range replaces v21 (50a0d1f)

❤️ Contributors

v0.0.13

compare changes

Features

  • core: Add internal _dataVersion signal on DataCache (7de7b82)
  • core: Propagate optimistic ref.set across sibling resources (90dea18)

Refactoring

  • core: Enforce @internal contract and tighten D-33 comment (0dc7354)

Documentation

  • landing: Add Scenarios and NotAFit sections, polish hero/navbar (f865edc)
  • core: Document D-38 cross-resource optimistic sync via _dataVersion (0f704e7)

Chores

  • Add PRODUCT.md brand brief and update skills-lock.json (2db4a71)

Tests

  • core: Cover Observable loader error and refetchInterval signal change (eefeacd)
  • core: RED — _dataVersion signal contract on DataCache (7774cba)
  • core: Red — cross-resource sync on shared cache key (097cd4e)

❤️ Contributors

v0.0.12

compare changes

Bug Fixes

  • core: Resolve clearDirty prefix mismatch with two-set dirty tracking (84f19a1)

❤️ Contributors

v0.0.11

compare changes

Bug Fixes

  • core: Mark prefetch stale through cascading invalidations (bce78be)

❤️ Contributors

v0.0.10

compare changes

Bug Fixes

  • core: Mark prefetch as stale when cache invalidated during fetch (9cf4746)

Documentation

  • landing: Add comprehensive guide with architecture, patterns, and examples (e1f4def)
  • landing: Audit Diátaxis – move Prior Art up, add value prop, collapsible architecture (7f06f17)

❤️ Contributors

v0.0.9

compare changes

Bug Fixes

  • core: Preserve in-flight dedup promises across invalidation (d4db220)

Documentation

  • api-reference: Correct lifecycle order and callback isolation details (e9fd4f4)
  • landing: Clarify mutation lifecycle and optimistic update flow (05d697b)

❤️ Contributors

v0.0.8

compare changes

Bug Fixes

  • core: Prevent mutation callback errors and state races (e48c4f8)

❤️ Contributors

v0.0.7

compare changes

Bug Fixes

  • core: Run onSuccess before invalidateKeys in cachedMutation (1224088)
  • core: Sync set() and update() writes to DataCache (41e941b)

Chores

❤️ Contributors

v0.0.6

compare changes

Bug Fixes

  • core: Run onSuccess before invalidateKeys in cachedMutation (1224088)

❤️ Contributors

v0.0.5

compare changes

Bug Fixes

  • core: Read SWR-enhanced value in cachedResource.update() (f479b10)

❤️ Contributors

v0.0.4

compare changes

Features

  • docs: Add Vercel analytics (d4d21fe)
  • skills: Publish ziflux-expert skill (7531d17)
  • docs: Add "Copy page" dropdown for markdown export (e070c64)
  • docs: Add "Copy page" dropdown for markdown export (718e1d0)

Bug Fixes

  • docs: Update npm package references from ziflux to ngx-ziflux (cd019b8)
  • test: Use fake timers before cache.set to prevent flaky timing (59f19c3)

Chores

❤️ Contributors

v0.0.3

compare changes

Features

  • docs: Add Vercel analytics (d4d21fe)
  • skills: Publish ziflux-expert skill (7531d17)

Bug Fixes

  • docs: Update npm package references from ziflux to ngx-ziflux (cd019b8)
  • test: Use fake timers before cache.set to prevent flaky timing (59f19c3)

❤️ Contributors

v0.0.2

Features

  • Implement ziflux library — SWR caching for Angular resource() (9805560)
  • Add cachedMutation() and anyLoading() utilities (966ecad)
  • main: Polish landing page visuals and add mobile navigation (032bb72)
  • main: Clarify landing page messaging and value prop (ad48e0b)
  • main: Add dark mode and overhaul landing page visuals (9f95c6c)
  • main: Update docs for new features and overhaul landing layout (cd8d762)
  • lib: Add inspect, cleanup, retry, polling + rename gc/key for clarity (3aa222d)
  • main: Polish SEO, update API terminology, and add interactive demo (9da07ea)
  • docs: Add dual-tab animated demo with overlay mutation dialog (84bf965)
  • lib: Add devtools — cache inspector, structured logging & floating overlay (68f5906)
  • example: Add Todo demo app showcasing ziflux cache + devtools (847cf58)
  • release: Add changelogen, commitlint, and /release orchestration skill (aec0b4b)
  • cache: Add maxEntries with LRU eviction (D-26) (11c6e76)
  • main: Refine mutation logic, add value sentinel & polish release docs (69b0d2b)
  • branding: Replace logo with dissolving pixel Z design (0431a81)

Bug Fixes

  • lib: Audit fixes — staleTime: 0 bug, strict ESLint, retry abort cleanup (161aa5f)
  • cache: Use strict < for staleTime comparison (27da05f)
  • cache: Guard empty prefix in invalidate, add prefix collision tests (b98f73b)
  • devtools: Guard setInterval and keydown handler for SSR safety (4d9cf6f)
  • cache: Clear in-flight promises on invalidate to prevent stale writes (D-27) (5a14632)
  • cache: Validate numeric config in DataCache constructor (40348e6)
  • Resolve review findings and critical retry race condition (d76e1de)
  • pre-launch: ItemCache invalidation, error signal consistency, doc examples (118d109)

Refactoring

  • main: Simplify landing page visuals and architecture styles (0da29b6)
  • main: Streamline landing page visuals and simplify component layouts (bf390fb)
  • main: Slim down project context and sharpen dev rules (5ff0ebc)
  • example: Extract stores + API service, add optimistic updates (0bbcd76)
  • cache: Move DataCache generic from class to per-method (D-30) (470ad03)

Documentation

  • lib: Add JSDoc to entire public API (ba9405c)
  • readme: Dx polish — merge setup, add testing, extract llms.txt (e912ecc)
  • readme: Remove defensive tone, deduplicate architecture sections (60383db)
  • readme: Rewrite why section with concrete value props (85a3561)
  • landing: Add guide, gotchas, testing; consolidate readme (8f12fb1)
  • landing: Redesign gotchas with cards and amber badges (5c94543)
  • project: Crystallize library philosophy and unopinionated design principles (22c82eb)
  • landing: Simplify guide and quickstart layout (ad8bf5a)
  • landing: Trim guide copy and remove redundant sections (e931fb8)
  • landing: Eliminate redundancy, improve discoverability (01176d9)
  • Add contributing guide and update docs readme (30859e0)
  • navbar: Remove logo (5dc1fe0)

Build

  • Copy README and LICENSE into dist for npm publish (4c6a35a)

Chores

  • Add skills-lock.json, gitignore Claude Code local dirs (59c8329)
  • pre-launch: Fix readme, add templates, enhance ci (b73a5c5)
  • pre-launch: Fix readme links, add engines field, example readme (fa2bd77)
  • Rename npm package to ngx-ziflux (de7557c)

Tests

  • mutation: Add concurrent mutation tests, clear error on success (1d6a627)
  • resource: Widen wall-clock timer margins to prevent CI flakes (16ee139)
  • integration: Add SWR lifecycle integration tests (0a6e611)

❤️ Contributors

v0.0.1

Features

  • Implement ziflux library — SWR caching for Angular resource() (9805560)
  • Add cachedMutation() and anyLoading() utilities (966ecad)
  • main: Polish landing page visuals and add mobile navigation (032bb72)
  • main: Clarify landing page messaging and value prop (ad48e0b)
  • main: Add dark mode and overhaul landing page visuals (9f95c6c)
  • main: Update docs for new features and overhaul landing layout (cd8d762)
  • lib: Add inspect, cleanup, retry, polling + rename gc/key for clarity (3aa222d)
  • main: Polish SEO, update API terminology, and add interactive demo (9da07ea)
  • docs: Add dual-tab animated demo with overlay mutation dialog (84bf965)
  • lib: Add devtools — cache inspector, structured logging & floating overlay (68f5906)
  • example: Add Todo demo app showcasing ziflux cache + devtools (847cf58)
  • release: Add changelogen, commitlint, and /release orchestration skill (aec0b4b)
  • cache: Add maxEntries with LRU eviction (D-26) (11c6e76)

Bug Fixes

  • lib: Audit fixes — staleTime: 0 bug, strict ESLint, retry abort cleanup (161aa5f)
  • cache: Use strict < for staleTime comparison (27da05f)
  • cache: Guard empty prefix in invalidate, add prefix collision tests (b98f73b)
  • devtools: Guard setInterval and keydown handler for SSR safety (4d9cf6f)
  • cache: Clear in-flight promises on invalidate to prevent stale writes (D-27) (5a14632)
  • cache: Validate numeric config in DataCache constructor (40348e6)

Refactoring

  • main: Simplify landing page visuals and architecture styles (0da29b6)
  • main: Streamline landing page visuals and simplify component layouts (bf390fb)
  • main: Slim down project context and sharpen dev rules (5ff0ebc)
  • example: Extract stores + API service, add optimistic updates (0bbcd76)

Documentation

  • lib: Add JSDoc to entire public API (ba9405c)

Build

  • Copy README and LICENSE into dist for npm publish (4c6a35a)

Chores

  • Add skills-lock.json, gitignore Claude Code local dirs (59c8329)

Tests

  • mutation: Add concurrent mutation tests, clear error on success (1d6a627)
  • resource: Widen wall-clock timer margins to prevent CI flakes (16ee139)
  • integration: Add SWR lifecycle integration tests (0a6e611)

❤️ Contributors