1 Commits
Author SHA1 Message Date
Alby96andClaude Fable 5.1 02acd6059b Stato e cronologia dopo il rilascio 5.0.0
La 5.0.0 è sul registro e nelle release di Gitea; i documenti dicono cosa manca
perché i workflow girino (runner e segreto) e qual è il passo successivo
(installazione su Unraid e test sul conto demo).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-23 14:22:54 +02:00
2 changed files with 11 additions and 3 deletions
+6
View File
@@ -2,6 +2,12 @@
Formato: una voce per sessione di lavoro, con data. Le voci più recenti in alto.
## 2026-09-23 — 5.0.0 rilasciata; workflow Gitea Actions; guida Unraid
- **Versione 5.0.0**: tag `v5.0.0`, immagine `192.168.30.23:3000/alby96/encelado:5.0.0` e `:latest` sul registro dei container di Gitea, release con la cartella portabile e il template Unraid allegati (catena `-t:Rilascia`).
- `.gitea/workflows/ci.yml` (compilazione con avvisi come errori, test, `docker build` a ogni push) e `release.yml` (immagine sul registro e release a ogni tag `v*`, idempotente rispetto alla catena). Servono un runner e il segreto `REGISTRY_TOKEN`, oggi assenti.
- `deploy/unraid/README.md`: installazione passo per passo (registro in HTTP, template, campi, primo avvio, aggiornamento).
## 2026-09-23 — 5.0, Fasi 6-9: solo container, interfaccia web, Docker e Unraid, pulizia
- **Ritirata la finestra WPF** (D-28, ADR-0007): `src/Encelado.Bot` diventa la libreria `src/Encelado.Engine`; l'eseguibile è `src/Encelado.Server` (Kestrel, nessun NuGet) che ospita il motore e serve l'interfaccia. Chiavi eToro da variabili d'ambiente o dal file cifrato `etoro.keys.enc` (AES-256-GCM, `ENCELADO_KEY_PASSPHRASE`) al posto di DPAPI. Cartelle `/config` e `/data` nel container, `Documenti\Encelado` fuori.
+5 -3
View File
@@ -1,10 +1,10 @@
# Stato del lavoro
Aggiornato: 2026-09-23 (sessione 5.0, Fasi 6-9 concluse: il piano 5.0 è completo).
Aggiornato: 2026-09-23 (5.0.0 rilasciata: tag, immagine sul registro di Gitea, release; workflow Actions aggiunti).
## Fase in corso
**Piano 5.0 concluso** (`docs/PIANO_5.0.md`): tutte le fasi 0-9 sono fatte. Il bot è `Encelado.Server` (Kestrel + motore + interfaccia web incorporata) e gira nel container (ADR-0007, ADR-0008); la finestra WPF non esiste più (D-28). Versione di sviluppo 5.0.0 in `Directory.Build.props`; **il rilascio 5.0.0 non è ancora stato fatto** (tag, immagine sul registro di Gitea, release): lo decide l'utente con `dotnet msbuild build/Release.proj -t:Rilascia -p:Versione=5.0.0` dopo il push del ramo.
**Piano 5.0 concluso** (`docs/PIANO_5.0.md`): tutte le fasi 0-9 sono fatte. Il bot è `Encelado.Server` (Kestrel + motore + interfaccia web incorporata) e gira nel container (ADR-0007, ADR-0008); la finestra WPF non esiste più (D-28). **Rilascio 5.0.0 fatto** il 2026-09-23 con la catena: tag `v5.0.0` (commit `e2e471f`), immagine `192.168.30.23:3000/alby96/encelado:5.0.0` e `:latest` sul registro dei container di Gitea, release `http://192.168.30.23:3000/Alby96/Encelado/releases/tag/v5.0.0` con `Encelado_5.0.0_portabile.zip` e `encelado-unraid-5.0.0.xml` allegati. Ramo `main` spinto. Prossimo passo: installazione su Unraid dal template e test sul conto demo.
## Fatto nell'ultima sessione (2026-09-23, Fasi 6-9)
@@ -12,11 +12,13 @@ Aggiornato: 2026-09-23 (sessione 5.0, Fasi 6-9 concluse: il piano 5.0 è complet
- **Fase 7 — interfaccia web Material 3** (`Web/wwwroot`, vanilla): navigation rail 80/256 px (drawer sotto 600 px), barra con orologi UTC e fuso, selettore della valuta (USD, EUR, GBP, CHF, JPY, AUD, CAD, NZD con tasso dalle quotazioni e tooltip in USD), AVVIA/FERMA, KILL-SWITCH con «chiudi anche le esterne»; dashboard con sei KPI (incluso il margine), tabella dei basket (cards da telefono), card evento/eToro/Telegram, attività, banner; **Storico ordini** (ordini, posizioni classificate, profitti per periodo con curva SVG, CSV); Log con filtri; Impostazioni con configurazione validata, chiavi eToro, ripristino in cinque passi, Ricerca, Diagnostica (con bonifica), Informazioni (versione, build, commit da `AssemblyMetadata`); temi scuro/chiaro. `HistoryBuilder` nel Core; `SnapshotJson`, `SampleSnapshot`, `SettingsService` nell'Engine; comando `learn` nello strumento (`Learn.cs`); `ui.displayCurrency/theme/navExpanded` e coppie di conversione nel polling.
- **Fase 8 — Docker e Unraid**: `Dockerfile` multi-stage (build, **test**, publish, runtime `aspnet:10.0` + gosu + tzdata), `deploy/docker/entrypoint.sh` (TZ, PUID/PGID), `docker-compose.yml`, `.dockerignore`, `HEALTHCHECK --health`; `deploy/unraid/encelado.xml` (Container v2, icona `assets/encelado.png` raw da Gitea, D-29) e README; `build/Release.proj` senza Inno Setup: `Pubblica` framework-dependent, `Docker`, `Pacchetto` (zip + template + tag), `Rilascia` (push dell'immagine sul registro di Gitea + release); VS Code con F5 sul server (`Encelado (server)`, `Encelado (campione)`, backtest) e attività Docker. Immagine `192.168.30.23:3000/alby96/encelado:5.0.0` (346 MB) costruita dalla catena (`-t:Docker -p:Versione=5.0.0`, senza tag) con 210 test verdi nello stadio Linux e provata: avvio, semina di `/config`, permessi 99:100, `/api/health`, token, sonda `--health`, nessun avviso di Kestrel o di `useradd`. Il primo arresto con `docker stop` **non** era pulito (SIGKILL dopo la grazia): corretto con `PosixSignalRegistration` per SIGTERM in `Program.cs` e **verificato**: `docker stop` chiude in 1 s con «SIGTERM: arresto» ed exit 0.
- **Avvio in locale (richiesta dell'utente)**: sandbox `deploy/local/` (`config/` = `/config`, `data/` = `/data`, ignorata da git) usata da F5 (`Encelado (server)`, `ENCELADO_CONFIG_DIR` + `ENCELADO_DATA_DIR`, che ora vale anche fuori dal container), dagli script `scripts/run-dev.ps1|.sh`, `run-docker.ps1|.sh` (compose, token `sviluppo`), `screenshots.ps1|.sh` e dalle attività di VS Code (`avvia in locale (script)`, `avvia in docker`, `ferma docker`, `screenshot`); provati tutti e tre i modi e lo script degli screenshot. `/api/health` in `--sample` non finge più un motore acceso.
- **Rilascio e Actions**: push di `main`, token Gitea salvato nel credential manager di Git del PC (da `build/gitea.json`), registro `192.168.30.23:3000` dichiarato `insecure-registries` in Docker Desktop (`%USERPROFILE%\.docker\daemon.json`, backup accanto), `-t:Rilascia -p:Versione=5.0.0` verde (210 test, immagine, tag, push, release). Workflow `.gitea/workflows/ci.yml` (build, test, docker build a ogni push) e `release.yml` (immagine sul registro e release a ogni tag `v*`) sul modello documentato in Rea; **sul server non c'è nessun runner** e manca il segreto `REGISTRY_TOKEN`: finché non ci sono, i workflow restano in coda e il rilascio si fa dal PC (`docs/DOCKER.md`, «Gitea Actions»). Guida all'installazione su Unraid in `deploy/unraid/README.md`.
- **Fase 9 — documenti e pulizia**: ADR-0007, ADR-0008, `docs/DOCKER.md`, `docs/UI_GUIDELINES.md`, `README.md` con gli screenshot (`docs/img/`), `CLAUDE.md`, ARCHITECTURE, RUNBOOK, KNOWN_ISSUES, GLOSSARY, DATA_SOURCES, ML_AND_LEARNING, QUESTIONS (D-28, D-29, D-36, D-37 risposte), POSTMORTEM (gli «accrediti» erano crediti demo per ogni ordine ridotto), skill aggiornate, `build/README.md`. **Codice morto rimosso**: progetto WPF, DPAPI, test WPF, `UiRenderTests`, ~45 membri mai usati (statistiche di ricerca, `Psi`, `EmptyContextProvider`, `EnvironmentKeyStore`, display helper dello snapshot, `INotifyPropertyChanged` in `SettingField`, …). Test nuovi: `EmbeddedUiTests`, `WebHostTests`, `HistoryBuilderTests`, `KeyStoreTests`; suite a **210 verdi**.
## Prossimi passi
1. **Rilascio 5.0.0** (utente): push del ramo, `-t:Rilascia -p:Versione=5.0.0` (richiede Docker acceso, `build/gitea.json` con permesso `package`, registro `192.168.30.23:3000` dichiarato `insecure-registry`), poi installazione su Unraid dal template.
1. **Installare su Unraid** dal template (`deploy/unraid/README.md`: registro HTTP da dichiarare a Docker di Unraid, template dall'URL raw, `ENCELADO_WEB_TOKEN` e chiavi demo) e avviare il test sul conto demo.
Registrare un runner Gitea Actions (act_runner su Unraid) e il segreto `REGISTRY_TOKEN` se si vuole che `ci.yml` e `release.yml` girino.
2. Riaccendere il Demo nel container per 24 ore di verifica: contatore «orfane» a 0, `orders.jsonl` senza `Unknown` irrisolti, `sizing_bound = margin` sui primi ingressi; kill-switch a mano con verifica di piattezza; fermare il container un'ora con un basket aperto per vedere il recupero; messaggi Telegram reali.
3. Revisione visiva dell'interfaccia con l'utente (gli screenshot sono dal campione `--sample`); eventuali ritocchi ai testi e ai tooltip.
4. Avviso Telegram sui feed fermi da più di un'ora (resta in KNOWN_ISSUES).