Skip to content

v0.8.0 — Audit profond : dead code, bugs, sécurité, perfs

Choose a tag to compare

@Gheop Gheop released this 12 Apr 07:12
· 55 commits to main since this release
03aa3ec

🔍 Audit complet du codebase

Zéro nouvelle feature, 100% qualité. Après la série v0.7.x (wake word, voice commands, X11 cleanup), pause pour nettoyer le code accumulé.

Code mort supprimé

  • `_CatsetMarker` + `_CATSET_COLOR_DEF` (vestige du color-tinting v0.3.0 supprimé en v0.5.0)
  • `self.color_def` + paramètre `color_def_obj` dans `CatInstance.init`
  • `_check_deps()` méthode vide + appel dans `do_activate`
  • `active_ids` (legacy `color_id` set) dans `SettingsWindow._build`
  • `self._entry_window` (attribut jamais lu)
  • Imports inline (re, math.log) → top-level

Bugs corrigés

  • `for/else` piège dans `_apply_sequence_offset_compensation` — le `else` s'exécutait quand la boucle ne breakait pas, pas quand `_sequence` était None. Bug logique subtil corrigé.
  • Double `now = time.monotonic()` dans `_check_encounters`
  • 10+ attributs dynamiques sur CatInstance maintenant initialisés explicitement dans `init` au lieu d'être créés à la volée via `getattr()` dans 4000 lignes de code

Sécurité

  • Test socket déplacé de `/tmp/` vers `$XDG_RUNTIME_DIR/` + `chmod 0600` — n'importe quel user du système pouvait se connecter avant
  • Timeout DoS — `settimeout(5.0)` sur les deux sockets après `setblocking(True)`
  • Log d'avertissement avant `--break-system-packages` dans l'auto-updater
  • Commentaire explicite sur le trade-off des permissions des credentials

Optimisations

  • pil_to_surface — RGBA→BGRA via PIL split/merge au lieu d'une boucle Python (~50x plus rapide)
  • _sprite_floor_y + _sprite_center_x — via PIL getbbox() au lieu d'un scan pixel par pixel (C-level)
  • metrics.track() — accumule en mémoire, flush tous les 30s + au shutdown (avant: 2-3 écritures disque/sec pendant un chat actif)
  • math.log sorti de la boucle hot-path dans memory.py

353 passed / 0 failed, ruff clean

L'auto-update va attraper cette version au prochain lancement.

🤖 Generated with Claude Code