Dietro le Quinte di HidaChat: Architettura di un Client Desktop Multi-Account Portabile per WhatsApp e Telegram in .NET 9

// SYSTEM_METRIC_OVERVIEW

HidaChat è un client desktop nativo per Windows ad altissime prestazioni progettato per superare le limitazioni e l’overhead dei client di messaggistica convenzionali. Sfruttando la potenza di .NET 9 (WPF) e del runtime integrato Microsoft Edge WebView2 Evergreen, HidaChat unifica WhatsApp Web e Telegram Web in una postazione multi-account 100% portabile, completamente priva di Electron e con commutazione schede a 0 millisecondi di latenza.


⚡ I Numeri Chiave: Il Confronto Diretto

~8 MB
Dimensione Pacchetto (-95%)
140 MB
RAM a Riposo (-70%)
< 1.2s
Cold Start Time
0 ms
Latenza Switch Scheda

🛑 Il Problema: I Limiti dell’Ecosistema Attuale

I moderni strumenti di messaggistica istantanea come WhatsApp e Telegram sono pilastri insostituibili per lavoro e vita privata. Tuttavia, chiunque gestisca contemporaneamente account personali, aziendali o multi-piattaforma su Windows si scontra quotidianamente con gravi colli di bottiglia architetturali:

  1. Monotonia e Rigidità dei Client Ufficiali: Le applicazioni desktop ufficiali non supportano nativamente profili multipli simultanei o costringono ad aprire finestre duplicate non sincronizzate.
  2. L’Invasione di Electron e lo Spreco di Risorse: La quasi totalità dei wrapper di terze parti (come Franz, Ferdi o Rambox) si appoggia a Electron. Questo significa istanziare per ogni istanza un intero runtime Node.js + motore Chromium autonomo, saturando rapidamente la RAM (da 500MB a oltre 1GB per appena due account).
  3. Mancanza di Vera Portabilità: Le sessioni, i token crittografici e i cookie vengono salvati dispersi in cartelle di sistema nascoste (%AppData%, %LocalAppData%) e nel Registro di Windows, impedendo di portare la propria configurazione su una chiavetta USB o drive crittografato.
  4. Isolamento Linguistico: Chattare con partner o clienti internazionali impone il continuo copia-incolla manuale su traduttori esterni, spezzando il flusso di lavoro.

Per scardinare questi compromessi è nato HidaChat.


🎬 Dimostrazione dal Vivo & Galleria

Ecco l’interfaccia in azione con cambio istantaneo tra istanze WhatsApp/Telegram e traduzione interattiva dei singoli messaggi in tempo reale:

HidaChat Live Demo
// MULTI-ACCOUNT INTERFACE (DARK MODE)
Multi-Account Interface
// INSTANT MESSAGE TRANSLATION
Instant Message Translation
// NATIVE WINDOWS TOAST NOTIFICATIONS
Windows Toast Notifications
// DUAL THEME ENGINE (DARK & LIGHT)
Dark and Light Themes

🌟 Perché Scegliere HidaChat? (Confronto Dettagliato)

Caratteristica HidaChat WhatsApp Ufficiale Telegram Ufficiale Altus (Wrapper Electron)
Installazione Richiesta Nessuna (100% Portabile) ✅ Richiesta ✅ Richiesta ✅ Richiesta
Dati Spostabili (USB / Rete) Sì (ZIP / USB) ❌ No ❌ No ❌ No
Multi-Piattaforma in 1 App Sì (WhatsApp + Telegram) ❌ Solo WhatsApp ❌ Solo Telegram ❌ Solo WhatsApp
Schede Multi-Account Sì (Profili Isolati) ❌ No ⚠️ Solo Selettore ✅ Sì
Pre-caricamento Istantaneo Sì (0ms Switch) ❌ No ❌ No ❌ No
Traduttore Integrato Sì (Hover + Pagina) ❌ No ⚠️ Base ❌ No
Notifiche Native & Popup Sì (Toast Win32) ✅ Sì ✅ Sì ✅ Sì
Motore Rendering WebView2 (Edge Nativo) Nativo / UWP Qt / C++ Nativo Electron / Chromium Dedicato
Framework UI .NET 9 + WPF WinUI / XAML Qt Desktop HTML / CSS / Node.js

🚀 I Pilastri Architetturali di HidaChat

1. Architettura Zero-Electron: .NET 9 + Edge WebView2 Integrato

Invece di includere decine di megabyte di binari Chromium e runtime V8 duplicati, HidaChat sfrutta il runtime nativo Microsoft Edge WebView2 (Evergreen) già presente in Windows 10 e Windows 11, combinato con il runtime ottimizzato di .NET 9.

2. Passaggio Scheda a 0 Millisecondi (Visibility.Hidden Pre-Warming)

Nei client multi-account convenzionali, il passaggio tra le schede distrugge il controllo web o esegue una ri-navigazione dell’URL. In HidaChat l’account attivo è visibile, mentre gli altri account sono pre-riscaldati in background con Visibility = Visibility.Hidden. I WebSocket rimangono caldi e il passaggio avviene a 0ms di latenza.

' MainWindow.xaml.vb (Estratto logica pre-riscaldamento ordinato)
Private Async Sub PopulateWebViews()
    WebViewsGrid.Children.Clear()

    ' 1. Priorità assoluta all'account attivo
    Dim activeAccount = _accountManager.CurrentAccount
    If activeAccount IsNot Nothing Then
        Await EnsureWebViewAsync(activeAccount)
        activeAccount.WebView.Visibility = Visibility.Visible
    End If

    ' 2. Pre-riscaldamento in background degli altri account (Visibility.Hidden)
    Dim otherAccounts = _accountManager.Accounts.Where(Function(a) a IsNot activeAccount)
    For Each acc In otherAccounts
        Await EnsureWebViewAsync(acc)
        acc.WebView.Visibility = Visibility.Hidden
    Next
End Sub

3. Bypass Intelligente del Throttling di Chromium per Notifiche Real-Time

Chromium di default sospende i timer JavaScript e i socket di rete nelle schede nascoste. In HidaChat iniettiamo switch mirati per impedire l’addormentamento dei worker in background:

Dim options As New CoreWebView2EnvironmentOptions()
options.AdditionalBrowserArguments = "--disk-cache-size=104857600 --media-cache-size=52428800 " &
                                     "--disable-background-timer-throttling " &
                                     "--disable-backgrounding-occluded-windows " &
                                     "--disable-renderer-backgrounding " &
                                     "--disable-features=Translate,OptimizationHints,MediaRouter"

4. Portabilità Reale al 100% e Sandbox di Isolamento

// ZERO_TRACE_POLICY
HidaChat confina tutti i dati di profilo, token di autenticazione, cookie, cache web e impostazioni grafiche esclusivamente nella sottocartella locale data/ situata accanto all’eseguibile, garantendo la portabilità su qualsiasi unità USB o disco esterno.

5. Win32 Subclassing: Finestra Senza Bordi con Maximize Perfetto (WM_GETMINMAXINFO)

Grazie all’hooking del messaggio Win32 WM_GETMINMAXINFO, la finestra massimizzata rispetta sempre l’area di lavoro (rcWork) e la Taskbar di Windows, senza mai coprirla o sbordare nei setup multi-monitor.

6. Motore di Traduzione In-Context Multi-Piattaforma

Un observer JavaScript leggero individua le bolle di WhatsApp Web e Telegram Web K/A, permettendo di tradurre singoli messaggi con un click o l’intera chat, sfruttando una cache locale JSON per azzerare chiamate ridondanti.

7. Pipeline Notifiche Toast Native e Routing IPC

Intercettazione degli eventi Web Notification e Service Worker con dispatching su Toast nativo di Windows 10/11: al click l’app si apre e attiva la scheda corretta istantaneamente.


📦 Installazione e Distribuzione

Opzione 1: Installazione Rapida via Windows Package Manager (winget)

winget install hidaba.HidaChat

Opzione 2: Archivio Portabile ZIP (Nessuna Installazione)

Scarica l’archivio ZIP portatile dalla sezione GitHub Releases ed estrailo su qualsiasi unità USB o disco fisso.


🔗 Risorse Open Source & Repository