You are viewing archived documentation for v0.13. Go to latest →

Roadmap

What's been released and what's coming next.

Released

v0.13 — Mobile & On-Device

  • Mobile always-on background mode: foreground service, wake lock, WiFi lock, AlarmManager keepalive
  • Custom native RecordingService with persistent notification (bird icon, recording stats, pause state)
  • Battery optimization exemption prompt on startup
  • Fresh MQTT connection on foreground return (handles Android WebSocket suspension)
  • Remote satellite log retrieval via MQTT (hub requests, satellite responds with logs)
  • Get Logs button on satellite detail page (Pi: journalctl, mobile: in-app logs)
  • Mobile app OTA updates: self-hosted APK distribution via hub API
  • In-app update banner with download prompt (version check on startup)
  • Platform admin: upload APK, manage releases, force update toggle
  • Build script auto-upload with API key auth
  • Nginx 200MB upload limit for APK files
  • Detections overview: species grouped by count with time range tabs (today/week/month/year), server-side sorting
  • Species profile revamp: hero image + stats layout, full paginated detection list with filters/sort
  • First-of-day/season changed from per-satellite to per-tenant
  • Remote satellite log retrieval via MQTT (Get Logs button)
  • ConfidenceRing shared component (used on detections overview and analytics)
  • Lightbox click no longer triggers parent navigation

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.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)

v0.15 — Mobile & On-Device (continued)

  • Field notes UI (standalone field journal page)
  • On-device inference (TFLite on phone)
  • Native push notifications
  • Mobile always-on background mode with persistent notification icon
  • Alerts/notifications system revamp (fully configurable)

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