L'ISBN 9782846391009 n'était pas décodé par l'application, alors qu'il l'était par une application d'essai utilisant zbar, sur le même livre et le même appareil. ⚠️ Le raisonnement qui avait écarté cette piste était faux : CLAUDE.md concluait que « le décodeur n'y est pour rien » à partir de mesures de VITESSE (4-6 ms/frame). La vitesse ne dit rien du taux de réussite. Le décodage quitte donc le C# pour zbar compilé en WebAssembly, dont les assets viennent du paquet ZBar.Blazor. Ce que la bascule apporte, au-delà du code lu : - plus aucun pixel ne traverse le pont JS→C# (un byte[] par frame avant), seule la valeur décodée le fait ; - l'image ENTIÈRE est analysée, à 960 px, là où l'ancienne version recadrait sur la bande centrale à 640 px pour alléger ce transfert — c'était la seconde cause possible des codes non lus, elle disparaît ; - zbar.wasm est chargé À LA DEMANDE, à la première ouverture du scanner. ⚠️ Le composant ZBarCamera du paquet n'est PAS utilisé : il ouvre la caméra lui-même et avale les erreurs. On y perdrait les messages qui distinguent permission refusée, absence de caméra, caméra occupée et contexte non sécurisé, ainsi que facingMode environment (caméra arrière) et l'indication de résolution. Seuls zbar.js et zbar.wasm sont empruntés. Poids, comparaison de deux publish Release complets (somme brotli) : _framework 3 281 558 → 2 978 700 o (−296 Kio au démarrage) total 3 281 558 → 3 125 541 o (−152 Kio) L'écart vient de la traîne que ZXing imposait au trimmer : System.Text.RegularExpressions retombe de 98 374 à 7 137 o, et System.Runtime.Numerics disparaît. ⚠️ Coût assumé : six tests de décodage disparaissent avec IsbnScanner, le décodeur n'étant plus en C#. Le décodage a été vérifié dans le navigateur sur un EAN-13 rendu en canvas — 9782846391009 ressort bien en ZBAR_EAN13 — mais cela reste une vérification, pas un garde-fou. À confirmer avec le livre en main. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
46 lines
2.2 KiB
XML
46 lines
2.2 KiB
XML
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
|
|
|
|
<PropertyGroup>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<Nullable>enable</Nullable>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<!--
|
|
Empreintes WASM désactivées, et donc pas d'import map ni de placeholders dans index.html.
|
|
Raison : quand c'est MaBibli.Api qui publie ce projet, le SDK .NET 10 n'exécute jamais la
|
|
réécriture des placeholders et recopie index.html brut (voir CLAUDE.md). Des noms de
|
|
fichiers stables suppriment le problème à la racine. Le cache-busting reste assuré par le
|
|
service worker, qui compare les empreintes de service-worker-assets.js.
|
|
-->
|
|
<WasmFingerprintAssets>false</WasmFingerprintAssets>
|
|
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.8" />
|
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.8" PrivateAssets="all" />
|
|
<!--
|
|
Décodage des codes-barres : moteur zbar (LGPL-2.1) compilé en WebAssembly.
|
|
|
|
⚠️ Le paquet est référencé pour ses ASSETS STATIQUES (_content/ZBar.Blazor/zbar.js et
|
|
zbar.wasm), pas pour ses composants Blazor. Son composant ZBarCamera ouvre lui-même la
|
|
caméra et AVALE les erreurs (« catch { console.log(error) } ») : on perdrait les messages
|
|
qui distinguent permission refusée, absence de caméra, caméra occupée et contexte non
|
|
sécurisé — précisément ce que CLAUDE.md documente comme durement acquis. On garde donc
|
|
notre scanner-camera.js et on n'emprunte que le décodeur.
|
|
|
|
Remplace ZXing.Net, qui ne lisait pas certains codes-barres pourtant lus par zbar sur le
|
|
même livre et le même appareil (voir CLAUDE.md).
|
|
-->
|
|
<PackageReference Include="ZBar.Blazor" Version="1.1.0" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ServiceWorker Include="wwwroot\service-worker.js" PublishedContent="wwwroot\service-worker.published.js" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\MaBibli.Shared\MaBibli.Shared.csproj" />
|
|
</ItemGroup>
|
|
|
|
</Project>
|