Contenuto

Con la versione 0.7.73 Pinakes guadagna una memoria. Non nel senso informatico del termine — quella l’ha sempre avuta — ma nel senso che ora ogni libro del catalogo sa raccontare la propria storia: chi lo ha modificato, quando è stata aggiunta una copia, quale importazione ne ha arricchito i metadati, chi lo ha preso in prestito e chi lo ha riportato.

La cronologia delle attività

In fondo a ogni scheda libro dell’area amministrativa compare adesso una timeline: ogni evento mostra l’operatore, la data e il dettaglio campo per campo di cosa è cambiato — il vecchio valore barrato, il nuovo accanto. La stessa cronologia, estesa a tutta la biblioteca, vive in fondo alla dashboard: un flusso delle attività recenti filtrabile per tipo di evento e per operatore, con una ricerca per titolo o per nome. Il tutto si aggiorna senza mai ricaricare la pagina: filtri, ricerca e paginazione sostituiscono il contenuto al volo, e la lista scorre dentro il proprio riquadro invece di allungare la pagina all’infinito.

Dietro le quinte c’è stata una cura particolare per l’integrità di questo registro: ogni evento viene scritto nella stessa transazione della modifica che descrive, le approvazioni automatiche sono attribuite al sistema e non al lettore che le ha innescate, e la cronologia sopravvive persino alla cancellazione dell’account di un operatore, che resta leggibile per nome nei metadati dell’evento.

Importazioni CSV chirurgiche

La seconda novità risponde a una richiesta concreta (issue #380): quando si importa un CSV che contiene libri già presenti in catalogo, cosa va sovrascritto e cosa no? Fino a ieri la risposta era “tutto”; da oggi la decide il bibliotecario, campo per campo. Diciotto caselle — dodici delle quali per i singoli dati bibliografici: ISBN, EAN, titolo, sottotitolo, anno, lingua, edizione, pagine, formato, prezzo, collana, Dewey — stabiliscono esattamente quali famiglie di dati l’importazione può toccare. Ciò che non è selezionato resta intatto, e anche l’arricchimento via scraping che segue l’import rispetta la stessa selezione.

Un giro di vite su prestiti e impostazioni

Sotto il cofano questa versione porta il risultato di due revisioni complete. La prima ha passato al setaccio la circolazione: le notifiche per i titoli archiviati non si perdono più in silenzio, l’annullamento o la scadenza di un ritiro non può più liberare una copia che è fisicamente fuori con un altro prestito, e le richieste ripetute via NCIP non consumano più una seconda copia. La seconda ha riguardato impostazioni e temi: l’attivazione di un tema inesistente non disattiva più tutti gli altri, il CSS personalizzato del tema viene finalmente renderizzato, e una serie di input sono stati blindati contro valori malformati.

C’è anche una correzione che merita una menzione: una race condition nella cache dei plugin poteva ritardare fino a cinque minuti l’effetto dell’attivazione di un plugin. Ora l’invalidazione usa un contatore di generazione e l’attivazione è immediata, sempre.

I numeri

Ad accompagnare il tutto arrivano circa centoquaranta nuovi controlli automatici — dalla circolazione ai temi, dal contratto della cache al percorso di upgrade — e la suite completa nel browser sale a 145 test. Come sempre, la release è stata costruita due volte per provarne la riproducibilità byte per byte, firmata con l’attestazione di provenienza e verificata su tre canali indipendenti prima dell’annuncio.

L’aggiornamento è disponibile da Amministrazione → Aggiornamenti di ogni installazione, dalla pagina della release su GitHub e, per chi usa Docker, con il consueto pull dell’immagine aggiornata.