Skip to content

App desktop: LaTeX vero, gestione pacchetti, installer multipiattaforma - #3

Merged
Francy2009 merged 2 commits into
mainfrom
claude/app-status-check-cbvu4b
Aug 9, 2026
Merged

Francy2009 merged 2 commits into
mainfrom
claude/app-status-check-cbvu4b

Conversation

@Francy2009

Copy link
Copy Markdown
Owner

Riepilogo

  • texforge diventa un'applicazione desktop (Electron) per Windows, macOS e Linux, con tre pagine: Compilatore, Pacchetti, Motore LaTeX.
  • Compila con pdflatex/htlatex veri; 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).
  • Pagina Pacchetti su tlmgr: elenco, ricerca, installazione, rimozione, aggiornamento; una trentina di pacchetti comuni preinstallati.
  • Il sito (docs/) non contiene più il compilatore: solo presentazione, con link alle release.
  • server.js ridotto a servitore statico del sito (via /compile, /api, rate limiting, multer/archiver).
  • Rimossi Dockerfile, docker-compose, script VPS: servivano al compilatore web.
  • La versione portatile in file singolo resta come alternativa per computer dove non si può installare nulla.

Correzioni trovate provando l'app (non leggendo il codice)

  1. htlatex non 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.
  2. L'HTML di htlatex non era autosufficiente: rimandava a un .css esterno, non includeva quiz.js, dichiarava iso-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 installato
  • Con TeX Live reale: PDF con pdflatex, HTML con htlatex (prima del fix: sempre "interno")
  • AppImage costruito (108 MB) e verificato eseguibile
  • Versione portatile (dist/texforge.html) ancora costruibile e funzionante offline
  • Sito servito senza traccia del compilatore, verificato da albero pulito
  • Build Windows/macOS: non verificabili da questo ambiente (solo Linux disponibile) — da controllare al primo tag di release
  • Download reale di TinyTeX al primo avvio: dominio non raggiungibile da questo ambiente — da provare su una macchina vera

🤖 Generato con Claude Code

https://claude.ai/code/session_01FRwidp8pte45RXaecqJaAe


Generated by Claude Code

claude added 2 commits August 9, 2026 14:08
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
@Francy2009
Francy2009 merged commit adaa804 into main Aug 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants