For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /it/docs/desktop/internals.md (or send Accept: text/markdown).
Dentro la shell desktop
Pagina di avvio, gate di navigazione, stack di plugin e riferimento di configurazione.
La pagina di avvio
La finestra carica prima la pagina in bundle in apps/desktop/ui: legge il __SUPASTACK_APP_URL__ iniettato, sonda il backend con un timeout di dieci secondi e reindirizza verso di esso quando è raggiungibile. Un backend irraggiungibile mostra uno stato «Can't reach host» con un'azione Riprova che scatta anche al ripristino della rete, così un avvio a freddo non mostra mai una finestra vuota. Un parametro query ?target= permette di provare la pagina in un browser normale.
Le funzionalità native sono plugin, non IPC
La shell non registra comandi personalizzati — ogni capacità nativa arriva tramite i plugin Tauri: single-instance con la feature deep-link (che instrada gli argomenti di secondo avvio su Windows e Linux), deep-link, window-state (solo geometria — zoom e canale mantengono i propri sidecar), opener, dialog, process (riavvio dopo l'aggiornamento), updater, autostart e global-shortcut, più la feature tray-icon. Estendere la shell significa aggiungere un plugin e un permesso, non fare il fork della UI della webview.
Il gate di navigazione
La navigazione resta consentita per le pagine della shell in bundle, l'origine del dev-server e l'esatta origine dell'app configurata. I link HTTP(S) senza credenziali, mailto: e tel: escono tramite il browser di sistema attraverso il plugin opener; ogni altro schema viene annullato. Un deep link che arriva prima che la finestra esista viene messo in buffer nello stato gestito e applicato appena esiste.
Riferimento di config e capability
tauri.conf.json imposta productName, version (da incrementare prima di una release — il workflow può sovrascriverla), l'identifier (check:release-config richiede di cambiarlo da com.supastack.desktop), lo schema di deep link supastack, il blocco updater sentinella, i target del bundle e le icone segnaposto. capabilities/default.json concede core:default più opener:allow-open-url — allargalo solo quando un nuovo plugin ne ha bisogno.
Come viene testata la shell
corepack pnpm --filter @supastack/desktop test controlla la sintassi della pagina di avvio ed esegue la suite di unit test Rust che copre risoluzione degli URL, deep link, zoom e logica di canale; typecheck esegue cargo check. Gli script di rilascio JavaScript sono coperti dalle suite vitest del repository, e la pipeline CI compila installer reali su tutti e tre i sistemi operativi a ogni modifica.
corepack pnpm --filter @supastack/desktop typecheck
corepack pnpm --filter @supastack/desktop test
corepack pnpm --filter @supastack/desktop check:release-configVerifica e risoluzione dei problemi
Esegui la suite del package dopo aver toccato src-tauri, poi verifica il comportamento nativo a mano su ogni sistema operativo di destinazione — i controlli unitari provano le regole, non la finestra. Mantieni il nuovo comportamento della shell dentro plugin e voci di menu, così la webview resta una semplice app web.