testerpaykit 0.4.0
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 byTesterPayKitConfig.enableInviteCodeOnboarding. - Navigation flow in bugs:
TpkNavigatorObserver+ breadcrumb-basednavigationFlow()ship the screen path that led to a bug (inappSnapshot.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_versionsingle source of truth —kTpkSdkVersion(lib/src/version.dart), used by the session + bug-report + submission paths; keep in sync withpubspec.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). environmentdetection recognises.local/.lanmDNS + all RFC-1918 private ranges aslocal(a dev build onhttp://*.local:18080was mislabelledprod).- 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:
SharedPreferencesto 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 contextcrash_contexts- Crash information and stack tracesbreadcrumbs- User journey trackingsession_end_feedbacks- Session completion feedbackdevice_id_metadata- Device ID rotation managementevents- Comprehensive event trackingsessions- 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 ORMbattery_plus(^7.0.0) - Battery level detectionconnectivity_plus(^7.0.0) - Network connectivitydevice_info_plus(^11.1.0) - Device informationshake(^3.0.0) - Shake gesture detectionshared_preferences(^2.3.5) - Persistent storagefreezed(^2.5.7) - Immutable modelsjson_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)