Passare da 2026.1 ESR a 2026.7: cosa ho scoperto

Innanzitutto, congratulazioni al team di Discourse per il nuovo ESR, e grazie per il lavoro che ci è stato messo. Sei mesi di release che confluiscono in un unico checkpoint supportato rappresentano una quantità ENORME di ingegneria, e il fatto che ora esista un sito di release e un changelog da esplorare ha reso questa ricerca molto più semplice rispetto ai precedenti 4 anni.

Sono sulla versione ESR 2026.1.5. Ho esaminato release dopo release prima di cercare una configurazione in cui gli aggiornamenti procedano il più possibile senza intoppi.

Ho analizzato tutto ciò che c’è tra la 2026.1.5 e la 2026.7.0 prima di toccare qualsiasi cosa, e ho pensato che le note sarebbero state utili per chiunque altro si trovi attualmente sulla 2026.1 e stia cercando di decidere: applicare la patch ora, o fare il salto ora?

Ho applicato la patch alla 2026.1.6 oggi per le correzioni di sicurezza, e passerò alla 2026.7.0 nella prima settimana del mese prossimo quando avrò tempo per testare adeguatamente i componenti del mio tema e altre cose.


La trappola di version: stable!

Se, come nel mio caso, il tuo app.yml dice:

  version: stable

…allora la tua prossima rebuild ti porterà sulla 2026.7.0, che tu lo voglia o meno. stable è un alias di compatibilità retroattiva per esr, e esr punta sempre all’ESR più recente, che è cambiato oggi.

Non conosco alcun percorso di downgrade, quindi se fai una rebuild solo per ottenere la correzione di sicurezza, ottieni anche il salto di sei mesi!

Per rimanere sulla 2026.1 e ottenere solo le patch di sicurezza, fissare esplicitamente:

  version: release/2026.1

Per passare al nuovo ESR e non essere spostati automaticamente di nuovo tra sei mesi:

  version: release/2026.7

La 2026.1 è supportata fino a settembre 2026. La 2026.7 sarà supportata fino a marzo 2027. Quindi il salto arriverà comunque, è solo una questione di se avviene secondo i tuoi tempi.


Prerequisiti

PostgreSQL 15 è ora il minimo. Controlla il tuo da dentro il container:

cat /shared/postgres_data/PG_VERSION

Il mio ha restituito 15, quindi sono a posto. Se sei sulla 13 o 14, credo che sia necessario un aggiornamento separato da fare prima del salto di versione.

Vale la pena notare: l’immagine del container ora include PG 18 accanto alla 15, ma per il momento la rifiuto, una variabile alla volta.


Downtime?


Fai prima un backup e blocca i forum con la modalità manutenzione.

Nessun downtime, ma non sono istantanei su un forum maturo:

La rebuild ha richiesto < 5 minuti sul mio VPS, pianifica circa 10 minuti sulla maggior parte degli hosting web, ma dipende molto anche dal numero di post del tuo forum, quindi pianifica una finestra di 30 a 45 minuti.


Sicurezza: a cosa sei esposto sulla 2026.1.5

17 avvisi si applicano se sei sulla 2026.1.5. Tutto ciò che è stato pubblicato prima del 30 giugno era già corretto nella tua build. Tutti i 17 sono corretti in sia la 2026.1.6 che la 2026.7.0, il che rende la patch-first un’opzione legittima.

  • 1 critico - avvelenamento della cache / XSS tramite cookie dello schema colori
  • 2 alti - RCE tramite file HEIF malformato; XSS memorizzato tramite nome utente del trascritto della chat non escapato nell’editor di testo ricco
  • 13 medi, 1 basso - XSS memorizzato nella coda di revisione, nei log delle azioni dello staff, nelle azioni dei post e nelle date locali; fuga del nome e della descrizione del tag nascosto; titoli dei topic ristretti esposti tramite URL canonizzati; fuga del titolo/estratto della bozza condivisa; elusione della blocklist dei domini onebox tramite confronto case-sensitive; intercettazione delle conversazioni del bot AI; contenuto dei PM raggiungibile tramite revisionabili AI; mismatch ID canale/thread onebox della chat; estratto del primo post nascosto emesso in JSON-LD Q&A

Se applichi solo la patch, release/2026.1 + rebuild chiude tutti questi problemi.


La mia ossessione: Cose che cambieranno senza che tu lo chieda

Questa è la sezione che desideravo di più negli ultimi anni. Nel salto alla 2026.7, questi sono alcuni dei cambiamenti di comportamento che arrivano da soli:

  1. Discourse Reactions abilitate di default per tutti i siti. Il rollout ha raggiunto stable il 21 luglio. Se oggi non usi Reactions, sta arrivando.

  2. Uncategorized viene rimosso. Tre impostazioni vengono nascoste dall’admin (allow_uncategorized_topics, suppress_uncategorized_badge, uncategorized_category_id) e verranno rimosse completamente una volta che il cambiamento diventerà permanente. Gestito come opt-out per ora.

  3. L’impostazione del sito rich_editor è scomparsa. L’editor ricco è ora incondizionato. La preferenza composition_mode per utente è l’unico modo rimasto per scegliere tra markdown e testo ricco. Anche l’interruttore di anteprima Markdown è stato rimosso - l’interruttore di modalità MD/RTE lo sostituisce.

  4. Oggetti delle email più semplici. Attualmente in beta. Attenzione: abilitarlo sovrascrive la tua impostazione del sito email_subject, e disabilitarlo ripristina il default. Quindi qualsiasi personalizzazione che hai lì può andare persa. Controlla quell’impostazione prima di toccare qualsiasi interruttore.

  5. Le schede topic ad alto contesto Horizon hanno raggiunto stable a giugno. Rilevante solo se sei su Horizon, e c’è un’impostazione del tema per tornare alle schede semplici.

La buona notizia: tutte queste arrivano ora attraverso il sistema Upcoming Changes, il che significa che non sono nella 2026.1.5. Ottieni una pagina di configurazione, preavviso, opt-out per ogni cambiamento, e una correzione (#39279) che impedisce specificamente a un rollout di sovrascrivere un’impostazione che hai già personalizzato tu stesso.

Se, come me, sei stato frustrato dalle impostazioni che si spostano tra le release, quel sistema è la risposta, e rimanere sulla 2026.1 ti tiene sulla build che la precede. La prima cosa che farò dopo il salto sarà passare in rassegna Upcoming Changes e impostare ogni elemento in sospeso deliberatamente, prima che qualcosa si promuova da solo.


Se usi temi o componenti personalizzati

Questo è dove mi aspetto di passare il mio tempo di testing, e parte del motivo per cui non salto oggi:

  • Gli avvisi admin sono ora abilitati per tutte le deprecazioni in sospeso. Aspettati che i tuoi componenti personalizzati inizino a mostrare avvisi admin se usano qualcosa di legacy. Meglio saperlo, ma è una revisione.
  • Nuove deprecazioni per le estensioni dei file .hbs e .js.es6. Controlla la denominazione dei file del tuo componente.
  • I shim widget legacy sono stati rimossi, insieme ai percorsi di deprecazione per discourse.breadcrumbs.*, add-flag-property, add-header-panel e bootbox.
  • Le plugin outlet possono ora essere aliasate e deprecate invece di rompersi in silenzio. Un cambiamento genuinamente positivo. Le outlet rinominate avvertono invece di scomparire semplicemente.
  • Le impostazioni del tema sono state spostate dal bundle JS nei dati preload, il che cambia quando sono disponibili all’avvio. Vale la pena verificare se il tuo componente legge le impostazioni presto.
  • Le impostazioni del sito mobile-mode legacy sono state rimosse, e i fogli di stile core mobile/desktop vuoti rimossi. Se il tuo CSS punta a mobile e desktop separatamente, testa su un telefono reale dopo l’aggiornamento.

Sotto il cofano: Ember 6.6 → 6.10, ember-cli 6.9 → 7.0.1, la migrazione Rolldown completata, supporto TypeScript aggiunto per temi e plugin, e molto jQuery rimosso ovunque.

Utenti House Ads: il JS inline è ora bloccato negli annunci house, e l’interfaccia admin è stata ricostruita in FormKit. house_ads_after_nth_root è ora anche rispettato nella visualizzazione delle risposte annidate.


Nuove funzionalità degne di nota

37 funzionalità sono state evidenziate in questi sei mesi. Quelle che penso siano più importanti per un forum di comunità generale:

  1. Upcoming Changes - la pagina di configurazione e il sistema di rollout descritti sopra.
  2. Risposte annidate - visualizzazione topic ad albero/filato sperimentale, configurabile per topic e per categoria, con abilitazione in blocco dall’elenco dei topic e un’esperienza mobile riprogettata.
  3. Accesso e registrazione con codice email una tantum (enable_local_logins_via_code) - senza password, attualmente in alpha. La registrazione richiede solo un’email più un codice.
  4. Nuova pagina di gestione delle categorie admin più creazione categorie semplificata. Un directory completo di categorie e i loro tipi.
  5. Azioni in blocco ovunque - gestione tag in blocco (aggiungi/rimuovi/sostituisci), fissaggio/sblocco in blocco, e sospensione in blocco per utenti non attivati, insieme a un nuovo filtro di stato di attivazione su Admin → Utenti. Quest’ultima combinazione è eccellente per ripulire ondate di registrazioni spam.

Vale anche la pena menzionare: un’impostazione esplicita della homepage predefinita, gruppi di emoji fissati con import/export emoji personalizzate in blocco, punti ora consentiti nei nomi dei tag, una pagina dedicata all’editing dei tag, modalità app completa per l’embedding, sincronizzazione gruppi per OAuth2 e OpenID Connect, e icone di stato PR live su onebox GitHub inline.


Perché ho applicato la patch prima

Nessuna delle cose sopra è un motivo per non passare alla 2026.7. Il sistema Upcoming Changes da solo lo rende degno di essere fatto, e ci entrerò nella prima o seconda settimana del mese prossimo.

Ma le correzioni di sicurezza sono disponibili su entrambe le branche, il che significava che potevo disaccoppiare la parte urgente da quella che richiede testing. Come il fatto che l’editor ricco è ora incondizionato. Sono sicuro che leggendo in giro sui forum troverò una via rapida, speriamo.

Applicare la patch oggi ha chiuso ogni avviso. Il salto ora ottiene una finestra adeguata in cui posso passare in rassegna Upcoming Changes deliberatamente e controllare i miei componenti del tema su desktop e mobile senza correre contro una CVE critica.

Se sei sulla 2026.1 e hai poco tempo questa settimana, suggerirei lo stesso. Se hai il tempo, vai direttamente a release/2026.7, fissalo esplicitamente, e controlla la tua versione Postgres.

Grazie ancora al team. Il sito del changelog ha reso questa indagine molto meno dolorosa di quanto sarebbe stata un anno fa.


*Dichiarazione: ho usato l’AI per aiutarmi a strutturare questo post; altrimenti, non avrei avuto il tempo per pubblicarlo. Si prega di segnalare qualsiasi cosa che devo aggiungere, rimuovere o modificare.

È abilitato per impostazione predefinita (non solo per i forum nuovi ma anche per quelli esistenti), ma puoi comunque utilizzare l’impostazione del sito discourse_reactions_enabled e disabilitarlo dopo l’aggiornamento. Puoi comunque optare per l’esclusione.

Non sono sicuro che questo funzionerà per due motivi. Penso che l’uso della versione ESR signifhi che perderai le modifiche in arrivo che attraversano tutte le fasi prima che venga rilasciata la prossima versione ESR. Simplified category setup è un esempio di questo. Mentre gli utenti che aggiornavano ogni mese avevano la possibilità di provarlo e fornire feedback, tu ricevi semplicemente il risultato come qualsiasi altra modifica di codice, senza una modifica in arrivo.
Inoltre, puoi optare per l’inclusione nelle modifiche più precocemente o optare per l’esclusione dopo che è stato abilitato automaticamente quando viene promosso a beta, ma non puoi optare per l’esclusione prima che venga abilitato automaticamente.

Naturalmente, ha senso verificare le modifiche in alpha per essere consapevoli di ciò che sta arrivando. Puoi già testare la funzione come amministratore senza influenzare i tuoi utenti e puoi rapidamente optare per l’esclusione dopo aver eseguito un aggiornamento che l’ha abilitata, ma poiché sei sulla versione ESR, non ci sarà un aggiornamento che promuova la modifica in arrivo. Per te, nulla si attiverà automaticamente fino al tuo aggiornamento a una versione successiva, ma questo significa anche che perdi l’opzione di provare prima che le modifiche vengano apportate in modo permanente, oppure puoi provare come è oggi, ma non sarai in grado di provare i miglioramenti che avvengono nelle iterazioni successive.

@Moin, sinceramente apprezzato! Questo è anche il motivo per cui rimango in attesa sulla questione ESR per circa una settimana. I feedback e le correzioni per gli errori che ho commesso, ecc. … superano qualsiasi cosa io possa capire da solo. Aggiornerò il post. Grazie!