Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
ea4d634
docs: piano della release 1.1.0 (Modifica+Lab, tre modelli, meno tasti)
cammo22 Oct 21, 2026
0065301
docs: README con FLUX 3 Klein accanto a Qwen, testi di Klein e CHANGE…
cammo22 Oct 21, 2026
708b74d
1.0.3: pulisciDidascalia in didascalia.ts (puro), seed casuale nel po…
cammo22 Oct 21, 2026
b8f1f64
T2: src/shared/modelli.ts (qwen-base, klein 8 passi, klein-base; nien…
cammo22 Oct 21, 2026
6af5b53
T7: selettore modello in barra (3 pillole), rotaia a 4 voci, LoRA in …
cammo22 Oct 21, 2026
8de36e7
T6: Modifica.tsx spezzata in tela (modifica/Tela.tsx) e schede (modif…
cammo22 Oct 21, 2026
0fe1fa6
T10: Crea essenziale: via Qualità e avanzate, stili in un menu, Quant…
cammo22 Oct 21, 2026
2545437
T11: Rifai in qualità piena (Klein veloce → Klein Base, stesso seed) …
cammo22 Oct 21, 2026
fd6e5aa
T4: fattiSpazio per modello (immagine:qwen/klein/klein-base, testo:4b…
cammo22 Oct 21, 2026
11c63d4
T8: scheda Scrivi (zona automatica se c'è la maschera, niente più Tut…
cammo22 Oct 21, 2026
0d20f39
T5: testo col 4B anche con Qwen, dietro l'impostazione testoCon4B (sp…
cammo22 Oct 21, 2026
057bcd6
T16: avviso 'VRAM non liberata' + pulsante Libera
cammo22 Oct 21, 2026
2d9dabc
T3: script di confronto dei grafi di Qwen (708b74d vs HEAD)
cammo22 Oct 21, 2026
dfd1865
T9: scheda Ricette dentro Modifica (era il Laboratorio), Unisci foto …
cammo22 Oct 21, 2026
0f62e28
T12: misure GPU (docs/misure-1.1.0.md, scripts/misure_gpu.mjs); testo…
cammo22 Oct 21, 2026
ed50463
T13: ComfyUI 0.42.3 (motore 8): generazione vera Qwen GGUF + Klein, i…
cammo22 Oct 21, 2026
60d70f3
Merge prova/comfyui-0.42: ComfyUI 0.42.3, motore 8 (T13)
cammo22 Oct 21, 2026
375ac96
T14+T15: 1.1.0 (CHANGELOG, README, versione), testi: Klein 8 passi, U…
cammo22 Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 38 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,48 @@
# Changelog

## 1.1.0 — 2026-10-21

Un'app più semplice da usare: tre modelli al posto delle «qualità», una sola scheda per scrivere cosa cambiare (tutta la foto o solo una zona), le ricette dentro Modifica e il testo scritto dal Qwen3-VL 4B anche con Qwen. Il motore passa a ComfyUI 0.42.3.

- **Tre modelli, scelti in alto.** In barra ci sono tre pillole: **Qwen base** (40 passi), **Klein veloce** (8 passi) e **Klein Base** (50 passi, CFG 3,5). Il selettore «Qualità» (bozza, alta, massima, Turbo) è sparito da Crea, Modifica e dalle ricette:
i passi li decide il modello. Il **Turbo di Qwen non c'è più** (né il LoRA Turbo8 né i GGUF Turbo nel Setup); resta per chi li ha già e per aprire i PNG vecchi. La scelta di prima si migra da sola
(un Turbo GGUF diventa il denoiser normale della stessa quantizzazione, una qualità «turbo» salvata vale «alta»). La mappa dei modelli sta in `src/shared/modelli.ts`, provata da `test/modelli.mjs`.
- **Klein veloce passa da 16 a 8 passi.** Misurato in Modifica e in zona (rosso lucido su una teiera, 8, 12 e 16 passi): il risultato è lo stesso a occhio, e 8 passi costano circa un terzo in meno (zona 26 s contro 41 s, Modifica 14 s contro 21 s).
- **Rifai in qualità piena.** Dal risultato di Crea o dalla Galleria, una foto fatta con Klein veloce si rifà con **Klein Base** (stesso prompt, stesso seme). C'è anche **Rifai con Qwen** (non promette la stessa immagine). Sostituiscono il vecchio Turbo e i suoi avvisi.
- **Crea essenziale.** Via «Qualità» e le opzioni avanzate: gli stili stanno in un menu, «Quante» è 1, 2 o 4, e **Altro** (chiuso) raccoglie seme, megapixel, misura e sfondo.
- **Modifica: una scheda «Scrivi» al posto di «Tutta la foto» e «Solo una zona».** Se sulla tela hai disegnato una zona, il cambiamento resta lì dentro; se no, vale tutta la foto. **Espandi** ha la sua scheda, **Estrai** resta com'era.
- **Il Laboratorio è dentro Modifica come scheda «Ricette»**: stesso catalogo (e le tue ricette, i preset, il lotto su più foto), ma nella stessa pagina della tela. **Unisci foto** (prima «Fusion») e **Come l'esempio** sono due ricette
che usano la tela e la colonna di destra di Modifica. Le impostazioni salvate dei vecchi modi si portano da sole alla scheda giusta. Nella rotaia a sinistra ci sono quattro voci: Crea, Modifica, Galleria, Album. I **LoRA** si gestiscono da Opzioni.
- **Il testo si scrive col Qwen3-VL 4B anche con Qwen** (impostazione `testoCon4B`, accesa di serie, interruttore in Opzioni): Migliora prompt, Foto → prompt, Idee, Estrai e il resto sono più rapidi e occupano meno VRAM. Se il file del 4B non c'è,
si usa l'encoder di Qwen come prima, senza errori. Misurato su una RTX 4060 da 8 GB: **Migliora prompt + Crea** con Qwen passa da 186 a **134 secondi** (con l'encoder GGUF di questa macchina da 446 a 150), 46-47 token al secondo contro 3,3 dell'8B int8 e 0,55 dell'8B GGUF.
- **Una cosa alla volta in VRAM, più precisa.** Il motore scarica i modelli (`/free`) anche passando da Qwen a Klein, da Klein a Klein Base e dal 4B all'8B, non solo fra disegno e testo (`src/main/motore/spazio.ts`, `test/spazio.mjs`).
Se dopo lo scarico la VRAM non scende compare un avviso **«VRAM non liberata»** con il pulsante **Libera**.
- **ComfyUI 0.42.3 (motore 8).** Al primo avvio dopo l'aggiornamento il motore si aggiorna da solo. Provato con un disegno vero: Qwen GGUF (con la nostra correzione di `ops.py`), Klein a 8 e 16 passi, zona, Modifica e Klein Base a 50 passi danno
immagini **identiche al pixel** a quelle della 0.41.2, alla stessa velocità, senza errori nel log.
- **Misure su RTX 4060 8 GB, 1 MP** (`docs/misure-1.1.0.md`): Klein veloce 8 passi in 16 s a freddo e 7 s a caldo (picco 6,9 GB), in zona 26 s; Klein Base 50 passi 60 s in Crea (picco 6,9 GB) e 3,2 minuti in zona (picco 7,3 GB: entra negli 8 GB);
Qwen base 40 passi 166 s. Il nodo `ReferenceMultiLatent` dà la stessa immagine e lo stesso tempo della catena di `ReferenceLatent`: il grafo di Klein non cambia.
- **I grafi di Qwen non sono cambiati.** `test/confronta_grafi.mjs` costruisce Crea, Modifica in zona ed Espandi (bozza, alta, massima) con il codice della 1.0.3 e con questo: 9 casi su 9 identici.
- **Testi.** «Fusion» diventa «Unisci foto»; le descrizioni di Klein dicono 8 passi; l'avviso sulla VRAM non nomina più il Turbo.
- **Prove.** `test/foto.mjs` (app vera a motore spento: Crea, Modifica, Galleria, Album, Opzioni) segue la nuova rotaia; `test/ricette.mjs` prova le ricette in Chromium con il finto `window.daprod`; `scripts/misure_gpu.mjs` ripete le misure.

## 1.0.3 — 2026-10-21

Il potenziamento del prompt di Klein non ricopia più le frasi di cortesia e le regole del 4B, e ogni volta scrive una didascalia diversa.

- **Pulizia della didascalia.** Il Qwen3-VL 4B apre spesso con «Here’s the expanded, detailed caption for your image request:», con le regole del sistema ricopiate («You're a prompt upsampler…») o con un esempio «Input / Output»:
quella frase finiva nel prompt del modello e gli faceva male. `pulisciDidascalia` (ora in `src/main/motore/didascalia.ts`, file puro senza Electron) toglie preambolo, regole, etichette e titolo in grassetto e tiene la didascalia vera.
Lo stesso file ha `senzaTitolo`, che usano anche le altre funzioni di testo con Klein.
- **Seme casuale nel potenziamento.** Prima era sempre 0, quindi lo stesso prompt dava sempre la stessa didascalia anche cambiando seme; ora, se il seme è casuale, ne esce una nuova (la cache per prompt resta: finché l'app è aperta, lo stesso prompt dà la stessa didascalia).
- **Prove.** `test/pulisci_didascalia.mjs` importa il codice vero (non ne ricopia più la logica) e prova dieci casi più due risposte vere del 4B in `test/campioni-pup/`.
`scripts/bench_upsampler.mjs` misura tok/s, VRAM e RAM del potenziamento caricando il 4B come `krea2` e con `thinking: true`, come fa l'app.

## 1.0.2 — 2026-10-21

Con Klein anche tutto il resto del testo (Migliora prompt, Foto → prompt, Idee, Estrai, Fusion, Esempio, Sorpresa) scrive col Qwen3-VL 4B: da circa 0,4 token al secondo a **15-40**.
Con Klein anche tutto il resto del testo (Migliora prompt, Foto → prompt, Idee, Estrai, Fusion, Esempio, Sorpresa) lo scrive il Qwen3-VL 4B: da circa 0,4 token al secondo a **15-40**.

- **Tutte le funzioni di testo usano il 4B di Klein.** Nella 1.0.1 ci arrivava solo il potenziamento del prompt; Migliora prompt, Foto → prompt, «Sorprendimi», Idee, Estrai, Fusion/Esempio, Sorpresa del Laboratorio,
il controllo della guida di posa e la traduzione con l'LLM continuavano a usare l'encoder di Qwen (l'8B, quasi tutto sul processore). Ora, se la famiglia scelta è Klein o Klein Base e il file del 4B c'è, scrive lui
(lo decide il motore dell'app, `conEncoderDiTesto` in `lavori.ts`: le pagine non cambiano). Con Qwen-Image tutto resta com'era; se il 4B non si trova si ripiega sull'encoder di Qwen.
(lo decide il motore dell'app, `conEncoderDiTesto` in `lavori.ts`: le pagine restano uguali). Con Qwen-Image tutto resta com'era; se il 4B non si trova si ripiega sull'encoder di Qwen.
- **Il 4B non risponde più «user», «assistant» o niente.** Il nodo `TextGenerate` con `thinking: false` aggiunge in fondo al prompt un blocco `<think></think>` vuoto e il 4B si confondeva (foto + richiesta breve → risposta vuota,
traduzione → «user», Sorpresa → «assistant …»). Col 4B ora si manda `thinking: true`: il blocco non c'è, risponde subito e non ragiona (nessun token in più). Questo vale anche per il potenziamento della 1.0.1.
- Se il 4B mette un titolo in grassetto prima del testo («**Image Idea:** …») l'app lo toglie.
Expand Down
7 changes: 4 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ interfaccia**, installato e guidato dall'app.
Per preparare una versione c'è la skill `.claude/skills/rilascio`.

## Il motore (src/main/installa, src/main/motore)
- **Versioni fissate** in `engine/versioni.json` (ora **ComfyUI 0.41.2**, motore 7): ComfyUI a un commit preciso (zip da codeload, estratto col `tar.exe`
- **Versioni fissate** in `engine/versioni.json` (ora **ComfyUI 0.42.3**, motore 8): ComfyUI a un commit preciso (zip da codeload, estratto col `tar.exe`
di Windows: il tar di Git non apre gli zip), Python 3.13 e PyTorch cu130 via **uv** (`resources/bin/uv.exe`,
`npm run prendi-uv`). Tutto in `%LOCALAPPDATA%\DaProdImage\engine`; `stato.json` lì dentro dice quali passi sono fatti.
- **ComfyUI-GGUF è copiato in `engine/custom_nodes/ComfyUI-GGUF`** (fork di leejet al commit `373048b`, l'unico che
Expand Down Expand Up @@ -50,6 +50,7 @@ interfaccia**, installato e guidato dall'app.

## FLUX 3 Klein (famiglie di modelli)
- `Famiglia = 'qwen' | 'klein' | 'klein-base'` (`shared/tipi.ts`, `FAMIGLIE` = passi per qualità), `Richiesta.famiglia`, `impostazioni.famiglia`.
- **Tre modelli, niente Turbo di Qwen** (1.1, `src/shared/modelli.ts`, la mappa unica, provata da `node test/modelli.mjs`): `qwen-base` (40 passi), `klein` (veloce, 8 passi), `klein-base` (50, CFG 3,5). `impostazioni.modelloScelto` va sempre d'accordo con `famiglia` (`allineaScelta` in `salvaImpostazioni`); le impostazioni vecchie si migrano una volta (`migra`: Turbo GGUF → UC dello stesso quant). La qualità «turbo» salvata vale «alta» (`senzaTurbo`): l'interfaccia non manda più `turbo: true`, i grafi del Turbo restano per i PNG vecchi.
Il selettore è `componenti/ScegliModello.tsx` (3 schede, "da scaricare", download di modello + `klein-te` + `klein-vae`), la qualità `ScegliQualita.tsx`.
- Catalogo: `klein-int8/bf16`, `klein-base-int8/bf16`, `klein-te` (Qwen3-VL 4B), `klein-vae` dal repo `black-forest-labs/flux-3-image-klein-comfy`
(`repo` + `cerca` regex, risolti a runtime da `installa/risolvi.ts`: **i nomi vengono dai template ufficiali, vanno confermati con i file veri**).
Expand Down Expand Up @@ -92,8 +93,8 @@ interfaccia**, installato e guidato dall'app.
- **Descrivi** (Migliora prompt, Foto → prompt): `TextGenerate` con lo stesso Qwen3-VL già caricato, niente modelli in più.

## Interfaccia (src/renderer)
- **Modifica** ha 6 modi: tutta la foto, zona, espandi, **Fusion**, **Esempio** e **Estrai** (vedi sotto) (`componenti/Fusion.tsx`, richieste in `fusion.ts`: nessuna base, `m.riferimenti` sono le foto;
Fusion = `modalita: 'crea'` con `images.image_N`, Esempio = `modalita: 'modifica'` con l'esempio come `image_1`; i risultati stanno nel
- **Modifica** ha 4 modi (`ModoModifica`): **Scrivi** (tutta la foto, o solo la zona se ne hai disegnata una: `zona = modo==='scrivi' && haMaschera`, la `modalita` si decide in `manda()` da `tela.esporta()`; schede in `pagine/modifica/SchedaScrivi.tsx`), **Espandi** (`SchedaEspandi.tsx`, `bordiPreset`), **Ricette** (`pagine/modifica/SchedaRicette.tsx`: il catalogo che era il Laboratorio, con il lotto su più foto; la pagina «Laboratorio» non c'è più) ed **Estrai** (vedi sotto). **Unisci foto** e **Come l'esempio** sono due ricette `modo: 'speciale'` (`ricetteBase.ts`) che non usano SchedaRicette ma la tela e la colonna di destra di Modifica (`usaSpeciale()` / `specialeOra()` in `workflow.ts` dicono quale è scelta; `griglia` in `Modifica.tsx`); le impostazioni vecchie `tutta`/`zona` si migrano a `scrivi` e `fusion`/`esempio` a `ricette` in `daVecchioMod` (`componenti/Fusion.tsx`, richieste in `fusion.ts`: nessuna base, `m.riferimenti` sono le foto;
Unisci foto = `modalita: 'crea'` con `images.image_N`, Esempio = `modalita: 'modifica'` con l'esempio come `image_1`; i risultati stanno nel
componente, non diventano versioni; il confronto prima/dopo usa sempre `versioni[0]`);
`★ base` scambia base e riferimento. **Dimensioni** (`componenti/Misura.tsx`, `Richiesta.uscita`): auto / come l'originale / misura
tua; `allaMisura()` in `grafi.ts` porta il risultato alla misura esatta (ingranditore se serve > 1,5×, taglio al centro). **Laboratorio** (`workflow.ts` = esecuzione, `ricetteBase.ts` = le ricette di serie, `ricette.ts` = le tue e i preset in localStorage,
Expand Down
Loading
Loading