Commit Graph
57 Commits
Author SHA1 Message Date
Alby96andClaude Opus 5 8b9691d692 Sospendi le puntate nella fascia oraria in cui costano il doppio
Su 6060 aste concluse con prezzo e valore noti, la stessa asta non costa uguale a
tutte le ore. Prezzo di chiusura mediano in percentuale del valore del prodotto:
4,6% alle 12 e 5,3% fra le 10 e le 13, contro 8,6% a mezzanotte e 9,7% alle 9. Le
puntate necessarie per vincere seguono la stessa curva: 21-24 nelle ore buone,
26-29 in quelle cattive. Quasi il doppio del costo per lo stesso oggetto.

Il motivo e' che di notte Bidoo sospende le puntate: restano poche aste in corso e
la concorrenza si concentra li'. Le ore di confine, mezzanotte e le nove, sono le
peggiori, perche' c'e' ancora qualcosa da giocare e ci sono tutti addosso.

La fascia predefinita e' 00:00-10:00. Sospende le puntate, NON il monitoraggio:
l'asta resta in stato Attiva, continua a essere seguita e riprende a puntare da
sola alla fine della fascia. E' voluto: le aste lunghe attraversano la fascia, e
fermarle davvero significherebbe perderle invece che risparmiare. Ogni puntata
saltata scrive nel registro il motivo e l'orario di ripresa.

Tre livelli di override, dal piu' specifico al piu' generale: la singola asta
scavalca il prodotto, il prodotto scavalca le impostazioni generali. Un null non
vuol dire "no" ma "non ho un'opinione", ed e' la differenza che permette di
spegnere il filtro su una sola asta senza toccare il resto.

Una fascia a cavallo di mezzanotte (22-6) funziona; inizio uguale a fine vuol dire
filtro spento, che e' l'unica lettura sensata visto che l'alternativa sarebbe non
puntare mai.

Backtest della regola sul duello, completato su tutte le soglie. Sui dossier veri
in cui il bot ha puntato: 13 aste, 366 puntate, zero vittorie. Con soglia 5 le
puntate sarebbero state 49, risparmiate 317 (86,6%), nessuna vittoria persa. Il
risultato tiene da soglia 2 a soglia 10, che e' quanto ci si puo' aspettare da un
campione in cui non si era vinto niente.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
v4.16.0
2026-08-07 15:50:06 +02:00
Alby96andClaude Opus 5 5bac29b0af Densita' della griglia e suggerimento dell'anticipo allineato ai dati nuovi
Il pannello della singola asta consigliava di tenere l'anticipo fra 600 e 2000 ms
e proponeva 800: numeri nati da misure fatte quando il tetto di 40 richieste al
secondo accodava le chiamate e gonfiava il ping. Adesso dice quello che i dati
dicono davvero: tre quarti delle puntate avversarie sono automatiche e scattano a
2 secondi, sotto quella soglia resta solo chi punta a mano, e il predefinito e'
500 ms perche' e' circa nove volte il ping misurato.

Righe della griglia da 28 a 22 px con carattere piccolo: su un cruscotto che
serve a tenere d'occhio molte aste insieme l'altezza e' la risorsa scarsa, e sei
pixel di aria per riga costano una decina di aste sullo schermo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 15:31:36 +02:00
Alby96andClaude Opus 5 9b94e2d405 Ritirati dai duelli con l'autopuntata, e punta a mezzo secondo
La strategia A, dai numeri dei dossier: 5410 aste, 2,08 milioni di puntate.

Bidoo dichiara per ogni puntata se e' automatica o manuale. Le automatiche sono
il 75,3% del totale ma vincono il 46,0% delle aste; le manuali sono il 24,7% e ne
vincono il 53,9%. Una puntata manuale vale 3,6 volte una automatica: 178 puntate
per vittoria contro 634.

Il meccanismo del duello e' stato ricostruito esattamente. L'intervallo mediano
fra due puntate consecutive e' 6,0 s su 2.799.681 intervalli: il timer si azzera
a ~8 s e l'autopuntata scatta a 2 s, quindi 8-2=6. Il ciclo da 13,0 s osservato
nelle prove reali era la somma di 7 s di attesa nostra e 6 s della sua risposta.
Puntare tardi non evita l'autopuntata avversaria: la sveglia, perche' si riarma
quando il suo padrone perde la testa della classifica, non a un orario fisso.

Contro una macchina cosi' non esiste attrito vincibile. Adesso il motore conta le
risposte con la firma dei 6+/-2,5 s e dopo cinque di fila smette di puntare su
quell'asta. Una risposta fuori firma azzera il conteggio invece di scalarlo:
l'errore costoso e' ritirarsi da un'asta che si poteva vincere, non spendere
cinque puntate di troppo.

Rigiocato sui dossier veri in cui il bot ha puntato: 366 puntate spese, 13 aste,
zero vittorie. Con la regola a soglia 3 sarebbero state 31 puntate, 335
risparmiate (91,5%), nessuna vittoria persa.

L'anticipo passa da 1000 a 500 ms. Le due ragioni per stare larghi sono cadute:
il p99,9 del ping a 444 ms era misurato col tetto di 40 richieste al secondo che
accodava le chiamate, e senza tetto il ping sta fra 47 e 78 ms; e la concorrenza
sotto i due secondi non e' fitta ma rada, visto che tre quarti degli avversari
sono autopuntate che hanno gia' sparato.

Il tipo di puntata non viene piu' inventato. In due punti il motore ricostruiva
una puntata da un cambio di prezzo fra due interrogazioni e la marcava "Auto"
comunque: adesso quelle portano un trattino, perche' il tipo non lo ha detto
nessuno. La colonna in cronologia mostra quindi solo tipi dichiarati dal server.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 15:20:34 +02:00
Alby96andClaude Opus 5 20434ca273 Riscatta aprendo il collegamento, e fai scorrere il conto alla rovescia
Due difetti che i registri di tre giorni mostravano chiaramente.

Il riscatto dei buoni giudicava la risposta del sito, e la giudicava male: ogni
singolo tentativo risultava "sessione scaduta: risposta la pagina di accesso" —
6 trovati, 0 riscossi, 6 non riusciti, giro dopo giro per tre giorni — mentre le
puntate arrivavano lo stesso. Il riconoscimento della pagina di accesso scattava
su pagine che di accesso non erano, e il servizio dichiarava di non funzionare
mentre funzionava.

Adesso aprire il collegamento e' il riscatto: si apre, si scrive che e' stato
aperto, e il numero vero lo da' la differenza di saldo, che e' l'unica misura che
non mente. Resta un solo fallimento possibile, l'errore di trasporto, dove il
collegamento non e' stato aperto affatto. Un premio si riscuote una volta sola:
fra i due errori, insistere su un premio gia' preso non costa niente, mentre
dichiarare falliti dei riscatti riusciti riempie il registro di allarmi inutili.
Il giudizio vecchio non e' stato cancellato, e' in GiudicaRisposta.

Il conto alla rovescia in griglia restava fermo fra un poll e l'altro. Il valore
era gia' giusto — si ricava dalla scadenza ancorata all'orologio del server, non
dall'ultimo poll — ma nessuno lo richiedeva finche' non arrivava una risposta, e
nelle prove reali fra un poll e l'altro passava anche un secondo e mezzo:
sembrava un'applicazione bloccata. Un battito da cinque volte al secondo notifica
ora le tre sole proprieta' che dipendono dal tempo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 21:29:05 +02:00
Alby96andClaude Opus 5 feb39ee2de Togli il tetto alle richieste e l'attesa fra i poll: era il collo di bottiglia
Misurato sui registri di tre giorni di prove reali (886 dossier, 4,86 milioni di
interrogazioni). Il tetto globale di 40 richieste al secondo veniva spartito fra
tutte le aste seguite, fino a 31 insieme: la distribuzione risultava tagliata
netta sul limite (p90 39, p99 41, saturo nell'8% dei secondi) e ogni singola asta
finiva interrogata ogni ~596 ms invece dei 220 configurati per la finestra
critica. Con il timer a un secondo restava un solo sguardo prima della scadenza,
e la puntata partiva su una stima della scadenza vecchia di mezzo secondo.

Le quattro soglie di cadenza (lontano/medio/vicino/critico) non descrivevano
quindi niente di reale: qualunque numero ci si scrivesse, il tetto decideva al
posto loro. Adesso non c'e' nessuna attesa fra un poll e il successivo: si
riparte appena la risposta e' arrivata, cioe' ~17 interrogazioni al secondo per
asta con il ping misurato di 57 ms. Resta la sola cadenza allargata per le aste
non ancora cominciate, che non e' una scelta di ritmo: fino all'apertura il
server non ha nulla di diverso da dire.

Senza tetto fisso serviva pero' qualcosa che reagisse, altrimenti l'unico segnale
di "troppe richieste" sarebbe stato un blocco dell'account. Il freno ora lo detta
il server: un 429 o un 503 mette in pausa il polling per un secondo, raddoppiando
fino a otto se insistono, e la pausa si azzera al primo giro riuscito. Le puntate
hanno priorita' Critical e non passano dal freno: se il momento giusto e' adesso,
una pausa preventiva costerebbe l'asta.

Il tetto resta configurabile per chi lo vuole, con 0 = nessun limite come nuovo
predefinito.

Scelta dell'utente, dopo avergli mostrato il rischio: niente tetto, il massimo
che regge la rete.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 18:28:02 +02:00
Alby96andClaude Opus 5 1d578debe2 Togli dal percorso caldo la rilettura dell'intero storico
Sei modifiche chieste in questa sessione, di cui una pesa piu' di tutte le altre.

CompletedAuctionsStore rileggeva e rideserializzava l'intero file a ogni chiamata:
misurati 72 ms su 5876 record, 3,9 MB. Append pagava quel prezzo piu' la
riserializzazione e la riscrittura completa per cambiare un record solo, 120 ms
in tutto, e la chiamata arriva da un gestore di eventi di MainWindow, quindi dal
thread dell'interfaccia, che restava fermo a ogni asta conclusa. Il recupero
delle puntate dei vincitori lo faceva in un ciclo: 4675 aste erano 7,2 minuti di
solo rimescolamento JSON e 17,8 GB scritti sul disco.

Adesso c'e' una copia in memoria invalidata sulla data di modifica del file, cosi'
resta giusta anche se il file viene sostituito da fuori (ripristino di un backup),
e un AppendMany che applica molti record con un salvataggio solo, con un indice
per id perche' il caso per cui esiste non torni quadratico. Il recupero salva a
blocchi di cinquanta e deposita comunque quello che ha in mano quando esce, anche
per annullamento: le richieste gia' fatte sono state pagate al server.

Misurato sullo stesso file: 95 volte piu' veloce, 7,2 minuti diventano 4,5
secondi, 17,8 GB diventano 0,36 GB.

Le altre cinque:

- Il setup si chiama AutoBidder_<versione>.exe.
- I pulsanti di stop sono rossi, sia quello globale sia quelli per asta nella
  griglia: erano gli unici tre senza colore mentre avvia e osserva ce l'avevano.
- La pulizia dello storico sa togliere le aste seguite solo in parte. Non serve
  nessun campo nuovo: il prezzo finale in centesimi e' il totale delle puntate
  dell'asta, quindi il rapporto con i reset osservati dice quanta asta si e'
  vista, e la regola vale anche sullo storico gia' raccolto. Verificata sui dati
  veri: su 5876 aste nessuna supera copertura 1,02, che e' quanto ci si aspetta
  se l'identita' e' giusta.
- La griglia ricicla i contenitori di riga invece di ricrearli.
- Il costo puntata gia' esisteva col predefinito giusto: al suggerimento e' stato
  aggiunto perche' 0,20 e' il numero da tenere.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
v4.15.0
2026-08-06 14:48:54 +02:00
Alby96andClaude Opus 5 5adc4a6526 Passa le note di rilascio dall'ambiente: -p: le spezzava sulle virgole
MSBuild divide il valore di una proprieta' sulle virgole: -p:Note=uno, due
diventa la proprieta' Note=uno piu' un'opzione ` due`, e si finisce su MSB1006
`proprieta' non valida`. Una nota di rilascio in italiano contiene quasi sempre
una virgola, quindi l'attivita' di rilascio si sarebbe rotta al primo uso reale
del prompt delle note.

Le note arrivano ora in AUTOBIDDER_NOTE, che MSBuild legge come proprieta' senza
passare dal parsing della riga di comando. Provato con virgole, apostrofi, due
punti e virgolette: arrivano integri. -p:Note= resta accettato per chi lo passa
a mano senza virgole.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
v4.14.0
2026-08-04 23:02:18 +02:00
Alby96andClaude Opus 5 66e3af043c Riformatta tasks.json come lo scrive il formattatore di VS Code
Solo impaginazione: gli oggetti group e presentation passano da una riga a piu'
righe. Nessuna differenza di contenuto (git diff --ignore-all-space e' vuoto).
Committato per non lasciare l'albero sporco a ogni salvataggio del file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 23:00:08 +02:00
Alby96 9a632b8d62 Aggiungi un elenco di cose da fare nel file Modifiche.txt 2026-08-04 22:51:35 +02:00
Alby96andClaude Opus 5 cb0e838964 Rifiuta il rilascio se il tag non e' arrivato sul remoto
Il push dei tag non porta con se' i commit: a ramo indietro il tag punta a un
oggetto che il remoto non conosce e viene rifiutato. La creazione della release
pero' non falliva — Gitea, non trovando il tag, lo crea da se' sulla testa del
ramo predefinito. Sarebbe stata pubblicata una release che dichiara un commit e
allega il codice di un altro, senza che niente lo segnalasse.

Adesso il tag viene riletto dal remoto dopo il push e il rilascio si ferma se
non c'e', dicendo di spingere il ramo. I commit restano da spingere a mano:
quando farlo lo decide chi lavora, non la catena di rilascio.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 22:45:48 +02:00
Alby96andClaude Opus 5 8954f9aaba Correggi i commenti che indicavano ancora il .csproj come fonte della versione
AppInfo e il .csproj dicevano entrambi di alzare <Version> per pubblicare. Da
quando la versione viene dal tag non e' piu' vero, ed e' il tipo di commento che
fa perdere tempo fra sei mesi: adesso dicono a cosa serve davvero quel numero
(le compilazioni di sviluppo) e dove sta la fonte dei rilasci.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 22:41:55 +02:00
Alby96andClaude Opus 5 94843311b4 Il tag git diventa la fonte unica della versione
Il .csproj non viene piu' riscritto a ogni rilascio: i quattro numeri di
versione arrivano a dotnet publish come proprieta' da riga di comando, ricavati
dal tag su HEAD. Tag, eseguibile, installatore e release portano lo stesso
numero per costruzione invece che per disciplina, e un rilascio non lascia piu'
una modifica al progetto da committare dopo il fatto.

Se HEAD non ha un tag la catena lo crea da se' — numero chiesto o minor
successiva alla piu' alta esistente — ma lo fa in fondo, a installatore
prodotto: un giro fallito non lascia dietro il tag di una versione mai
costruita. Rifiuta di taggare un albero con modifiche non committate, perche'
sarebbe un tag che non indica niente di ricostruibile.

La configurazione di Gitea viene letta prima di compilare: senza token ci si
ferma in due secondi invece che dopo tre minuti di build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 22:38:45 +02:00
Alby96andClaude Opus 5 52e5f68da0 Completa .gitignore con le regole del vecchio repository
.idea/, Thumbs.db e Desktop.ini erano coperte nella cartella BidooBidder ma
non qui. Aggiunte prima di cancellarla, cosi' non si perde nulla.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 22:17:28 +02:00
Alby96andClaude Opus 5 99b3030180 Porta la catena di rilascio nel repository ufficiale
Il progetto viveva in una cartella senza alcun commit: tutto il lavoro stava
solo sul disco. Trasferito qui, dove esiste una storia e un remoto.

Mancava soltanto build/: i sorgenti erano gia' allineati e identici. Nessun
percorso e' stato toccato — Release.proj usa MSBuildThisFileDirectory e
tasks.json usa ${workspaceFolder}, quindi il trasloco non li riguarda.

- build/Release.proj: verifica, backtest, pacchetto e rilascio in un solo file
  MSBuild, senza script. Provato dalla nuova posizione: 287 test verdi,
  installatore prodotto, backtest eseguito.
- build/gitea.example.json: url, owner e repo veri; resta da mettere il token
  in build/gitea.json, che e' ignorato da git.
- build/sostituiti/: i quattro .ps1 rimpiazzati da Release.proj. Entrano qui
  solo per non perderli con la vecchia cartella: da ora sono recuperabili
  dalla storia e si possono cancellare.
- .gitignore: gitea.json (contiene una credenziale), i riepiloghi del backtest
  e i pacchetti in bin/installer.

Versione 4.12.0 -> 4.13.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 22:15:53 +02:00
Alby96 7ca504a70a Add utility classes for theme management, waiting, watched products, and notifications
- Implement ThemeManager for dynamic light/dark theme switching in the application.
- Create Wait class for cancellable delays without exceptions for smoother user experience.
- Introduce WatchedProductsStore to manage and persist watched products in JSON format.
- Add WindowsNotifier for system notifications to inform users of important events.
- Develop ProductViewModel to encapsulate product data and manage UI interactions effectively.
2026-08-04 21:49:53 +02:00
Alby96 551697d98d Aggiunta validazione robusta per campi numerici
Implementata una nuova funzionalità per garantire che tutti i campi numerici accettino solo input validi.
- Introdotta la classe helper `NumericTextBoxHelper` per configurare campi interi e decimali.
- Gestiti input non validi, campi vuoti e normalizzazione dei decimali.
- Applicata validazione a 13 campi numerici in tutta l'applicazione.
- Aggiunto supporto per tastiere internazionali (punto e virgola).
- Aggiornati `MainWindow.xaml.cs`, `CHANGELOG.md` e documentazione.
- Definiti test e casi d'uso per verificare il corretto funzionamento.
2025-11-27 17:29:09 +01:00
Alby96 3db0d946b7 Aggiunti riordinamento e navigazione aste migliorati
- Introdotti pulsanti "Sposta Su" e "Sposta Giù" per il
  riordinamento manuale delle aste nella lista.
- Implementata navigazione con frecce direzionali nella griglia,
  con aggiornamento automatico dei dettagli e scroll.
- Salvato automaticamente l'ordine delle aste su disco.
- Risolto conflitto con GridSplitter per le frecce direzionali.
- Aggiunti log dettagliati per le operazioni di riordinamento.
- Gestiti casi limite (es. asta già in cima o in fondo).
- Migliorata UX con pulsanti chiari e tooltip informativi.
- Aggiornati documentazione e changelog per riflettere le
  modifiche.
2025-11-27 15:47:58 +01:00
Alby96 d08e54657a Migliora gestione visualizzazione latenza asta
- Modificato il binding della colonna "Latenza" in `AuctionMonitorControl.xaml` per utilizzare la nuova proprietà `LatencyDisplay`.
- Aggiunta la proprietà `LatencyDisplay` in `AuctionViewModel.cs` per calcolare dinamicamente la latenza in base allo stato dell'asta.
- Aggiunte notifiche di cambiamento per `LatencyDisplay` per aggiornare correttamente l'interfaccia utente.
- Documentata la proprietà `LatencyDisplay` con commenti XML per migliorarne la comprensione.
2025-11-27 12:42:20 +01:00
Alby96 b810c7f76b Rimuove colonna "Resets" da AuctionMonitorControl.xaml
La colonna "Resets" è stata rimossa dal `DataGrid` in
`AuctionMonitorControl.xaml`. Era legata alla proprietà
`ResetCount` e aveva una larghezza di 60. Questa modifica
semplifica l'interfaccia utente, eliminando un'informazione
non più necessaria.
2025-11-27 12:29:40 +01:00
Alby96 95018e0d65 Aggiunto HtmlCacheService per caching e rate limiting
Introdotto un servizio centralizzato (`HtmlCacheService`) per gestire richieste HTTP con:
- Cache HTML (5 minuti) per ridurre richieste duplicate.
- Rate limiting (max 5 richieste/sec) e concorrenza limitata (3 richieste parallele).
- Retry automatico (max 2 tentativi) e timeout configurabile (15s).
- Logging dettagliato per cache hit, retry e richieste fallite.

Aggiornati i metodi di caricamento dei nomi e delle informazioni prodotto per utilizzare il nuovo servizio, migliorando caching, gestione degli errori e decodifica delle entità HTML.

Aggiunto supporto per il recupero automatico dei nomi generici delle aste e un timer per la pulizia periodica della cache.

Documentato il servizio in `FEATURE_HTML_CACHE_SERVICE.md`. Correzioni minori e miglioramenti alla leggibilità del codice.
2025-11-27 12:24:09 +01:00
Alby96 df9b63dd41 Aggiunta opzione "Ricorda Stato" per le aste salvate
È stata introdotta l'opzione "Ricorda Stato" che consente di ripristinare lo stato esatto (attiva, in pausa, ferma) di ogni asta salvata al caricamento.

- Aggiunto il `RadioButton` "Ricorda Stato" in `SettingsControl.xaml`.
- Gestita la nuova opzione in `MainWindow.EventHandlers.Settings.cs`.
- Aggiornata la logica di caricamento in `AuctionManagement.cs` per supportare "Ricorda Stato".
- Introdotto il salvataggio automatico dello stato delle aste in `ButtonHandlers.cs` e `Commands.cs`.
- Migliorati i log per riflettere il comportamento del sistema.
- Aggiunta la proprietà `RememberAuctionStates` in `SettingsManager` con valore predefinito `false`.
- Migliorata la leggibilità e manutenibilità del codice.

Queste modifiche migliorano la flessibilità e l'esperienza utente, garantendo coerenza dei dati e maggiore chiarezza nei log.
2025-11-26 20:52:48 +01:00
Alby96 7a01251258 Refactoring layout Header AuctionMonitorControl.xaml
È stato aggiornato il layout del `Header` per passare da una struttura compatta su 2 righe a una su 3 righe.

- Aggiunta una nuova `RowDefinition` per gestire la terza riga.
- Modificato il `Padding` del `Border` da `15,10` a `15,8`.
- Aggiornata `Riga 1` per mostrare solo le `Puntate` con margine ridotto.
- Aggiunta `Riga 2` per visualizzare il `Credito Shop` con margini e font ridotti.
- Aggiornata `Riga 3` per mostrare solo le `Aste vinte da confermare`.
- Esteso lo `StackPanel` dei pulsanti di controllo per coprire tutte e 3 le righe.
- Migliorata la leggibilità dei commenti relativi agli indicatori di limite minimo.
2025-11-26 11:58:20 +01:00
Alby96 56484e0bec Aggiunto pulsante "Rimuovi Tutte" e miglioramenti UI
- Aggiunto il pulsante "Rimuovi Tutte" in `AuctionMonitorControl.xaml` per eliminare tutte le aste monitorate.
- Implementato il metodo `RemoveAllButton_Click` in `AuctionMonitorControl.xaml.cs` e registrato il nuovo evento routed `RemoveAllClickedEvent`.
- Aggiunto il gestore `AuctionMonitor_RemoveAllClicked` in `MainWindow.ControlEvents.cs` e collegato l'evento in `MainWindow.xaml`.
- Migliorata la gestione degli errori e aggiunti messaggi di conferma dettagliati.
- Introdotti nuovi metodi di utilità per resettare le impostazioni, pulire la lista utenti e il log di un'asta selezionata.
- Rimosso codice obsoleto per semplificare la base di codice.
2025-11-26 11:37:11 +01:00
Alby96 c199e542ba Aggiunto limite configurabile storia puntate
Introdotta la possibilità di configurare un limite massimo di puntate visualizzabili nella scheda "Storia Puntate" tramite l'interfaccia utente. La nuova proprietà `MaxBidHistoryEntries` è stata aggiunta alle impostazioni e salvata in modo persistente.

- Aggiunti controlli UI per configurare il limite.
- Implementata persistenza della lista `RecentBids` con serializzazione JSON.
- Introdotto il metodo `MergeBidHistory` per unire puntate evitando duplicati e mantenendo ordine cronologico decrescente.
- Sincronizzate le statistiche utenti (`BidderStats`) con la lista `RecentBids`.
- Ripristinata la proprietà `IsMyBid` al caricamento delle aste salvate.
- Ottimizzate le performance con `HashSet` per deduplicazione e limite configurabile.
- Creato il file `FIX_BID_HISTORY_PERSISTENCE.md` per documentare il problema e la soluzione.
- Garantita compatibilità retroattiva con aste salvate.

Questi aggiornamenti migliorano la gestione, la visualizzazione e la persistenza della storia delle puntate, offrendo un'esperienza utente più robusta e intuitiva.
2025-11-26 10:44:04 +01:00
Alby96 d99b5ec923 Aggiunta scheda "Storia Puntate" con aggiornamento live
Introdotta una nuova scheda "Storia Puntate" nel pannello
dell'asta selezionata, che mostra la cronologia delle ultime
puntate in tempo reale. La scheda utilizza un `TabControl`
con due `TabItem`: uno per gli utenti e uno per la storia
delle puntate.

- Creata la classe `BidHistoryEntry` per rappresentare una
  singola puntata, con proprietà come `Price`, `BidType`,
  `Timestamp`, e calcoli formattati.
- Aggiunte proprietà `RecentBids` in `AuctionInfo` e
  `RecentBidsHistory` in `AuctionState` per gestire i dati
  della cronologia.
- Modificato il parsing API in `BidooApiClient` per includere
  la cronologia delle puntate.
- Aggiornato il monitor delle aste (`AuctionMonitor.cs`) per
  sincronizzare i dati della cronologia con il backend.
- Aggiunta la proprietà `BidHistoryEntries` in
  `AuctionViewModel` per il binding della griglia.
- Modificata la UI (`AuctionMonitorControl.xaml`) per
  includere la nuova scheda e personalizzare gli stili.
- Aggiornata la logica di aggiornamento UI in
  `MainWindow.xaml.cs` per gestire i dati della cronologia.
- Documentata la funzionalità in `FEATURE_BID_HISTORY_TAB.md`.
- Aggiunto uno screenshot (`Screenshot 2025-11-25 113552.png`).

Questa funzionalità migliora la trasparenza e fornisce agli
utenti informazioni dettagliate sulle attività recenti,
aiutandoli a prendere decisioni strategiche durante le aste.
2025-11-25 14:35:09 +01:00
Alby96 6795282993 Migliorato auto-login e gestione cookie WebView2
- Introdotto il pre-caricamento di WebView2 per ridurre i tempi di attesa.
- Implementato il pattern TaskCompletionSource per attendere l'inizializzazione di WebView2 (timeout 60s).
- Centralizzata la logica di verifica e importazione automatica dei cookie.
- Mostrate istruzioni di login solo se necessario, migliorando l'UX.
- Risolti problemi di timeout e threading durante l'inizializzazione di WebView2.
- Puliti e ottimizzati i log per maggiore chiarezza.
- Rimossa la gestione manuale dei cookie, ora automatizzata.
2025-11-25 11:33:50 +01:00
Alby96 62d5cebf9c Refactoring gestione sessione e persistenza impostazioni
Introdotto `SessionService` per centralizzare la gestione della
sessione utente, migliorando la separazione delle responsabilità
e la testabilità. Risolto il problema del caricamento del cookie
di autenticazione all'avvio e garantita la persistenza delle
checkbox di esportazione (`IncludeMetadata`, `RemoveAfterExport`,
`OverwriteExisting`).

Ottimizzata la gestione della barra degli indirizzi del browser
con aggiornamenti locali immediati. Applicato il pattern "Load ?
Modify ? Save" per il salvataggio delle impostazioni, migliorando
la simmetria e la leggibilità del codice. Logging centralizzato
e semplificato per eventi rilevanti.

Aggiornata la documentazione per riflettere i cambiamenti e
verificati i test per garantire il corretto funzionamento.
2025-11-24 12:00:13 +01:00
Alby96 ee67bedc31 Aggiunta calcolo valore prodotto e miglioramenti UI
Implementato il calcolo del valore reale dei prodotti in asta,
includendo il prezzo "Compra Subito", spese di spedizione e
risparmio stimato. Aggiunta una nuova sezione "Info Prodotto"
nella UI per visualizzare i dettagli estratti e i calcoli.

- **AuctionMonitorControl.xaml**: Aggiunta sezione fissa per
  mostrare informazioni prodotto e calcolo valore.
- **AuctionMonitorControl.xaml.cs**: Gestiti eventi per il
  caricamento e aggiornamento delle informazioni prodotto.
- **MainWindow**: Integrati handler per il calcolo e refresh
  delle informazioni prodotto.
- **AuctionInfo.cs**: Aggiunte proprietà per gestire prezzo
  "Compra Subito", spese di spedizione e limiti di vincita.
- **ProductValueCalculator.cs**: Nuova utility per calcolare
  il valore del prodotto e parsare informazioni dall'HTML.
- **AuctionViewModel.cs**: Binding per visualizzare risparmio,
  costo totale e convenienza nella UI.
- **Documentazione**: Aggiornata con dettagli sull'algoritmo
  di calcolo e layout UI.

Fix:
- Risolto problema di encoding UTF-8 per emoji nella UI.
- Migliorato parsing HTML per prezzi e limiti di vincita.

TODO:
- Testare parsing su più aste e gestire edge cases.
- Implementare caricamento automatico delle informazioni.
2025-11-21 16:55:21 +01:00
Alby96 f124f2e4e8 Riorganizzazione pulsanti e miglioramenti usabilità
- Riorganizzati i pulsanti azione asta in layout 2x2:
  * Aggiunti pulsanti per Browser Interno, Browser Esterno,
    Copia URL ed Esporta (funzionalità in sviluppo).
  * Migliorati stile, tooltip e colori per maggiore chiarezza.
- Aggiunti nuovi RoutedEvent e gestori per le azioni.
- Migliorata gestione errori per "Copia URL":
  * Controllo asta selezionata e retry per clipboard occupato.
- Rimosse emoji non visualizzate per compatibilità universale.
- Arricchiti i log con messaggi dettagliati per ogni azione.
- Creata documentazione dettagliata delle modifiche e test.
- Migliorata compatibilità e robustezza generale.
2025-11-21 10:30:49 +01:00
Alby96 570c2e53d6 Aggiunti limiti configurabili per i log
- Introdotta una nuova sezione "Limiti Log" nell'interfaccia utente per configurare:
  - Numero massimo di righe di log per asta (default: 500).
  - Numero massimo di righe di log globale (default: 1000).
- Aggiunte proprietà in `SettingsManager` per salvare/caricare i limiti.
- Applicati i limiti al log globale e ai log delle aste:
  - Log globale: rimozione automatica dei paragrafi più vecchi.
  - Log per asta: ottimizzato `AddLog` con `RemoveRange` per migliorare le performance.
- Documentazione dettagliata in `FEATURE_CONFIGURABLE_LOG_LIMITS.md` e `FEATURE_LOG_MAX_LINES.md`.
- Migliorata la gestione della memoria, riducendo il rischio di rallentamenti o crash.
- Test e checklist definiti per verificare il corretto funzionamento.
2025-11-21 09:41:08 +01:00
Alby96 4bfcf147b4 Miglioramenti UI e gestione puntate server
- Implementato focus automatico sulla riga successiva dopo la
  cancellazione di un'asta, con scrolling e reset focus.
- Utilizzo dei dati ufficiali del server per il conteggio
  delle puntate residue e usate su asta, con fallback manuale.
- Corretto il parsing dei campi della risposta server
  (campo 2: puntate residue, campo 5: puntate usate).
- Risolto il mancato aggiornamento immediato della UI
  (colonna "Clicks" e banner "Puntate residue").
- Aggiunto logging dettagliato per il parsing della risposta
  server e il debugging di eventuali problemi.
- Documentate le modifiche in file dedicati con scenari di
  test e istruzioni per il troubleshooting.
2025-11-20 23:01:53 +01:00
Alby96 c37b5b9f1e Aggiorna soluzione per Visual Studio 18 e rimuove Template
La soluzione `AutoBidder.sln` è stata aggiornata per supportare
Visual Studio 18 (18.0.11217.181), sostituendo la versione
precedente (17.14.36511.14).

Il progetto "Template" (`Template.wapproj`) è stato rimosso
insieme a tutte le configurazioni di build e deploy associate
per le piattaforme Any CPU, ARM, ARM64, x64 e x86 in modalità
Debug e Release.

Le configurazioni di build per il progetto "AutoBidder" sono
state mantenute, ma alcune configurazioni di Release sono state
modificate per utilizzare `Any CPU` invece di configurazioni
specifiche per piattaforma.
2025-11-20 14:48:21 +01:00
Alberto Balbo 29a567bb1d Miglioramenti UX e gestione impostazioni predefinite
* Rimosso il pulsante "Vai" e reso il campo URL non editabile.
* Introdotta persistenza delle impostazioni predefinite (es. anticipo).
* Aggiunto metodo `LoadDefaultSettings()` per caricare i defaults.
* Logging dettagliato per salvataggio e applicazione impostazioni.
* Ottimizzata gestione aste con valori predefiniti da configurazione.
* Fix per evitare puntate inutili quando l'utente è già vincitore.
* Logging migliorato per strategia di puntata e decisioni di skip.
* Aggiornata documentazione con dettagli sui fix implementati.
* Aggiornato `CHANGELOG.md` con le nuove funzionalità e correzioni.
2025-11-20 14:11:37 +01:00
Alberto Balbo f017ec0364 Aggiornamento alla versione 4.0.0
* Aggiunto `BooleanToOpacityConverter` per gestire opacità dinamica.
* Introdotto nuovo sistema di timing con `BidBeforeDeadlineMs`.
* Aggiunta opzione `CheckAuctionOpenBeforeBid` per maggiore sicurezza.
* Implementato polling adattivo (10ms-1000ms) e cooldown di 800ms.
* Migliorata gestione pulsanti globali con supporto `AUTO-START`/`AUTO-STOP`.
* Fix per il tasto `Canc` e focus automatico sul `DataGrid`.
* Fix per avvio singola asta senza necessità di "Avvia Tutti".
* Aggiornati formati CSV/JSON/XML con nuovi campi.
* Migliorata gestione cookie con endpoint unico `buy_bids.php`.
* Miglioramenti UI/UX: tooltip, formattazione prezzi, feedback visivo.
* Aggiornata documentazione e changelog per la versione 4.0.0.
2025-11-19 18:43:40 +01:00
Alberto Balbo 6036896f7d Refactoring e nuove funzionalità per AutoBidder v4.0
* Aggiornamento alla versione 4.0.0
* Refactoring architetturale: introdotte partial classes e UserControls modulari per migliorare manutenibilità e leggibilità.
* Aggiunti nuovi UserControls: `AuctionMonitorControl`, `BrowserControl`, `SettingsControl`, `StatisticsControl`.
* Introdotto supporto per WebView2 per il browser integrato.
* Migliorata gestione delle aste: aggiunta/rimozione tramite URL o ID, configurazione predefinita.
* Nuove funzionalità di esportazione: supporto CSV, JSON, XML con opzioni configurabili.
* Logging avanzato: codifica colore per severità e auto-scroll.
* Tema scuro moderno e miglioramenti UI/UX: sidebar di navigazione, griglie virtualizzate, icone emoji.
* Persistenza dati: salvataggio automatico di aste e impostazioni in file JSON.
* Documentazione aggiornata: `README.md`, `CHANGELOG.md` e nuovi file di supporto.
* Miglioramenti alla sicurezza: cookie di sessione salvati in modo sicuro con DPAPI.
* Preparazione per future estensioni: placeholder per funzionalità avanzate e struttura modulare.
2025-11-17 16:01:22 +01:00
Alberto Balbo 8717a3b6ef Aggiornamento alla versione 4.0.0
- Aggiunta dipendenza per WebView2 per integrare un browser.
- Introdotto layout a schede (TabControl) per organizzare le funzionalità.
- Aggiunto browser WebView2 per navigazione e aggiunta aste.
- Implementata gestione delle impostazioni di esportazione (CSV, JSON, XML).
- Aggiunta funzionalità di caricamento e analisi delle aste chiuse.
- Introdotta gestione dei cookie di sessione tramite la scheda "Impostazioni".
- Creato controllo personalizzato `SimpleToolbar` per layout modulare.
- Migliorata gestione dello stato utente e fallback per dati mancanti.
- Rimossi stili e animazioni obsolete per semplificare il codice.
- Salvate le impostazioni utente in un file JSON locale.
- Correzioni di bug e miglioramenti di leggibilità del codice.
2025-11-04 23:05:49 +01:00
Alberto Balbo 967005b96a Supporto per aste chiuse e miglioramenti UI
- Aggiornamento alla versione Microsoft.EntityFrameworkCore.Sqlite 8.0.0.
- Aggiornamento alla versione Microsoft.Windows.SDK.BuildTools 10.0.26100.6584.
- Migliorata l'interfaccia per l'inserimento di più URL/ID di aste.
- Aggiunti pulsanti per "Aste Chiuse" e "Esporta" in MainWindow.
- Creata finestra "Aste Chiuse" per visualizzare e gestire aste chiuse.
- Implementato scraper per estrarre dati da aste chiuse.
- Aggiunto supporto per esportazione dati in CSV, JSON e XML.
- Introdotto contesto Entity Framework per statistiche delle aste.
- Aggiunto servizio per calcolo e gestione delle statistiche.
- Gestite preferenze di esportazione con salvataggio in file JSON.
2025-11-03 14:24:19 +01:00
Alberto Balbo 59d7e0c41f Aggiornamento alla versione 3.0.0
- Aggiornato il titolo e l'introduzione per riflettere le funzionalità.
- Aggiunti badge per la versione (3.0) e .NET (8.0).
- Riorganizzato il sommario e rinominato in "Indice".
- Espansa la sezione "Caratteristiche principali" con nuovi dettagli.
- Riformattati i requisiti di sistema per maggiore chiarezza.
- Riscritta la guida "Installazione e avvio" con istruzioni dettagliate.
- Aggiunta la sezione "Configurazione della sessione (cookie)".
- Ampliata la gestione delle aste con dettagli su operazioni e griglia.
- Inserite strategie consigliate per diversi scenari d'uso.
- Arricchita la sezione tecnica con dettagli su polling e puntate HTTP.
- Aggiunta descrizione su persistenza e diagnostica (es. esportazione CSV).
- Espansa la sezione FAQ con nuovi scenari di risoluzione problemi.
- Introdotte note su sicurezza e responsabilità nell'uso dell'app.
- Semplificata la sezione "Supporto" rimuovendo riferimenti privati.
- Aggiunte note tecniche per sviluppatori sui file principali del progetto.
- Rimossa la sezione "Changelog sintetico" e integrati i dettagli altrove.
- Riformattata la sezione "Licenza" per maggiore chiarezza.
2025-10-30 13:02:13 +01:00
Alberto Balbo daf9ea31fc Miglioramenti logica e gestione attacco finale
- Aggiunta proprietà `FinalAttackThresholdSec` (0.8s) in `AuctionInfo.cs`.
- Implementata strategia di "quick re-poll" in `AuctionMonitor.cs` per confermare stato critico prima dell'attacco finale.
- Migliorata gestione delle eccezioni in `BidooApiClient.cs` con log dettagliati e tentativi alternativi.
- Registrazione del numero di offerte rimanenti dopo successo in `BidooApiClient.cs`.
- Ottimizzati messaggi di log per maggiore chiarezza e trasparenza.
- Rimossa logica obsoleta e aggiunti ritardi minimi tra tentativi di polling rapido.
2025-10-29 17:12:46 +01:00
Alberto Balbo cb30e1fb08 Ottimizzazioni e introduzione protocollo final attack
- Rimosso binding di `MaxClicks` in `MainWindow.xaml` e aggiunto evento `TextChanged`.
- Migliorata leggibilità del codice in `MainWindow.xaml.cs` con rientri e ritorni a capo.
- Evitata duplicazione dei log per aste aggiunte in `MainWindow.xaml.cs`.
- Migliorata gestione della validità del cookie con fallback su scraping HTML.
- Aggiunta proprietà `IsAttackInProgress` in `AuctionInfo.cs` per gestire lo stato di attacco finale.
- Introdotto protocollo di "final attack" in `AuctionMonitor.cs` per puntate critiche sotto 0,5s.
- Migliorata gestione dei log e comportamento delle puntate normali in `AuctionMonitor.cs`.
- Aggiunto metodo `PlaceBidFinalAsync` in `BidooApiClient.cs` per puntate ottimizzate.
- Ridotti log ridondanti e migliorata gestione degli errori.
2025-10-28 23:27:53 +01:00
Alberto Balbo 717dc44b3b Aggiornamento alla versione 3.0.0
- Rimosse funzionalità legacy legate a WebView2.
- Introdotto uno stile globale per i pulsanti.
- Semplificata l'interfaccia con gestione tramite griglia unica.
- Aggiunti comandi per avviare, mettere in pausa e fermare aste.
- Introdotta gestione manuale dei cookie tramite dialog.
- Aggiunti dialog per configurare sessione e aggiungere aste.
- Migliorata la persistenza con salvataggio sicuro (DPAPI).
- Rifattorizzate statistiche per utilizzare `BidHistory` e `BidderStats`.
- Ottimizzato il polling per ridurre il carico di sistema.
- Aggiornata esportazione CSV con dati più dettagliati.
- Introdotti nuovi modelli dati per utente e banner aste.
- Rimossi file di test manuale e codice obsoleto.
- Aggiornata documentazione per riflettere le modifiche.
- Aggiunta nuova icona dell'applicazione.
- Migliorata la sicurezza eliminando il salvataggio in chiaro dei cookie.
2025-10-28 12:45:08 +01:00
Alberto Balbo fef7b909e7 Aggiornamento alla versione 2.10.0
- Aggiornato il titolo e aggiunta una descrizione dettagliata.
- Rimosso l'indice originale e aggiunto un sommario sintetico.
- Introdotta una nuova sezione "Caratteristiche principali".
- Rivisti e semplificati i requisiti di sistema.
- Riorganizzata la sezione "Installazione e avvio" con istruzioni chiare.
- Aggiunta una guida rapida per il primo utilizzo.
- Dettagliate le modalità operative: Asta Singola e Multi-Asta.
- Inserite strategie consigliate per diversi scenari d'uso.
- Aggiunta una sezione tecnica su polling adattivo e click HTTP.
- Descritte persistenza dei dati e gestione file locali.
- Riviste e chiarite le impostazioni principali e per-asta.
- Aggiunti dettagli sull'interfaccia utente e i controlli.
- Introdotta una sezione per diagnostica ed esportazione.
- Aggiunte FAQ e risoluzione dei problemi comuni.
- Inserito un disclaimer sui rischi e responsabilità d'uso.
- Creato un changelog sintetico con focus sulle novità della v2.10.
- Fornite informazioni su supporto, contributi e note tecniche.
- Ribadita la licenza privata del progetto.
2025-10-24 16:52:24 +02:00
Alberto Balbo 139a9d62b7 Aggiornamento alla versione 4.0.0
- Aggiunta proprietà `MaxClicks` per limitare le puntate per asta.
- Migliorata gestione dei log con livelli di severità e colori.
- Sostituzione di `TextBox` con `RichTextBox` per log avanzati.
- Aggiunto pulsante per cancellare il log globale.
- Migliorata gestione dei pulsanti globali (Avvia, Pausa, Ferma).
- Ottimizzato il monitoraggio per aste in pausa e polling ridotto.
- Aggiunto controllo per mettere in pausa aste al raggiungimento di `MaxClicks`.
- Aggiunti nuovi stili per pulsanti e miglioramenti visivi in UI.
- Aggiunto convertitore `StartButtonOpacityConverter`.
- Aggiunta icona dell'applicazione (`app.ico`) come risorsa WPF.
2025-10-24 16:29:08 +02:00
Alberto Balbo 4e16f50aeb Aggiunta infrastruttura avanzata per gestione aste
- Introdotta la classe `BidooApiClient` per interagire con le API Bidoo.
- Aggiunto `SessionManager` per la gestione sicura delle sessioni.
- Creato `TestBidooApi` per test manuali delle API.
- Implementato `CsvExporter` per esportare dati e statistiche in CSV.
- Aggiunto `PersistenceManager` per salvare e caricare aste in JSON.
- Introdotto `AuctionViewModel` per supportare il pattern MVVM.
- Migliorata l'interfaccia utente con layout moderno e stili dinamici.
- Aggiornata la documentazione in `README.md` per riflettere le nuove funzionalità.
- Aggiunte classi per rappresentare informazioni, stato e storico delle aste.
- Ottimizzate le richieste HTTP per simulare un browser reale.
2025-10-23 23:10:46 +02:00
Alberto Balbo db1d99d424 Aggiornamento alla versione 2.7.0
- Riorganizzato layout verticale per "Utenti" e "Log" con GridSplitter verticale e altezza minima garantita (80px).
- Resi simmetrici i margini tra "Utenti" e "Log" (8px sopra e sotto).
- Implementata navigazione automatica ai Preferiti all'avvio in modalità Multi-Asta, con controllo URL per evitare ricaricamenti inutili.
- Aggiunta griglia utenti per-asta con numero di puntate per utente, ordinata in modo decrescente e affiancata al log con GridSplitter.
- Aggiornata documentazione con riferimenti dettagliati alle modifiche (es. `v2.7_VERTICAL_LAYOUT.md`, `v2.6_UI_POLISH.md`).
2025-10-20 12:04:06 +02:00
Alberto Balbo 114697a1b2 Aggiornamento alla versione 2.7.0
- Riorganizzata la sezione "Utenti" e "Log" in layout verticale.
- Sostituiti `ColumnDefinitions` con `RowDefinitions` in XAML.
- Aggiunto `MinHeight=80` per evitare il collasso delle sezioni.
- Modificato il `GridSplitter` per supportare il resize verticale.
- Migliorata l'usabilità con margini simmetrici e layout coerente.
- Testata la funzionalità di ridimensionamento e aggiornamento dinamico.
2025-10-15 21:59:28 +02:00
Alberto Balbo 995732f379 Aggiornamento alla versione 2.6.0
- Introdotta la modalità Multi-Asta per monitorare più aste contemporaneamente.
- Aggiunta griglia Multi-Asta con timer, prezzo e dettagli per asta.
- Implementata gestione per-asta con impostazioni individuali e log dedicati.
- Aggiunti pulsanti separati per pausa/riprendi con feedback visivo.
- Introdotta griglia utenti per-asta con aggiornamento real-time e ordinamento.
- Resi simmetrici i margini e migliorata la leggibilità dell'interfaccia.
- Implementata navigazione automatica ai Preferiti all'avvio in modalità Multi-Asta.
- Ottimizzato il layout con GridSplitter ridimensionabile tra griglia e log.
- Rimosso il pulsante di pausa globale e semplificata la gestione UI.
- Evidenziate le aste in pausa e le puntate dell'utente con colori distintivi.
2025-10-14 21:30:01 +02:00
Alberto Balbo 28ef09d91f Ottimizzazioni UI e performance click handler
- Rimosse righe inutilizzate e semplificato layout in `MainWindow.xaml`.
- Aggiunti pulsanti di navigazione accanto alla barra indirizzi.
- Convertite operazioni UI in asincrone con `Dispatcher.BeginInvoke`.
- Introdotto aggiornamento griglia bidder ogni 2 secondi per ridurre lag.
- Migliorata gestione log con `AppendText` e controllo dimensione ottimizzato.
- Ridotto polling dinamico per timer bassi (minimo 20ms).
- Ottimizzato script di click con cache bottone e timeout ridotto (500ms).
- Implementato multi-click parallelo con delay minimo (20ms).
- Parsing JSON e lettura impostazioni resi più efficienti.
- Rimosso codice obsoleto e semplificata gestione eventi.
2025-10-14 12:26:51 +02:00
Alberto Balbo b12b57be81 Miglioramenti al tracciamento e riorganizzazione progetto
- Rimosso codice obsoleto per il tracciamento dei bidder.
- Introdotto tracciamento in tempo reale del bidder corrente.
- Aggiunta variabile `lastKnownBidder` per monitorare cambiamenti.
- Migliorata gestione dei reset del timer e registrazione bidder.
- Aggiunta funzione `StopAutomation` per arresto centralizzato.
- Aggiornati log per riflettere il nuovo approccio in tempo reale.
- Rinominato progetto da `Mimante` a `AutoBidder`.
- Creato nuovo file `AutoBidder.csproj` e aggiornati riferimenti.
- Rimossi script e funzioni non più utilizzati.
- Migliorata leggibilità e aggiunti controlli sui dati.
2025-10-07 22:30:55 +02:00
Alberto Balbo 8bc123ff85 Aggiornamento alla versione 1.0.2.0
- Aggiornata la versione dell'applicazione nel file `Package.appxmanifest` da `1.0.1.0` a `1.0.2.0`.
2025-10-07 11:32:11 +02:00