Skip to content

Commit aa87bc8

Browse files
committed
release: CA-O 2.2.5 corrige apertura de Overclock
- OverclockPage.xaml usaba Rectangle con estilo de Border: XamlParseException al navegar. - Ahora Border como las otras 10 paginas; regresion cubierta por XamlStyleTargetTests. - Suite 1695 passed, 0 failed. Instalador sin firmar (sin CAO_SIGN_THUMBPRINT).
1 parent 43a0944 commit aa87bc8

7 files changed

Lines changed: 190 additions & 30 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ Formato basado en [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/).
44

55
## [Unreleased]
66

7+
## [2.2.5] - 2026-10-11
8+
9+
### Corregido
10+
- **La pestana Overclock no abria (XamlParseException al navegar).** `OverclockPage.xaml` aplicaba el estilo `CaoHeaderAccentBarStyle` (TargetType Border) a un `Rectangle`; el compilador XAML no detecta el desajuste y la pagina reventaba en `InitializeComponent`, dejando el frame en la pagina anterior. Ahora usa `Border` como las otras 10 paginas. Regresion cubierta por `XamlStyleTargetTests` (3 tests que comparan cada Style usado contra el TargetType de DesignTokens).
11+
12+
### Probado
13+
- Suite completa: **1695 passed, 0 failed** en Release (2.2.4: 1692; +3 tests de estilos XAML).
14+
715
## [2.2.4] - 2026-10-11
816

917
### Anadido

‎README.md‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# CA-O 2.2.4 — Plataforma nativa de rendimiento, diagnóstico y optimización para Windows 11
1+
# CA-O 2.2.5 — Plataforma nativa de rendimiento, diagnóstico y optimización para Windows 11
22

33
> **Principio operativo:** diagnosticar primero → recomendar con evidencia → aplicar en transacción → verificar → revertir si falla. Sin promesas numéricas falsas, solo hechos medibles.
44
@@ -7,10 +7,10 @@
77
[![WinUI 3](https://img.shields.io/badge/WinUI%203-00B7C3?style=flat-square&logo=windows&logoColor=white)](https://microsoft.github.io/microsoft-ui-xaml/)
88
[![Build](https://img.shields.io/badge/build-passing-brightgreen?style=flat-square)](https://github.com/Pyromesis/CA-O/actions)
99
[![Tests](https://img.shields.io/badge/tests-1692%20passed-brightgreen?style=flat-square)](#-pruebas)
10-
[![Release](https://img.shields.io/badge/release-v2.2.4-blue?style=flat-square)](https://github.com/Pyromesis/CA-O/releases/tag/v2.2.4)
10+
[![Release](https://img.shields.io/badge/release-v2.2.5-blue?style=flat-square)](https://github.com/Pyromesis/CA-O/releases/tag/v2.2.5)
1111
[![License](https://img.shields.io/badge/license-privado-lightgrey?style=flat-square)](#licencia)
1212

13-
**Descargas v2.2.4:** [CA-O-Instalador.exe (132 MB, instalador Inno Setup)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O-Instalador.exe) | [CA-O.Setup.exe (135 MB, descargador de un solo exe: baja el paquete y abre el instalador)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O.Setup.exe) | [CA-O-Setup-GUI-x64.zip (88 MB, paquete completo offline)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O-Setup-GUI-x64.zip) | [CA-O-Setup-GUI-x64.exe (instalador con asistente Inno Setup)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O-Setup-GUI-x64.exe) | [SHA256SUMS.txt](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/SHA256SUMS.txt) | [Notas de la versión](https://github.com/Pyromesis/CA-O/releases/tag/v2.2.4) | [Documentación](docs/ARCHITECTURE.md)
13+
**Descargas v2.2.5:** [CA-O-Instalador.exe (132 MB, instalador Inno Setup)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O-Instalador.exe) | [CA-O.Setup.exe (135 MB, descargador de un solo exe: baja el paquete y abre el instalador)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O.Setup.exe) | [CA-O-Setup-GUI-x64.zip (88 MB, paquete completo offline)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O-Setup-GUI-x64.zip) | [CA-O-Setup-GUI-x64.exe (instalador con asistente Inno Setup)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O-Setup-GUI-x64.exe) | [SHA256SUMS.txt](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/SHA256SUMS.txt) | [Notas de la versión](https://github.com/Pyromesis/CA-O/releases/tag/v2.2.5) | [Documentación](docs/ARCHITECTURE.md)
1414

1515
---
1616

@@ -43,7 +43,7 @@
4343

4444
## Resumen ejecutivo
4545

46-
**CA-O 2.2.4** es una aplicación **100% nativa Windows** escrita en **.NET 10 + WinUI 3 (Windows App SDK 2.4)**. No es una colección de tweaks: **mide** hardware, térmicas, red, almacenamiento, drivers y postura de seguridad **antes** de recomendar. Cada cambio pertenece a un **bucket analizado-primero** (`Recommended` / `Optional` / `Experimental` / `SecuritySensitive` / `NotApplicable` / `Blocked`) y se ejecuta bajo el flujo transaccional `PRECHECK → SNAPSHOT → APPLY → VERIFY → COMMIT` con **rollback automático y verificación post-reversión**.
46+
**CA-O 2.2.5** es una aplicación **100% nativa Windows** escrita en **.NET 10 + WinUI 3 (Windows App SDK 2.4)**. No es una colección de tweaks: **mide** hardware, térmicas, red, almacenamiento, drivers y postura de seguridad **antes** de recomendar. Cada cambio pertenece a un **bucket analizado-primero** (`Recommended` / `Optional` / `Experimental` / `SecuritySensitive` / `NotApplicable` / `Blocked`) y se ejecuta bajo el flujo transaccional `PRECHECK → SNAPSHOT → APPLY → VERIFY → COMMIT` con **rollback automático y verificación post-reversión**.
4747

4848
La UI **siempre eleva** (`app.manifest` `requireAdministrator` → UAC en cada inicio) pero **toda mutación privilegiada cruza** al servicio Windows `CAO.Privileged` (SYSTEM) vía **Named Pipe autenticado** con ACL restrictiva, validación de esquema tipado, ventana de 30 s, nonce y protección anti-replay. Sin el servicio, la app opera en **modo solo lectura** (diagnóstico + benchmark disponibles). El servicio es `start= delayed-auto` por diseño: tras un reinicio arranca solo con retardo; si la app lo encuentra aún detenido, lo levanta (`sc start` + espera de readiness con ping al pipe hasta 8 s) al comprobar, o lo re-registra con `Ajustes → Instalar ahora` sin necesitar el repositorio.
4949

@@ -80,7 +80,7 @@ La UI **siempre eleva** (`app.manifest` `requireAdministrator` → UAC en cada i
8080
| **WMI** | System.Management | **10.0.0** | Lectura hardware/termal/batería |
8181
| **Perf** | System.Diagnostics.PerformanceCounter | **10.0.0** | `% DPC Time` / `% Interrupt Time` |
8282
| **Servicios** | System.ServiceProcess.ServiceController | **8.0.1** | `CAO.Privileged` como `BackgroundService` |
83-
| **Build** | `Directory.Packages.props` + `Directory.Build.props` + `Version.props` (single source `2.2.4`) | Centralizado | Un lugar para bump de versión/paquetes |
83+
| **Build** | `Directory.Packages.props` + `Directory.Build.props` + `Version.props` (single source `2.2.5`) | Centralizado | Un lugar para bump de versión/paquetes |
8484
| **Tests** | xUnit 2.9.2 + Microsoft.NET.Test.Sdk 17.11.1 | — | 1692 tests en Release |
8585
| **Seguridad** | CodeQL + `dotnet audit` + Dependabot + CycloneDX SBOM | CI | Cadena de suministro auditada |
8686

@@ -117,7 +117,7 @@ La UI **siempre eleva** (`app.manifest` `requireAdministrator` → UAC en cada i
117117

118118
| Proyecto | Responsabilidad | Depende de |
119119
|---|---|---|
120-
| `CA-O.Shared` | DTOs, contratos IPC v2 (`IpcProtocol` v2, `Ping`, `GetServiceStatus`), `CaOPaths`, `ErrorCodes CAO-XXX-nnn`, `AppVersion 2.2.4`, `BuildConstants`, `Constants/IpcConstants`, `TimeoutProfile` | — |
120+
| `CA-O.Shared` | DTOs, contratos IPC v2 (`IpcProtocol` v2, `Ping`, `GetServiceStatus`), `CaOPaths`, `ErrorCodes CAO-XXX-nnn`, `AppVersion 2.2.5`, `BuildConstants`, `Constants/IpcConstants`, `TimeoutProfile` | — |
121121
| `CA-O.Core` | `OptimizationCatalog` (93), `OptimizationEngine` transaccional, `RecommendationEngine` + `OptimizationScoreCalculator` (0-100), `GameCompatibilityPolicy` (matriz SAFE/CAUTION/BLOCKED `CAO-GAME-001`), `HealthEngine`, `KnownIssueMatcher`, `CrashRecoveryService`, `Rollback/*` | Shared |
122122
| `CA-O.Infrastructure` | WMI 5 s timeout + `SystemAnalysisService` + `AnalysisStateStore` (atómico, 24 h TTL) + `SnapshotRepository`/`FileSnapshotStore` (TX identity + SHA-256) + `JsonHistoryLogger` (hash-chain) + `SystemBenchmarkRunner` + `Gaming/*` + `Networking/*` + `Storage/*` + `Security/*` + `Windows/*` | Core, Shared |
123123
| `CA-O.Privileged` | Servicio `SYSTEM` + `PrivilegedPipeService` (Named Pipe `CA-O.Privileged.v1`, ACL + `ReplayCache` 30 s, timeout 15 s/conn) + `OptimizationEngine` hosteado + `AdministratorsOnlyAuthorizer` | Core, Infrastructure, Shared |
@@ -156,7 +156,7 @@ BENCHMARK → post-commit, fallo no invalida commit // eventos separados
156156
CA-O.sln (.NET 10 · LangVersion 13 · WinUI 3)
157157
├── src/
158158
│ ├── CA-O.Shared/ # Contratos puros, sin IO
159-
│ │ ├── Constants/ # AppVersion (2.2.4), BuildConstants, CaOPaths, IpcConstants, TimeoutProfile
159+
│ │ ├── Constants/ # AppVersion (2.2.5), BuildConstants, CaOPaths, IpcConstants, TimeoutProfile
160160
│ │ ├── IPC/ # IpcProtocol v2, IpcRequest/Response, Payloads (17 ops)
161161
│ │ ├── Security/ # CommandPolicy, ErrorCodes, CallerIdentity
162162
│ │ ├── Enums/ # RecommendationBucket, RiskLevel, EvidenceLevel, etc.
@@ -219,7 +219,7 @@ CA-O.sln (.NET 10 · LangVersion 13 · WinUI 3)
219219
├── .github/workflows/ci.yml # build + test + CodeQL + dotnet audit
220220
├── Directory.Packages.props # Versiones centralizadas
221221
├── Directory.Build.props # Propiedades MSBuild comunes
222-
├── Version.props # Single source 2.2.4
222+
├── Version.props # Single source 2.2.5
223223
├── global.json # SDK 10.0.400
224224
└── CA-O.sln
225225
```
@@ -677,15 +677,15 @@ Cada perfil es **dinámico** — no es lista fija. Ej. `maximum-power-plan` solo
677677

678678
### Opción A — Un solo exe (lo más fácil)
679679

680-
1. Descarga [CA-O.Setup.exe (135 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O.Setup.exe) — es el único archivo que necesitas
680+
1. Descarga [CA-O.Setup.exe (135 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O.Setup.exe) — es el único archivo que necesitas
681681
2. Ejecútalo (pide UAC) → deriva al instalador gráfico en español: instala app + servicio y abre CA-O. Sin consola: lo trae todo dentro
682682

683683
> Autocontenido, log en `%TEMP%\CA-O-Setup.log`
684-
> Tambien disponible [CA-O-Instalador.exe (132 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O-Instalador.exe): instalador Inno Setup que pone app + servicio + atajos sin pasos extra.
684+
> Tambien disponible [CA-O-Instalador.exe (132 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O-Instalador.exe): instalador Inno Setup que pone app + servicio + atajos sin pasos extra.
685685
686686
### Opción B — Instalador GUI offline (88 MB)
687687

688-
1. Descarga [CA-O-Setup-GUI-x64.zip (88 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O-Setup-GUI-x64.zip) y verifica el hash con `SHA256SUMS.txt`
688+
1. Descarga [CA-O-Setup-GUI-x64.zip (88 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O-Setup-GUI-x64.zip) y verifica el hash con `SHA256SUMS.txt`
689689
2. Descomprime (mantén `ui/`, `service/`, `gui-installer/`, `uninstall/`, `setup/`)
690690
3. Entra en `gui-installer/` → clic derecho **Ejecutar como administrador** en `CA-O.InstallerGui.exe` → UAC Sí
691691
4. Elige destino (`C:\Program Files\CA-O`), atajos Escritorio/Inicio, progress → registra `CAO.Privileged` (`demand`, `failure 86400`) + ARP
@@ -695,7 +695,7 @@ Cada perfil es **dinámico** — no es lista fija. Ej. `maximum-power-plan` solo
695695
696696
### Opción C — Descargador online (135 MB)
697697

698-
1. Descarga [CA-O.Setup.exe (135 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.4/CA-O.Setup.exe)
698+
1. Descarga [CA-O.Setup.exe (135 MB)](https://github.com/Pyromesis/CA-O/releases/download/v2.2.5/CA-O.Setup.exe)
699699
2. Ejecútalo como admin: descarga el paquete `CA-O-Setup-GUI-x64.zip` desde GitHub Releases (requiere internet), deriva al instalador gráfico y continúa solo
700700

701701
> Log: `%TEMP%\CA-O-Setup.log`
@@ -750,7 +750,7 @@ powershell -ExecutionPolicy Bypass -File scripts/build-release.ps1
750750
751751
# Empaquetar (scripts/package.ps1, FullPackageName `CA-O-{versión}-win-x64.zip`)
752752
powershell -ExecutionPolicy Bypass -File scripts/package.ps1
753-
# → artifacts/CA-O-2.2.4-win-x64.zip + .sha256
753+
# → artifacts/CA-O-2.2.5-win-x64.zip + .sha256
754754
755755
# Endurecer ACLs de datos
756756
powershell -ExecutionPolicy Bypass -File scripts/harden-data-acls.ps1
@@ -790,7 +790,7 @@ dotnet test --filter "FullyQualifiedName~GameCompatibility"
790790

791791
## Release y verificación
792792

793-
- **Versión actual:** **2.2.4** — [Releases](https://github.com/Pyromesis/CA-O/releases/tag/v2.2.4) (solo se conserva el último release)
793+
- **Versión actual:** **2.2.5** — [Releases](https://github.com/Pyromesis/CA-O/releases/tag/v2.2.5) (solo se conserva el último release)
794794
- **Artefactos:**
795795
- `CA-O.Setup.exe` (135 MB, descargador single-file con handoff al GUI)
796796
- `CA-O-Setup-GUI-x64.zip` (88 MB, paquete completo offline con `ui/`, `service/`, `gui-installer/`, `setup/`, `uninstall/`)
@@ -801,7 +801,7 @@ dotnet test --filter "FullyQualifiedName~GameCompatibility"
801801
- **Empaquetado:** `scripts/package.ps1` genera ZIP versionado `CA-O-{versión}-win-x64.zip` + hash SHA-256. `scripts/build-release.ps1` publica `ui` y `service` como self-contained y `gui-installer` como self-contained **sin single-file** (requisito WinUI 3)
802802

803803
```powershell
804-
Get-FileHash artifacts/CA-O-2.2.4-win-x64.zip -Algorithm SHA256
804+
Get-FileHash artifacts/CA-O-2.2.5-win-x64.zip -Algorithm SHA256
805805
Get-Content artifacts/release/SHA256SUMS.txt
806806
cat artifacts/sbom/bom.json | ConvertFrom-Json | select -ExpandProperty components | measure
807807
```
@@ -880,4 +880,4 @@ Proyecto privado: no se concede licencia de uso, copia, modificación ni distrib
880880

881881
---
882882

883-
<p align="center"><i>CA-O 2.2.4 — Diagnóstico primero, evidencia después, transacción siempre. Sin promesas, solo hechos medibles.</i></p>
883+
<p align="center"><i>CA-O 2.2.5 — Diagnóstico primero, evidencia después, transacción siempre. Sin promesas, solo hechos medibles.</i></p>

‎Version.props‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<Project>
22
<!-- Single source of truth for versioning (FASE 28). All other files derive from here. -->
33
<PropertyGroup>
4-
<Version>2.2.4</Version>
5-
<AssemblyVersion>2.2.4.0</AssemblyVersion>
6-
<FileVersion>2.2.4.0</FileVersion>
7-
<PackageVersion>2.2.4</PackageVersion>
8-
<ProductVersion>2.2.4</ProductVersion>
9-
<InformationalVersion>2.2.4+$(GHTag)</InformationalVersion>
4+
<Version>2.2.5</Version>
5+
<AssemblyVersion>2.2.5.0</AssemblyVersion>
6+
<FileVersion>2.2.5.0</FileVersion>
7+
<PackageVersion>2.2.5</PackageVersion>
8+
<ProductVersion>2.2.5</ProductVersion>
9+
<InformationalVersion>2.2.5+$(GHTag)</InformationalVersion>
1010
</PropertyGroup>
1111
</Project>
1212

‎installer/CA-O.iss‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
; (lee la versión de BuildConstants.cs y firma con CAO_SIGN_THUMBPRINT si existe)
44

55
#ifndef AppVersion
6-
#define AppVersion "2.2.4"
6+
#define AppVersion "2.2.5"
77
#endif
88
#ifndef RepoRoot
99
#define RepoRoot ".."

‎src/CA-O.Shared/Constants/BuildConstants.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ namespace CAO.Shared.Constants;
1111
public static class BuildConstants
1212
{
1313
// Version - SINGLE SOURCE OF TRUTH
14-
public const string ProductVersion = "2.2.4";
14+
public const string ProductVersion = "2.2.5";
1515
public const string ProductVersionMajor = "2";
1616
public const string ProductVersionMinor = "2";
17-
public const string ProductVersionPatch = "4";
17+
public const string ProductVersionPatch = "5";
1818

1919
// Product Identity
2020
public const string ProductName = "CA-O";

‎src/CA-O.UI/OverclockPage.xaml‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@
3333
Width="64"
3434
ShowCaption="False" />
3535
</Grid>
36-
<Rectangle Height="3"
37-
Margin="0,4,0,12"
38-
HorizontalAlignment="Left"
39-
Width="72"
40-
Style="{StaticResource CaoHeaderAccentBarStyle}" />
36+
<Border Style="{StaticResource CaoHeaderAccentBarStyle}" />
4137

4238
<InfoBar x:Name="ReadOnlyNotice"
4339
Severity="Informational"

0 commit comments

Comments
 (0)