v0.14.17
Rate Limiting & Onboarding UX Updates
New Features
Add global rate limit circuit breaker and auto-retry for HTTP 429 responses, ensuring more resilient API communication and reducing the risk of overwhelming network resources (#220).
Introduce a dedicated demo user rate limit tier, allowing smoother demo experiences without interfering with production users (#208).
Polish daemon install user experience with dynamic call-to-action (CTA) labels, confetti animation on successful installation, and auto-scroll support for improved onboarding flow (#205).

Improvements
- Replace wizard tab navigation with a stepper pattern for a more intuitive onboarding and configuration experience (#210).
- Improve default subnet descriptions and hide Unknown/None subnet types in labels, leading to clearer network topology representations (#214).
- Order SNMP credentials by specificity and validate responses, increasing the chance of accurate device discovery (#217).
- Streamline SNMP credential fallback logic, now trying both custom and "public" credentials for more reliable SNMP data collection (#219).
- Pass SNMP credentials through to port scanner and validate SNMP responses, further improving device identification (#218).
- Improve feedback and validation during daemon install, ensuring users are promptly informed about connection status (#205).
- Use consistent 'organization' terminology and move onboarding use case descriptions to localization (i18n), providing clarity and internationalization support (#212).
- Add help text to onboarding organization and network fields, making it easier for new users to understand required inputs (#213).
- Require at least one network per organization to prevent incomplete setups (#215).
- Upgrade onboarding test feedback with improved footer CTAs, connection detection, and clearer copy (#211).
- Deduplicate toasts on rate limit errors to prevent notification spam (#222).
- Increase stagger to 500ms and enforce minimum 3s wait for rate limit gate, preventing drain stampede and random jitter (#223).
- Replace wizard tab navigation with a stepper pattern for improved usability (#210).
- Update analytics cookie consent description to reflect current usage (#221).
- Disable analytics tracking (PostHog) for all /share/ routes to protect user privacy (#216).
- Include reason in delete forbidden error toast, giving users clearer feedback when deletion fails (#224).
- Make UsecaseStep component use inline warning for improved visual feedback (#225).
Bug Fixes
- Fix discovery sessions that could remain stuck in Starting/Started state, allowing users to more reliably launch scans (#202).
- Fix rate limit wait time always showing 0 seconds, providing accurate feedback for users affected by rate limiting (#226).
- Remove left-over diagnostic console logs from rate limit code, reducing unnecessary output (#201).
- Fix analytics leaks and demo embed issues for more robust privacy management (#227).
Full Changelog: https://github.com/scanopy/scanopy/compare/v0.14.16...v0.14.17