synthesisui 0.16.203 → 0.16.204
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/dist/claude-md.js +4 -3
- package/dist/commands/clean.js +30 -1
- package/dist/last-sync.js +8 -1
- package/package.json +3 -2
package/dist/claude-md.js
CHANGED
|
@@ -350,9 +350,10 @@ Only write something new when nothing in the manifest covers the purpose - and w
|
|
|
350
350
|
say which entry you considered and why it did not fit, then FILE it while the reasoning is
|
|
351
351
|
still yours: the \`request_component\` MCP tool, or \`npx synthesisui@latest request component
|
|
352
352
|
--name "<name>" --for "<the use case>" --considered "<entries and why not>"\`. That queue is
|
|
353
|
-
what the system's author works from - a refusal said only in chat evaporates.
|
|
354
|
-
component,
|
|
355
|
-
|
|
353
|
+
what the system's author works from - a refusal said only in chat evaporates. If you want to eyeball a
|
|
354
|
+
component on its own, an isolated scratch page is optional and never required - and if you make
|
|
355
|
+
one, put it somewhere that does not become a route in this app, and delete it when you are done.
|
|
356
|
+
Do not apply a component to real production pages unless asked.${selfCheck}`;
|
|
356
357
|
const locale = await readInterfaceLanguage(projectRoot);
|
|
357
358
|
const language = locale === null
|
|
358
359
|
? ""
|
package/dist/commands/clean.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFile, rm, stat, writeFile } from "node:fs/promises";
|
|
1
|
+
import { readdir, readFile, rm, stat, writeFile } from "node:fs/promises";
|
|
2
2
|
import { join, relative } from "node:path";
|
|
3
3
|
import { body, section } from "../output.js";
|
|
4
4
|
// The five SVGs create-next-app drops into public/. Filenames are specific
|
|
@@ -100,6 +100,35 @@ export async function clean(opts) {
|
|
|
100
100
|
run: () => rm(readmePath),
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* O RASCUNHO QUE A NOSSA PRÓPRIA INSTRUÇÃO PEDIU - e que ninguém sabia remover.
|
|
105
|
+
*
|
|
106
|
+
* O `CLAUDE.md` que este CLI escreve sugere uma página isolada para olhar um componente sozinho,
|
|
107
|
+
* e o agente da pessoa a cria. Nada aqui a escreve, e nada aqui a apagava: ela ficava numa rota
|
|
108
|
+
* de VERDADE do app dela (`src/app/synthesisui-samples/<x>` é URL acessível), sem dono e sem
|
|
109
|
+
* saída, até alguém commitar sem querer. Encontrada no repo do dono em 11/08.
|
|
110
|
+
*
|
|
111
|
+
* É a mesma assimetria do bloco de shell: fácil de entrar, sem porta de saída. Aqui a saída é
|
|
112
|
+
* este comando, e ele mantém o contrato que já tem - seco por padrão, cada caminho nomeado antes
|
|
113
|
+
* de qualquer escrita, `--force` para aplicar.
|
|
114
|
+
*
|
|
115
|
+
* UMA AÇÃO POR PÁGINA, e não uma pela pasta: um destrutivo que anuncia um e remove seis faz mais
|
|
116
|
+
* do que diz, e essa lei já foi paga uma vez na poda de órfãos.
|
|
117
|
+
*/
|
|
118
|
+
const samplesDir = join(appDir, "synthesisui-samples");
|
|
119
|
+
for (const entry of await readdir(samplesDir, {
|
|
120
|
+
withFileTypes: true,
|
|
121
|
+
}).catch(() => [])) {
|
|
122
|
+
if (!entry.isDirectory())
|
|
123
|
+
continue;
|
|
124
|
+
const p = join(samplesDir, entry.name);
|
|
125
|
+
actions.push({
|
|
126
|
+
verb: "remove",
|
|
127
|
+
path: rel(p),
|
|
128
|
+
why: "scratch page for eyeballing a component - nothing depends on it",
|
|
129
|
+
run: () => rm(p, { recursive: true }),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
103
132
|
if (actions.length === 0) {
|
|
104
133
|
console.log(section("Clean up scaffold"));
|
|
105
134
|
console.log(body("Nothing to clean - this project is already tidy."));
|
package/dist/last-sync.js
CHANGED
|
@@ -24,7 +24,14 @@ export const LAST_SYNC_FILE = ".last-sync.json";
|
|
|
24
24
|
*
|
|
25
25
|
* `name` sai do valor porque já É a chave - hasheá-lo junto só gastaria bytes.
|
|
26
26
|
*/
|
|
27
|
-
export function fingerprintReadings(
|
|
27
|
+
export function fingerprintReadings(
|
|
28
|
+
/**
|
|
29
|
+
* A LINHA INTEIRA, e o tipo tem que dizer isso: `{ name?: unknown }` prometia menos do que esta
|
|
30
|
+
* função aceita, e o próprio spec precisou de um `as never` para passar uma linha real. Um tipo
|
|
31
|
+
* que obriga a burlá-lo está errado - e o `as never` que ele forçava é exatamente o que faria a
|
|
32
|
+
* impressão parar de ver um campo novo sem ninguém notar.
|
|
33
|
+
*/
|
|
34
|
+
components) {
|
|
28
35
|
const out = {};
|
|
29
36
|
for (const c of components ?? []) {
|
|
30
37
|
const name = typeof c?.name === "string" ? c.name : null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "synthesisui",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.204",
|
|
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": {
|
|
@@ -32,7 +32,8 @@
|
|
|
32
32
|
"build": "tsc -p tsconfig.json && chmod +x dist/index.js",
|
|
33
33
|
"dev": "tsx src/index.ts",
|
|
34
34
|
"prepublishOnly": "npm run build",
|
|
35
|
-
"test": "vitest run"
|
|
35
|
+
"test": "vitest run",
|
|
36
|
+
"check": "tsc -p tsconfig.check.json"
|
|
36
37
|
},
|
|
37
38
|
"license": "MIT"
|
|
38
39
|
}
|