diff --git a/.changeset/cookie-adapter-serialize.md b/.changeset/cookie-adapter-serialize.md deleted file mode 100644 index c6b68c2..0000000 --- a/.changeset/cookie-adapter-serialize.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -"@policystack/core": minor ---- - -`cookieAdapter()` now exposes the bare cookie value, so nothing has to re-implement its wire format (#167). `encode`/`decode` already existed as private closures; the adapter just never returned them, leaving `getSetCookieHeader()` (a whole `Set-Cookie` header) as the closest thing and forcing consumers to hand-roll base64url or string-parse the value back out. - -Three new members on `CookieAdapter`: - -- `serialize(record)` — the encoded cookie value on its own, exactly what `write()` puts in the cookie. -- `deserialize(value)` — the inverse, for a bare value. `parse()` still handles a full cookie header. -- `name` — the resolved cookie name, so callers using the default do not hardcode `oc_consent`. - -The motivating case is seeding consent in browser tests, where `browserContext.addCookies()` needs a name and a value: - -```ts -const adapter = cookieAdapter(); -const store = createConsentStore(policystack); -store.acceptAll(); - -await context.addCookies([ - { name: adapter.name, value: adapter.serialize(store.getConsentRecord()), url: baseURL }, -]); -``` - -A copied encoder is worth replacing here even though it matches today: `deserialize` swallows errors and returns `null`, so a value that drifts from the adapter's format does not throw — consent silently reads as undecided and the banner reappears. diff --git a/.changeset/gen-module-write-gate.md b/.changeset/gen-module-write-gate.md deleted file mode 100644 index 1aed090..0000000 --- a/.changeset/gen-module-write-gate.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -"@policystack/vite": patch ---- - -`policystack.gen.ts` is no longer rewritten on every build, so it stops fighting the consumer's formatter (#166). - -The file is meant to be committed, which puts it under whatever formatter the project runs — and the plugin's raw `JSON.stringify` output was never going to match. Since the plugin rewrote it unconditionally at `buildStart`, every build undid the formatting and left a spurious diff, a red format check, and a build → reformat → build loop that never settled. - -The header now carries a digest of the scanned content: - -```ts -// AUTO-GENERATED by @policystack/vite — do not edit. (scan: 66861eea20c06b94) -``` - -Each build compares that digest against the current scan and skips the write entirely when they match, whatever the file has been reformatted to since — a `//` comment survives every formatter. The digest covers only what the module renders, so it is insensitive to scan ordering (renaming a source file no longer counts as a change) and to scanner diagnostics. A missing or unreadable header rewrites, so a hand-edited or pre-digest file self-heals. - -The output is also pretty-printed now — one entry per line, trailing commas, `{}` for empty interface bodies, quotes on augmentation keys only where an identifier will not do — which narrows the diff on the builds where a rewrite is genuinely needed. Values stay fully quoted so each literal remains parseable as JSON. - -Existing `policystack.gen.ts` files have no digest and will be rewritten once, on the first build after upgrading. diff --git a/.changeset/react-gated-script.md b/.changeset/react-gated-script.md deleted file mode 100644 index 3de8bd4..0000000 --- a/.changeset/react-gated-script.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@policystack/react": minor ---- - -`@policystack/react/consent` now exposes the provider's consent store, so `gateScript` and the `@policystack/scripts` catalogue are usable with the React bindings (#159). Previously `` created its store privately and nothing exported it, leaving no way to obtain the `ConsentStore` that `gateScript(store, def)` requires. - -Two new exports: - -- `` — the React binding for `gateScript`. Takes the store from ``, gates the script for as long as it is mounted, and disposes on unmount. Renders no DOM and is inert during SSR. Building the definition inline (`def={ga4({ measurementId: "G-XXXXXXX" })}`) is safe: the gate follows `def.id`, so a fresh object each render neither re-gates nor drops queued pre-consent calls. Optional `onEvent` receives the `ScriptEvent` stream. -- `useConsentStore()` — returns the `ConsentStore` for handing to other core free functions such as `gateScripts`. Stable for the life of the provider and non-reactive; keep using `useConsent` / `useCategory` / `` to react to state. - -Both throw the existing provider guard outside `` or under a policy-only config. That error message now names the full consent API rather than three of its members. diff --git a/.changeset/ssr-server-snapshot.md b/.changeset/ssr-server-snapshot.md deleted file mode 100644 index 1a5b267..0000000 --- a/.changeset/ssr-server-snapshot.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@policystack/core": minor -"@policystack/react": minor ---- - -Consent hooks no longer cause hydration mismatches under SSR. The React hooks passed live store state as `useSyncExternalStore`'s `getServerSnapshot`, so any returning visitor mismatched: the server has no stored record and resolves the _host's_ timezone, while the client has both (#158). Every SSR consumer had to hand-roll a `mounted` flag around consent-driven UI. - -`ConsentStore` gains a `server` member (`getState()` / `has()`) returning a deterministic pre-consent snapshot: undecided, no jurisdiction, conservative opt-in posture, derived from static config alone and never from the adapter or resolver. `useConsent`, `useCategory`, and `ConsentGate` pass it as `getServerSnapshot`, and React re-reads live state once hydration commits. - -The Vue, Svelte, Solid, and Angular bindings still seed from live state and are unchanged here; `store.server` is the shared primitive their fix will use. diff --git a/.changeset/staged-consent-toggles.md b/.changeset/staged-consent-toggles.md deleted file mode 100644 index b25a40d..0000000 --- a/.changeset/staged-consent-toggles.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@policystack/core": minor -"@policystack/react": minor -"@policystack/vue": minor -"@policystack/svelte": minor -"@policystack/solid": minor -"@policystack/angular": minor ---- - -Consent preference toggles are now staged. `toggle()` writes to `state.draft` instead of live decisions, and nothing is gated, persisted, or script-loaded until `save()` promotes the draft in one step — scripts no longer load on checkbox tick before "Save", and returning visitors no longer get their stored record rewritten on every tick (#157). Leaving the preferences route without saving discards the draft. - -API changes: `toggle(key)` no longer accepts `ActionOptions` (name the record source at `save()` instead), and `ConsentState` gains a required `draft` field. Per-category `granted` accessors in all framework bindings read `draft ?? decisions` so checkboxes respond instantly; custom panels rendering checkboxes from raw `decisions` should apply the same merge. diff --git a/examples/astro/CHANGELOG.md b/examples/astro/CHANGELOG.md new file mode 100644 index 0000000..76b309b --- /dev/null +++ b/examples/astro/CHANGELOG.md @@ -0,0 +1,10 @@ +# astro-example + +## 0.0.1 + +### Patch Changes + +- Updated dependencies [996973e] +- Updated dependencies [e0fc26a] +- Updated dependencies [279688a] + - @policystack/react@1.2.0 diff --git a/examples/astro/package.json b/examples/astro/package.json index 7705bf1..f8fb52b 100644 --- a/examples/astro/package.json +++ b/examples/astro/package.json @@ -1,6 +1,6 @@ { "name": "astro-example", - "version": "0.0.0", + "version": "0.0.1", "private": true, "type": "module", "scripts": { diff --git a/packages/angular/CHANGELOG.md b/packages/angular/CHANGELOG.md index b2f4fe2..329cd2d 100644 --- a/packages/angular/CHANGELOG.md +++ b/packages/angular/CHANGELOG.md @@ -1,5 +1,13 @@ # @policystack/angular +## 1.2.0 + +### Minor Changes + +- 279688a: Consent preference toggles are now staged. `toggle()` writes to `state.draft` instead of live decisions, and nothing is gated, persisted, or script-loaded until `save()` promotes the draft in one step — scripts no longer load on checkbox tick before "Save", and returning visitors no longer get their stored record rewritten on every tick (#157). Leaving the preferences route without saving discards the draft. + + API changes: `toggle(key)` no longer accepts `ActionOptions` (name the record source at `save()` instead), and `ConsentState` gains a required `draft` field. Per-category `granted` accessors in all framework bindings read `draft ?? decisions` so checkboxes respond instantly; custom panels rendering checkboxes from raw `decisions` should apply the same merge. + ## 1.1.0 ## 1.0.1 diff --git a/packages/angular/package.json b/packages/angular/package.json index 18d7f2b..3c130a2 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/angular", - "version": "1.1.0", + "version": "1.2.0", "description": "Angular consent service and components for PolicyStack", "license": "Apache-2.0", "repository": { diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 723bc55..4c8be08 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,12 @@ # @policystack/cli +## 1.2.0 + +### Patch Changes + +- Updated dependencies [035afc7] + - @policystack/vite@1.2.0 + ## 1.1.0 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index cf60062..1ccd1f9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/cli", - "version": "1.1.0", + "version": "1.2.0", "description": "CLI to install PolicyStack and print a setup prompt for coding agents", "license": "Apache-2.0", "repository": { diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 7a6b483..ed3f8c3 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,45 @@ # @policystack/core +## 1.2.0 + +### Minor Changes + +- 4cc5985: `cookieAdapter()` now exposes the bare cookie value, so nothing has to re-implement its wire format (#167). `encode`/`decode` already existed as private closures; the adapter just never returned them, leaving `getSetCookieHeader()` (a whole `Set-Cookie` header) as the closest thing and forcing consumers to hand-roll base64url or string-parse the value back out. + + Three new members on `CookieAdapter`: + + - `serialize(record)` — the encoded cookie value on its own, exactly what `write()` puts in the cookie. + - `deserialize(value)` — the inverse, for a bare value. `parse()` still handles a full cookie header. + - `name` — the resolved cookie name, so callers using the default do not hardcode `oc_consent`. + + The motivating case is seeding consent in browser tests, where `browserContext.addCookies()` needs a name and a value: + + ```ts + const adapter = cookieAdapter(); + const store = createConsentStore(policystack); + store.acceptAll(); + + await context.addCookies([ + { + name: adapter.name, + value: adapter.serialize(store.getConsentRecord()), + url: baseURL, + }, + ]); + ``` + + A copied encoder is worth replacing here even though it matches today: `deserialize` swallows errors and returns `null`, so a value that drifts from the adapter's format does not throw — consent silently reads as undecided and the banner reappears. + +- e0fc26a: Consent hooks no longer cause hydration mismatches under SSR. The React hooks passed live store state as `useSyncExternalStore`'s `getServerSnapshot`, so any returning visitor mismatched: the server has no stored record and resolves the _host's_ timezone, while the client has both (#158). Every SSR consumer had to hand-roll a `mounted` flag around consent-driven UI. + + `ConsentStore` gains a `server` member (`getState()` / `has()`) returning a deterministic pre-consent snapshot: undecided, no jurisdiction, conservative opt-in posture, derived from static config alone and never from the adapter or resolver. `useConsent`, `useCategory`, and `ConsentGate` pass it as `getServerSnapshot`, and React re-reads live state once hydration commits. + + The Vue, Svelte, Solid, and Angular bindings still seed from live state and are unchanged here; `store.server` is the shared primitive their fix will use. + +- 279688a: Consent preference toggles are now staged. `toggle()` writes to `state.draft` instead of live decisions, and nothing is gated, persisted, or script-loaded until `save()` promotes the draft in one step — scripts no longer load on checkbox tick before "Save", and returning visitors no longer get their stored record rewritten on every tick (#157). Leaving the preferences route without saving discards the draft. + + API changes: `toggle(key)` no longer accepts `ActionOptions` (name the record source at `save()` instead), and `ConsentState` gains a required `draft` field. Per-category `granted` accessors in all framework bindings read `draft ?? decisions` so checkboxes respond instantly; custom panels rendering checkboxes from raw `decisions` should apply the same merge. + ## 1.1.0 ### Minor Changes diff --git a/packages/core/package.json b/packages/core/package.json index 1568409..6812e51 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/core", - "version": "1.1.0", + "version": "1.2.0", "description": "Core package for PolicyStack", "license": "Apache-2.0", "repository": { diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 19fefc3..743e674 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,28 @@ # @policystack/react +## 1.2.0 + +### Minor Changes + +- 996973e: `@policystack/react/consent` now exposes the provider's consent store, so `gateScript` and the `@policystack/scripts` catalogue are usable with the React bindings (#159). Previously `` created its store privately and nothing exported it, leaving no way to obtain the `ConsentStore` that `gateScript(store, def)` requires. + + Two new exports: + + - `` — the React binding for `gateScript`. Takes the store from ``, gates the script for as long as it is mounted, and disposes on unmount. Renders no DOM and is inert during SSR. Building the definition inline (`def={ga4({ measurementId: "G-XXXXXXX" })}`) is safe: the gate follows `def.id`, so a fresh object each render neither re-gates nor drops queued pre-consent calls. Optional `onEvent` receives the `ScriptEvent` stream. + - `useConsentStore()` — returns the `ConsentStore` for handing to other core free functions such as `gateScripts`. Stable for the life of the provider and non-reactive; keep using `useConsent` / `useCategory` / `` to react to state. + + Both throw the existing provider guard outside `` or under a policy-only config. That error message now names the full consent API rather than three of its members. + +- e0fc26a: Consent hooks no longer cause hydration mismatches under SSR. The React hooks passed live store state as `useSyncExternalStore`'s `getServerSnapshot`, so any returning visitor mismatched: the server has no stored record and resolves the _host's_ timezone, while the client has both (#158). Every SSR consumer had to hand-roll a `mounted` flag around consent-driven UI. + + `ConsentStore` gains a `server` member (`getState()` / `has()`) returning a deterministic pre-consent snapshot: undecided, no jurisdiction, conservative opt-in posture, derived from static config alone and never from the adapter or resolver. `useConsent`, `useCategory`, and `ConsentGate` pass it as `getServerSnapshot`, and React re-reads live state once hydration commits. + + The Vue, Svelte, Solid, and Angular bindings still seed from live state and are unchanged here; `store.server` is the shared primitive their fix will use. + +- 279688a: Consent preference toggles are now staged. `toggle()` writes to `state.draft` instead of live decisions, and nothing is gated, persisted, or script-loaded until `save()` promotes the draft in one step — scripts no longer load on checkbox tick before "Save", and returning visitors no longer get their stored record rewritten on every tick (#157). Leaving the preferences route without saving discards the draft. + + API changes: `toggle(key)` no longer accepts `ActionOptions` (name the record source at `save()` instead), and `ConsentState` gains a required `draft` field. Per-category `granted` accessors in all framework bindings read `draft ?? decisions` so checkboxes respond instantly; custom panels rendering checkboxes from raw `decisions` should apply the same merge. + ## 1.1.0 ## 1.0.1 diff --git a/packages/react/package.json b/packages/react/package.json index 99aacfa..da86a34 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/react", - "version": "1.1.0", + "version": "1.2.0", "description": "React components and hooks for PolicyStack", "license": "Apache-2.0", "repository": { diff --git a/packages/renderers/CHANGELOG.md b/packages/renderers/CHANGELOG.md index 72b6b9e..8cf1a65 100644 --- a/packages/renderers/CHANGELOG.md +++ b/packages/renderers/CHANGELOG.md @@ -1,5 +1,14 @@ # @policystack/renderers +## 1.2.0 + +### Patch Changes + +- Updated dependencies [4cc5985] +- Updated dependencies [e0fc26a] +- Updated dependencies [279688a] + - @policystack/core@1.2.0 + ## 1.1.0 ### Patch Changes diff --git a/packages/renderers/package.json b/packages/renderers/package.json index fecfc36..db2a7de 100644 --- a/packages/renderers/package.json +++ b/packages/renderers/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/renderers", - "version": "1.1.0", + "version": "1.2.0", "description": "Shared policy render layer for PolicyStack — Markdown, HTML, and PDF renderers over the Document AST.", "license": "Apache-2.0", "repository": { diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md index 25c037c..a84e6bb 100644 --- a/packages/scripts/CHANGELOG.md +++ b/packages/scripts/CHANGELOG.md @@ -1,5 +1,7 @@ # @policystack/scripts +## 1.2.0 + ## 1.1.0 ## 1.0.1 diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 7992200..2aafd8b 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/scripts", - "version": "1.1.0", + "version": "1.2.0", "description": "Consent-gated third-party tag loaders for PolicyStack (GA4, Meta Pixel, PostHog, …)", "license": "Apache-2.0", "repository": { diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index c95dbcd..5c76dbd 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -1,5 +1,7 @@ # @policystack/sdk +## 1.2.0 + ## 1.1.0 ## 1.0.1 diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 27cb325..ad7ed17 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/sdk", - "version": "1.1.0", + "version": "1.2.0", "description": "Public API for defining privacy policies with PolicyStack", "license": "Apache-2.0", "repository": { diff --git a/packages/solid/CHANGELOG.md b/packages/solid/CHANGELOG.md index 95aeef1..08a7a68 100644 --- a/packages/solid/CHANGELOG.md +++ b/packages/solid/CHANGELOG.md @@ -1,5 +1,13 @@ # @policystack/solid +## 1.2.0 + +### Minor Changes + +- 279688a: Consent preference toggles are now staged. `toggle()` writes to `state.draft` instead of live decisions, and nothing is gated, persisted, or script-loaded until `save()` promotes the draft in one step — scripts no longer load on checkbox tick before "Save", and returning visitors no longer get their stored record rewritten on every tick (#157). Leaving the preferences route without saving discards the draft. + + API changes: `toggle(key)` no longer accepts `ActionOptions` (name the record source at `save()` instead), and `ConsentState` gains a required `draft` field. Per-category `granted` accessors in all framework bindings read `draft ?? decisions` so checkboxes respond instantly; custom panels rendering checkboxes from raw `decisions` should apply the same merge. + ## 1.1.0 ## 1.0.1 diff --git a/packages/solid/package.json b/packages/solid/package.json index 3847f6b..d89223a 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/solid", - "version": "1.1.0", + "version": "1.2.0", "description": "Solid consent components and hooks for PolicyStack", "license": "Apache-2.0", "repository": { diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index ae4d574..b8c6ad4 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,13 @@ # @policystack/svelte +## 1.2.0 + +### Minor Changes + +- 279688a: Consent preference toggles are now staged. `toggle()` writes to `state.draft` instead of live decisions, and nothing is gated, persisted, or script-loaded until `save()` promotes the draft in one step — scripts no longer load on checkbox tick before "Save", and returning visitors no longer get their stored record rewritten on every tick (#157). Leaving the preferences route without saving discards the draft. + + API changes: `toggle(key)` no longer accepts `ActionOptions` (name the record source at `save()` instead), and `ConsentState` gains a required `draft` field. Per-category `granted` accessors in all framework bindings read `draft ?? decisions` so checkboxes respond instantly; custom panels rendering checkboxes from raw `decisions` should apply the same merge. + ## 1.1.0 ## 1.0.1 diff --git a/packages/svelte/package.json b/packages/svelte/package.json index c21b05a..c9a23be 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/svelte", - "version": "1.1.0", + "version": "1.2.0", "description": "Svelte components for PolicyStack", "license": "Apache-2.0", "repository": { diff --git a/packages/vite/CHANGELOG.md b/packages/vite/CHANGELOG.md index 55e06e8..bb80188 100644 --- a/packages/vite/CHANGELOG.md +++ b/packages/vite/CHANGELOG.md @@ -1,5 +1,30 @@ # @policystack/vite +## 1.2.0 + +### Patch Changes + +- 035afc7: `policystack.gen.ts` is no longer rewritten on every build, so it stops fighting the consumer's formatter (#166). + + The file is meant to be committed, which puts it under whatever formatter the project runs — and the plugin's raw `JSON.stringify` output was never going to match. Since the plugin rewrote it unconditionally at `buildStart`, every build undid the formatting and left a spurious diff, a red format check, and a build → reformat → build loop that never settled. + + The header now carries a digest of the scanned content: + + ```ts + // AUTO-GENERATED by @policystack/vite — do not edit. (scan: 66861eea20c06b94) + ``` + + Each build compares that digest against the current scan and skips the write entirely when they match, whatever the file has been reformatted to since — a `//` comment survives every formatter. The digest covers only what the module renders, so it is insensitive to scan ordering (renaming a source file no longer counts as a change) and to scanner diagnostics. A missing or unreadable header rewrites, so a hand-edited or pre-digest file self-heals. + + The output is also pretty-printed now — one entry per line, trailing commas, `{}` for empty interface bodies, quotes on augmentation keys only where an identifier will not do — which narrows the diff on the builds where a rewrite is genuinely needed. Values stay fully quoted so each literal remains parseable as JSON. + + Existing `policystack.gen.ts` files have no digest and will be rewritten once, on the first build after upgrading. + +- Updated dependencies [4cc5985] +- Updated dependencies [e0fc26a] +- Updated dependencies [279688a] + - @policystack/core@1.2.0 + ## 1.1.0 ### Patch Changes diff --git a/packages/vite/package.json b/packages/vite/package.json index 1b33119..c519d5d 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/vite", - "version": "1.1.0", + "version": "1.2.0", "description": "Vite plugin that scans source files for @policystack/sdk collecting()/thirdParty() calls and populates the auto-collected registry at build time", "keywords": [ "policystack", diff --git a/packages/vue/CHANGELOG.md b/packages/vue/CHANGELOG.md index 08385a7..e41184d 100644 --- a/packages/vue/CHANGELOG.md +++ b/packages/vue/CHANGELOG.md @@ -1,5 +1,13 @@ # @policystack/vue +## 1.2.0 + +### Minor Changes + +- 279688a: Consent preference toggles are now staged. `toggle()` writes to `state.draft` instead of live decisions, and nothing is gated, persisted, or script-loaded until `save()` promotes the draft in one step — scripts no longer load on checkbox tick before "Save", and returning visitors no longer get their stored record rewritten on every tick (#157). Leaving the preferences route without saving discards the draft. + + API changes: `toggle(key)` no longer accepts `ActionOptions` (name the record source at `save()` instead), and `ConsentState` gains a required `draft` field. Per-category `granted` accessors in all framework bindings read `draft ?? decisions` so checkboxes respond instantly; custom panels rendering checkboxes from raw `decisions` should apply the same merge. + ## 1.1.0 ## 1.0.1 diff --git a/packages/vue/package.json b/packages/vue/package.json index 2102723..53d3b7e 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@policystack/vue", - "version": "1.1.0", + "version": "1.2.0", "description": "Vue components for PolicyStack", "license": "Apache-2.0", "repository": {