-
v1.12.1
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 8sreleased this
2026-09-20 01:42:36 +02:00 | 37 commits to main since this releaseChanged
- La barra compatta sta su una riga sola: "Filtra:" affiancato alle icone invece che sopra, senza la linea di separazione che serviva quando stavano su due righe. Le icone vanno a capo da sole se lo schermo non basta.
Fixed
- Il tooltip mostrava il nome senza il conteggio. Il
titledel chip c'era, ma ogni icona porta un proprio<title>(il nome della piattaforma, parte delle icone Simple Icons) e il browser mostra quello dell'elemento sotto il puntatore: siccome l'icona occupa quasi tutto il quadrato, vinceva sempre lei. Le icone dei filtri sono ora inerti al puntatore (pointer-events: none), così compare iltitledel chip con nome e numero; il clic resta al label e continua a selezionare il filtro. - Le icone sono marcate decorative (
aria-hidden="true" focusable="false", aggiunti dopo la sanitizzazione kses): il nome della piattaforma è già scritto accanto o nascosto alla sola vista, quindi il<title>interno faceva leggere due volte la stessa parola agli screen reader.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.12.0
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 7sreleased this
2026-09-20 01:33:28 +02:00 | 38 commits to main since this releaseAdded
- Barra dei filtri compatta, scelta dalla nuova impostazione Stile della barra filtri (Aspetto): resta "Filtra:" seguito dalle sole icone, ciascuna in un quadrato da 36px con cornice leggera — 36px perché sotto quella misura il bersaglio diventa difficile da centrare da telefono, mentre l'icona resta a 22px. Piattaforma inclusa a colori, esclusa in grigio.
- Nome e conteggio, che nella barra compatta sparirebbero, finiscono nel
titledel chip e restano nel markup nascosti solo alla vista (clip-path), quindi continuano a essere letti dagli screen reader e trovati dalla ricerca nel testo della pagina. - Il
titlecon nome e conteggio viene aggiunto in entrambi gli stili: nella barra completa è un'informazione in più a costo zero.
Changed
- Una piattaforma esclusa ha ora l'icona in grayscale e non soltanto più pallida, in entrambi gli stili: lo stato acceso/spento si legge senza doverlo dedurre dall'opacità. Regola per slug, come tutto il resto dei filtri.
Note
- La scelta di non prevedere un'opzione per nascondere del tutto la barra è deliberata (richiesta dell'utente): i filtri sono CSS-only e partono da
display:nonesu tutti i post, quindi rimuovere i checkbox senza una regola dedicata lascerebbe la timeline vuota.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.11.1
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 9sreleased this
2026-09-20 00:22:31 +02:00 | 39 commits to main since this releaseChanged
- Il link di un ascolto porta alla pagina del brano su ListenBrainz (
/track/{mbid}) invece che alla registrazione su MusicBrainz: si resta sulla fonte configurata. Senza identificatore si va al profilo, come prima. Nota: ListenBrainz è una single-page app e risponde 200 a qualunque indirizzo, quindi la rotta va provata nel browser, non con una richiesta HTTP. - "Svuota cache adesso" ricostruisce subito la cache e dice quanti contenuti ha recuperato, invece di lasciare il lavoro alla prima visita della timeline. La tabella delle impostazioni si popola appena lo premi.
Fixed
- La colonna "ultimo recupero" diceva "nessun recupero" dopo ogni aggiornamento.
maybe_upgrade()cancellava l'opzione di stato a ogni cambio di versione: un dato che porta la propria data e che serve proprio quando si controlla se l'aggiornamento è andato bene. Ora viene conservato e si rigenera solo la cache dei post, che con gli slug nuovi va comunque rifatta. - Un feed malformato non riempie più il log del sito: i tre parser XML (Lemmy, Pixelfed, RSS/Atom) tengono gli errori di libxml internamente (
libxml_use_internal_errors) invece di lasciar stampare una decina di warning per ogni tentativo. Emerso dai test, dove un feed volutamente rotto ha prodotto dieci righe di warning.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- Il link di un ascolto porta alla pagina del brano su ListenBrainz (
-
v1.11.0
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 8sreleased this
2026-09-19 23:59:40 +02:00 | 40 commits to main since this releaseAdded
- Fonte RSS/Atom esterna: l'indirizzo di un feed qualsiasi — un blog, una newsletter, un podcast — con un'etichetta facoltativa. Un solo parser legge entrambi i formati (
channel/itemdell'RSS 2.0 efeed/entrydell'Atom), con immagine presa daenclosure,media:contento dal primo<img>del testo. Il nome mostrato viene dall'etichetta, altrimenti dal titolo del feed, altrimenti dal dominio. Slugrss, iconarss.svg(Simple Icons, CC0). - ListenBrainz: gli ascolti recenti via API pubblica
GET /1/user/{utente}/listens, senza token (a differenza di Last.fm, che richiede una chiave). Ogni scheda mostra "Artista — Brano" con l'album quando c'è, e punta alla registrazione su MusicBrainz se l'mbidè disponibile (mbid_mapping.recording_mbid, con ripiego suadditional_info.recording_mbid), altrimenti al profilo. Nessuna statistica: un ascolto non ne ha. L'URL dell'API è configurabile per chi ospita una propria istanza. - Icona a nota musicale disegnata per il plugin: Simple Icons non ha ListenBrainz, e usare il logo di MusicBrainz significherebbe marchiare i contenuti di un progetto con il simbolo di un altro della stessa famiglia.
Changed
- Rimosso lo slug
blog, residuo mai prodotto da nessun fetcher e con un file icona (blog.svg) che non esisteva: al suo posto c'è la fonte RSS. social-icons/ICONS-LICENSE.mdaggiornato con le due icone nuove.
Fixed
- Il fetcher del feed usciva in silenzio quando l'indirizzo non era utilizzabile (non HTTPS, host privato o non risolvibile): unico campo della fonte, e nessun messaggio. Ora il motivo finisce nella tabella delle impostazioni. Trovato dai test prima del rilascio.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Fonte RSS/Atom esterna: l'indirizzo di un feed qualsiasi — un blog, una newsletter, un podcast — con un'etichetta facoltativa. Un solo parser legge entrambi i formati (
-
v1.10.1
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 10sreleased this
2026-09-19 23:51:17 +02:00 | 41 commits to main since this releaseFixed
- Un profilo compilato a metà veniva scartato in silenzio. Con il solo nome utente e senza URL dell'istanza (o viceversa) la piattaforma non compariva né in timeline né nella tabella delle impostazioni, perché l'elenco mostrava solo i profili completi: esattamente il silenzio che la tabella doveva eliminare. Ora quel profilo ha la sua riga, con scritto cosa manca. L'istanza predefinita di Forgejo (
https://gitea.com) non conta da sola come configurazione. - Packaging. La riga
*.md export-ignorein.gitattributesescludeva tutti i markdown dall'archivio di release, quindi nel plugin installato mancavanoLICENSE.mdeREADME.md— la GPL chiede che il programma sia accompagnato dal testo della licenza. Ora l'elenco è esplicito: fuori restano soloCHANGELOG.md,README.it-IT.md,LICENSE.IT.mde i file di sviluppo.
Added
social-icons/ICONS-LICENSE.md: da dove vengono le icone (Simple Icons, CC0-1.0), la nota che i marchi restano dei rispettivi progetti e sono usati solo per identificare le piattaforme, i link alle linee guida di ciascun marchio (trademark Mastodon, branding Bluesky, logo license exemption Forgejo, CC BY-SA 4.0 per i loghi ufficiali Lemmy e PeerTube) e le regole per sostituire un'icona con la propria. Il file sta dentrosocial-icons/e non nella root, dove Plugin Check segnalerebbe un markdown inatteso.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Un profilo compilato a metà veniva scartato in silenzio. Con il solo nome utente e senza URL dell'istanza (o viceversa) la piattaforma non compariva né in timeline né nella tabella delle impostazioni, perché l'elenco mostrava solo i profili completi: esattamente il silenzio che la tabella doveva eliminare. Ora quel profilo ha la sua riga, con scritto cosa manca. L'istanza predefinita di Forgejo (
-
v1.10.0
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 9sreleased this
2026-09-17 23:43:10 +02:00 | 42 commits to main since this releaseAdded
- Pixelfed, tramite il feed Atom pubblico del profilo (
/users/{nome}.atom): foto, didascalie, date e link. Nessuna statistica, perché il feed non la porta. L'API Mastodon non è utilizzabile: risponde al lookup dell'account ma reindirizza l'endpoint degli stati alla pagina di login. Il parser è dedicato (feed/entrycon namespacemedia:), diverso dal parser RSS 2.0 di Lemmy. Nuovo slug con tutti i punti per-slug: filtro CSS, token icona chiaro/scuro,$icons, iconapixelfed.svg(Simple Icons, CC0). - L'indirizzo completo del profilo è accettato in ogni campo e viene spezzato in istanza + nome:
https://lemmy.ml/u/nome,https://mastodon.uno/@nome,/users/nome,nome@istanza,https://peertube.tv/c/nome@host/videos,https://pixelfed.uno/nome,https://bsky.app/profile/handle. Un URL di sola istanza (https://lemmy.ml) non viene interpretato come profilo. - Quando il nome porta con sé la propria origine (un canale PeerTube remoto visto da un'altra istanza) il plugin interroga quella istanza invece di chi la federa: il risultato non dipende dallo stato della federazione.
- Tabella "Profili configurati" nelle impostazioni: per ogni piattaforma mostra cosa vede il plugin (istanza, software, account o canale, numero di contenuti) e l'esito dell'ultimo recupero. Le verifiche girano al salvataggio e si possono ripetere col pulsante Verifica profili; la pagina non interroga nulla mentre si carica, altrimenti aprirla costerebbe cinque o sei richieste HTTP e sarebbe ostaggio dei timeout.
Fixed
- Canali PeerTube. Su PeerTube i video stanno quasi sempre in un canale, non nell'account, e i due usano endpoint diversi (
/api/v1/video-channels/e/api/v1/accounts/): il plugin conosceva solo il secondo, quindi un canale non restituiva nulla. Misurato sul caso reale:tube.tchncs.de/api/v1/accounts/s3nnet/videos→ 404,tube.tchncs.de/api/v1/video-channels/s3nnet/videos→ 200 con 147 video. Ora il tipo si ricava dall'indirizzo quando lo incolli, altrimenti si scopre una volta e resta in cache. - Messaggi di errore specifici al posto dell'invito generico a ricontrollare: "su %s non esiste né un account né un canale di nome %s", "il feed utente di Lemmy esiste solo dove l'account è registrato", "l'istanza richiede autenticazione".
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- Pixelfed, tramite il feed Atom pubblico del profilo (
-
v1.9.1
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 8sreleased this
2026-09-17 22:52:41 +02:00 | 43 commits to main since this releaseFixed
- Lo shortcode
[eg_social_timeline]non era più registrato: nella 1.9.0 la rigaadd_shortcode('eg_social_timeline', 'eg_social_timeline_shortcode')stava trafetch_all_feeds()e la funzione dello shortcode, ed è stata rimossa insieme al blocco riscritto. Senza registrazione WordPress non riconosce il tag e lo stampa come testo nella pagina. Lezione: un controllo automatico aveva segnalatoeg_social_timeline_shortcodecome "definita e mai richiamata" e la segnalazione era corretta.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- Lo shortcode
-
v1.9.0
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 8sreleased this
2026-09-17 22:16:17 +02:00 | 44 commits to main since this releaseChanged
- Tutte le piattaforme si configurano allo stesso modo: URL dell'istanza + nome utente. Mastodon chiedeva l'URL completo del profilo mentre Forgejo e PeerTube chiedevano due campi separati, senza alcuna ragione tecnica: il codice spezzava quell'URL nelle stesse due informazioni due righe dopo (
preg_matchinget_mastodon_account_id). - Diggita diventa supporto Lemmy generico. Il fetcher parlava già Lemmy —
/feeds/u/{username}.xmlè il formato dei feed utente Lemmy, e il feed stesso si presenta come "diggita lemmy social" — ma con il dominio inchiodato nel codice. Ora l'istanza è un'impostazione e funziona qualsiasi istanza Lemmy. Il nome sulle schede viene dal dominio:diggita.comresta "Diggita",lemmy.mlè "Lemmy",sh.itjust.worksè "Itjust" (un sottodominio corto viene saltato). - Le impostazioni delle versioni precedenti vengono convertite alla lettura: l'URL Mastodon viene spezzato, Diggita diventa un'istanza Lemmy, i limiti per piattaforma sono riportati. L'opzione non viene riscritta: il database si allinea al primo salvataggio.
- Il vero logo Lemmy sostituisce un segnaposto disegnato a mano, e si aggiunge l'icona Pleroma (entrambe da Simple Icons, CC0).
Added
- Rilevamento del software di un'istanza del fediverso via
/.well-known/nodeinfo(in cache 7 giorni): Pleroma e Akkoma ottengono nome e icona propri invece di quelli di Mastodon, che sarebbe come marchiare Forgejo col logo di GitHub. L'href del documento nodeinfo viene accettato solo se punta allo stesso host dell'istanza, altrimenti sarebbe un SSRF servito su richiesta. - Salvando un'istanza che non espone l'API pubblica arriva una spiegazione invece del silenzio. Misurato sul campo: Mastodon e Pleroma/Akkoma rispondono al lookup senza autenticazione; GoToSocial e Friendica rispondono 401; Misskey e Sharkey usano un'API propria; Pixelfed risponde al lookup ma reindirizza gli stati al login.
- Esito per piattaforma nelle impostazioni: dopo ogni aggiornamento della cache il plugin registra quanti contenuti ha portato ciascuna piattaforma configurata e mostra un avviso per quelle vuote, con il motivo quando lo conosce (istanza che richiede autenticazione, account non trovato, feed Lemmy chiesto all'istanza sbagliata).
Fixed
- Il parser del profilo accettava solo la forma
/@utente: un indirizzo legittimo come/users/utentenon corrispondeva,fetch_mastodon()restituiva un array vuoto e Mastodon spariva dalla timeline senza un avviso, perché il log stava dietroEG_SOCIAL_TIMELINE_DEBUGche èfalsenei pacchetti. Ora riconosce anche/users/utentee@utente@istanza. - Nel parser il delimitatore della regex era
#e la classe conteneva[^/?#]: il carattere chiudeva l'espressione in anticipo (Unknown modifier ']') e ogni URL veniva rifiutato. Trovato dai test prima del rilascio. - Gli URL delle istanze vengono normalizzati e validati in un solo punto (
normalize_instance()): solo HTTPS, host privati e riservati rifiutati.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- Tutte le piattaforme si configurano allo stesso modo: URL dell'istanza + nome utente. Mastodon chiedeva l'URL completo del profilo mentre Forgejo e PeerTube chiedevano due campi separati, senza alcuna ragione tecnica: il codice spezzava quell'URL nelle stesse due informazioni due righe dopo (
-
v1.8.1
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 8sreleased this
2026-09-17 21:16:56 +02:00 | 45 commits to main since this releaseFixed
- Il contrasto si calcola dal colore, non si deduce dallo schema. Nella 1.8.0 testo, bordi, badge, link e icone seguivano lo schema colori globale: una scheda nera con schema "sempre chiaro" restava con testo e icone scuri sul nero. Ora il plugin misura il rapporto di contrasto WCAG del colore scelto per la superficie e sposta il primo piano sulla palette che contrasta di più (nessuna soglia arbitraria: si confrontano i due contrasti e vince il maggiore).
- Le icone sui chip dei filtri leggono token propri (
--egst-chip-icon-*) invece di seguire la scheda: con una scheda scura si schiarivano pur stando su chip chiari.
Added
- Sfondo delle schede Trasparente: la timeline diventa una lista senza superfici, con il solo bordo a delimitare i post (l'ombra viene rimossa, su una superficie trasparente sarebbe un artefatto).
- Avviso nel pannello quando il colore personalizzato non raggiunge il minimo WCAG AA (4.5:1) con nessuna delle due palette di testo, con il rapporto misurato: un viola o un grigio medio non permettono testo leggibile e tacerlo non aiuterebbe.
Changed
- Sezione Aspetto semplificata: via l'impostazione Schema colori e le coppie di colori chiaro/scuro. Ogni superficie ha un solo menu (trasparente · preset neutro · segue il browser del visitatore · colore personalizzato) e un solo colore.
- Etichette dello stile icone riscritte in "Colori delle piattaforme" e "Un solo colore (quello del testo)": le icone SVG sono sagome monocromatiche senza colore proprio, è il foglio di stile a dipingerle. Se un file SVG porta i propri
fill, quelli vincono e l'impostazione non ha effetto su quella piattaforma. - Il foglio di stile non contiene più nessuna
@media (prefers-color-scheme: dark): i colori sono organizzati in due palette sorgente (--egst-light-*,--egst-dark-*) e in token attivi che le leggono. La media query viene emessa nel CSS inline solo se una superficie segue il browser, oppure se entrambe sono trasparenti e non c'è alcun colore da misurare. - Le impostazioni salvate con la 1.8.0 vengono convertite alla lettura (
color_scheme+ coppie di colori → una scelta e un colore per superficie), senza riscrivere l'opzione: il database si allinea al primo salvataggio dal pannello.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
-
v1.8.0
StableAll checks were successfulAuto Release on version bump / release (push) Successful in 9sreleased this
2026-09-17 19:59:59 +02:00 | 46 commits to main since this releaseAdded
- Nuova sezione Aspetto nelle impostazioni: schema colori (sempre chiaro / sempre scuro / segue il browser del visitatore), sfondo della timeline, sfondo delle schede e stile delle icone di piattaforma.
- Lo sfondo del contenitore della timeline si imposta in modo indipendente da quello delle schede, con una coppia di colori distinti per schema chiaro e scuro (preset trasparente/neutro oppure colori personalizzati).
- Stile icone selezionabile: colori brand oppure monocromatico (le icone monocromatiche seguono il colore del testo, quindi diventano bianche sulle schede scure).
Fixed
- Le icone delle piattaforme erano sempre nere: i file SVG Simple Icons non hanno l'attributo
fill, quindi le regolecolor:del foglio di stile restavano inerti e sulle schede scure le icone diventavano invisibili. Aggiuntofill: currentColor, colore per piattaforma anche sui chip dei filtri e varianti brand schiarite sullo schema scuro.
Changed
- ⚠️ Il tema scuro non è più imposto dal browser. Il default è ora "sempre chiaro": la
@media (prefers-color-scheme: dark)si applica solo scegliendo "segue il browser del visitatore". Per riavere il comportamento della 1.7.2 impostare Schema colori = "Segue il browser del visitatore". - Tutti i colori del CSS passano da custom properties (
--egst-*) dichiarate sul contenitore.eg-social-timeline: un CSS personalizzato può ridefinire il tema in un punto solo invece di inseguire ogni singola regola. I due blocchi di token scuri (classe e media query) sono volutamente duplicati: in CSS puro una@medianon si può raggruppare con un selettore di classe. - Il messaggio "nessun post disponibile" è racchiuso nel contenitore della timeline, così eredita i colori scelti.
readme.txt:Tested up toallineato a WordPress 7.1.
Accessibility
- L'elemento
<title>delle icone SVG non viene più rimosso dalla sanitizzazione kses, così ogni icona conserva il proprio nome accessibile.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads