This repository was archived by the owner on Jul 6, 2026. It is now read-only.
v0.4.0 — Robustness & Contracts
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/stateAPI now includeserrorfield for frontend error display- Removed
ansi_to_html()function (40 lines of duplicated ANSI parsing)
Shared-Core Fix (Rule 5)
sys.pathhack is now temporary (insert → import → remove → clean path)- Removed
sys.pathmanipulation from desktop/app.py
Dead Code Removal (Rule 1)
- Removed unused
art_lines_limitedcomputation - Fixed stale TUI help text
Install
Download Spottt.dmg, drag to Applications.