Skip to content
This repository was archived by the owner on Jul 6, 2026. It is now read-only.

v0.4.0 — Robustness & Contracts

Choose a tag to compare

@ar-gen-tin ar-gen-tin released this 16 Mar 01:28

Spottt v0.4.0

Applied the Ten Development Rules methodology — boundary-driven, contract-driven, dependency-ordered, staged, isolated, and closed-loop verified.

Unhappy-Path Hardening (Rule 7)

  • All Spotify API calls: max 2 retries, prevent stack overflow
  • OAuth token requests: 15s timeout (no more infinite hang)
  • Audio features/analysis: narrowed exception catches (no more swallowing TypeError)
  • Port conflict: clear error if 8888 or 18899 already in use
  • Connection loss: 3 consecutive failures → "NO CONNECTION" in UI
  • Token refresh: logs failure before triggering re-auth

Contract Cleanup (Rule 2)

  • ArtFrame.to_html() — renders HTML directly from char+color arrays, eliminates ANSI→HTML round-trip
  • /state API now includes error field for frontend error display
  • Removed ansi_to_html() function (40 lines of duplicated ANSI parsing)

Shared-Core Fix (Rule 5)

  • sys.path hack is now temporary (insert → import → remove → clean path)
  • Removed sys.path manipulation from desktop/app.py

Dead Code Removal (Rule 1)

  • Removed unused art_lines_limited computation
  • Fixed stale TUI help text

Install

Download Spottt.dmg, drag to Applications.