E' stata pubblicata la nuova release di Caveman.PrivacyGuard
Riepilogo cumulativo di tutte le modifiche da v1.0.2 a v1.2.1.
v1.2.1 (2026-06-02) โ Critical Bugfix Hotfix
๐ Fixed
- Critico: Falsi positivi su Carta d'Identitร Tedesca โ il pattern
\b[A-Z0-9]{9}\babbinato aRegexOptions.IgnoreCaseglobale causava falsi positivi su qualsiasi parola di 9 caratteri (es. "francesco", "contratto", "password") classificandola erroneamente come "German ID Card". Aggiunto(?-i)inline per ripristinare la case-sensitivity corretta.
๐ Added
- Demo: comando
/restoreโ ripristino interattivo dei placeholder da una risposta AI. - Demo: comando
/roundtripโ dimostrazione completa del flusso mask โ AI โ restore client-side.
v1.2.0 (2026-06-02) โ Session Persistence & JSON Config
๐ New Features
ThrowIfDisposed()โ tutti i metodi pubblici lanciano un'eccezioneObjectDisposedExceptionesplicita.GetWhitelist()โIReadOnlySet<string>โ ispezione degli elementi in whitelist.IsWhitelisted(value)โboolโ test rapido sulla whitelist.AnalyzeAsyncโ 4 overload conCancellationTokenper interfacce UI e applicazioni web.AnalyzeBatch/AnalyzeBatchAsyncโ analisi batch in memoria.PrivacySession.Countโ conteggio O(1) senza necessitร di copiare il dizionario.NormalizeNewlines(StringBuilder)โ allocazioni extra azzerate sui caratteri\r\n/\r.LoadCustomJson/LoadCustomJsonFromStringโ caricamento delle regole di mascheramento da JSON.WatchConfig/StopWatching/ConfigReloadedโ supporto all'hot-reload (ricaricamento a caldo) sui file JSON.PrivacySession.ToJson/FromJson/ImportFromJsonโ esportazione e persistenza delle sessioni.IReadOnlySessionโ interfaccia in sola lettura per le sessioni.PrivacyAnalyzer.Loggerโ integrazione conILoggerper la diagnostica di sistema.PrivacyAnalyzer.ValidateRules()โ validazione formale delle regole caricate.GetRule()โ cache O(1) gestita tramiteConcurrentDictionary.netstandard2.0target โ compatibilitร estesa con il mondo .NET Framework.- Demo: aggiunti i comandi
/exporte/validate.
๐ Fixed
Dispose()โ risolto un crash se il lock era ancora in uso: aggiuntocatch(SynchronizationLockException), lasciando il rilascio del lock al Garbage Collector.- Warning nullable: corretti i tipi per
ValidatorRegistry.TryGetโFunc<string, bool>?eContextKeywordsโ!. - Risolte le incompatibilitร con netstandard2.0 relative a
System.Index,Math.ClampeRegexParseException.
๐ง Improved
- Demo: nuovi comandi pratici
/whitelist,/rules,/export,/validate. - README: documentate nel dettaglio tutte le nuove API.
- Creata la classe unificata
RegexHelperper la gestione multi-target. - Armonizzate le
RegexOptionstra net8.0 e netstandard2.0.
v1.1.0 (2026-05-21) โ Placeholder Session System
๐ New Features
PrivacySessionโ mappatura basata sulla sessione per collegare i placeholder ai rispettivi valori originali.- Placeholder univoci
[PG_N]โ sostituiscono il vecchio formato generico[CATEGORY], permettendo il ripristino sicuro dei dati lato client. session.Restore(text)โ ripristina i valori originali all'interno di una risposta generata dall'AI.session.RestoreDetailed(text)โ esegue il ripristino restituendo anche il conteggio accurato delle sostituzioni effettuate.session.MergeFrom(other)โ unisce piรน sessioni basandosi sul valore originale.session.AddOrGet(category, value)โ registrazione pubblica di un placeholder.analyzer.Analyze(input, session)โ overload per eseguire l'analisi inserendo una sessione esplicita.analyzer.RestoreText(text)โ metodo di istanza basato suCurrentSession.PrivacyAnalyzer.RestoreText(text, session)โ helper statico di utilitร .EnableAutoMasking ? Session : nullโ restituisce una sessione nulla quando il mascheramento รจ disabilitato.
๐ Fixed
CurrentSessionโ risolto un bug per cui la proprietร veniva ignorata dagli overload diAnalyze().ReaderWriterLockSlimโ corretto un leak di risorse;PrivacyAnalyzerora implementa correttamenteIDisposable.AddEntryโ ottimizzato il lookup da O(n) a O(1) tramite l'introduzione di unConcurrentDictionarysecondario.Analyze(input, session)โ ora aggiorna correttamente lo stato diCurrentSession.
๐ง Improved
CompiledRuleโ convertito in un tiporecord, sostituendo la precedente tupla a 7 campi.GetLoadedCategories()/GetRule(category)/RemoveRule(category)โ migliorata la gestione del ciclo di vita delle regole.LoadCustomYaml(path, replace: true)โ ora sovrascrive le regole esistenti (replace) invece di appenderle.ClearRules()โ svuota e rimuove completamente tutte le regole.AddToWhitelist/RemoveFromWhitelist/ClearWhitelistโ ciclo di vita completo per la gestione della whitelist.ValidatorRegistry.Unregister(name)/Reset()โ gestione del ciclo di vita dei validatori personalizzati.LoadCustomYamlFromString(yaml)/LoadCustomYaml(path)โ implementazione nativa completa.- I tag
compliance_tagsdefiniti in YAML vengono ora mappati correttamente inComplianceFlags. - Timeout di 3 secondi sui nodi Regex โ difesa integrata contro attacchi ReDoS.
- Gli errori di parsing delle Regex ora includono dettagli sul contesto (categoria di dato e paese).
- Aggiunti i commenti di documentazione XML su tutte le API pubbliche.
- Demo: introdotto il comando
/statusper visionare il conteggio dei placeholder attivi.
Installazione
Collegamenti
- NuGet: https://www.nuget.org/packages/Caveman.PrivacyGuard
- GitHub: https://github.com/francescopaolopassaro/Caveman.PrivacyGuard
- Licenza: MIT
Commenti (0)
Nessun commento ancora.