Releases: mikezamayias/famon
Releases · mikezamayias/famon
Release list
v1.5.0
Changed
- Refactored
monitorandfiltercommands to share a single stream-processing pipeline (MonitoringPipeline, now part offamon_core). Behavior is preserved; per-line cost stays flat.
Fixed
monitorno longer crashes withStateError: Stream has already been listened toon child-process startup.process.stderrwas being drained twice (outer command setup plus the new pipeline); the outer drain is gone.famon filter --limit Nno longer hangs after the limit is reached. The adb child process is now killed when the pipeline exits early.
Removed
- Internal: unreachable
HelpCommand. It was exported fromlib/src/commands/commands.dartbut never registered onFamonCommandRunner, so the visible CLI surface is unchanged.
Internal
- Widened the
injectableconstraint to>=2.3.5 <4.0.0so consumers on injectable 3.x are no longer blocked. Local solver still resolves to 2.7.x becauseisar_generatorpinssource_gen ^1.2.2; the concrete 3.x bump arrives with the Isar → Drift migration. - CI: removed the
|| truethat was swallowing failedfamon_coretest runs, and tightened the Codacy gate so the pipeline file is re-indexed againstdevwithout exclusions.
v1.4.1
1.4.1 (2026-05-07)
Bug Fixes
- address review findings on release-flow PR (f21549f)
- address review-toolkit findings on release-please PR (fb10cba)
- address review-toolkit findings on release-please tuning PR (eb97341)
- ci: tune release-please config to bound history and link versions (691ccc8)
- harden update_version.dart for atomicity and major-bump safety (d4b17fe)
- remove orphaned publish workflow and fix spell-check (50cecfd)
- remove orphaned publish workflow and fix spell-check (d6cf9cd)
- restore pub.dev publish pipeline for monorepo (39d4a66)
v1.4.0
Added
- Keyboard action tests: clear screen, copy to clipboard, quit, save to file, show help, show stats
- Codecov component tracking: CLI and Core Library reported separately
- Coverage collection from
famon_corepackage in CI famon issuecommand in help output and README- Demo recording, example scripts, submission drafts, blog post draft
Fixed
- 3 use cases (
MonitorEventsUseCase,AddManualParametersUseCase,DataExportImportUseCase) now registered in DI module - Monitor signal handlers hardened with try-finally for reliable shutdown
- Test assertion accuracy in help and stats action tests
- codecov/patch no longer blocks test-only PRs
Changed
- Bumped
softprops/action-gh-releasefrom 2 to 3 - All markdown files humanized: removed AI patterns, emoji overuse, redundancy, stale content (-727 lines)
v1.3.0
Added
--show-only-params(-P) flag to filter which parameter keys are displayed in event output- Applies to both
parametersanditemsin formatted and raw modes - Works on both
monitorandfiltercommands - Composes with existing flags (
-g,--hide-global-params,--hide-event-params)
- Applies to both
Fixed
- Orphaned "Items:" header no longer appears when all items are filtered out by
--show-only-params - Consistent user feedback message for
--show-only-paramsin bothmonitorandfiltercommands
Tests
- Added 16 unit tests for
IssueCommandtemplate builder (_generateIssueBody) - Added 7 unit tests for
EventFormatterServiceshow-only-params filtering
Added
- Interactive keyboard shortcuts for monitoring sessions:
s- Copy recent events to clipboardf- Save events to filep- Toggle pause/resume monitoringt- Show session statisticsc- Clear screen?- Show help overlayq- Quit monitoring
- Customizable keyboard shortcuts via
~/.famon/shortcuts.yaml ShortcutManagerfor handling key bindings and action executionActionRegistryfor registering and managing keyboard actionsKeyboardInputServicefor raw terminal input handling
v1.2.0
Added
- Issue submission command (
famon issue) for easy bug reporting with system info and log collection
Fixed
- Keyboard shortcuts
q(quit) andCtrl+Cnow work immediately without delay - Native Firebase events in
Logging event (FE)format are now parsed correctly
Added
- iOS Support: Monitor Firebase Analytics events from iOS simulators and physical devices
- iOS Simulator support via
xcrun simctl spawn - Physical iOS device support via
idevicesyslog - New
--platformoption to select target platform (android, ios-simulator, ios-device) - iOS-specific log parsing with support for various timestamp formats
- Troubleshooting tips for iOS tool installation
- iOS Simulator support via
- Documentation for iOS monitoring setup in README
Performance
- Made all regex patterns static final across the codebase
- Added memory bounds to EventCacheService with LRU eviction (max 10,000 events)
- Added graceful shutdown and resource management for long-running sessions
- Improved stderr handling to prevent buffer overflow
Changed
- Refactored Android log handling into dedicated services for better separation of concerns
- Introduced
LogSourceFactoryandLogParserFactoryfor platform-specific implementations - Added
PlatformTypeenum for type-safe platform selection
v1.1.1
Added
- Codecov integration for coverage reporting and badge
Fixed
- Coverage badge in README now links to live Codecov report
v1.1.0
Added
- Separate global (session-level) parameters from event-specific parameters in monitor output
- New keyboard actions:
toggle_event_paramsandtoggle_global_params - Full formatter support for global vs. event parameter distinction
Fixed
- Items array parsing for nested bundles on both Android (
LogParserService) and iOS (IosLogParserService)
Security
- Added input validation for custom parameters and frequency options
- Added file path validation to prevent path traversal attacks
- Added explicit null handling for stdin.readLineSync()
- Added safe type casting for argResults in DatabaseCommand
- Added validation to DateTimeRange constructor
Changed
- Replaced overly broad exception handling with specific types
- Extracted MonitorCommand.run() into smaller focused methods
- Consolidated event filtering logic in EventFilterUtils
- Introduced FilteredMonitorDependencies container for better DI
- Extracted FaWarningBuffer from EventFormatterService (SRP)
- Extracted DatabaseDirectoryResolver from IsarDatabase
- Replaced hardcoded magic numbers with named constants
- Used consistent DI for UpdateCommand
- Optimized log parser regex evaluation order
- Pushed event filtering to database level for better performance
- Optimized list creation in EventCacheService
Added
- Warning for malformed UTF-8 data in logcat output
- Visible warnings for parameter parsing failures
- Comprehensive tests for FilteredMonitorCommand
Fixed
- Corrected branch name in static analysis workflow
- Increased minimum test coverage threshold to 30%
v1.0.3
Security
- SEC-001: Added package name validation in
enableAnalyticsDebug()to prevent command injection - SEC-003: Added file size limits (100MB) and schema validation for JSON imports
- SEC-006: Implemented chunked processing for large imports to prevent memory exhaustion
Added
- Comprehensive security audit documentation (
doc/SECURITY_AUDIT.md) - Security guidelines section in
CLAUDE.mdfor future development - Input validation patterns for external data handling
- Memory-safe chunked import processing (1000 records per transaction)
Changed
- Import operations now validate JSON structure before processing
- Package name inputs are validated against Android naming conventions
v1.0.2
Added
- Added pub.dev badge and link to README for easy package discovery
Fixed
- Fixed package installation from pub.dev by including generated files (
*.g.dart,*.config.dart) - Package can now be properly installed via
dart pub global activate firebase_analytics_monitor
v1.0.1
Added
- Added example file for pub.dev documentation
Fixed
- Fixed static analysis warnings in generated files for improved pub.dev score
Changed
- Replaced specific event examples with generic event names in documentation
- Improved example output in README to be more generic
Added
- MIT LICENSE file
- CHANGELOG.md following Keep a Changelog format
- GitHub Actions workflow for static analysis on PRs to dev branch