Roadmap
What's been released and what's coming next.
Released
v0.12 — Satellite Detail & Alerts
- Dedicated per-satellite page with full-width sections (activity, schedule, filters, config, biodiversity, expected species, live audio)
- Stats cards row (status, recording, version, location, CPU, storage, uptime, last seen)
- Today's hourly activity bar chart on satellite detail page
- Schedule 24h bar visualization with sun times for all profiles (right-aligned)
- Editable satellite config with override editor (lock, customize, reset)
- Expected species: centered pills with links to species profile (detected only)
- Alert rules: inline rename, duplicate (disabled by default)
- Alert channels: inline rename
- Species profile: share and comment buttons on detection list
- Chart improvements: pixel-based bar heights, date labels, locale-aware formatting
- Weather correlation: detection bar overlay (from bottom), fixed date format bug
- Dashboard: taller trend and activity charts with detection counts
- i18n: satellite status/recording/version translation keys
- Alert rules: "once per species per day" condition, detection date/time in all channels
- Alert deduplication: watcher_processed flag prevents re-evaluation of detections
- Alert messages: removed redundant detection summary (structured fields only)
- Satellite outbox: auto-recreate corrupted SQLite database on startup
- Live audio overhaul: hub-signaled unfiltered streaming via MQTT (live-start/stop/keepalive)
- Live audio: inline base64 via WebSocket, continuous auto-play with chunk chaining
- Force update button: always visible on satellite detail (bypasses version check)
- Satellite: WAV file cleanup on ack, periodic purge of outbox DB entries
- Satellite: git SHA in startup log and update script output
- Mosquitto ACLs for live-start, live-stop, live-audio, update-status topics
- Mobile app: live audio support (subscribe live-start/stop, publish unfiltered chunks)
- Mobile app: BuildKit Gradle cache for faster APK builds
- Expected species scoped to satellite (not global)
- Activity charts: hide future hours on today's view
- Satellite names: ellipsis truncation on detection lists
- Weather chart: fixed detection date offset (timezone)
- Live audio: gapless LiveSpectrogramPlayer with AudioContext streaming, auto-boost compressor, 15s buffer
- Live audio: hidden when satellite not recording, buffering indicator
- Migration chart: primary language only, compact rows, show all species toggle
- Top species: confidence ring chart (avg + max) replacing two columns
- Satellite immediate heartbeat on state change (recording/error/paused)
v0.11 — Satellite Polish & Live Audio
- Pi satellite audio device autodetection (when AUDIO_DEVICE is not set)
- Satellite heartbeat reports "error" state after consecutive capture failures with auto-recovery
- Remote update via MQTT with status feedback and detached script execution
- Git authentication for remote updates (HTTPS token or SSH key via .env)
- Version and audio device logged on satellite startup
- Chunk filter stats: aggregate tracking (processed/sent/rejected by reason) in heartbeat
- Filter stats display in satellite detail panel with pass rate bar
- Per-session filter pass rate on timeline ("X% sent" pill)
- Live audio streaming: "Listen live" on satellite detail with SpectrogramPlayer
- Field notes API and migration (text, photos, weather, location — backend ready)
- First-of-day/first-of-season duplicate alert fix (atomic conditional UPDATE)
- SpectrogramPlayer: auto-boost (peak normalization), buffering indicator, spectrogram alignment fix
- Species profile: sort detections by confidence or date
- Shared detection page: today's count, static OG page for link previews (Discord, Slack, Telegram, etc.)
- Open Graph link previews for bot-detected platforms (Discord, Slack, Telegram, WhatsApp, Twitter, Facebook)
- Reliable remote satellite update via systemd-run transient unit
- Update script: timestamps, retries, error trapping, PATH fix for detached execution
- Comprehensive release protocol documentation
v0.10 — Internationalization (i18n)
- English and French translations (500+ keys, every page)
- Language switcher, locale-aware formatting, translated map popups and heatmap labels
- Singular/plural support via Intl.PluralRules
- Alert messages in tenant's language (species names, labels, rarity reasons)
- First-of-day detection alerts with badge on detection cards
- Start-of-week day preference for heatmaps
- Species images not-found investigation panel with per-species retry
- Public share URLs in alert notifications with species image
- Notification images via Wikipedia direct URLs
- Shared detection page: translated species names, stats, lightbox, user language preferences
- Open Graph link previews (Discord, Slack, Telegram, WhatsApp, Twitter, Facebook)
- SpectrogramPlayer audio preloading with buffering indicator
- French translation quality pass (gender-neutral phrasing, idiomatic terms)
- Timeline session auto-splitting at 600 chunks
- Abbreviated relative times on detection pills
- Species search across all 38 languages, sort by primary language
v0.9 — Analytics & Visualization
- Biodiversity indices (Shannon, Simpson, Evenness)
- Migration pattern heatmaps, weather correlation (Open-Meteo)
- Enhanced detection map (clusters, heatmap, time filter)
- Enhanced dashboard (trend chart, activity bars, biodiversity snapshot)
- Location comparison (Jaccard similarity, shared/unique species)
v0.8 — Smart Alerts & Communication
- Custom alert rules engine (detection, absence, trend triggers)
- 6 notification channels (Email, Slack, Telegram, Google Chat, Discord, Webhook)
- Platform health banner
- Scheduled automatic exports (cron-based CSV/JSON/eBird/iNaturalist)
v0.7 — Species & Location Context
- Per-satellite config overrides with admin lock
- Species profile pages with trend, activity, seasonal data
- eBird expected species integration
- Activity heatmaps (hour x day-of-week)
- Shareable detection links (HMAC-signed)
- Detection comments
v0.6 — Detection Intelligence
- Detection timeline with session-based browsing
- Species filter pills, expand/collapse sessions
- First-of-season detection with badges
- Species accuracy stats from community verification
- Page layout system, server-side sorting/filtering/pagination on all pages
v0.5 — Scalable Architecture
- Hub split into stateless API + single-instance dispatcher
- Redis event bridge, service registry with auto-discovery
- System monitoring page for platform admins
- Comprehensive audit logging (30+ action types)
- Node.js 24, MQTT over WSS
v0.4 — Audio Intelligence
- SpectrogramPlayer (seek, loop, boost, speed, volume)
- Adaptive noise floor + spectral peak SNR filtering
- GPS per detection, satellite config push
- Satellite management with side panel
v0.3 — User Management & Security
- Account management, self-deletion, ownership transfer
- Login rate limiting, account lockout, last login tracking
- Audit log page
- Unified design system (buttons, badges, states)
v0.2 — Satellite Ecosystem
- Recording profiles (dawn chorus, night migration, low power)
- Community verification with keyboard shortcuts
- Android phone satellite app
- Species images from Wikipedia
- Data export (CSV, JSON, eBird, iNaturalist, xeno-canto)
- Multi-language bird names (38 languages)
v0.1 — Core Platform
- Distributed audio capture (Raspberry Pi satellites)
- BirdNET TFLite inference with geo-aware filtering
- Multi-tenant web UI with JWT auth
- Real-time WebSocket alerts for rare species
- Docker Compose deployment with Traefik
Planned
v0.13 — Mobile & On-Device
- Field notes UI (standalone field journal page)
- Mobile app OTA updates
- On-device inference (TFLite on phone)
- Native push notifications
- Mobile always-on background mode with persistent notification icon
- Alerts/notifications system revamp (fully configurable)
v0.14 — Model & Data Management
- Multiple BirdNET model versions with A/B testing
- Audio re-analysis when models improve
- Adjacent clip stitching for longer recordings
- Spectrogram species highlight (frequency band overlay + BirdNET activation/saliency map)
- Data lifecycle (retention enforcement, cold storage archival)
- Research export (structured datasets)
v1.0 — Production Ready
- Unsaved changes confirmation dialog
- Security audit & hardening (GDPR erasure path)
- Two-factor authentication (TOTP)
- Session management (view and revoke active sessions)
- Email notifications (registration, password reset, rare species)
- Rolling updates with zero downtime
- Custom UI components (replace native HTML elements)
- Prometheus metrics, backup strategy, disaster recovery
- Documentation search, API auto-documentation