feedback-collector 0.3.1 → 0.3.2

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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Coletor de feedback visual para desenvolvimento assistido por IA. Segure ALT, clique nos elementos que quer mudar, escreva instruções curtas e exporte um backlog markdown com contexto técnico — incluindo `arquivo:linha` quando o projeto injeta source mapping no DOM.
4
4
 
5
- O projeto continua deliberadamente pequeno: runtime vanilla, zero dependências de runtime, sem backend, screenshots, imagens ou serviços externos. A v0.2 troca a autoria interna por TypeScript modular, adiciona API de ciclo de vida e builds de biblioteca sem quebrar a instalação v0.1.
5
+ O projeto continua deliberadamente pequeno: runtime vanilla, zero dependências de runtime, sem backend, screenshots, imagens ou serviços externos. Desde a v0.2 a autoria interna é TypeScript modular, com API de ciclo de vida e builds de biblioteca, sem quebrar a instalação v0.1.
6
6
 
7
7
  ## O problema
8
8
 
@@ -65,7 +65,7 @@ O runtime lê os atributos já suportados pela v0.1 no elemento ou em seus ances
65
65
  - `data-inspector-column`
66
66
  - `data-source="arquivo:linha:coluna"` como convenção alternativa
67
67
 
68
- Para React, a receita validada usa `@react-dev-inspector/babel-plugin`. Instruções de Next webpack, Vite, uso em produção e remoção estão em [`skills/feedback-collector-setup/SKILL.md`](skills/feedback-collector-setup/SKILL.md).
68
+ Para React, a receita validada usa `@react-dev-inspector/babel-plugin`. Instruções de Next webpack, Vite (incluindo Vite 8), apps em iframe, uso em produção e remoção estão em [`skills/feedback-collector-setup/SKILL.md`](skills/feedback-collector-setup/SKILL.md).
69
69
 
70
70
  > React 19 removeu `_debugSource` do fiber. Sem plugin de build, a captura continua funcionando, mas o item não terá `arquivo:linha`.
71
71
 
@@ -83,7 +83,7 @@ A fila e o canto escolhido sobrevivem a reloads e navegação SPA. `localStorage
83
83
 
84
84
  ## Persistência e migração segura
85
85
 
86
- A v0.2 usa a chave `__fbc_state_v2` com envelope versionado:
86
+ O runtime usa a chave `__fbc_state_v2` com envelope versionado:
87
87
 
88
88
  ```json
89
89
  {
@@ -96,7 +96,7 @@ Na primeira montagem, se ainda não houver estado v2 válido, o runtime lê o ar
96
96
 
97
97
  Falhas de parse, indisponibilidade ou quota do storage não derrubam a página; o collector segue com estado em memória quando possível.
98
98
 
99
- ## Arquitetura v0.2
99
+ ## Arquitetura
100
100
 
101
101
  ```text
102
102
  src/
@@ -134,7 +134,7 @@ npm run check
134
134
 
135
135
  Os testes puros cobrem migração/persistência, export markdown e helpers. O teste Playwright usa Chromium real para verificar auto-mount, ALT+clique, leitura de `data-inspector-*`, edição, persistência, clipboard, destroy e remontagem.
136
136
 
137
- O orçamento automatizado limita cada runtime a 30 KB raw e 8 KiB gzip. A v0.2 fica em cerca de 5,2 KB gzip; o arquivo v0.1 de referência tinha aproximadamente 6,3 KB gzip.
137
+ O orçamento automatizado limita cada runtime a 30 KB raw e 8 KiB gzip. A versão atual fica em cerca de 6 KB gzip; o arquivo v0.1 de referência tinha aproximadamente 6,3 KB gzip.
138
138
 
139
139
  ## Integração futura com compiler/bundler
140
140
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "feedback-collector",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Coletor de feedback visual para desenvolvimento assistido por IA: ALT+clique nos elementos, anote instruções e exporte um backlog em markdown com source mapping (arquivo:linha) pronto para colar no Claude Code ou outro agente.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -4,7 +4,7 @@ description: >
4
4
  Instala, configura ou remove o feedback-collector (picker visual ALT+clique →
5
5
  backlog markdown com arquivo:linha) em um projeto front-end. Use quando o
6
6
  usuário pedir para instalar, adicionar, configurar, controlar ou remover o
7
- feedback-collector. Cobre Next.js (webpack), Vite e sites sem build; inclui
7
+ feedback-collector. Cobre Next.js (webpack), Vite (incl. Vite 8), apps em iframe e sites sem build; inclui
8
8
  ciclo de vida v0.2, migração local, caveat de React 19 e gate de produção.
9
9
  ---
10
10
 
@@ -77,6 +77,17 @@ porém auto-monta; para controle explícito prefira `feedback-collector/api`.
77
77
  painel. O gate do runtime não protege os paths injetados pelo plugin: esses
78
78
  podem ficar em chunks públicos.
79
79
 
80
+ ### App exibido dentro de iframe
81
+
82
+ Se o mesmo app roda como página host e também dentro de um iframe (ex.: um
83
+ Design Space que mostra telas em frames), carregue o collector só dentro do
84
+ frame; senão ele também se anexa à página host e aparecem dois painéis:
85
+
86
+ ```ts
87
+ const inFrame = window.self !== window.top
88
+ if (inFrame && import.meta.env.DEV) void import("feedback-collector")
89
+ ```
90
+
80
91
  ### Site sem build
81
92
 
82
93
  Copie `node_modules/feedback-collector/dist/feedback-collector.js` para os
@@ -153,14 +164,55 @@ Remover `if (dev)` é decisão explícita do usuário:
153
164
  Se aprovado, documente esse trade-off ao lado do config. O gate por papel do
154
165
  loader não remove os atributos dos chunks públicos.
155
166
 
156
- ### Vite + React
167
+ ### Vite 8+ / `@vitejs/plugin-react` 6+ (validado em Vite 8 + React 19)
168
+
169
+ O `@vitejs/plugin-react` 6 não tem mais a opção `babel`. Use o
170
+ `@rolldown/plugin-babel` só no dev server:
171
+
172
+ ```bash
173
+ pnpm add -D feedback-collector @rolldown/plugin-babel @babel/core @react-dev-inspector/babel-plugin
174
+ ```
175
+
176
+ ```ts
177
+ // vite.config.ts
178
+ import babel from "@rolldown/plugin-babel"
179
+
180
+ export default defineConfig(({ command }) => ({
181
+ plugins: [
182
+ react(),
183
+ command === "serve" &&
184
+ babel({ plugins: ["@react-dev-inspector/babel-plugin"] }),
185
+ // ...
186
+ ],
187
+ }))
188
+ ```
189
+
190
+ `command === "serve"` mantém os atributos `data-inspector-*` fora do build.
191
+
192
+ `@babel/core` 8 funciona. O `@react-dev-inspector/babel-plugin` declara peer
193
+ `@babel/core@^7.20.5`, então o pnpm pode mostrar um aviso de peer dependency:
194
+ é esperado e pode ser ignorado.
195
+
196
+ ### Vite ≤ 7 / `@vitejs/plugin-react` ≤ 5
157
197
 
158
198
  ```bash
159
- npm i -D vite-plugin-react-dev-inspector
199
+ npm i -D @react-dev-inspector/babel-plugin
160
200
  ```
161
201
 
162
- Registre o plugin antes de `@vitejs/plugin-react`. Como alternativa, configure
163
- `@react-dev-inspector/babel-plugin` na opção `babel` do plugin React.
202
+ ```ts
203
+ react({
204
+ babel: { plugins: ["@react-dev-inspector/babel-plugin"] },
205
+ })
206
+ ```
207
+
208
+ Para manter fora do build, só inclua o plugin Babel quando `command === "serve"`.
209
+
210
+ ### Pacotes que não servem para o mapping
211
+
212
+ - `vite-plugin-react-dev-inspector` não existe no npm.
213
+ - `@react-dev-inspector/vite-plugin` existe, mas é só um helper do dev server
214
+ para abrir arquivos no editor; **não** injeta `data-inspector-*`. Não instale
215
+ para este fim.
164
216
 
165
217
  ### Alternativa SWC atual
166
218