testerpaykit 0.4.0 copy "testerpaykit: ^0.4.0" to clipboard
testerpaykit: ^0.4.0 copied to clipboard

Privacy-first Flutter SDK for app testing with pay-by-use testers. Local-first data capture with weekly summaries.

Changelog #

All notable changes to TesterPayKit will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.4.0 - 2026-06-03 #

Consolidated entry — the CHANGELOG had drifted (last entry 0.1.0 while the reported sdk_version was hardcoded inconsistently at 0.1.0/0.2.0). This release introduces a single source of truth (kTpkSdkVersion, kept in sync with pubspec.yaml) and folds in the batches since 0.1.0.

Added #

  • In-widget notification feed: server auto-notifies the tester (bug accepted/fixed/rejected, retest assigned, reward) → "Nachrichten" inbox in the FAB with an unread badge.
  • Runtime invite-code onboarding: TesterPayKit.loginAnonymous() (parity with the TS SDK) + InviteCodeScreen + persistence; gated by TesterPayKitConfig.enableInviteCodeOnboarding.
  • Navigation flow in bugs: TpkNavigatorObserver + breadcrumb-based navigationFlow() ship the screen path that led to a bug (in appSnapshot.navigationPath).
  • Activity-gated earnings, Session-Details + "Meine Bugs" screens, task-progress auto-detection ("X von Y erledigt"), AI-Tester (gesture injection + remote control), first-tap widget tour.

Changed #

  • sdk_version single source of truthkTpkSdkVersion (lib/src/version.dart), used by the session + bug-report + submission paths; keep in sync with pubspec.yaml.
  • Session lifecycle: background pauses (not ends) the session; foreground resumes; foreground-time clock drives engaged minutes.
  • Durable payment pipeline: reconcile orphaned sessions on launch, periodic weekly-submission, client-idempotent retry.

Fixed #

  • Voice bugs on native (iOS/Android) now transmit the O-Ton transcript + sourceLanguage (were dropped in the native upload payload → tester_title/description/language stayed empty).
  • environment detection recognises .local/.lan mDNS + all RFC-1918 private ranges as local (a dev build on http://*.local:18080 was mislabelled prod).
  • Submission outbox JSON round-trip; branded screens readable on dark-host themes.

0.1.0 - 2025-11-05 #

Added - Phase 1: MVP Bug Reporting & Crash Handling #

Bug Reporting

  • Bug Report Dialog: Comprehensive dialog for reporting bugs with rich categorization
    • Type selection (bug, crash, UI issue, performance, feature request)
    • Severity levels (critical, high, medium, low)
    • Category classification (functional, UI, performance, security, data, network, crash, other)
    • Reproduction steps with frequency tracking
    • Expected vs actual behavior fields
    • Affected feature identification
  • Shake-to-Report: Shake device gesture to instantly trigger bug report dialog
  • Auto-Context Capture: Automatically captures device state, app state, and breadcrumbs
  • Screenshot Support: Database schema ready for screenshot and screen recording attachments

Crash Handling

  • Automatic Crash Detection: Flutter error and platform exception capture
  • Post-Crash Reporting: Crash report dialog shown on next app launch
  • Full Crash Context: Complete crash information including:
    • Stack traces
    • Device snapshots (OS, model, battery, network)
    • App snapshots (version, build, memory)
    • User journey breadcrumbs
  • Battery Integration: Real-time battery level and charging state capture via battery_plus
  • Network Integration: Network type and connectivity status via connectivity_plus
  • Memory Tracking: Basic memory tracking structure (platform-specific implementation required)
  • Crash Report Dialog: Post-crash dialog with optional notes and submission

Session Management

  • Automatic Session Tracking: Start, end, duration, and activity metrics
  • Session End Dialog: Structured feedback collection at session completion
    • Duration worked
    • Overall experience rating
    • Issues encountered count
    • Quality assessment
    • Free-form feedback
  • Session Stats: Screen views, taps, and event counts
  • Session Breadcrumbs: Complete user journey tracking

Tester Dashboard

  • Daily Dashboard: One-time-per-day tester onboarding screen
  • Test Tasks Display: Show assigned testing tasks with priorities
  • Build Information: Display app version, build number, and environment
  • Focus Areas: Highlight specific features to test
  • Smart Persistence: SharedPreferences to track dashboard views

UI Components

  • Floating Feedback Button: Always-accessible draggable button
    • Report bug action
    • General feedback action
    • View dashboard action
    • End session action
    • Notification badge with unreported items count
    • Smooth animations and haptic feedback
  • TesterPayKitWrapper: Main wrapper widget that:
    • Shows dashboard on first daily launch
    • Provides floating feedback button
    • Handles shake gesture detection
    • Manages session lifecycle

Data Management

  • SQLite Database: Fast, reliable local storage with Drift ORM
  • Database Tables:
    • bug_reports - Detailed bug reports with all context
    • crash_contexts - Crash information and stack traces
    • breadcrumbs - User journey tracking
    • session_end_feedbacks - Session completion feedback
    • device_id_metadata - Device ID rotation management
    • events - Comprehensive event tracking
    • sessions - Session lifecycle tracking
  • Schema Versioning: Automatic migrations from v1 → v2 → v3
  • Device ID Rotation: Automatic 30-day device ID rotation for privacy
  • Notification Counter: Real-time count of unreported crashes and draft bug reports

Privacy & Security

  • Local-First Architecture: All data stored locally
  • Device ID Management: Privacy-preserving device identification with automatic rotation
  • GDPR Compliance: Privacy-first design principles
  • No Tracking Without Consent: Explicit initialization required

Developer Experience

  • Comprehensive Documentation: Full README with examples
  • Type Safety: Freezed models for immutable data structures
  • Error Handling: Robust error capture and reporting
  • Logging: Optional debug logging via configuration

Dependencies #

  • drift (^2.23.0) - SQLite ORM
  • battery_plus (^7.0.0) - Battery level detection
  • connectivity_plus (^7.0.0) - Network connectivity
  • device_info_plus (^11.1.0) - Device information
  • shake (^3.0.0) - Shake gesture detection
  • shared_preferences (^2.3.5) - Persistent storage
  • freezed (^2.5.7) - Immutable models
  • json_annotation (^4.9.0) - JSON serialization

Technical Details #

  • Flutter SDK: >=3.5.0
  • Dart SDK: >=3.5.0
  • Platforms: Android, iOS, Linux, macOS, Windows
  • Database Schema Version: 3
  • Lines of Code: ~8,500 (excluding generated files)

Known Limitations #

  • Screenshot capture deferred (requires app wrapper architectural changes)
  • Memory tracking basic structure only (native implementation needed)
  • API submission not yet implemented (data stored locally)

0.0.1 - 2025-10-15 #

Added #

  • Initial project structure
  • Basic session tracking
  • Event tracking foundation
  • Database schema
  • API client structure

For detailed usage instructions and examples, see README.md.