Skip to content

feat(logstream): Add real-time logcat streaming with deep link filtering#18

Merged
manjees merged 1 commit into
mainfrom
feature/14-logcat-streamer
Feb 15, 2026
Merged

feat(logstream): Add real-time logcat streaming with deep link filtering#18
manjees merged 1 commit into
mainfrom
feature/14-logcat-streamer

Conversation

@manjees
Copy link
Copy Markdown
Owner

@manjees manjees commented Feb 12, 2026

Summary

Adds a new Log Streamer screen that provides real-time logcat streaming with smart filtering focused on deep link and intent resolution events.

Closes #14

Features

Smart Log Filtering

  • Pre-configured filters for deep link related log tags:
    • ActivityTaskManager — Activity launch and task management
    • IntentResolver — Intent resolution and matching
    • PackageManager — App link verification events
    • BrowserActivity / ResolverActivity — Disambiguation dialogs
  • Custom tag and keyword filter support via chip-based UI
  • Log level filtering (Verbose through Error)

Deep Link Event Detection

  • Automatic detection and color-coding of deep link lifecycle events:
    • CLICKED — Link clicked / Intent fired
    • RESOLVED — Intent resolution (which app/activity matched)
    • STARTED — Activity started
    • RESULT — Activity displayed result
    • ERROR — Error during resolution/launch
  • Visual event indicators with type-specific colors
  • Toggle to show only deep link events

Log Management

  • Start/Stop/Pause streaming controls with status indicator
  • Clear log buffer
  • Export filtered logs to text
  • Search within captured logs
  • Ring buffer (5000 entries max) for memory-safe long-running streams

Architecture

Follows the project's layered architecture:

Layer Files
Domain Model LogStream.kt (LogEntry, LogFilter, LogLevel, DeepLinkEvent)
Domain Repository LogStreamRepository.kt
Domain UseCase ObserveLogStreamUseCase.kt
Data Parser LogcatParser.kt
Data Repository LogStreamRepositoryImpl.kt
DI AppContainer.kt (updated)
UI ViewModel LogStreamViewModel.kt
UI Screen LogStreamScreen.kt
Navigation Screen.kt, NavGraph.kt, App.kt (updated)

Test Plan

  • LogcatParser: 23 unit tests covering happy path, all log levels, deep link event detection, edge cases (empty input, ADB errors, permission denied, truncated output, special characters)
  • ObserveLogStreamUseCase: 4 unit tests covering success/failure flows, filter passthrough, empty results
  • Compile verification: ./gradlew :composeApp:compileKotlinJvm passes
  • Regression tests: ./gradlew :composeApp:jvmTest all pass (0 failures)

Add a new Log Streamer screen that provides real-time logcat streaming
with smart filtering focused on deep link and intent resolution events.

New features:
- Pre-configured filters for deep link tags (ActivityTaskManager,
  IntentResolver, PackageManager, BrowserActivity, ResolverActivity)
- Deep link lifecycle event detection (clicked, resolved, started,
  result, error) with color-coded visual indicators
- Start/Stop/Pause streaming controls
- Log level filtering (Verbose through Error)
- Custom tag and keyword filter management
- Search within captured logs
- Export filtered logs to text
- Ring buffer (5000 entries) for memory-safe long-running streams

Architecture:
- Domain: LogEntry, LogFilter, DeepLinkEvent models
- Domain: LogStreamRepository interface + ObserveLogStreamUseCase
- Data: LogcatParser for adb logcat -v time format parsing
- Data: LogStreamRepositoryImpl with ADB streaming integration
- UI: LogStreamViewModel with StateFlow-based state management
- UI: LogStreamScreen with Compose Desktop Material 3
- Navigation: LogStream screen integrated into sidebar

Closes #14
@manjees manjees force-pushed the feature/14-logcat-streamer branch from a3295fb to ccfddc7 Compare February 15, 2026 02:42
@manjees manjees merged commit fde7868 into main Feb 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Deep Link Logcat Streamer

1 participant