famon 1.4.0
famon: ^1.4.0 copied to clipboard
A command-line tool to monitor Firebase Analytics events from logcat.
Changelog #
All notable changes to this project will be documented in this file.
Format follows Keep a Changelog, versioning follows Semantic Versioning.
1.4.0 - 2026-04-27 #
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)
1.3.0 - 2026-04-02 #
Added #
--show-only-params/-Pflag to filter which parameter keys are displayed (applies toparametersanditems, in formatted and raw modes, on bothmonitorandfiltercommands)- 16 unit tests for
IssueCommandtemplate builder (_generateIssueBody) - 7 unit tests for
EventFormatterServiceshow-only-params filtering
Fixed #
- Orphaned "Items:" header no longer appears when all items are filtered by
--show-only-params - Consistent feedback message for
--show-only-paramsacrossmonitorandfiltercommands
1.2.0 - 2026-03-13 #
1.1.0 - 2026-03-02 #
Added #
- Separate global (session-level) parameters from event-specific parameters in output
toggle_event_paramsandtoggle_global_paramskeyboard actions- Formatter support for global vs. event parameter distinction
Fixed #
- Items array parsing for nested bundles on Android (
LogParserService) and iOS (IosLogParserService)
1.0.3 - 2026-01-24 #
Security #
- SEC-001: Package name validation in
enableAnalyticsDebug()to prevent command injection - SEC-003: File size limits (100MB) and schema validation for JSON imports
- SEC-006: Chunked import processing (1000 records/transaction) to prevent memory exhaustion
Added #
- Security audit documentation (
doc/SECURITY_AUDIT.md) - Input validation patterns for external data handling
Changed #
- Import operations validate JSON structure before processing
1.0.1 - 2026-01-20 #
1.0.0 - 2026-01-20 #
Changed #
- Package renamed from
firebase_analytics_monitortofamon - Install:
dart pub global activate famon - Repository:
github.com/mikezamayias/famon - Internal class names updated (e.g.
FamonCommandRunner)
Migrating from firebase_analytics_monitor:
dart pub global deactivate firebase_analytics_monitor
dart pub global activate famon
Previous releases (as firebase_analytics_monitor) #
1.3.3 - 2026-01-20 #
1.3.1 - 2026-01-16 #
Security #
- Fixed command injection in ClipboardService (Windows) — use stdin instead of command arguments
- Fixed command injection in FileDialogService (macOS) — escape AppleScript strings
- Added ReDoS protection in
EventCacheService.searchEvents()with pattern length limits and dangerous pattern detection
Performance #
- RegExp patterns in
IosLogParserService._extractTimestamp()and_cleanValue()moved tostatic final - Fallback substring search when regex is deemed unsafe
Removed #
- Unused
ActionResultclass fromshortcut_action.dart
[1.3.0] - 2026-01-16 #
Added #
- Interactive keyboard shortcuts during monitoring sessions:
s— copy recent events to clipboardf— save events to filep— toggle pause/resumet— show session statisticsc— clear screen?— show help overlayq— quit
- Customizable shortcuts via
~/.famon/shortcuts.yaml ShortcutManager,ActionRegistry,KeyboardInputService
[1.2.0] - 2026-01-15 #
Added #
- iOS support: simulators via
xcrun simctl spawn, physical devices viaidevicesyslog --platformflag (android,ios-simulator,ios-device)- iOS log parsing with multiple timestamp format support
Performance #
- All regex patterns moved to
static finalacross the codebase EventCacheServicememory bound with LRU eviction (max 10,000 events)- Graceful shutdown and resource cleanup for long-running sessions
- stderr consumed to prevent buffer overflow
Changed #
- Android log handling refactored into dedicated services
LogSourceFactoryandLogParserFactoryfor platform-specific implementationsPlatformTypeenum for type-safe platform selection
[1.1.0] - 2026-01-13 #
Security #
- Input validation for custom parameters and frequency options
- File path validation to prevent path traversal
- Null handling for
stdin.readLineSync() - Safe type casting in
DatabaseCommand - Validation added to
DateTimeRangeconstructor
Changed #
- Replaced broad exception handling with specific types
MonitorCommand.run()split into focused methods- Event filtering logic consolidated in
EventFilterUtils FilteredMonitorDependenciescontainer for DIFaWarningBufferextracted fromEventFormatterServiceDatabaseDirectoryResolverextracted fromIsarDatabase- Magic numbers replaced with named constants
- Consistent DI for
UpdateCommand - Log parser regex evaluation order optimized
- Event filtering pushed to database level
Added #
- Warning for malformed UTF-8 in logcat output
- Visible warnings for parameter parsing failures
- Tests for
FilteredMonitorCommand
Fixed #
- Branch name in static analysis workflow
- Minimum test coverage threshold raised to 30%
[1.0.2] - 2026-01-12 #
Fixed #
- Generated files (
*.g.dart,*.config.dart) now included sodart pub global activate firebase_analytics_monitorworks correctly
[1.0.1] - 2025-12-19 #
Added #
- MIT LICENSE file
- CHANGELOG.md
- GitHub Actions workflow for static analysis on PRs to dev
Changed #
- Example output in README uses generic event names
[1.0.0] - 2025-12-19 #
Added #
- Real-time Firebase Analytics monitoring via
adb logcat --hideand--show-onlyfiltering- Colorized output
- Session statistics and filter suggestions
- Parameter and item array parsing
famon monitorandfamon helpcommands- Shell completion
- Isar-backed persistent event storage
- Export/import functionality