No description
  • Kotlin 72%
  • TypeScript 17.3%
  • CSS 3.6%
  • JavaScript 3.2%
  • Shell 2.1%
  • Other 1.7%
Find a file
Silvio Fei d987c4fee1
Some checks are pending
CI / test (push) Waiting to run
idk
2026-11-02 22:11:40 +01:00
.github/workflows feat: produzione dietro Nginx Proxy Manager, solo PWA (fase 15) 2026-10-28 01:41:31 +01:00
app feat: cronologia fra i dispositivi, QR con tutti i dispositivi, avviso nel flusso (fase 19, 4/4) 2026-10-30 03:03:15 +01:00
data feat: computer non proprio e blocco con frase (fase 19, 2/4) 2026-10-30 02:05:10 +01:00
deploy feat(deploy): solo-sito, immagine di nginx e cartella dell'app configurabili 2026-10-28 11:55:55 +01:00
docs fix: il telefono in orizzontale non attiva la vista desktop a due pannelli 2026-11-02 08:32:30 +01:00
domain feat: cronologia fra i dispositivi, QR con tutti i dispositivi, avviso nel flusso (fase 19, 4/4) 2026-10-30 03:03:15 +01:00
e2e fix: il telefono in orizzontale non attiva la vista desktop a due pannelli 2026-11-02 08:32:30 +01:00
gradle chore: scaffold Kotlin/JS multi-modulo con PWA installabile 2026-10-26 23:58:28 +01:00
graphics idk 2026-11-02 22:11:40 +01:00
kotlin-js-store feat: cifratura end-to-end con OMEMO (fase 10) 2026-10-27 17:13:38 +01:00
scripts feat: le funzioni mancanti (fase 17) 2026-10-28 21:45:47 +01:00
server feat: produzione dietro Nginx Proxy Manager, solo PWA (fase 15) 2026-10-28 01:41:31 +01:00
sync feat: cronologia fra i dispositivi, QR con tutti i dispositivi, avviso nel flusso (fase 19, 4/4) 2026-10-30 03:03:15 +01:00
ui fix: il telefono in orizzontale non attiva la vista desktop a due pannelli 2026-11-02 08:32:30 +01:00
xmpp feat: cronologia fra i dispositivi, QR con tutti i dispositivi, avviso nel flusso (fase 19, 4/4) 2026-10-30 03:03:15 +01:00
.gitignore feat(deploy): variante solo sito per una demo dietro NPM, collegata a un server XMPP esterno 2026-10-28 11:03:19 +01:00
build.gradle.kts chore: scaffold Kotlin/JS multi-modulo con PWA installabile 2026-10-26 23:58:28 +01:00
CHANGELOG.md fix: il telefono in orizzontale non attiva la vista desktop a due pannelli 2026-11-02 08:32:30 +01:00
CLAUDE.md feat: cronologia fra i dispositivi, QR con tutti i dispositivi, avviso nel flusso (fase 19, 4/4) 2026-10-30 03:03:15 +01:00
gradle.properties chore: scaffold Kotlin/JS multi-modulo con PWA installabile 2026-10-26 23:58:28 +01:00
gradlew chore: scaffold Kotlin/JS multi-modulo con PWA installabile 2026-10-26 23:58:28 +01:00
gradlew.bat chore: scaffold Kotlin/JS multi-modulo con PWA installabile 2026-10-26 23:58:28 +01:00
LICENSE docs: licenza AGPL-3.0 (file LICENSE, incluso nel pacchetto di rilascio) 2026-10-28 08:54:47 +01:00
README.md feat: cronologia fra i dispositivi, QR con tutti i dispositivi, avviso nel flusso (fase 19, 4/4) 2026-10-30 03:03:15 +01:00
settings.gradle.kts chore: scaffold Kotlin/JS multi-modulo con PWA installabile 2026-10-26 23:58:28 +01:00

Parlo

Client di messaggistica mobile-first, PWA installabile, che parla XMPP. Kotlin/JS. Codename del repo: WHAZZUP. Chi riprende il lavoro (persona o Claude) parte da CLAUDE.md: regole concordate, comandi, mappa del codice; gli errori gia' fatti sono in docs/TRAPPOLE.md. Decisioni in docs/DECISIONS.md, piano in docs/PLAN.md, stato in docs/PROGRESS.md, manutenzione e rilasci in docs/MANUTENZIONE.md, messa in produzione dietro Nginx Proxy Manager in docs/PRODUZIONE.md, grafica in docs/FIDELITY.md.

Requisiti

  • JDK 21 (source scripts/env.sh usa quello in ~/.local/jdk)
  • Node 18+ (per i test e2e; la build Kotlin scarica il proprio Node)
  • Docker (server XMPP di sviluppo: server/dev-up.sh, vedi docs/SERVER.md)

Comandi

source scripts/env.sh
./gradlew :domain:jvmTest :domain:jsNodeTest :data:jvmTest :data:jsNodeTest :sync:jvmTest :sync:jsNodeTest :xmpp:jsNodeTest   # test della logica
./gradlew :app:jsBrowserDistribution              # build di produzione in app/build/dist/js/productionExecutable
./gradlew :app:jsBrowserDevelopmentRun            # dev server con hot reload

cd e2e && npm install
PARLO_CHROMIUM=/percorso/chrome npx playwright test   # PARLO_CHROMIUM e' opzionale

server/dev-up.sh                                    # server XMPP di sviluppo (docs/SERVER.md)
server/invite.sh                                    # invito per registrare un account nuovo (link per l'app)
# nell'app: "Accedi" con alice@parlo.local / parlo-test-alice (scorciatoia, solo da localhost: /?xmpp=<jid>,<password>,<url ws>)

I test dei progetti Playwright xmpp (xmpp.spec.ts, xmpp-live.spec.ts) e xmpp-restart (riavvia il server, parte dopo xmpp; da solo con --no-deps) usano il server di sviluppo e si saltano se non risponde; per ripeterli: npx playwright test --project=xmpp --workers=1. Il test di interoperabilita' di OMEMO usa un client indipendente in Python: e2e/tools/omemo-oracle/setup.sh lo prepara (una volta, serve la rete); senza, il test si salta. Lo stesso ambiente serve ai test sulle foto profilo (avatar.py). Le chiamate si provano con camera e microfono finti di Chromium e con il TURN di sviluppo (parlo-turn, parte con server/dev-up.sh).

Struttura

Modulo Contenuto
domain modelli, stati dei messaggi, interfacce (Kotlin common)
data repository: in memoria e IndexedDB
sync coda di invio, retry, riconciliazione (Kotlin common)
xmpp trasporto XMPP (libreria stanza)
ui componenti DOM e skin
app entry point, PWA, service worker
e2e test Playwright, regressione visiva
server Prosody e infrastruttura locale (sviluppo)
deploy produzione: Prosody, sito e push in Docker dietro NPM, script di gestione (docs/PRODUZIONE.md)

Versioni

Semver in gradle.properties. Ogni build stampa versione e id di build nel service worker: un sw.js diverso fa comparire il banner "Aggiorna" agli utenti con la versione precedente.