BUNNY BOT v1.0.3
================

- Fixed updater path validation on Windows, including trailing-dot/space,
  reserved-name, duplicate, and traversal bypasses.
- Replaced naive version comparison with strict Semantic Versioning rules.
- Preserved the previous runtime log instead of deleting diagnostic evidence
  at every launch, while retaining bounded log rotation.
- Redacted private paths, account/device values, and license data from crash reports.
- Stabilized device licensing across hostname and network-adapter changes while
  retaining and migrating existing v1.0.2 activations.
- Rebuilt Health Check template validation around the actual home, Builder Base,
  Clan Capital, Clan Games, donation, digit, and strategy asset locations.
- Added automated regression, security, integrity, database, and clean-release tests.
- Added a privacy-scanned clean-release workflow that excludes accounts,
  databases, licenses, logs, screenshots, caches, and personal configuration.
- Verified Builder Base navigation, both battle stages, two-by-two troop
  deployment, hero fallback points, loot-cart collection, and safe wall
  upgrading against a live 860x732 emulator.
- Wall upgrades now read the real price colour beside the selected resource:
  an unaffordable red gold price is skipped before any tap, while an affordable
  white gold/elixir price remains usable.
- Added village-specific Army Preparation. Every account stores its own camp,
  spell and siege capacity plus exact unit quantities; the editor calculates
  housing space and refuses oversized plans.
- Army Preparation now uses the three live My Army ``Tap to edit`` rows
  directly. It never opens the recipe dropdown or Saved Recipes.
- Added reliable live ``current/maximum`` reading, per-tap registration checks,
  horizontal reset/scroll for the complete troop and siege catalogs, and safe
  automatic preparation before matchmaking without hard-coding one user's
  accounts or Town Hall level.
- Account export/import now includes independent army plans and forces one safe
  recipe rebuild on a different device.
- Expanded each account plan to include the complete current permanent troop
  catalog, all 18 visible spells (including Skeleton Spell), and all nine siege
  machines. Heroes remain outside training and are detected at deployment.
- When a plan must be prepared, the bot clears only owned troops, spells and
  siege machines from a positively verified My Army page, then fills each
  ``Tap to edit`` drawer. Clan Castle donations are never deleted, and exact
  confirmation-image matching prevents gem or unrelated green-button taps.
- Live-tested My Army recognition, Remove Troops confirmation, exact Okay
  matching, first/last troop cards, Skeleton Spell, Sky Wagon, and horizontal
  troop/siege drawers on LDPlayer 860x732.

BUNNY BOT v1.0.2
================

- Added signed automatic updates with SHA-256, size, and Ed25519 verification.
- Added update download percentage, transferred size, speed, elapsed time, and ETA.
- Added account resource persistence after attacks.
- Added support for event__troop__tetan__50.png deployment count 50.
- Rejected impossible or low-confidence home-resource OCR values and preserved the
  previous valid database value when a new reading cannot be confirmed.
- Added the dedicated Settings close-X template and verified village return before
  continuing account operations.
- Hardened account discovery against OCR spelling variants and repeated end pages.
- Allowed updater replacement of application code under database/ while preserving
  the actual user database under data/.
- Hardened update redirects, ZIP extraction limits, duplicate/path traversal checks,
  rollback, and source-mode restart through Python plus main.py.
- Removed developer screenshots, obsolete branding, caches, logs, databases,
  personal configuration, and build/release output from the clean source package.
- Prevented TH17/TH18 look-alike accounts from being selected as each other
  during automatic resource scans.
- Preserved rejected over-limit OCR evidence so a contradictory tiny reading
  such as gold=1 is sent to independent OCR and otherwise left unread instead
  of overwriting the last valid database value.

LOG41 development fix:
- Preserve plausible five/six-digit Dark Elixir when host OCR returns a tiny suffix fragment.
- Allow legitimate current-resource overflow above estimated Town Hall capacity while retaining global hard limits.
- Retry only missing resource fields on later settled frames.

LOG42 development fix:
- Reconstruct split gold/elixir readings only when a stable host prefix and at
  least two independent rejected local fragments agree on the same legal value.
- Reconstruct split Dark Elixir only when high-confidence host/local three-digit
  fragments form one legal five/six-digit amount.
- Preserve all existing hard ceilings and low-confidence rejection paths.

Updater endpoint maintenance fix
--------------------------------
- Added cache-busting and stricter no-cache headers for Cloudflare R2 manifest checks.
- Added a dedicated HTTP 404 diagnostic for a missing BUNNY-BOT/manifest.json object.
- Added tools/verify_update_server.py for HTTP, JSON, Ed25519, package URL and size checks.
- Added a safe version 0.0.0 maintenance manifest deployment workflow outside the user release.

UI organization and storage-safety development fix
--------------------------------------------------
- Moved Builder Base, Clan Capital, and Statistics to dedicated main navigation pages.
- Kept the Home Village attack page focused on search, attack, surrender, and its designer.
- Changed account discovery to save discovered accounts without automatically visiting every village for resources.
- Kept "Check resources for all villages" as the only full multi-village resource scan action.
- Added an 8 MB runtime-log cap with one rolling backup.
- Added startup pruning for old debug screenshots, crash files, and archived logs to prevent unbounded disk growth.

ULTIMATE EDITION • RELEASE 1 combined development branch
--------------------------------------------------------
- Added a final end-of-round retry for only villages whose resource scan still has a missing field or failed switch/read.
- Return the multi-village resource scan to the village that was active when the scan started.
- Rebranded the visible build as ULTIMATE EDITION • RELEASE 1 while keeping the internal update version at 1.0.2.
- Defined ATTACK EDITION at $3 per 30 days/device for Home Village attacking only.
- Defined ULTIMATE EDITION at $7 per 30 days/device for all features, including Builder Base and Clan Capital.
- Added defense-in-depth license checks to account discovery, manual account loading, and all-village resource scans.
- Migrated signed license tokens out of config.json into a Windows DPAPI-protected per-user store.
- Added protected last-seen time state to detect large backward system-clock changes.
- Added a final build workflow that compiles update_helper.py into BUNNY_BOT_UPDATER.exe and rejects plain .py leakage.
- Added an Inno Setup per-user installer workflow suitable for writable updates under LocalAppData.
