App desktop: LaTeX vero, gestione pacchetti, installer multipiattaforma - #3
Merged
Merged
Conversation
backend/fonts/DejaVuSans.ttf e Roboto-Regular.ttf non erano font: erano pagine HTML di GitHub salvate con estensione .ttf, cioe' l'URL della pagina scaricato al posto del file raw. embedFont falliva con "Unknown font format", l'eccezione veniva catturata dal fallback previsto e il PDF ripiegava *sempre* sui font standard con i simboli ridotti in ASCII: "Int" invece di ∫, "alpha" invece di α, "<=" invece di ≤. Il percorso di codice era corretto, l'asset no. Nessun test se ne accorgeva perche' controllavano solo che il PDF iniziasse con %PDF. - sostituiti con DejaVu Sans regular e bold veri, ridotti con pyftsubset ai soli caratteri che il compilatore puo' produrre (ASCII, accentate, greco, operatori, apici e pedici): ~740 KB -> ~44 KB ciascuno - aggiunto il bold vero: il grassetto non viene piu' simulato ridisegnando il testo con un piccolo scarto - rimosso Roboto-Regular.ttf, anch'esso una pagina HTML e mai referenziato - aggiunta la licenza DejaVu con la procedura di subsetting documentata - la CI ora verifica il magic number dei .ttf e che il PDF prodotto incorpori davvero DejaVu, cosi' un asset rotto non passa piu' inosservato Grazie a questo l'app pesa 1,47 MB invece di 1,74: prima incorporava 295 KB di HTML spacciato per font. Verificato: i glifi ∫ ≠ √ α ≤ ∞ Σ π ² ₀ sono presenti nel sottoinsieme, il PDF dichiara DejaVuSans e DejaVuSans-Bold fra i font incorporati, e l'app ricostruita continua a funzionare offline da file:// senza errori. package.json passa a 1.1.1: la release v1.1.0 contiene ancora il font rotto. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRwidp8pte45RXaecqJaAe
…one pacchetti Il compilatore non vive piu' sul web: e' un'applicazione per Windows, macOS e Linux che compila con pdflatex e htlatex veri, e sa installare e conservare i pacchetti LaTeX. Il sito resta solo presentazione. L'applicazione (desktop/, Electron) - tre pagine: Compilatore, Pacchetti, Motore LaTeX - rileva la distribuzione TeX di sistema; se non c'e', installa una TeX Live minima nella cartella dati dell'utente: nessun permesso di amministratore e resta installata fra un avvio e l'altro - pagina Pacchetti su tlmgr: elenco, ricerca, installazione, rimozione, aggiornamento. Una trentina di pacchetti comuni installati da subito. I nomi sono validati prima di finire in una riga di comando - l'interfaccia gira con contextIsolation e senza Node: puo' fare solo cio' che il ponte in preload.cjs espone - smoke-test.mjs avvia l'app vera e verifica 13 comportamenti; gira in CI - electron-builder produce exe, dmg, AppImage, deb e rpm; la release li costruisce tutti con una matrice di CI e li allega Due bug trovati provando l'app, non leggendola - htlatex non veniva mai rilevato: e' uno script che esce con codice 1 su --version, quindi l'app lo credeva assente e ripiegava sempre sul generatore interno. Ora si verifica la presenza nel PATH - l'HTML di htlatex non era autosufficiente: rimandava a un .css esterno, non includeva quiz.js e dichiarava iso-8859-1. Aggiunto il post-processing che incorpora stile e script e corregge la codifica, cosi' il file resta valido anche spostandolo Il sito - docs/ e' solo presentazione, con i link che puntano alle release - server.js ridotto a servitore statico: rimossi /compile, gli endpoint /api, il rate limiting e la validazione degli upload, che non servivano piu' e restavano come superficie d'attacco. Via le dipendenze multer e archiver - rimossi Dockerfile, docker-compose e gli script per la VPS: servivano a ospitare il compilatore web - rimossi i file del vecchio frontend PWA non piu' serviti da nessuno; di frontend/ restano i CSS e le icone, usati dalla versione portatile La versione in un solo file HTML resta come alternativa portatile, per computer dove non si possono installare programmi. Verificato su albero pulito: 13/13 controlli dell'app con TeX Live installato (PDF con pdflatex, HTML con htlatex), AppImage da 108 MB costruito ed eseguibile, versione portatile ancora funzionante, sito servito senza traccia del compilatore. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRwidp8pte45RXaecqJaAe
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Riepilogo
pdflatex/htlatexveri; se non presenti, propone l'installazione di una TeX Live minima nella cartella dati dell'utente (nessun permesso di amministratore, persistente fra un avvio e l'altro).tlmgr: elenco, ricerca, installazione, rimozione, aggiornamento; una trentina di pacchetti comuni preinstallati.docs/) non contiene più il compilatore: solo presentazione, con link alle release.server.jsridotto a servitore statico del sito (via/compile,/api, rate limiting,multer/archiver).Correzioni trovate provando l'app (non leggendo il codice)
htlatexnon veniva mai rilevato: è uno script che esce con codice 1 su--version, quindi l'app lo credeva assente e ripiegava sempre sul generatore interno. Corretto verificando la presenza nel PATH.htlatexnon era autosufficiente: rimandava a un.cssesterno, non includevaquiz.js, dichiaravaiso-8859-1. Aggiunto un post-processing che incorpora stile e script e corregge la codifica.Piano di test
desktop/smoke-test.mjs: 13 controlli sull'app vera (finestra, isolamento del renderer, stato del motore, navigazione fra pagine, compilazione, anteprima isolata, nessun errore JS) — eseguito con e senza TeX Live installatopdflatex, HTML conhtlatex(prima del fix: sempre "interno")dist/texforge.html) ancora costruibile e funzionante offline🤖 Generato con Claude Code
https://claude.ai/code/session_01FRwidp8pte45RXaecqJaAe
Generated by Claude Code