{
  "schemaVersion": "1.1",
  "applicationId": "bestpractice",
  "releases": [
    {
      "version": "1.4.0",
      "publishedAt": "2026-10-17T06:10:34.385Z",
      "commit": "c01ae7af1645",
      "summary": "BestPractice risponde anche su bestpractice.miglioresoftware.app",
      "areas": [
        {
          "area": "Dominio",
          "items": [
            "L'applicazione risponde ora anche su bestpractice.miglioresoftware.app e l'API su api-bestpractice.miglioresoftware.app, con accesso SSO su entrambi.",
            "Gli indirizzi bestpractice.miglioresoftware.com e api-bestpractice.miglioresoftware.com restano attivi e identici, compresi gli schemi pubblici sotto /standards usati dai manifest delle altre applicazioni."
          ]
        }
      ]
    },
    {
      "version": "1.3.7",
      "publishedAt": "2026-09-08T21:58:17.000Z",
      "commit": "dace81e844cf",
      "summary": "Protocollo privato System completo e validabile",
      "areas": [
        {
          "area": "Contratto System",
          "items": [
            "Documentati i feed privati realmente ingeriti da System con version, releasedAt, title, aree e bullet",
            "Aggiunte copie normative degli schemi correnti per release, tecnologie e documentazione",
            "Separato il protocollo privato System dal formato pubblico usato dai client per l'aggiornamento"
          ]
        },
        {
          "area": "Validazione e ingest",
          "items": [
            "Aggiunto un validator senza dipendenze per schema, slug, versioni duplicate, limiti e URL HTTPS",
            "Definiti autenticazione, sostituzione atomica dello storico, compatibilità, errori, retry e budget operativo"
          ]
        }
      ]
    },
    {
      "version": "1.3.6",
      "publishedAt": "2026-09-08T10:04:39.000Z",
      "commit": "6da0fcd66fe8",
      "summary": "Note di rilascio divise per area applicativa",
      "areas": [
        {
          "area": "Protocollo applicativo",
          "items": [
            "Le note di rilascio e version.json raggruppano le voci per area del prodotto: un elenco piatto non dice quale parte sia cambiata",
            "Due schemi pubblici nuovi, release-notes.schema.json e version.schema.json, prima descritti solo a parole nella guida 24",
            "La forma piatta della versione 1.0 resta valida: un consumer conforme legge entrambe e nessuna applicazione si rompe durante la migrazione"
          ]
        },
        {
          "area": "Avviso di aggiornamento",
          "items": [
            "Il dialog non supera più l'altezza della finestra: testata e pulsante restano fermi e a scorrere è soltanto l'elenco delle aree",
            "Con una release ricca il pulsante di aggiornamento finiva fuori campo, e siccome l'avviso non si chiude l'utente restava bloccato"
          ]
        }
      ]
    },
    {
      "version": "1.3.5",
      "publishedAt": "2026-09-05T15:31:56.853Z",
      "commit": "efc7aa05c61f",
      "summary": "Portabilità cloud pragmatica e contratti tra servizi",
      "areas": [
        {
          "area": "Architettura",
          "items": [
            "Il dominio resta indipendente dagli SDK cloud mentre gli adapter possono sfruttare pienamente il provider corrente",
            "I servizi comunicano tramite API o contratti evento versionati senza accesso diretto allo storage altrui",
            "I trasporti nativi sono ammessi quando preservano lo stesso contratto sostituibile",
            "Lock-in, benefici, export dei dati e piano di uscita diventano decisioni verificabili"
          ]
        }
      ]
    },
    {
      "version": "1.3.4",
      "publishedAt": "2026-09-05T08:03:13.000Z",
      "commit": "19a7b7e596d0",
      "summary": "Rientro SSO automatico e nuovo comando tema",
      "changes": [
        "Alla scadenza della sessione BestPractice tenta una sola volta il rientro tramite la sessione centrale già attiva",
        "Il tentativo è marcato nell’URL di ritorno per impedire loop di autenticazione",
        "La richiesta manuale di accesso resta disponibile soltanto dopo un tentativo non riuscito",
        "Il comando tema usa icone separate luna e sole, più chiare e coerenti nei due temi"
      ]
    },
    {
      "version": "1.3.3",
      "publishedAt": "2026-09-03T14:50:38.318Z",
      "commit": "9035448e015e",
      "summary": "Accesso SSO aggiornato anche nelle schede già aperte",
      "changes": [
        "Il controllo della versione viene eseguito a ogni apertura senza attendere il precedente intervallo locale",
        "Gli asset applicativi sono caricati con un nome basato sul contenuto e non possono restare obsoleti dopo un deploy",
        "Il ritorno SSO elimina i parametri di errore precedenti prima di avviare un nuovo tentativo",
        "La schermata di accesso resta contenuta nell’altezza del viewport senza scrollbar verticale"
      ]
    },
    {
      "version": "1.3.2",
      "publishedAt": "2026-09-03T14:39:56.473Z",
      "commit": "97b94c53ec8d",
      "summary": "SSO resiliente ai limiti KV e login senza scorrimento",
      "changes": [
        "La sessione autenticata usa un cookie cifrato e non consuma scritture KV a ogni accesso",
        "Le sessioni KV della release precedente restano leggibili durante la transizione",
        "La revoca back-channel conserva il controllo per sessione senza reintrodurre scritture nel login",
        "La schermata di accesso resta contenuta nell’altezza del viewport senza scrollbar verticale"
      ]
    },
    {
      "version": "1.3.11",
      "publishedAt": "2026-09-27T09:00:00.000Z",
      "commit": "c01ae7a",
      "summary": "Aggiornamento automatico, senza conferma",
      "areas": [
        {
          "area": "Aggiornamento",
          "items": [
            "La versione nuova si carica da sola in tutte le schede aperte: niente più pulsante Aggiorna",
            "Dopo il ricaricamento compaiono le novità, che si chiudono con Ho capito"
          ]
        },
        {
          "area": "Standard delle applicazioni",
          "items": [
            "Guide 24 e 30: ogni rilascio arriva agli utenti da solo e le note si mostrano dopo il ricaricamento, con release-sync aggiornato"
          ]
        }
      ]
    },
    {
      "version": "1.3.10",
      "publishedAt": "2026-09-27T06:06:58.000Z",
      "commit": "86c3174",
      "summary": "L'avviso di aggiornamento si conferma una volta sola",
      "areas": [
        {
          "area": "Avviso di aggiornamento",
          "items": [
            "L'avviso di aggiornamento si conferma una volta sola: le altre schede aperte si aggiornano da sole",
            "Una scheda aperta più tardi con la versione vecchia si aggiorna senza riproporre l'avviso",
            "Niente più conto alla rovescia: l'applicazione si ricarica soltanto quando premi Aggiorna ora"
          ]
        },
        {
          "area": "Standard delle applicazioni",
          "items": [
            "Guida 30: la conferma dell'aggiornamento vale per tutte le schede dello stesso browser, con l'implementazione di riferimento release-sync",
            "Guide 24 e 30: nessun controllo periodico, la nuova versione si rileva all'avvio, al ritorno sulla scheda e al ritorno della rete"
          ]
        }
      ]
    },
    {
      "version": "1.3.1",
      "publishedAt": "2026-09-03T13:04:57.628Z",
      "commit": "979ea64db4cf",
      "summary": "Accesso isolato e interfaccia coerente con le applicazioni Migliore",
      "changes": [
        "La schermata anonima non mostra menu laterale, app bar, indice o footer",
        "La shell autenticata usa superfici chiare, geometrie morbide e il solo accento arancione del brand",
        "Menu account, ricerca, documenti e dialog condividono raggi e ombre definiti dai token",
        "La struttura editoriale conserva indice, colonna di lettura e sommario locale"
      ]
    },
    {
      "version": "1.3.0",
      "publishedAt": "2026-09-03T12:22:00.000Z",
      "commit": "5b2b5c7f0dcd",
      "summary": "Shell documentale allineata al layout applicativo comune",
      "changes": [
        "La barra laterale occupa tutta l’altezza e separa chiaramente navigazione e contenuto",
        "App bar e footerbar appartengono solo alla colonna del contenuto",
        "Versione e Note di rilascio sono allineate a destra",
        "Il tema si cambia con un solo pulsante a icona",
        "Il catalogo mostra schermate guida anonime per i temi Chiaro e Scuro"
      ]
    },
    {
      "version": "1.2.2",
      "publishedAt": "2026-09-03T10:55:42.000Z",
      "commit": "ddc2794763a4",
      "summary": "Account SSO completo e pagine senza pannelli di accesso residui",
      "changes": [
        "Il pannello di accesso resta nascosto durante e dopo il caricamento delle pagine autenticate",
        "Il trigger account mostra Gravatar e nome utente",
        "Il menu account è applicativo e navigabile da tastiera",
        "L’email non viene restituita alla UI né mostrata nell’interfaccia"
      ]
    },
    {
      "version": "1.2.1",
      "publishedAt": "2026-09-03T09:57:31.569Z",
      "commit": "025a9ee4ec66",
      "summary": "Accesso coerente con il manuale BestPractice",
      "changes": [
        "Schermata pubblica allineata alla struttura editoriale interna",
        "Due soli temi Chiaro e Scuro",
        "Selettore tema applicativo",
        "Footerbar persistente",
        "Rimossi numeri dall’indice e dettagli tecnici SSO",
        "Corretto il pannello di accesso duplicato"
      ]
    },
    {
      "version": "1.2.0",
      "publishedAt": "2026-09-03T09:27:17.313Z",
      "commit": "8f00a14f1200",
      "summary": "Nuova esperienza editoriale ispirata a Microsoft Learn",
      "changes": [
        "Tema Paper chiaro come esperienza predefinita",
        "Intestazione globale e indice laterale più compatti",
        "Breadcrumb, colonna di lettura e sommario locale coordinati",
        "Layout responsive e temi Forge e Signal allineati alla stessa struttura"
      ]
    },
    {
      "version": "1.1.0",
      "publishedAt": "2026-09-03T00:00:00.000Z",
      "commit": "historical",
      "summary": "Standard comune per architettura e aggiornamenti applicativi",
      "changes": [
        "CQRS, Event Sourcing e Memento contestuale obbligatori",
        "SSO centralizzato su Security",
        "Footer e protocollo comune delle note di rilascio",
        "Popup e ricaricamento automatico quando cambia versione"
      ]
    },
    {
      "version": "1.0.0",
      "publishedAt": "2026-09-03T00:00:00.000Z",
      "commit": "historical",
      "summary": "Prima pubblicazione della documentazione ufficiale",
      "changes": [
        "Manuale consultabile e ricercabile",
        "Linee guida UI e temi",
        "Manifesto leggibile da SSO",
        "Autenticazione OIDC con revoca back-channel"
      ]
    }
  ]
}
