@beworke/pixel 0.1.0-rc.1 → 0.1.0-rc.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/CHANGELOG.md +311 -4
  2. package/README.md +90 -128
  3. package/RELEASE_CANDIDATE.md +218 -101
  4. package/dist/Pixel-BnN86r4X.d.ts +797 -0
  5. package/dist/Pixel-BoUGqCbP.d.mts +797 -0
  6. package/dist/{StorageFactory-CAkJJqVD.d.ts → StorageFactory-BfCArzMM.d.ts} +2 -2
  7. package/dist/{StorageFactory-BhpbB6Jj.d.mts → StorageFactory-C0prtNR7.d.mts} +2 -2
  8. package/dist/browser/index.cjs.js +3 -0
  9. package/dist/browser/index.cjs.js.map +1 -0
  10. package/dist/browser/index.d.mts +77 -0
  11. package/dist/browser/index.d.ts +77 -0
  12. package/dist/browser/index.esm.js +3 -0
  13. package/dist/browser/index.esm.js.map +1 -0
  14. package/dist/browser/pixel.buygoods-checkout.global.js +4 -0
  15. package/dist/browser/pixel.buygoods-checkout.global.js.map +1 -0
  16. package/dist/browser/pixel.buygoods-landing.global.js +4 -0
  17. package/dist/browser/pixel.buygoods-landing.global.js.map +1 -0
  18. package/dist/browser/pixel.global.js +4 -0
  19. package/dist/browser/pixel.global.js.map +1 -0
  20. package/dist/browser/pixel.internal-checkout.global.js +4 -0
  21. package/dist/browser/pixel.internal-checkout.global.js.map +1 -0
  22. package/dist/config/index.cjs.js +1 -1
  23. package/dist/config/index.cjs.js.map +1 -1
  24. package/dist/config/index.d.mts +16 -5
  25. package/dist/config/index.d.ts +16 -5
  26. package/dist/config/index.esm.js +1 -1
  27. package/dist/config/index.esm.js.map +1 -1
  28. package/dist/events/index.cjs.js +1 -1
  29. package/dist/events/index.cjs.js.map +1 -1
  30. package/dist/events/index.d.mts +2 -1
  31. package/dist/events/index.d.ts +2 -1
  32. package/dist/events/index.esm.js +1 -1
  33. package/dist/events/index.esm.js.map +1 -1
  34. package/dist/examples/html-script/README.md +21 -55
  35. package/dist/examples/html-script/RELEASE_CANDIDATE.md +39 -26
  36. package/dist/examples/html-script/add-payment-info/README.md +3 -3
  37. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-autocomplete.html +107 -96
  38. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-disabled.html +107 -96
  39. package/dist/examples/html-script/add-payment-info/example-add-payment-info-card-fields.html +106 -95
  40. package/dist/examples/html-script/add-payment-info/example-add-payment-info-data-track.html +114 -95
  41. package/dist/examples/html-script/add-payment-info/example-add-payment-info-dedupe.html +106 -95
  42. package/dist/examples/html-script/add-payment-info/example-add-payment-info-manual.html +97 -95
  43. package/dist/examples/html-script/add-payment-info/example-add-payment-info-rules-card.html +106 -95
  44. package/dist/examples/html-script/add-payment-info/example-add-payment-info-security.html +106 -95
  45. package/dist/examples/html-script/add-to-cart/README.md +9 -6
  46. package/dist/examples/html-script/add-to-cart/example-add-to-cart-attribute.html +133 -119
  47. package/dist/examples/html-script/add-to-cart/example-add-to-cart-auto.html +146 -130
  48. package/dist/examples/html-script/add-to-cart/example-add-to-cart-click.html +144 -127
  49. package/dist/examples/html-script/add-to-cart/example-add-to-cart-dedupe.html +133 -119
  50. package/dist/examples/html-script/add-to-cart/example-add-to-cart-link.html +590 -0
  51. package/dist/examples/html-script/add-to-cart/example-add-to-cart-manual.html +124 -116
  52. package/dist/examples/html-script/add-to-cart/example-add-to-cart-order-bump.html +133 -119
  53. package/dist/examples/html-script/add-to-cart/example-add-to-cart-text.html +147 -130
  54. package/dist/examples/html-script/behavior/example-behavior-engagement.html +489 -0
  55. package/dist/examples/html-script/behavior/example-behavior-heartbeat.html +350 -0
  56. package/dist/examples/html-script/behavior/example-behavior-runtime-intelligence.html +433 -0
  57. package/dist/examples/html-script/behavior/example-behavior-viewport.html +397 -0
  58. package/dist/examples/html-script/{example-behavior.html → behavior/example-behavior.html} +23 -17
  59. package/dist/examples/html-script/buygoods/example-buygoods-checkout.html +50 -0
  60. package/dist/examples/html-script/buygoods/ladding.html +184 -0
  61. package/dist/examples/html-script/example-basic.html +1 -1
  62. package/dist/examples/html-script/example-checkout-commerce.html +826 -0
  63. package/dist/examples/html-script/example-conversion.html +42 -49
  64. package/dist/examples/html-script/example-global-factory-classic.html +45 -0
  65. package/dist/examples/html-script/example-global-factory.html +40 -0
  66. package/dist/examples/html-script/example-integration.html +45 -51
  67. package/dist/examples/html-script/example-landing-commerce.html +416 -0
  68. package/dist/examples/html-script/example-runtime-diagnostics.html +108 -0
  69. package/dist/examples/html-script/example-transport.html +70 -63
  70. package/dist/examples/html-script/full-funnel/README.md +64 -0
  71. package/dist/examples/html-script/full-funnel/checkout.html +118 -0
  72. package/dist/examples/html-script/full-funnel/downsell.html +60 -0
  73. package/dist/examples/html-script/full-funnel/landing.html +153 -0
  74. package/dist/examples/html-script/full-funnel/thank-you.html +87 -0
  75. package/dist/examples/html-script/full-funnel/upsell.html +66 -0
  76. package/dist/examples/html-script/initiate-checkout/README.md +6 -6
  77. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-attribute.html +135 -122
  78. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-auto.html +143 -128
  79. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-click.html +144 -128
  80. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-manual.html +127 -120
  81. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-snapshot.html +136 -123
  82. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-submit.html +144 -131
  83. package/dist/examples/html-script/initiate-checkout/example-initiate-checkout-text.html +146 -130
  84. package/dist/examples/html-script/internal-checkout/example-cardioclear-checkout.html +57 -0
  85. package/dist/examples/html-script/internal-checkout/example-slimsoda-checkout.html +53 -0
  86. package/dist/examples/html-script/lead/README.md +9 -7
  87. package/dist/examples/html-script/lead/example-lead-trigger-attribute.html +107 -94
  88. package/dist/examples/html-script/lead/example-lead-trigger-auto.html +118 -103
  89. package/dist/examples/html-script/lead/example-lead-trigger-click.html +118 -102
  90. package/dist/examples/html-script/release-candidate.html +219 -107
  91. package/dist/examples/html-script/remove-from-cart/README.md +4 -4
  92. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-attribute.html +134 -121
  93. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-css.html +134 -121
  94. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-dedupe.html +141 -128
  95. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-manual.html +125 -118
  96. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-multi.html +135 -122
  97. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-state.html +136 -123
  98. package/dist/examples/html-script/remove-from-cart/example-remove-from-cart-text.html +139 -124
  99. package/dist/examples/html-script/search/README.md +1 -1
  100. package/dist/examples/html-script/search/example-search-attribute.html +107 -99
  101. package/dist/examples/html-script/search/example-search-button-sync.html +107 -99
  102. package/dist/examples/html-script/search/example-search-dedupe.html +107 -99
  103. package/dist/examples/html-script/search/example-search-input.html +108 -99
  104. package/dist/examples/html-script/search/example-search-manual.html +98 -96
  105. package/dist/examples/html-script/search/example-search-submit.html +107 -99
  106. package/dist/examples/html-script/search/example-search-text.html +112 -99
  107. package/dist/examples/html-script/url-context/example-url-context-allowed-domains.html +92 -0
  108. package/dist/examples/html-script/url-context/example-url-context-landing.html +110 -0
  109. package/dist/examples/html-script/url-context/example-url-context-upsell.html +105 -0
  110. package/dist/examples/html-script/url-context/example-url-context.html +205 -0
  111. package/dist/examples/html-script/view-content/README.md +1 -1
  112. package/dist/examples/html-script/view-content/example-view-content-attribute.html +126 -118
  113. package/dist/examples/html-script/view-content/example-view-content-css.html +126 -118
  114. package/dist/examples/html-script/view-content/example-view-content-dedupe.html +126 -118
  115. package/dist/examples/html-script/view-content/example-view-content-empty.html +126 -118
  116. package/dist/examples/html-script/view-content/example-view-content-manual.html +117 -115
  117. package/dist/examples/html-script/view-content/example-view-content-product-card.html +126 -118
  118. package/dist/examples/html-script/view-content/example-view-content-text.html +131 -121
  119. package/dist/examples/release-candidate/README.md +2 -1
  120. package/dist/examples/v2/README.md +16 -13
  121. package/dist/index-B8u_3PGG.d.ts +460 -0
  122. package/dist/index-BxT2d-TK.d.mts +460 -0
  123. package/dist/index.cjs.js +1 -1
  124. package/dist/index.cjs.js.map +1 -1
  125. package/dist/index.d.mts +23 -361
  126. package/dist/index.d.ts +23 -361
  127. package/dist/index.esm.js +1 -1
  128. package/dist/index.esm.js.map +1 -1
  129. package/dist/pixel-DNGbAN5C.d.ts +871 -0
  130. package/dist/pixel-_BSDpx4M.d.mts +871 -0
  131. package/dist/pixel-default-config-BMYaqs7i.d.ts +21 -0
  132. package/dist/pixel-default-config-DLRya1tl.d.mts +21 -0
  133. package/dist/pixel-settings-D-t9zQb4.d.ts +40 -0
  134. package/dist/pixel-settings-DGxl0MVm.d.mts +40 -0
  135. package/dist/runtime/index.cjs.js +1 -1
  136. package/dist/runtime/index.cjs.js.map +1 -1
  137. package/dist/runtime/index.d.mts +19 -26
  138. package/dist/runtime/index.d.ts +19 -26
  139. package/dist/runtime/index.esm.js +1 -1
  140. package/dist/runtime/index.esm.js.map +1 -1
  141. package/dist/services/index.cjs.js +1 -1
  142. package/dist/services/index.cjs.js.map +1 -1
  143. package/dist/services/index.d.mts +14 -6
  144. package/dist/services/index.d.ts +14 -6
  145. package/dist/services/index.esm.js +1 -1
  146. package/dist/services/index.esm.js.map +1 -1
  147. package/dist/types-B-Nzagpk.d.mts +19 -0
  148. package/dist/types-D0KVsgzs.d.mts +293 -0
  149. package/dist/types-D3kJ9bfT.d.ts +293 -0
  150. package/dist/types-Dfi9C49l.d.ts +19 -0
  151. package/dist/url-context-Ck2LK18V.d.mts +87 -0
  152. package/dist/url-context-Ck2LK18V.d.ts +87 -0
  153. package/dist/v2/global.global.js +1 -1
  154. package/dist/v2/global.global.js.map +1 -1
  155. package/dist/v2/index.cjs.js +1 -1
  156. package/dist/v2/index.cjs.js.map +1 -1
  157. package/dist/v2/index.d.mts +26 -6
  158. package/dist/v2/index.d.ts +26 -6
  159. package/dist/v2/index.esm.js +1 -1
  160. package/dist/v2/index.esm.js.map +1 -1
  161. package/docs/public/README.md +80 -0
  162. package/docs/public/api/exports.md +56 -0
  163. package/docs/public/api/pixel.md +86 -0
  164. package/docs/public/configuration/commerce.md +44 -0
  165. package/docs/public/configuration/modules.md +63 -0
  166. package/docs/public/configuration/overview.md +85 -0
  167. package/docs/public/configuration/transport.md +127 -0
  168. package/docs/public/events/catalog.md +67 -0
  169. package/docs/public/getting-started/installation.md +88 -0
  170. package/docs/public/getting-started/quick-start.md +142 -0
  171. package/docs/public/getting-started/react-nextjs.md +78 -0
  172. package/docs/public/getting-started/script-tag.md +102 -0
  173. package/docs/public/guides/funnel-checkout.md +52 -0
  174. package/docs/public/guides/funnel-downsell.md +53 -0
  175. package/docs/public/guides/funnel-full.md +64 -0
  176. package/docs/public/guides/funnel-landing.md +70 -0
  177. package/docs/public/guides/funnel-thank-you.md +48 -0
  178. package/docs/public/guides/funnel-upsell.md +72 -0
  179. package/docs/public/limitations.md +33 -0
  180. package/docs/public/privacy/limitations.md +33 -0
  181. package/docs/public/release-candidate/validation.md +42 -0
  182. package/docs/public/troubleshooting.md +56 -0
  183. package/package.json +41 -20
  184. package/dist/index-DUfFzniE.d.mts +0 -274
  185. package/dist/index-DUfFzniE.d.ts +0 -274
  186. package/dist/pixel-CbeF25mD.d.mts +0 -555
  187. package/dist/pixel-CbeF25mD.d.ts +0 -555
  188. package/dist/pixel-default-config-1VgLFOiL.d.mts +0 -5
  189. package/dist/pixel-default-config-Bxb-Vdd8.d.ts +0 -5
  190. package/dist/types-CTpRvFKZ.d.ts +0 -71
  191. package/dist/types-DGlBdsAy.d.mts +0 -71
package/CHANGELOG.md CHANGED
@@ -1,8 +1,315 @@
1
- # @agenus-io/pixel
1
+ # @beworke/pixel
2
2
 
3
- ## Unreleased
3
+ ## 0.1.0-rc.11 — preset checkout interno
4
4
 
5
- ### Release Candidate (0.0.15)
5
+ ### Added
6
+
7
+ - Bundle drop-in `dist/browser/pixel.internal-checkout.global.js` (`@beworke/pixel/internal-checkout`)
8
+ - Config interna (PAGE_VIEW, ATC email+phone, ADD_PAYMENT_INFO em `[data-checkout]`, HEARTBEAT, `hcid`)
9
+ - Único input do integrador: `?pixelId=pix_…` no `src` do script
10
+
11
+ ## 0.1.0-rc.10 — presets BuyGoods (landing + checkout)
12
+
13
+ ### Added
14
+
15
+ - Bundles drop-in sem configuração: `dist/browser/pixel.buygoods-landing.global.js` e `dist/browser/pixel.buygoods-checkout.global.js`
16
+ - Subpaths `@beworke/pixel/buygoods-landing` e `@beworke/pixel/buygoods-checkout`
17
+ - Landing gera `subid4` e decora todos os links com `subid4` + UTMs / params da URL
18
+ - Checkout sobe para `window.top` (Funnel Pixels / iframe), só lê `subid4`, dispara PAGE_VIEW, ADD_TO_CART (email+phone), ADD_PAYMENT_INFO (`#submit`) e HEARTBEAT
19
+ - `pixelId` e o restante da config são internos — o integrador só inclui o `<script>`
20
+
21
+ ## 0.1.0-rc.9 — app.source livre, platform e payload `app`
22
+
23
+ ### Added
24
+
25
+ - `app.source` aceita os valores conhecidos (`pageus`, `gomarke`, `bemony`, `custom`) **e qualquer outra string** (ex.: `hwaffiliate`)
26
+ - `app.platform` (default `''`; conhecido: `buygoods`; string livre ok)
27
+ - Payload HTTP inclui `app` (`source`, `target`, `platform`, `environment`) no evento e no batch; os mesmos campos também vão em `meta`
28
+ - Exemplo BuyGoods (`apps/playground-html/buygoods`) sobe o Pixel do iframe de Funnel Pixels para `window.top`
29
+
30
+ ### Changed
31
+
32
+ - Checkout BuyGoods dispara `PAGE_VIEW` no init e desliga `INITIATE_CHECKOUT`
33
+
34
+ ## 0.1.0-rc.8 — factory, browser bootstrap, global callable
35
+
36
+ ### Added
37
+
38
+ - `createPixel()` no entry principal (instâncias independentes)
39
+ - Subpath `@beworke/pixel/browser` (`bootstrapPixel`, getters, destroy, `PixelBootstrapError`)
40
+ - Bundle `dist/browser/pixel.global.js` com `window.Pixel(settings)` callable
41
+ - Compatibilidade: `window.PixelV2` ganha `createPixel` / `bootstrap` / `getInstance` / `destroy`
42
+ - Pacote `@beworke/pixel-react` (`PixelProvider` / `usePixel`)
43
+ - `SDK_VERSION` centralizada e validada contra `package.json`
44
+ - `PixelSettings` (input público parcial) + `resolvePixelConfig()` no construtor de `Pixel`
45
+ - AutoTrack `selector` aceita `trigger: 'hover'` e `'visible'`; `viewContent` default liga os 3 em `[data-track="view_content"]`. `data-trigger` no HTML restringe o modo (`click` / `hover` / `visible`); sem o atributo, dispara nos 3
46
+ - `PixelConfigurationError` para `pixelId` inválido
47
+
48
+ ### Fixed
49
+
50
+ - `REMOVE_FROM_CART` usa a mesma janela de 500ms do `ADD_TO_CART` — add → remove → add → remove do mesmo produto volta a disparar
51
+ - `force: true` durante pending destrói a instância anterior (generation token)
52
+ - `window.PixelV2` continua disponível quando `window.Pixel` estrangeiro bloqueia o global
53
+
54
+ ## 0.1.0-rc.6 — Public RC docs on npm + install fix
55
+
56
+ ### Fixed
57
+
58
+ - README npm com links **GitHub** (npm não hospeda páginas `.md` individuais)
59
+ - `docs/public/` incluído no tarball npm → `node_modules/@beworke/pixel/docs/public/`
60
+ - Instalação documentada: `npm install @beworke/pixel@rc` (público, sem token)
61
+ - `publish:rc` publica tags `rc` e `latest` juntas
62
+
63
+ ## Unreleased — Etapa 20 Runtime Intelligence
64
+
65
+ ### Added
66
+
67
+ - `modules.behavior.rateLimit` — limitador interno por instância (sliding window, critical bypass para IDLE/ACTIVITY/VISIBLE/HIDDEN/EXIT_INTENT)
68
+ - `modules.behavior.buffer` — agregação interna de sinais (drop_oldest / drop_newest / compress_similar; flush por size/age/hidden/destroy)
69
+ - `modules.behavior.stateMachine` — estados explícitos (NOT_INITIALIZED → … → DESTROYED) com tabela de transições e histórico limitado
70
+ - `modules.behavior.sessionSummary` — resumo consolidado da sessão com `emitOnHidden` / `emitOnDestroy` / `minimumSessionMs`
71
+ - `BehaviorRuntimeCoordinator` — pipeline SignalBus → RateLimit → Buffer → StateMachine → Accumulator → Dispatcher
72
+ - Evento tipado `BEHAVIOR_SESSION_SUMMARY` (categoria `ENGAGEMENT`) + `ApiEventType`
73
+ - Diagnostics: `behavior.rateLimit`, `behavior.buffer`, `behavior.stateMachine`, `behavior.sessionSummary`
74
+ - Health `degraded` isolado (high drop rate, buffer full, invalid transitions)
75
+ - Exemplo `examples/html-script/behavior/example-behavior-runtime-intelligence.html`
76
+ - Testes `src/modules/behavior/runtime-intelligence.test.ts` (38 casos)
77
+
78
+ ### Notes
79
+
80
+ - Pacote permanece em `0.1.0-rc.5` (sem bump)
81
+ - Behavior Runtime Evolution **17–20 concluída**
82
+ - Próxima etapa oficial: 21 — Commerce lifecycle
83
+
84
+ ## Unreleased — Hardening 19.1 (gate Etapa 20)
85
+
86
+ ### Fixed
87
+
88
+ - `ApiEventType` agora inclui `ENGAGEMENT_UPDATE` e `ENGAGEMENT_SUMMARY` (contrato HTTP reconhece os eventos; o cast em `EventPayloadBuilder` deixou de mascarar a ausência)
89
+ - Ordem de init do Behavior Runtime reordenada para `bus → Engagement → trackers → Heartbeat`: o Engagement passa a receber os sinais iniciais (`HIDDEN`/`VISIBLE` da inicialização do `VisibilityTracker` e `HEARTBEAT` de `fireImmediately`)
90
+ - `EngagementEngine.init()` faz `reset()` do `BehaviorSignalBus` próprio no reinit (apenas quando `ownsBus`); subscriptions voltam a funcionar após destroy/reinit
91
+ - Playground `example-behavior-engagement.html`: `destroy()` ocorre antes de `unsubscribe()` (captura `ENGAGEMENT_SUMMARY`); painel preserva o último snapshot; reinit mostra o summary anterior sem duplicar listener
92
+
93
+ ### Added
94
+
95
+ - `src/transport/engagement-transport.test.ts` — contrato HTTP (ApiEventType/EventPayloadBuilder/batch) + guard de compilação
96
+ - Testes de regressão em `engagement.test.ts`: ownership do SignalBus (bus próprio reinit / bus injetado não resetado / duplicate init / duplicate destroy) e ordem de init (HIDDEN/VISIBLE inicial, HEARTBEAT imediato, reinit sem vazamento)
97
+
98
+ ### Notes
99
+
100
+ - Pacote permanece em `0.1.0-rc.5` (sem bump); 630 testes passando | 2 skipped
101
+ - Etapa 20 — Runtime Intelligence liberada
102
+
103
+ ## Unreleased — Etapa 19 Engagement Runtime
104
+
105
+ ### Added
106
+
107
+ - `modules.behavior.engagement` — contrato oficial (`enabled`, `evaluationIntervalMs`, `emitOnChange`, `minScoreDelta`, `emitSummaryOnDestroy`, `weights`, `penalties`, `thresholds`; defaults seguros, `enabled: false`)
108
+ - `EngagementEngine` real: consome `BehaviorSignalBus`, produz score determinístico `0..100` via `ManagedScheduler` (sem `setInterval`), com componentes/pesos/penalidades/níveis
109
+ - Componentes: `EngagementSignalAccumulator`, `EngagementScoreCalculator`, `EngagementLevelResolver`, `EngagementEmissionPolicy`, `EngagementSummaryBuilder`
110
+ - Eventos tipados `ENGAGEMENT_UPDATE` / `ENGAGEMENT_SUMMARY` (categoria `ENGAGEMENT`)
111
+ - `resolveEngagementConfig` / `normalizeEngagementConfig` (clamp de intervalo/delta, normalização de pesos para somar 1, clamp de penalidades, validação de thresholds)
112
+ - Diagnostics: `getDebugSnapshot().behavior.engagement` (score/level/contadores/signalCounts, sanitizado) e `configuredEngines` inclui `engagement`
113
+ - Health `degraded` isolado quando o engine opcional tem drift excessivo ou falha de cálculo
114
+ - `ScrollTracker`/`ClickTracker` publicam `SCROLL`/`CLICK`/`RAGE_CLICK` no `BehaviorSignalBus`; `HeartbeatEngine` publica `HEARTBEAT`
115
+ - Exemplo `examples/html-script/behavior/example-behavior-engagement.html`
116
+ - Testes `src/modules/behavior/engagement.test.ts` (48 casos, incl. Hardening 19.1)
117
+
118
+ ### Changed
119
+
120
+ - Diagnostics: `configuredEngines` reporta `engagement` (antes: `engagement(stub)`)
121
+
122
+ ### Breaking
123
+
124
+ - `modules.behavior.engagement` migrou do shape legado (`weights.{scroll,click,time}`, `thresholds.{low,medium}`) para o contrato da Etapa 19. Sem migration layer (config legada nunca esteve wired a runtime)
125
+ - Tipos públicos `EngagementWeights` / `EngagementThresholds` mudaram de shape; adicionado `EngagementPenalties`
126
+
127
+ ### Notes
128
+
129
+ - Pacote permanece em `0.1.0-rc.5` (sem bump)
130
+ - Próxima etapa oficial: 20 — Runtime Intelligence
131
+
132
+ ## Unreleased — Hardening 18.1 (gate Etapa 19)
133
+
134
+ ### Fixed
135
+
136
+ - Viewport MutationObserver rescan: `cleanupDisconnectedElements` agora ocorre **antes** de `scanAndObserve` — evita regressão com `maxObservedElements` quando A é removido e B é adicionado na mesma batch
137
+ - Dispatcher: falha de um listener não interrompe os demais nem propaga ao produtor; log sanitizado `DISPATCHER_LISTENER_FAILED` (sem payload/PII)
138
+
139
+ ### Added
140
+
141
+ - Testes explícitos Hardening 18.1: limites, SSR, IntersectionObserver/MutationObserver failures, mutation burst, isolamento Dispatcher ↔ Viewport/Heartbeat
142
+
143
+ ### Notes
144
+
145
+ - Pacote permanece em `0.1.0-rc.5` (sem bump)
146
+ - Etapa 19 — Engagement liberada após gate 18.1
147
+
148
+ ## Unreleased — Etapa 18 Viewport Runtime
149
+
150
+ ### Added
151
+
152
+ - `modules.behavior.trackers.viewport` — config aditiva (`targets[]`, `rootMargin`, `observeMutations`, `mutationDebounceMs`, `maxObservedElements`; defaults seguros, `enabled: false`)
153
+ - `ViewportTracker` real com `IntersectionObserver` + `MutationObserver` (DOM dinâmico)
154
+ - Eventos tipados `VIEWPORT_ENTER` / `VIEWPORT_EXIT` (categoria `ENGAGEMENT`)
155
+ - `ViewportObserverFactory`, `ViewportTargetRegistry`, `ViewportStateStore`, `normalizeViewportConfig`, `describeViewportElement`
156
+ - `BehaviorSignalBus.createSignal()` — geração de ID de sinal por instância (sem estado module-level)
157
+ - Diagnostics: `getDebugSnapshot().behavior.viewport` + separação `configuredTrackers` (Scroll/Click/Idle/Visibility/ExitIntent/Viewport) vs `configuredEngines` (Heartbeat/Engagement)
158
+ - Health `degraded` quando `viewport.enabled === true` e `IntersectionObserver` indisponível
159
+ - Exemplo `examples/html-script/example-behavior-viewport.html`
160
+ - Testes `src/modules/behavior/viewport.test.ts`
161
+
162
+ ### Changed
163
+
164
+ - `getDebugSnapshot().behavior` passa a expor `configuredTrackers` e `configuredEngines` separados (antes: apenas `configuredTrackers` misturando trackers e engines)
165
+ - `IdleTracker` / `VisibilityTracker` passam a usar `signalBus.createSignal()` em vez de sequência interna do bus
166
+
167
+ ### Breaking
168
+
169
+ - **Removido** o contrato stub de `trackers.viewport` (`selector`, `selectorType`, `visibilityThreshold`) — substituído integralmente por `targets[]` + `rootMargin`/`observeMutations`/`mutationDebounceMs`/`maxObservedElements`. Sem migration layer (stub nunca esteve wired em produção).
170
+
171
+ ### Notes
172
+
173
+ - Viewport mede visibilidade de elementos e publica via Dispatcher; **não** chama Transport/Queue/Sender
174
+ - Sem polling como fallback: se `IntersectionObserver` está indisponível, o tracker fica `available: false` e não observa nada
175
+ - `SignalBus` deixa de ter `signalSeq` module-level; cada instância de `BehaviorSignalBus` gera seus próprios IDs via `createSignal()`
176
+ - Pacote permanece em `0.1.0-rc.5` (sem bump de versão)
177
+
178
+ ## Unreleased — Etapa 17 Heartbeat Runtime
179
+
180
+ ### Added
181
+
182
+ - `modules.behavior.heartbeat` — config aditiva (defaults seguros, `enabled: false`)
183
+ - `HeartbeatEngine` + `ManagedScheduler` + `BehaviorSignalBus` + `HeartbeatPolicy` / `HeartbeatSnapshotBuilder`
184
+ - Evento tipado `BEHAVIOR_HEARTBEAT` (categoria `ENGAGEMENT`)
185
+ - Diagnostics: `getDebugSnapshot().behavior.heartbeat`
186
+ - Exemplo `examples/html-script/example-behavior-heartbeat.html`
187
+ - Testes `src/modules/behavior/heartbeat.test.ts`
188
+
189
+ ### Changed (contrato Heartbeat consolidado)
190
+
191
+ - Removido `trackers.heartbeat` e qualquer fallback/legacy
192
+ - `engagement` movido para `modules.behavior.engagement` (irmão de `trackers`)
193
+ - Adicionado `hiddenIntervalMs` ao contrato oficial de Heartbeat
194
+
195
+ ### Notes
196
+
197
+ - Heartbeat mede presença e publica via Dispatcher; **não** chama Transport/Queue/Sender
198
+ - Scheduler usa `intervalMs` (visível) ou `hiddenIntervalMs` (escondido); `emitWhenHidden` controla emissão
199
+ - Sequence reinicia a cada `init`
200
+ - Intervalo mínimo normalizado: 1000ms
201
+
202
+ ## 0.1.0-rc.5 — Runtime Diagnostics (Etapa 16)
203
+
204
+ ### Added
205
+
206
+ - `pixel.getDebugSnapshot()` — snapshot oficial read-only, imutável e sanitizado
207
+ - Módulo `diagnostics` (`RuntimeDiagnosticsModule` + `DebugSnapshotService`)
208
+ - Redaction de secrets/PII em snapshots
209
+ - Health evaluator (`healthy` / `degraded` / `unhealthy` / `unknown`)
210
+ - Exemplo `examples/html-script/example-runtime-diagnostics.html`
211
+ - Testes `src/diagnostics/diagnostics.test.ts`
212
+
213
+ ### Notes
214
+
215
+ - `subscribeDebug` **não** implementado propositalmente (sem polling/timers); snapshot sob demanda apenas
216
+ - Sem alteração no pipeline de eventos / Transport / Conversion
217
+ - Hardening: sanitização ampliada; `modules[].id` (evita colisão com PII `name`); testes hardening
218
+
219
+ ## 0.1.0-rc.4 — Etapa 15B Validation Hardening
220
+
221
+ ### Added
222
+
223
+ - `PIXEL_V2_VALIDATION_MATRIX.md` — matriz oficial de validação integrada
224
+ - `PIXEL_V2_STAGE_15B_REPORT.md` — relatório da Etapa 15B
225
+ - Playground `examples/html-script/full-funnel/` (landing → checkout → upsell/downsell → thank-you)
226
+ - Scripts: `validate:15b`, `test:integration`, `test:transport`, `test:full-funnel`, `test:chaos`
227
+ - Teste de matriz de módulos `stage-15b-module-matrix.test.ts`
228
+
229
+ ### Changed
230
+
231
+ - Documentação alinhada ao runtime real (Transport/Integrations implementados; Privacy stub; Behavior P1 pendente)
232
+ - Roadmap oficial 16–22 documentado (sem implementação)
233
+ - Hierarquia documental registrada em ARCHITECTURE / README / BACKLOG
234
+
235
+ ### Fixed
236
+
237
+ - Referências “Transport futuro” / Dispatcher sem consumidor real
238
+ - Checklist RC inconsistente
239
+ - `examples/v2` / html-script RELEASE notes apontando rc.3 onde cabia rc.4
240
+ - Full-funnel: `commerce.catalog` + `cart.initialItems[{ productId }]`; `paymentMethod: CREDIT_CARD`; `order_id` antes do init
241
+ - Docs: status **1–15B concluídas** (sem “15B em andamento”)
242
+
243
+ ## 0.1.0-rc.4 — Core UrlContext
244
+
245
+ ### Added
246
+
247
+ - Core UrlContext module
248
+ - `query_params` / `url_context` on events
249
+ - managed URL params (public `sid`)
250
+ - forward params + link decoration
251
+ - denylist for sensitive params
252
+ - HTML examples for landing/checkout/upsell/allowedDomains
253
+
254
+ ### Changed
255
+
256
+ - Event builder enriches centrally when `urlContext` enabled
257
+
258
+ ### Fixed / Hardening (15A finalização)
259
+
260
+ - Decode seguro de query/cookie (`safeDecodeURIComponent`) — URI malformada não quebra init
261
+ - Link decorator idempotente (sem `sid=a&sid=a`); colapsa duplicados
262
+ - Preserva href relativo e ordem `?query#hash`
263
+ - Snapshot / payload com cópias congeladas (sem mutação externa nem refs compartilhadas)
264
+ - Cache de exclude domains/selectors no decorator (perf em milhares de links)
265
+ - `resolveUrlContextConfig` clona nested arrays/objects (defaults imutáveis)
266
+ - `dispose()` alias em engine/service
267
+
268
+ ### Security
269
+
270
+ - Denylisted params not captured/forwarded
271
+ - Public `sid` ≠ internal `session_id`
272
+
273
+ ## 0.1.0-rc.3 — Global Commerce Config + Hardening 14B/14C
274
+
275
+ ### Changed
276
+
277
+ - Commerce global no root de `PixelConfig` (`config.commerce`)
278
+ - `commerce.checkout` → `commerce.cart`
279
+ - `selectedItems` na config → `commerce.cart.initialItems`
280
+ - Auto detectors usam `auto.detectors[event].sources[]`
281
+ - `calculateValueFrom: 'selected_items'` → `'cart'`
282
+ - Novo: `commerce.enrichment` por evento (`pageView`, `viewContent`, `lead`, …)
283
+ - Novo: `commerce.cart.mode` inclui `landing_page` e `checkout`
284
+ - Exemplos HTML, Next.js, docs e `example-landing-commerce.html` migrados
285
+ - Removidos aliases públicos `CommerceItem` / `CommerceCheckoutMode` e literais `selected_items` / `event_items` do tipo oficial
286
+
287
+ ### Fixed
288
+
289
+ - Enrichment respeita `commerce.enabled` e `enrichment[event].enabled`
290
+ - `FormSource` respeita escopo (`selector` / `formSelector`) em todos os triggers
291
+ - `PaymentSource` respeita `formSelector` real do campo
292
+ - Docs normalizadas — removidos resíduos de contratos antigos
293
+ - **14C:** `ADD_TO_CART` sem `productId` usa item principal de `commerce.cart` (initialItems/runtime) quando enrichment permite
294
+
295
+ ### Breaking
296
+
297
+ - Removido `modules.conversion.commerce`
298
+ - Removidos `selector`, `selectorForm`, `cardDetection`, `autoDispatch`, `paymentMethod` no nível do detector — use apenas dentro de `sources[]`
299
+
300
+ ### 0.1.0-rc.2 — Etapa 14 Auto Sources Contract
301
+
302
+ - **Breaking (contrato auto):** detectors passam a usar `sources: AutoTrackSource[]`
303
+ - Removidos do nível do detector: `selector`, `selectorType`, `selectorForm`, `paymentMethod`, `cardDetection`, `autoDispatch`
304
+ - Types: `selector` | `form` | `payment` | `lifecycle` | `url`
305
+ - Múltiplas sources independentes por evento (ex.: ADD_TO_CART form + click)
306
+ - `AutoTrackerFactory` cria um detector por source
307
+ - Novo `LifecycleAutoDetector` (INITIATE_CHECKOUT on ready)
308
+ - Payment via `type: 'payment'` → `CardDetector`
309
+ - Defaults: todos os detectors com `sources: []`
310
+ - Exemplos / RC / Next checkout migrados
311
+
312
+ ### Release Candidate (0.1.0-rc.1 / 0.0.15)
6
313
 
7
314
  - Etapas 12A–12N Commerce + AutoTrack + docs/release readiness
8
315
  - Etapa 13A — validação consumidor real (`PixelV2` + Transport Event/Batch)
@@ -156,7 +463,7 @@
156
463
  - **Configuração Dinâmica**: Atualização de configuração em runtime
157
464
  - **Múltiplos Seletores**: Suporte a class, id, attribute, tag, text, url, data-attribute, custom
158
465
  - **Extração de Dados**: Seletores configuráveis para extrair dados de produtos/carrinho
159
- - **Validação**: Sistema de validação de formulários com regras customizadas
466
+ - **Validação**: Sistema de validação de formulários com regras customizáveis
160
467
  - **Callbacks Customizados**: Funções de callback para processamento customizado
161
468
 
162
469
  #### 📊 **Monitoramento e Estatísticas**
package/README.md CHANGED
@@ -1,163 +1,125 @@
1
- # Pixel v2
1
+ # Pixel v2 (`@beworke/pixel`)
2
2
 
3
- SDK de analytics e conversão para web — arquitetura modular v2.
3
+ SDK de analytics e conversão para web — implemente funis (landing, checkout, upsell, thank-you) em React, Next.js, SPA ou HTML puro **sem conhecer a arquitetura interna**.
4
4
 
5
- **Documentação:** [`ARCHITECTURE.md`](./ARCHITECTURE.md) · [`README_LEGACY_AUDIT.md`](./README_LEGACY_AUDIT.md) · [`RELEASE_CANDIDATE.md`](./RELEASE_CANDIDATE.md)
5
+ A versão publicada está em `package.json`. Instale a tag `@rc` para receber a release candidate atual.
6
6
 
7
- ## Arquitetura
7
+ ## Instalação (npm — sem token)
8
8
 
9
- ```txt
10
- Pixel → PixelRuntime → Services → Modules → BaseEventBuilder → Dispatcher
11
- ├── TransportModule → API própria
12
- └── IntegrationsModule → PAGE_VIEW browser (Meta / Google / TikTok)
9
+ Pacote **público**. Qualquer dev instala **sem login** no npm:
10
+
11
+ ```bash
12
+ npm install @beworke/pixel@rc
13
13
  ```
14
14
 
15
- Attribution é independente: `AttributionService` → `event.identifiers` → Transport/API.
15
+ > **Importante:** `npm install @beworke/pixel` sem tag usa `latest`. Use `@rc` até alinhar tags.
16
16
 
17
- O legado `GomarkePixel` (v1) foi **removido na Etapa 11**.
17
+ ## Documentação pública
18
18
 
19
- ## Instalação
19
+ O **npm não hospeda** arquivos `.md` como site (URLs tipo `npmjs.com/.../installation.md` **não existem**).
20
20
 
21
- ```bash
22
- pnpm add @agenus-io/pixel
21
+ | Onde ler | Link |
22
+ |----------|------|
23
+ | **GitHub (recomendado no browser)** | [docs/public/README.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/README.md) |
24
+ | **Após `npm install`** | `node_modules/@beworke/pixel/docs/public/` |
25
+
26
+ | Guia | GitHub |
27
+ |------|--------|
28
+ | Instalação | [getting-started/installation.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/getting-started/installation.md) |
29
+ | Quick start | [getting-started/quick-start.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/getting-started/quick-start.md) |
30
+ | API Pixel | [api/pixel.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/api/pixel.md) |
31
+ | Eventos | [events/catalog.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/events/catalog.md) |
32
+ | Configuração | [configuration/overview.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/configuration/overview.md) |
33
+ | Funis | [guides/funnel-full.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/guides/funnel-full.md) |
34
+ | Privacidade (RC) | [privacy/limitations.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/privacy/limitations.md) |
35
+ | Limitações | [limitations.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/limitations.md) |
36
+
37
+ Repositório: https://github.com/beworke-apps/Pixel-Global
38
+
39
+ ## Três níveis de uso
40
+
41
+ ### HTML simples (script tag)
42
+
43
+ Carregar o bundle **apenas registra** `window.Pixel`. Nada é inicializado até `Pixel(settings)` resolver. Top-level `await` exige `type="module"` (ou um IIFE/`then`).
44
+
45
+ ```html
46
+ <script src="https://unpkg.com/@beworke/pixel@rc/dist/browser/pixel.global.js"></script>
47
+ <script type="module">
48
+ const pixel = await Pixel({
49
+ identity: { pixelId: 'pix_YOUR_ID' },
50
+ });
51
+ pixel.lead({ email: 'user@example.com' });
52
+ </script>
23
53
  ```
24
54
 
25
- Tarball local (RC):
55
+ `Pixel(settings)` usa o bootstrap (uma instância por `window`). `window.PixelV2` permanece como compatibilidade / API de baixo nível.
26
56
 
27
- ```bash
28
- npm pack
29
- npm install ./agenus-io-pixel-0.0.15.tgz
30
- npm run validate:rc-package
57
+ ### NPM com factory
58
+
59
+ `createPixel` cria **instâncias independentes** (não é singleton).
60
+
61
+ ```typescript
62
+ import { createPixel } from '@beworke/pixel';
63
+
64
+ const pixel = await createPixel({
65
+ identity: { pixelId: 'pix_YOUR_ID' },
66
+ });
67
+
68
+ pixel.lead({ email: 'user@example.com' });
31
69
  ```
32
70
 
33
- ## Uso (ESM / CJS)
71
+ A classe continua disponível:
34
72
 
35
- ```ts
36
- import { Pixel, DEFAULT_PIXEL_CONFIG } from '@agenus-io/pixel';
73
+ ```typescript
74
+ import { Pixel } from '@beworke/pixel';
37
75
 
38
76
  const pixel = new Pixel({
39
- ...DEFAULT_PIXEL_CONFIG,
40
- identity: {
41
- ...DEFAULT_PIXEL_CONFIG.identity,
42
- pixelId: 'pix_123',
43
- },
44
- transport: {
45
- ...DEFAULT_PIXEL_CONFIG.transport,
46
- apiEndpoint: 'https://sua-api.example.com',
47
- },
48
- modules: {
49
- ...DEFAULT_PIXEL_CONFIG.modules,
50
- core: {
51
- ...DEFAULT_PIXEL_CONFIG.modules.core,
52
- enabled: true,
53
- pageView: {
54
- ...DEFAULT_PIXEL_CONFIG.modules.core.pageView,
55
- enabled: true,
56
- trackInitialPageView: true, // PAGE_VIEW no init — não há pixel.pageView()
57
- },
58
- },
59
- conversion: {
60
- ...DEFAULT_PIXEL_CONFIG.modules.conversion,
61
- enabled: true,
62
- manual: {
63
- ...DEFAULT_PIXEL_CONFIG.modules.conversion.manual,
64
- purchase: { enabled: true },
65
- },
66
- },
67
- transport: {
68
- ...DEFAULT_PIXEL_CONFIG.modules.transport,
69
- enabled: true,
70
- mockSender: { enabled: false },
71
- sender: { mode: 'http' },
72
- },
73
- },
77
+ identity: { pixelId: 'pix_YOUR_ID' },
74
78
  });
75
-
76
79
  await pixel.init();
77
- pixel.purchase({ orderId: '1', value: 99.9, currency: 'BRL' });
78
- await pixel.destroy();
79
80
  ```
80
81
 
81
- ```js
82
- const { Pixel, DEFAULT_PIXEL_CONFIG } = require('@agenus-io/pixel');
83
- ```
82
+ ### Browser avançado
84
83
 
85
- ## CDN (bundle global)
84
+ `bootstrapPixel` gerencia **uma instância por `window`**. Para trocar a configuração, destrua explicitamente ou use `force`. Chamadas concorrentes compartilham a configuração da primeira chamada.
86
85
 
87
- ```html
88
- <script src="https://unpkg.com/@agenus-io/pixel@latest/dist/v2/global.global.js"></script>
89
- <script>
90
- const { Pixel, DEFAULT_PIXEL_CONFIG } = window.PixelV2;
91
- const pixel = new Pixel({
92
- ...DEFAULT_PIXEL_CONFIG,
93
- identity: { ...DEFAULT_PIXEL_CONFIG.identity, pixelId: 'pix_123' },
94
- transport: {
95
- ...DEFAULT_PIXEL_CONFIG.transport,
96
- apiEndpoint: 'https://sua-api.example.com',
97
- },
98
- modules: {
99
- ...DEFAULT_PIXEL_CONFIG.modules,
100
- core: {
101
- ...DEFAULT_PIXEL_CONFIG.modules.core,
102
- enabled: true,
103
- pageView: {
104
- ...DEFAULT_PIXEL_CONFIG.modules.core.pageView,
105
- enabled: true,
106
- trackInitialPageView: true,
107
- },
108
- },
109
- },
110
- });
111
- pixel.init();
112
- </script>
86
+ ```typescript
87
+ import { bootstrapPixel } from '@beworke/pixel/browser';
88
+
89
+ const pixel = await bootstrapPixel(
90
+ {
91
+ identity: { pixelId: 'pix_YOUR_ID' },
92
+ },
93
+ {
94
+ waitForConsent: () => window.consentGranted === true,
95
+ }
96
+ );
113
97
  ```
114
98
 
115
- Nome global oficial: **`PixelV2`**.
99
+ React: use [`@beworke/pixel-react`](../pixel-react/README.md) (`PixelProvider` / `usePixel`).
116
100
 
117
- ## Package exports
101
+ ## Métodos públicos
118
102
 
119
- | Export | Descrição |
103
+ | Método | Descrição |
120
104
  |--------|-----------|
121
- | `@agenus-io/pixel` | `Pixel`, `DEFAULT_PIXEL_CONFIG`, `PixelConfig` |
122
- | `@agenus-io/pixel/global` | IIFE `window.PixelV2` |
123
- | `@agenus-io/pixel/v2` | Alias do entry principal |
124
- | `@agenus-io/pixel/config` | Tipos e defaults de configuração |
125
- | `@agenus-io/pixel/events` | Eventos tipados |
126
- | `@agenus-io/pixel/services` | Services (attribution, session, etc.) |
127
- | `@agenus-io/pixel/runtime` | Runtime e bootstrap |
128
- | `@agenus-io/pixel/logger` | Logger |
105
+ | `init()` / `destroy()` / `isInitialized()` | Ciclo de vida |
106
+ | `getDebugSnapshot()` | Snapshot read-only (dev/QA) |
107
+ | `purchase`, `lead`, `addToCart`, `removeFromCart` | Conversão |
108
+ | `initiateCheckout`, `addPaymentInfo`, `viewContent`, `search` | Conversão |
129
109
 
130
- ## Playgrounds
110
+ Detalhes: [api/pixel.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/api/pixel.md)
131
111
 
132
- Exemplos oficiais em `examples/html-script/` (copiados para `dist/examples/html-script/` no build):
112
+ Métodos internos de playground (`@internal`) **não** são API pública.
133
113
 
134
- - `release-candidate.html` — consumidor real (`window.PixelV2` + Transport)
135
- - `RELEASE_CANDIDATE.md` — como testar o playground RC
136
- - `example-basic.html`, `example-behavior.html`, `example-conversion.html`, …
137
- - pastas por evento: `lead/`, `add-to-cart/`, …
114
+ ## Limitações do RC
138
115
 
139
- Índice: [`examples/html-script/README.md`](./examples/html-script/README.md)
140
- Release notes: [`RELEASE_CANDIDATE.md`](./RELEASE_CANDIDATE.md)
116
+ - O bundle **não** auto-inicializa; a aplicação controla quando chamar `Pixel(settings)` / `init()`
117
+ - Consent gate opcional no bootstrap — a aplicação decide quando há consentimento suficiente
118
+ - Não declarar GDPR/LGPD/CCPA compliant com este RC
119
+ - Sem eventos dedicados upsell/downsell — use `VIEW_CONTENT` + `PURCHASE`
141
120
 
142
- ## Scripts
121
+ Lista: [limitations.md](https://github.com/beworke-apps/Pixel-Global/blob/main/packages/pixel/docs/public/limitations.md)
143
122
 
144
- ```bash
145
- pnpm build # dist/
146
- pnpm test # testes v2
147
- pnpm type-check # tsc --noEmit
148
- pnpm test:smoke:real # smoke Event/Batch (skip sem .env)
149
- pnpm validate:rc-package # instalação limpa do .tgz
150
- ```
123
+ ## Contribuidores
151
124
 
152
- ## Migração v1 → v2
153
-
154
- | v1 (removido) | v2 |
155
- |---------------|-----|
156
- | `GomarkePixel` | `Pixel` |
157
- | `window.gomarkePixel` | `window.PixelV2` |
158
- | `dist/index.global.js` | `dist/v2/global.global.js` |
159
- | `src/core/**` | `modules/core` + `transport` |
160
- | `src/behavior/**` | `modules/behavior` |
161
- | `src/conversion/**` | `modules/conversion` |
162
- | `getTrackingCookies` | `AttributionService` |
163
- | `loadFacebookPixel` / `loadGoogleTag` | `IntegrationEngine` browser destinations |
125
+ Arquitetura interna: [PLAN_PIXEL/ARCHITECTURE.md](https://github.com/beworke-apps/Pixel-Global/blob/main/PLAN_PIXEL/ARCHITECTURE.md) · Playgrounds: `apps/playground-html/` no monorepo.