synthesisui 0.16.314 → 0.16.316

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.
@@ -1859,6 +1859,8 @@ export async function takeCensus(root, opts) {
1859
1859
  * 26/08), e é esta régua - a mesma que a tela usa. A frase do ledger passa a liderar com ela.
1860
1860
  */
1861
1861
  const valueByComponent = {};
1862
+ /** As respostas do dono, quando o chamador as trouxe - ver `opts.answered` e o T1. */
1863
+ const answeredTokens = (opts?.answered?.length ?? 0) > 0 ? new Set(opts?.answered) : undefined;
1862
1864
  for (const [lookName, look] of Object.entries(looks)) {
1863
1865
  const tokens = [];
1864
1866
  for (const node of look.sketch ?? []) {
@@ -1867,7 +1869,7 @@ export async function takeCensus(root, opts) {
1867
1869
  for (const layer of look.rawLayers ?? [])
1868
1870
  tokens.push(...layer.classes);
1869
1871
  if (tokens.length > 0) {
1870
- valueByComponent[lookName] = accountClasses(tokens, declaredValues);
1872
+ valueByComponent[lookName] = accountClasses(tokens, declaredValues, answeredTokens);
1871
1873
  }
1872
1874
  }
1873
1875
  const valuesTotal = sumAccounts(Object.values(valueByComponent));
@@ -403,6 +403,12 @@ export async function remeasure(args) {
403
403
  const c = await takeCensus(one ? join(root, one) : root, {
404
404
  ...(one ? { scopeLabel: one } : {}),
405
405
  ...(args.cli ? { cli: args.cli } : {}),
406
+ /**
407
+ * AS RESPOSTAS DELE CONTAM NO NÚMERO (T1): o servidor devolve os tokens já respondidos na
408
+ * mesma resposta da leitura, e a medição os classifica como `answered` em vez de `unread` -
409
+ * é o que faz o `gaps` e o painel dizerem "N answered by you" a partir da MEDIÇÃO.
410
+ */
411
+ ...(stored.answered?.length ? { answered: stored.answered } : {}),
406
412
  /** Uma RE-medição conta o que MUDOU; o relatório inteiro fica no `--full` - ver `say`. */
407
413
  ...(args.full ? {} : { quiet: true }),
408
414
  /** O `--usage` é EVIDÊNCIA e leva rótulo: sem ele o censo não sabe de que app o número veio. */
@@ -98,8 +98,14 @@ const STRUCTURAL_TOKENS = new Set([
98
98
  /**
99
99
  * O destino de UM token de classe. Exportado para o julgamento por valor e a triagem lerem a
100
100
  * MESMA resposta - duas cópias desta decisão é como o item 11 nasceu.
101
+ *
102
+ * `answered` FECHA O CICLO DO ELO 3 (T1, 26/08): a resposta que o dono deu ontem aparece no número
103
+ * de hoje. O conjunto vem do servidor pela rota `reading` do sync - são os tokens que ele já
104
+ * respondeu -, e ele só reclassifica o que seria `unread`: uma resposta preenche ausência, nunca
105
+ * disputa o que o leitor resolve sozinho. Sem o conjunto (import fresco, triagem, julgamento por
106
+ * fragmento) a conta é a mesma de sempre.
101
107
  */
102
- export function destinationOf(cls, declared) {
108
+ export function destinationOf(cls, declared, answered) {
103
109
  const { utility } = parseClass(cls);
104
110
  if (STRUCTURAL_TOKENS.has(utility))
105
111
  return "structure";
@@ -109,10 +115,13 @@ export function destinationOf(cls, declared) {
109
115
  ? "structure"
110
116
  : "interpreted";
111
117
  }
118
+ /** A grafia respondida é a do código dele - com o modificador fora, como `applyAnswers` casa. */
119
+ if (answered && (answered.has(utility) || answered.has(cls)))
120
+ return "answered";
112
121
  return "unread";
113
122
  }
114
123
  /** A conta de uma lista de tokens - a soma SEMPRE fecha com `seen`, por construção. */
115
- export function accountClasses(tokens, declared) {
124
+ export function accountClasses(tokens, declared, answered) {
116
125
  const account = {
117
126
  seen: 0,
118
127
  interpreted: 0,
@@ -123,7 +132,7 @@ export function accountClasses(tokens, declared) {
123
132
  };
124
133
  for (const cls of tokens) {
125
134
  account.seen += 1;
126
- account[destinationOf(cls, declared)] += 1;
135
+ account[destinationOf(cls, declared, answered)] += 1;
127
136
  }
128
137
  return account;
129
138
  }
@@ -317,8 +317,13 @@ export const CHECKER_SINCE = "0.16.308";
317
317
  * variáveis, e os 223 valores (37%) que as vestiam passam a resolver como token DELE
318
318
  *
319
319
  * Um censo medido antes não tem nada disso; quem remede ganha os cinco.
320
+ *
321
+ * 0.16.308 -> 0.16.315 em 26/08 (T1, o fecho do elo 3): a medição passa a contar `answered` -
322
+ * os tokens que o dono já respondeu chegam pela rota `reading` do sync e um token que seria
323
+ * `unread` conta como respondido. Um censo medido antes diz `answered: 0` para um projeto com
324
+ * respostas gravadas; quem remede vê "N answered by you" no gaps e no painel.
320
325
  */
321
- export const READER_SINCE = "0.16.308";
326
+ export const READER_SINCE = "0.16.315";
322
327
  /**
323
328
  * O QUE ESTÁ INSTALADO AQUI FICOU PARA TRÁS - e as DUAS condições que fazem isso ser verdade.
324
329
  *
@@ -27,14 +27,16 @@ import { join } from "node:path";
27
27
  const ROOT = join(import.meta.dirname, "..", "..", "..");
28
28
  const POPULATIONS = join(ROOT, "fixtures", "populations");
29
29
  /**
30
- * 323 componentes, escopo `apps/web-dashboard`. A população que derruba régua feita em cima da
31
- * outra: ela não declara um `--animate-*` sequer, escreve o relógio literal na receita, e tem 62
32
- * componentes cujo primeiro nó do sketch não é a raiz.
30
+ * 294 componentes, escopo `apps/web-dashboard` (re-medida com o leitor 0.16.315 em 26/08, T9 -
31
+ * ganhou `values`; era 323 no leitor 0.16.261). A população que derruba régua feita em cima da
32
+ * outra: ela não declara um `--animate-*` sequer, escreve o relógio literal na receita, e tem
33
+ * dezenas de componentes cujo primeiro nó do sketch não é a raiz.
33
34
  */
34
35
  export const FRONTEND_HUB_CENSUS = join(POPULATIONS, "frontend-hub.census.json");
35
36
  /**
36
- * 59 componentes, escopo `packages/ui`. O caso de teste vivo do dia a dia - é dele que saem os
37
- * números do `triage` e é nele que a jornada é conferida na tela.
37
+ * 67 componentes, escopo `packages/ui` (censo vivo 0.16.310 congelado em 26/08, T9 - com
38
+ * `values`). O caso de teste vivo do dia a dia - é dele que saem os números do `triage` e é nele
39
+ * que a jornada é conferida na tela.
38
40
  */
39
41
  export const CODELEVEL_CENSUS = join(POPULATIONS, "codelevel-ui.census.json");
40
42
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synthesisui",
3
- "version": "0.16.314",
3
+ "version": "0.16.316",
4
4
  "description": "Bring SynthesisUI design systems into any project - tokens, typed components, whole pages and an agent-ready CLAUDE.md manifest.",
5
5
  "type": "module",
6
6
  "bin": {