chore(graphify): add knowledge graph output for codebase exploration

Includes interactive graph visualization (graph.html), audit report
(GRAPH_REPORT.md), raw graph data (graph.json), and extraction
caches built from 349 source files (2741 nodes, 4999 edges).
This commit is contained in:
2026-07-04 09:19:44 +00:00
parent 4879eae9bb
commit a2121afc2d
343 changed files with 84301 additions and 0 deletions

View File

@@ -0,0 +1,883 @@
# Graph Report - . (2026-07-04)
## Corpus Check
- 349 files · ~84,907 words
- Verdict: corpus is large enough that graph structure adds value.
## Summary
- 2741 nodes · 4999 edges · 190 communities (172 shown, 18 thin omitted)
- Extraction: 89% EXTRACTED · 11% INFERRED · 0% AMBIGUOUS · INFERRED: 552 edges (avg confidence: 0.81)
- Token cost: 0 input · 0 output
## Community Hubs (Navigation)
- [[_COMMUNITY_Playback Profile Family|Playback Profile Family]]
- [[_COMMUNITY_Media Segment Model|Media Segment Model]]
- [[_COMMUNITY_Download Controller|Download Controller]]
- [[_COMMUNITY_Download Media Source|Download Media Source]]
- [[_COMMUNITY_Jellyfin Playback Profiles|Jellyfin Playback Profiles]]
- [[_COMMUNITY_Playable Media Model|Playable Media Model]]
- [[_COMMUNITY_Season & Series Model|Season & Series Model]]
- [[_COMMUNITY_Login Screen|Login Screen]]
- [[_COMMUNITY_Playback Progress Reporter|Playback Progress Reporter]]
- [[_COMMUNITY_TV Home Content Tests|TV Home Content Tests]]
- [[_COMMUNITY_Offline Media Repository|Offline Media Repository]]
- [[_COMMUNITY_TV Hero Tests|TV Hero Tests]]
- [[_COMMUNITY_Track Mapper|Track Mapper]]
- [[_COMMUNITY_Jellyfin API Client|Jellyfin API Client]]
- [[_COMMUNITY_Composite Media Repository|Composite Media Repository]]
- [[_COMMUNITY_Logging & Logger|Logging & Logger]]
- [[_COMMUNITY_In-Memory App Content|In-Memory App Content]]
- [[_COMMUNITY_TV Nav Drawer Tests|TV Nav Drawer Tests]]
- [[_COMMUNITY_Authentication Repository|Authentication Repository]]
- [[_COMMUNITY_Home Refresh Side Effect|Home Refresh Side Effect]]
- [[_COMMUNITY_Player UI Models|Player UI Models]]
- [[_COMMUNITY_Episode & Series Feature|Episode & Series Feature]]
- [[_COMMUNITY_Section Header UI|Section Header UI]]
- [[_COMMUNITY_Home Screen UI|Home Screen UI]]
- [[_COMMUNITY_Player Screen UI|Player Screen UI]]
- [[_COMMUNITY_Settings Screen UI|Settings Screen UI]]
- [[_COMMUNITY_Room Database Layer|Room Database Layer]]
- [[_COMMUNITY_Playback Profile Policy|Playback Profile Policy]]
- [[_COMMUNITY_Media Detail Scaffold|Media Detail Scaffold]]
- [[_COMMUNITY_Download Service|Download Service]]
- [[_COMMUNITY_Media Detail Components|Media Detail Components]]
- [[_COMMUNITY_TV Navigation Module|TV Navigation Module]]
- [[_COMMUNITY_Media Metadata Updater|Media Metadata Updater]]
- [[_COMMUNITY_Poster Card UI|Poster Card UI]]
- [[_COMMUNITY_Series Screen UI|Series Screen UI]]
- [[_COMMUNITY_Settings ViewModel|Settings ViewModel]]
- [[_COMMUNITY_Library Screen UI|Library Screen UI]]
- [[_COMMUNITY_Movie Screen UI|Movie Screen UI]]
- [[_COMMUNITY_Media Detail Shell|Media Detail Shell]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 59|Community 59]]
- [[_COMMUNITY_Community 60|Community 60]]
- [[_COMMUNITY_Community 61|Community 61]]
- [[_COMMUNITY_Community 62|Community 62]]
- [[_COMMUNITY_Community 63|Community 63]]
- [[_COMMUNITY_Community 64|Community 64]]
- [[_COMMUNITY_Community 65|Community 65]]
- [[_COMMUNITY_Community 66|Community 66]]
- [[_COMMUNITY_Community 67|Community 67]]
- [[_COMMUNITY_Community 68|Community 68]]
- [[_COMMUNITY_Community 69|Community 69]]
- [[_COMMUNITY_Community 70|Community 70]]
- [[_COMMUNITY_Community 71|Community 71]]
- [[_COMMUNITY_Community 72|Community 72]]
- [[_COMMUNITY_Community 73|Community 73]]
- [[_COMMUNITY_Community 74|Community 74]]
- [[_COMMUNITY_Community 75|Community 75]]
- [[_COMMUNITY_Community 76|Community 76]]
- [[_COMMUNITY_Community 77|Community 77]]
- [[_COMMUNITY_Community 78|Community 78]]
- [[_COMMUNITY_Community 79|Community 79]]
- [[_COMMUNITY_Community 80|Community 80]]
- [[_COMMUNITY_Community 81|Community 81]]
- [[_COMMUNITY_Community 82|Community 82]]
- [[_COMMUNITY_Community 83|Community 83]]
- [[_COMMUNITY_Community 84|Community 84]]
- [[_COMMUNITY_Community 85|Community 85]]
- [[_COMMUNITY_Community 86|Community 86]]
- [[_COMMUNITY_Community 87|Community 87]]
- [[_COMMUNITY_Community 88|Community 88]]
- [[_COMMUNITY_Community 89|Community 89]]
- [[_COMMUNITY_Community 90|Community 90]]
- [[_COMMUNITY_Community 91|Community 91]]
- [[_COMMUNITY_Community 92|Community 92]]
- [[_COMMUNITY_Community 93|Community 93]]
- [[_COMMUNITY_Community 94|Community 94]]
- [[_COMMUNITY_Community 95|Community 95]]
- [[_COMMUNITY_Community 96|Community 96]]
- [[_COMMUNITY_Community 97|Community 97]]
- [[_COMMUNITY_Community 98|Community 98]]
- [[_COMMUNITY_Community 99|Community 99]]
- [[_COMMUNITY_Community 100|Community 100]]
- [[_COMMUNITY_Community 101|Community 101]]
- [[_COMMUNITY_Community 102|Community 102]]
- [[_COMMUNITY_Community 103|Community 103]]
- [[_COMMUNITY_Community 104|Community 104]]
- [[_COMMUNITY_Community 105|Community 105]]
- [[_COMMUNITY_Community 106|Community 106]]
- [[_COMMUNITY_Community 107|Community 107]]
- [[_COMMUNITY_Community 108|Community 108]]
- [[_COMMUNITY_Community 109|Community 109]]
- [[_COMMUNITY_Community 110|Community 110]]
- [[_COMMUNITY_Community 111|Community 111]]
- [[_COMMUNITY_Community 112|Community 112]]
- [[_COMMUNITY_Community 113|Community 113]]
- [[_COMMUNITY_Community 114|Community 114]]
- [[_COMMUNITY_Community 115|Community 115]]
- [[_COMMUNITY_Community 116|Community 116]]
- [[_COMMUNITY_Community 117|Community 117]]
- [[_COMMUNITY_Community 118|Community 118]]
- [[_COMMUNITY_Community 119|Community 119]]
- [[_COMMUNITY_Community 120|Community 120]]
- [[_COMMUNITY_Community 121|Community 121]]
- [[_COMMUNITY_Community 122|Community 122]]
- [[_COMMUNITY_Community 123|Community 123]]
- [[_COMMUNITY_Community 124|Community 124]]
- [[_COMMUNITY_Community 125|Community 125]]
- [[_COMMUNITY_Community 126|Community 126]]
- [[_COMMUNITY_Community 127|Community 127]]
- [[_COMMUNITY_Community 128|Community 128]]
- [[_COMMUNITY_Community 129|Community 129]]
- [[_COMMUNITY_Community 130|Community 130]]
- [[_COMMUNITY_Community 131|Community 131]]
- [[_COMMUNITY_Community 132|Community 132]]
- [[_COMMUNITY_Community 133|Community 133]]
- [[_COMMUNITY_Community 134|Community 134]]
- [[_COMMUNITY_Community 135|Community 135]]
- [[_COMMUNITY_Community 136|Community 136]]
- [[_COMMUNITY_Community 137|Community 137]]
- [[_COMMUNITY_Community 138|Community 138]]
- [[_COMMUNITY_Community 139|Community 139]]
- [[_COMMUNITY_Community 140|Community 140]]
- [[_COMMUNITY_Community 141|Community 141]]
- [[_COMMUNITY_Community 142|Community 142]]
- [[_COMMUNITY_Community 143|Community 143]]
- [[_COMMUNITY_Community 144|Community 144]]
- [[_COMMUNITY_Community 145|Community 145]]
- [[_COMMUNITY_Community 146|Community 146]]
- [[_COMMUNITY_Community 147|Community 147]]
- [[_COMMUNITY_Community 148|Community 148]]
- [[_COMMUNITY_Community 149|Community 149]]
- [[_COMMUNITY_Community 150|Community 150]]
- [[_COMMUNITY_Community 151|Community 151]]
- [[_COMMUNITY_Community 152|Community 152]]
- [[_COMMUNITY_Community 153|Community 153]]
- [[_COMMUNITY_Community 154|Community 154]]
- [[_COMMUNITY_Community 155|Community 155]]
- [[_COMMUNITY_Community 156|Community 156]]
- [[_COMMUNITY_Community 157|Community 157]]
- [[_COMMUNITY_Community 158|Community 158]]
- [[_COMMUNITY_Community 159|Community 159]]
- [[_COMMUNITY_Community 160|Community 160]]
- [[_COMMUNITY_Community 161|Community 161]]
- [[_COMMUNITY_Community 162|Community 162]]
- [[_COMMUNITY_Community 163|Community 163]]
- [[_COMMUNITY_Community 164|Community 164]]
- [[_COMMUNITY_Community 165|Community 165]]
- [[_COMMUNITY_Community 166|Community 166]]
- [[_COMMUNITY_Community 167|Community 167]]
- [[_COMMUNITY_Community 168|Community 168]]
- [[_COMMUNITY_Community 169|Community 169]]
- [[_COMMUNITY_Community 170|Community 170]]
- [[_COMMUNITY_Community 171|Community 171]]
- [[_COMMUNITY_Community 172|Community 172]]
- [[_COMMUNITY_Community 173|Community 173]]
- [[_COMMUNITY_Community 174|Community 174]]
- [[_COMMUNITY_Community 175|Community 175]]
- [[_COMMUNITY_Community 176|Community 176]]
## God Nodes (most connected - your core abstractions)
1. `PlayerManager` - 51 edges
2. `MediaUiModel` - 41 edges
3. `JellyfinApiClient` - 39 edges
4. `Icon` - 38 edges
5. `FakeDeviceProfileCapabilities` - 34 edges
6. `OfflineLocalMediaRepository` - 32 edges
7. `AndroidDeviceProfileCapabilities` - 32 edges
8. `Route` - 31 edges
9. `DeviceProfileCapabilities` - 30 edges
10. `OfflineRoomMediaLocalDataSource` - 30 edges
## Surprising Connections (you probably didn't know these)
- `tvEpisodeSection()` --calls--> `SeriesDto` [INFERRED]
app-tv/src/main/java/hu/bbara/purefin/navigation/TvRouteEntryBuilder.kt → core/src/main/java/hu/bbara/purefin/core/navigation/SeriesDto.kt
- `PosterCardContent()` --calls--> `UnwatchedEpisodeBadge()` [INFERRED]
app-tv/src/main/java/hu/bbara/purefin/ui/common/card/PosterCard.kt → core-ui/src/main/java/hu/bbara/purefin/ui/common/badge/UnwatchedEpisodeBadge.kt
- `PosterCardContent()` --calls--> `WatchStateBadge()` [INFERRED]
app-tv/src/main/java/hu/bbara/purefin/ui/common/card/PosterCard.kt → core-ui/src/main/java/hu/bbara/purefin/ui/common/badge/WatchStateBadge.kt
- `PosterCardContent()` --calls--> `PurefinAsyncImage()` [INFERRED]
app-tv/src/main/java/hu/bbara/purefin/ui/common/card/PosterCard.kt → core-ui/src/main/java/hu/bbara/purefin/ui/common/image/PurefinAsyncImage.kt
- `TvMediaDetailBodyBox()` --calls--> `PurefinAsyncImage()` [INFERRED]
app-tv/src/main/java/hu/bbara/purefin/ui/common/media/MediaDetailShell.kt → core-ui/src/main/java/hu/bbara/purefin/ui/common/image/PurefinAsyncImage.kt
## Import Cycles
- None detected.
## Hyperedges (group relationships)
- **Purefin Tech Stack** — readme_kotlin, readme_jetpack_compose, readme_media3_exoplayer, readme_hilt, readme_room_database, readme_datastore, readme_coil, readme_jellyfin_core_sdk, readme_okhttp, readme_androidx_navigation_3, readme_kotlin_serialization [INFERRED 0.95]
- **Purefin Features** — readme_video_playback_queue, readme_continue_watching, readme_user_authentication, readme_smart_downloads, readme_centralized_subtitles_management [INFERRED 0.95]
- **Purefin Development Conventions** — agents_material_design_3, agents_conventional_commits, agents_preferred_workflow [INFERRED 0.85]
- **Android TV App Launcher Icon Variants** — app-tv_src_main_res_mipmap_purefin_logo [INFERRED 0.95]
## Communities (190 total, 18 thin omitted)
### Community 0 - "Playback Profile Family"
Cohesion: 0.05
Nodes (17): PlaybackProfileFamilyModule, TvPlaybackProfileFamilyModule, PlaybackProfileFamily, AndroidDeviceProfileCapabilities, Av1ProfileLevels, DeviceProfileCapabilities, DolbyVisionProfiles, Boolean (+9 more)
### Community 1 - "Media Segment Model"
Cohesion: 0.05
Nodes (21): MediaSegment, SegmentType, List, MediaSegmentListener, MediaSegmentManager, Boolean, Flow, List (+13 more)
### Community 2 - "Download Controller"
Cohesion: 0.06
Nodes (28): Download, DownloadControllerModule, Boolean, Float, Flow, List, Map, MediaItem (+20 more)
### Community 3 - "Download Media Source"
Cohesion: 0.05
Nodes (29): DownloadMediaSourceResolver, EpisodeDownloadSource, Boolean, Int, List, Set, UUID, MovieDownloadSource (+21 more)
### Community 4 - "Jellyfin Playback Profiles"
Cohesion: 0.06
Nodes (21): CodecProfile, create(), generateCodecProfile(), JellyfinAndroidMobileProfileConfig, DeviceProfile, Set, String, codecRangeTypes() (+13 more)
### Community 5 - "Playable Media Model"
Cohesion: 0.08
Nodes (27): Episode, List, Long, MediaItem, UUID, Movie, PlayableMedia, Series (+19 more)
### Community 6 - "Season & Series Model"
Cohesion: 0.09
Nodes (26): Season, formatReleaseDate(), formatRuntime(), Episode, Int, Long, Movie, Series (+18 more)
### Community 7 - "Login Screen"
Cohesion: 0.09
Nodes (37): Modifier, LoginContent(), LoginPhaseContent(), ServerSearchContent(), Modifier, LoginScreen(), Composable, FocusRequester (+29 more)
### Community 8 - "Playback Progress Reporter"
Cohesion: 0.09
Nodes (19): Boolean, Long, UUID, PlaybackProgressReporter, PlaybackReportContext, Boolean, Job, Long (+11 more)
### Community 9 - "TV Home Content Tests"
Cohesion: 0.17
Nodes (12): Double, Episode, Float, List, Map, Movie, String, UUID (+4 more)
### Community 10 - "Offline Media Repository"
Cohesion: 0.11
Nodes (12): Boolean, Double, Episode, Flow, List, Long, Map, Movie (+4 more)
### Community 11 - "TV Hero Tests"
Cohesion: 0.10
Nodes (14): Boolean, Double, Episode, Movie, Series, TvFocusedItemHeroTest, Boolean, Movie (+6 more)
### Community 12 - "Track Mapper"
Cohesion: 0.12
Nodes (20): Boolean, Int, String, TrackMapper, TrackSelectionState, addRangeTypeIfSupported(), Audio, Codec (+12 more)
### Community 13 - "Jellyfin API Client"
Cohesion: 0.21
Nodes (10): JellyfinApiClient, BaseItemDto, DeviceProfile, Int, List, Set, T, UUID (+2 more)
### Community 14 - "Composite Media Repository"
Cohesion: 0.13
Nodes (13): CompositeLocalMediaRepository, Boolean, Double, Episode, Flow, Long, Map, Movie (+5 more)
### Community 15 - "Logging & Logger"
Cohesion: 0.15
Nodes (13): FileLogTree, Boolean, Context, File, Int, List, String, Throwable (+5 more)
### Community 16 - "In-Memory App Content"
Cohesion: 0.15
Nodes (12): HomeContentSnapshot, HomeRefreshFailedException, InMemoryAppContentRepository, Job, List, Map, StateFlow, String (+4 more)
### Community 17 - "TV Nav Drawer Tests"
Cohesion: 0.11
Nodes (19): TvNavigationDrawerTest, TvDrawerDestinationItem, Boolean, List, Modifier, ProvideTvDrawerTheme(), TvDrawerHeader(), TvNavigationDrawer() (+11 more)
### Community 18 - "Authentication Repository"
Cohesion: 0.13
Nodes (9): JellyfinServerCandidate, Boolean, Job, List, StateFlow, String, LoginViewModel, Phase (+1 more)
### Community 19 - "Home Refresh Side Effect"
Cohesion: 0.14
Nodes (9): HomeRefreshSideEffect, HomeRefreshSideEffectModule, SyncSmartDownloadsHomeRefreshSideEffect, Boolean, Double, Long, LocalPlaybackPosition, RemotePlaybackPosition (+1 more)
### Community 20 - "Player UI Models"
Cohesion: 0.11
Nodes (6): PlaylistElementUiModel, Job, StateFlow, String, UUID, PlayerViewModel
### Community 21 - "Episode & Series Feature"
Cohesion: 0.09
Nodes (24): Conventional Commits, Material Design 3, Preferred Workflow, Android, Android TV, AndroidX Navigation 3, APK Version Manager, Centralized Subtitles Management (+16 more)
### Community 22 - "Section Header UI"
Cohesion: 0.15
Nodes (8): Boolean, Episode, Job, List, Series, StateFlow, UUID, SeriesViewModel
### Community 23 - "Home Screen UI"
Cohesion: 0.09
Nodes (18): Modifier, String, SectionHeader(), ContinueWatchingSection(), List, Modifier, HomeContent(), Boolean (+10 more)
### Community 24 - "Player Screen UI"
Cohesion: 0.11
Nodes (19): DefaultTopBar(), DefaultTopBarIconButton(), DefaultTopBarSearchButton(), DefaultTopBarTextButton(), Boolean, ImageVector, Modifier, String (+11 more)
### Community 25 - "Settings Screen UI"
Cohesion: 0.09
Nodes (19): List, Long, Modifier, PlayerSeekBar(), Boolean, FocusRequester, List, Long (+11 more)
### Community 26 - "Room Database Layer"
Cohesion: 0.10
Nodes (19): BooleanSettingItem(), Boolean, Modifier, String, Modifier, String, ReadOnlySettingItem(), Modifier (+11 more)
### Community 27 - "Playback Profile Policy"
Cohesion: 0.16
Nodes (8): EpisodeDao, Boolean, Double, Flow, Int, List, UUID, EpisodeEntity
### Community 28 - "Media Detail Scaffold"
Cohesion: 0.16
Nodes (20): Activity, applyBrightness(), formatSeekDelta(), HiddenSeekTimeline(), Boolean, Float, List, Long (+12 more)
### Community 29 - "Download Service"
Cohesion: 0.21
Nodes (21): Dp, Modifier, String, MarkAsWatched, MediaDetailActions(), MediaDetailActionsUiModel, MediaDetailCastRow(), MediaDetailCastUiModel (+13 more)
### Community 30 - "Media Detail Components"
Cohesion: 0.13
Nodes (15): DownloadServiceEntryPoint, Context, DownloadManager, DownloadNotificationHelper, DownloadRequest, Int, Long, String (+7 more)
### Community 31 - "TV Navigation Module"
Cohesion: 0.22
Nodes (19): Icon, GenreChip(), GenreSelector(), Boolean, Composable, List, Modifier, Set (+11 more)
### Community 32 - "Media Metadata Updater"
Cohesion: 0.20
Nodes (11): EntryProviderScope, Unit, TvNavigationModule, tvEpisodeSection(), tvHomeSection(), tvLibrarySection(), tvLoginSection(), tvMovieSection() (+3 more)
### Community 33 - "Poster Card UI"
Cohesion: 0.14
Nodes (10): Boolean, Double, Long, UUID, MediaMetadataUpdater, JellyfinMediaMetadataUpdaterImpl, Boolean, Double (+2 more)
### Community 34 - "Series Screen UI"
Cohesion: 0.12
Nodes (15): Dp, Float, List, Modifier, PaddingValues, String, TextStyle, MediaImageCard() (+7 more)
### Community 35 - "Settings ViewModel"
Cohesion: 0.22
Nodes (17): borderIfFocused(), CastRow(), Boolean, Color, Episode, FocusRequester, List, Modifier (+9 more)
### Community 36 - "Library Screen UI"
Cohesion: 0.23
Nodes (15): BooleanSetting, DropdownSetting, Boolean, Double, String, T, RangeSetting, ReadOnlySetting (+7 more)
### Community 37 - "Movie Screen UI"
Cohesion: 0.14
Nodes (10): List, Modifier, LibraryPosterGrid(), LibraryScreen(), Boolean, List, StateFlow, UUID (+2 more)
### Community 38 - "Media Detail Shell"
Cohesion: 0.11
Nodes (15): TopAppBarScrollBehavior, MovieTopBar(), CircularIconButton(), Color, Dp, Float, ImageVector, Modifier (+7 more)
### Community 39 - "Community 39"
Cohesion: 0.22
Nodes (16): calculateScrollDistance(), Any, Float, Modifier, String, MediaDetailOverviewSection(), MediaDetailPlaybackSection(), MediaDetailSectionTitle() (+8 more)
### Community 40 - "Community 40"
Cohesion: 0.14
Nodes (15): Float, Modifier, String, TvFocusedItemHero(), TvHomeHeroBackdrop(), TvHomeHeroMetadataRow(), Boolean, Modifier (+7 more)
### Community 41 - "Community 41"
Cohesion: 0.25
Nodes (17): Boolean, ClosedFloatingPointRange, Double, List, Modifier, String, T, TvBooleanSettingItem() (+9 more)
### Community 42 - "Community 42"
Cohesion: 0.20
Nodes (8): Episode, Flow, Map, Movie, Series, StateFlow, UUID, LocalMediaRepository
### Community 43 - "Community 43"
Cohesion: 0.15
Nodes (5): AppViewModel, Boolean, StateFlow, String, UUID
### Community 44 - "Community 44"
Cohesion: 0.15
Nodes (11): HomeLibrarySettingsProvider, Flow, List, Flow, List, LogoutSettingsProvider, SettingGroup, Flow (+3 more)
### Community 45 - "Community 45"
Cohesion: 0.16
Nodes (7): Boolean, Double, Flow, List, UUID, MovieDao, MovieEntity
### Community 46 - "Community 46"
Cohesion: 0.18
Nodes (6): Flow, Int, List, UUID, SeriesDao, SeriesEntity
### Community 47 - "Community 47"
Cohesion: 0.18
Nodes (14): Boolean, Dp, Int, Modifier, PosterCard(), PosterCardContent(), Boolean, Dp (+6 more)
### Community 48 - "Community 48"
Cohesion: 0.19
Nodes (16): AppScreen(), appTabIndex(), appTabMetadata(), AppTabRoute, Downloads, Home, Any, Int (+8 more)
### Community 49 - "Community 49"
Cohesion: 0.15
Nodes (11): List, Modifier, LibrariesContent(), Modifier, LibraryListItem(), TvLibrariesOverviewScreenTest, List, Modifier (+3 more)
### Community 50 - "Community 50"
Cohesion: 0.15
Nodes (11): FocusRequester, Modifier, Movie, TvMovieHeroSection(), Boolean, Double, Float, String (+3 more)
### Community 51 - "Community 51"
Cohesion: 0.20
Nodes (15): Boolean, ImageVector, Int, Modifier, String, TvIconButton(), Boolean, Modifier (+7 more)
### Community 52 - "Community 52"
Cohesion: 0.32
Nodes (16): Array, androidAudioCodecName(), AndroidCodecCatalog, androidVideoCodecName(), androidVideoProfileName(), avcProfileName(), create(), h263ProfileName() (+8 more)
### Community 53 - "Community 53"
Cohesion: 0.18
Nodes (10): CacheEvictor, DownloadModule, DownloadModuleFactories, CacheDataSource, Context, DataSource, DownloadManager, DownloadNotificationHelper (+2 more)
### Community 54 - "Community 54"
Cohesion: 0.14
Nodes (10): Settings, Flow, SettingsRepository, bindSettingsRepository(), Context, DataStore, SettingsModule, InputStream (+2 more)
### Community 55 - "Community 55"
Cohesion: 0.20
Nodes (10): create(), Movie, Series, String, SearchResult, List, Set, StateFlow (+2 more)
### Community 56 - "Community 56"
Cohesion: 0.19
Nodes (7): AppUpdateInstaller, AndroidAppUpdateInstaller, File, Int, Long, String, IntentSender
### Community 57 - "Community 57"
Cohesion: 0.19
Nodes (8): DefaultNavigationManager, SharedFlow, Navigate, NavigationCommand, NavigationManager, Pop, ReplaceAll, NavigationManagerModule
### Community 58 - "Community 58"
Cohesion: 0.20
Nodes (13): EntryProviderScope, Unit, NavigationModule, EpisodeRoute, Home, HomeSearchRoute, LibraryRoute, LoginRoute (+5 more)
### Community 59 - "Community 59"
Cohesion: 0.22
Nodes (15): CastRow(), DownloadOptionRow(), DownloadOptionsBottomSheet(), EpisodeCard(), EpisodeCarousel(), Boolean, Episode, ImageVector (+7 more)
### Community 60 - "Community 60"
Cohesion: 0.19
Nodes (6): Episode, List, Movie, Series, UUID, OfflineMediaManager
### Community 61 - "Community 61"
Cohesion: 0.22
Nodes (8): InMemoryLocalMediaRepository, Episode, Flow, List, Map, Movie, Series, StateFlow
### Community 62 - "Community 62"
Cohesion: 0.18
Nodes (7): Flow, List, LibraryDao, LibraryEntity, LibraryWithContent, SeasonWithEpisodes, SeriesWithSeasonsAndEpisodes
### Community 63 - "Community 63"
Cohesion: 0.21
Nodes (5): Int, List, UUID, SeasonDao, SeasonEntity
### Community 64 - "Community 64"
Cohesion: 0.20
Nodes (8): Boolean, Bundle, EntryProviderScope, OkHttpClient, Set, Unit, PurefinActivity, ExitAppDialog()
### Community 65 - "Community 65"
Cohesion: 0.13
Nodes (11): DownloadingItemRow(), Modifier, Modifier, NextEpisodeOverlay(), ContentScale, ActiveDownloadItem, Any, ImageVector (+3 more)
### Community 66 - "Community 66"
Cohesion: 0.13
Nodes (12): Modifier, String, SuggestionCard(), List, Modifier, SuggestionsSection(), Color, Dp (+4 more)
### Community 67 - "Community 67"
Cohesion: 0.35
Nodes (13): Float, List, Modifier, String, UUID, TvContinueWatchingSection(), TvHomeLandscapeCard(), tvHomeLibraryFirstItemTag() (+5 more)
### Community 68 - "Community 68"
Cohesion: 0.14
Nodes (9): ApplicationInfo, AppVersionProvider, Long, String, AndroidAppVersionProvider, Long, String, AppUpdateModule (+1 more)
### Community 69 - "Community 69"
Cohesion: 0.17
Nodes (7): AppUpdateController, Boolean, Flow, List, SharedFlow, StateFlow, String
### Community 70 - "Community 70"
Cohesion: 0.17
Nodes (8): UserSession, Context, DataStore, UserSessionModule, InputStream, OutputStream, UserSessionSerializer, Serializer
### Community 71 - "Community 71"
Cohesion: 0.20
Nodes (6): Boolean, Flow, List, UUID, SmartDownloadDao, SmartDownloadEntity
### Community 72 - "Community 72"
Cohesion: 0.26
Nodes (13): BottomSection(), formatTime(), Boolean, Dp, Int, Long, Modifier, String (+5 more)
### Community 73 - "Community 73"
Cohesion: 0.16
Nodes (11): Modifier, PlayerLoadingErrorEndCard(), Modifier, TvPlayerLoadingErrorEndCard(), PlayerUiState, Boolean, Dp, Float (+3 more)
### Community 74 - "Community 74"
Cohesion: 0.23
Nodes (7): Boolean, Bundle, EntryProviderScope, OkHttpClient, Set, Unit, TvActivity
### Community 75 - "Community 75"
Cohesion: 0.22
Nodes (12): Boolean, Color, FocusRequester, Modifier, String, TvPlayerQueuePanel(), TvQueueArtwork(), TvQueueRowCard() (+4 more)
### Community 76 - "Community 76"
Cohesion: 0.18
Nodes (6): Boolean, Flow, List, UUID, SmartDownloadStore, OfflineBindingsModule
### Community 77 - "Community 77"
Cohesion: 0.21
Nodes (5): Boolean, Double, Long, UUID, RuntimeException
### Community 78 - "Community 78"
Cohesion: 0.25
Nodes (5): JellyfinAuthenticationRepository, AuthenticationResult, Boolean, Flow, String
### Community 79 - "Community 79"
Cohesion: 0.21
Nodes (4): Context, MediaDatabaseModule, OfflineMediaDatabase, RoomDatabase
### Community 80 - "Community 80"
Cohesion: 0.32
Nodes (12): androidx, formatTime(), handleExpandPlaylistKey(), Boolean, FocusRequester, Long, Modifier, String (+4 more)
### Community 81 - "Community 81"
Cohesion: 0.21
Nodes (7): TrackPreferences, Context, DataStore, TrackPreferencesModule, InputStream, OutputStream, TrackPreferencesSerializer
### Community 82 - "Community 82"
Cohesion: 0.21
Nodes (4): QuickConnectSession, AuthenticationResult, String, RecommendedServerInfo
### Community 83 - "Community 83"
Cohesion: 0.24
Nodes (7): DownloadModuleTest, FakeDataSourceFactory, Any, Boolean, CacheDataSource, String, DataSource
### Community 84 - "Community 84"
Cohesion: 0.29
Nodes (12): CachedCastMember, CachedEpisode, CachedLibrary, CachedMediaItem, CachedMovie, CachedSeries, toCachedCastMember(), toCachedEpisode() (+4 more)
### Community 85 - "Community 85"
Cohesion: 0.29
Nodes (4): CastMemberDao, List, UUID, CastMemberEntity
### Community 86 - "Community 86"
Cohesion: 0.21
Nodes (9): action, appRouteEntryBuilder(), Unit, rememberNotificationPermissionGate(), Modifier, Movie, MovieScreen(), MovieScreenInternal() (+1 more)
### Community 87 - "Community 87"
Cohesion: 0.20
Nodes (5): Bundle, PlayerActivity, AppTheme(), Boolean, ComponentActivity
### Community 88 - "Community 88"
Cohesion: 0.27
Nodes (11): homeMediaSharedBounds(), homeMediaSharedBoundsDestination(), homeMediaSharedBoundsKey(), homeMediaSharedBoundsSource(), isHomeMediaSharedBoundsTransitionActive(), Boolean, Modifier, String (+3 more)
### Community 89 - "Community 89"
Cohesion: 0.27
Nodes (10): EpisodeTopBar(), EpisodeTopBarShortcut, String, TopAppBarScrollBehavior, Series, EpisodeScreen(), EpisodeScreenInternal(), Episode (+2 more)
### Community 90 - "Community 90"
Cohesion: 0.17
Nodes (9): Modifier, String, SearchMessage(), Boolean, Dp, Modifier, SearchOverlay(), Modifier (+1 more)
### Community 91 - "Community 91"
Cohesion: 0.20
Nodes (9): Boolean, Modifier, String, PlayerQueuePanel(), QueueRow(), Modifier, TvNextEpisodeOverlay(), Unit (+1 more)
### Community 92 - "Community 92"
Cohesion: 0.41
Nodes (10): createPlaceholder(), EpisodeUiModel, Boolean, Float, Int, String, UUID, MediaUiModel (+2 more)
### Community 93 - "Community 93"
Cohesion: 0.24
Nodes (7): Double, Movie, MovieScreenContentTest, Modifier, Movie, TvMovieScreen(), TvMovieScreenContent()
### Community 94 - "Community 94"
Cohesion: 0.17
Nodes (10): Episode, FocusRequester, Modifier, String, TvEpisodeHeroSection(), Color, List, Modifier (+2 more)
### Community 95 - "Community 95"
Cohesion: 0.18
Nodes (10): calculateScrollDistance(), Float, tvHomeColumnBringIntoViewSpec(), List, Map, Modifier, PaddingValues, UUID (+2 more)
### Community 96 - "Community 96"
Cohesion: 0.27
Nodes (11): handleTvPlayerRootKeyEvent(), HiddenTvSeekTimeline(), Boolean, List, Long, Modifier, String, TvPlayerClock() (+3 more)
### Community 97 - "Community 97"
Cohesion: 0.23
Nodes (11): Library, Episode, Movie, Series, UUID, toCastMember(), toEpisode(), toLibrary() (+3 more)
### Community 98 - "Community 98"
Cohesion: 0.35
Nodes (10): Cached, CacheEntry, Join, String, T, Resolution, SingleFlight, Start (+2 more)
### Community 99 - "Community 99"
Cohesion: 0.24
Nodes (5): Boolean, Flow, String, UUID, UserSessionRepository
### Community 100 - "Community 100"
Cohesion: 0.20
Nodes (4): Boolean, Movie, StateFlow, MovieScreenViewModel
### Community 101 - "Community 101"
Cohesion: 0.24
Nodes (5): DataStoreUserSessionRepository, Boolean, Flow, String, UUID
### Community 102 - "Community 102"
Cohesion: 0.20
Nodes (7): HomeCache, HomeCacheModule, Context, DataStore, HomeCacheSerializer, InputStream, OutputStream
### Community 103 - "Community 103"
Cohesion: 0.22
Nodes (6): UpdateAvailableDialog(), AppUpdateInfo, String, AppUpdateManifest, AppUpdateRepository, String
### Community 104 - "Community 104"
Cohesion: 0.51
Nodes (10): AudioSelectionButton(), Boolean, List, Modifier, String, QualitySelectionButton(), SubtitlesSelectionButton(), TrackOptionItem() (+2 more)
### Community 105 - "Community 105"
Cohesion: 0.29
Nodes (6): empty(), String, MediaTrackPreferences, Flow, String, TrackPreferencesRepository
### Community 106 - "Community 106"
Cohesion: 0.31
Nodes (4): AuthenticationRepository, Boolean, Flow, String
### Community 107 - "Community 107"
Cohesion: 0.20
Nodes (5): DownloadsViewModel, String, UUID, SeriesDto, ViewModel
### Community 108 - "Community 108"
Cohesion: 0.25
Nodes (4): Set, String, UUID, SearchViewModel
### Community 109 - "Community 109"
Cohesion: 0.20
Nodes (8): Boolean, Double, List, SharedFlow, StateFlow, String, T, SettingsViewModel
### Community 110 - "Community 110"
Cohesion: 0.22
Nodes (4): Long, Job, Long, SeekByCollector
### Community 111 - "Community 111"
Cohesion: 0.18
Nodes (9): DownloadActionButton(), Dp, Modifier, Color, Dp, Float, ImageVector, Modifier (+1 more)
### Community 112 - "Community 112"
Cohesion: 0.20
Nodes (8): AppBottomBar(), Boolean, Int, Boolean, Int, List, Modifier, LibrariesScreen()
### Community 113 - "Community 113"
Cohesion: 0.27
Nodes (4): EpisodeScreenContentTest, Double, Episode, CastMember
### Community 114 - "Community 114"
Cohesion: 0.38
Nodes (9): defaultSeason(), focusTargetEpisodeId(), Episode, Modifier, Series, UUID, nextUpEpisode(), TvSeriesScreen() (+1 more)
### Community 115 - "Community 115"
Cohesion: 0.33
Nodes (5): AudioTrackProperties, SubtitleTrackProperties, Int, List, TrackMatcher
### Community 116 - "Community 116"
Cohesion: 0.24
Nodes (4): EpisodeScreenViewModel, Boolean, Episode, StateFlow
### Community 118 - "Community 118"
Cohesion: 0.22
Nodes (5): AppUpdateViewModel, Boolean, SharedFlow, StateFlow, String
### Community 119 - "Community 119"
Cohesion: 0.22
Nodes (6): JellyfinAuthInterceptor, String, JellyfinNetworkModule, OkHttpClient, Interceptor, Response
### Community 120 - "Community 120"
Cohesion: 0.31
Nodes (9): Boolean, Color, Dp, Float, Modifier, String, TextUnit, MediaResumeButton() (+1 more)
### Community 121 - "Community 121"
Cohesion: 0.24
Nodes (3): Boolean, Long, PlayMethod
### Community 122 - "Community 122"
Cohesion: 0.22
Nodes (5): LogUploadSettingsModule, Flow, List, String, LogUploadSettingsProvider
### Community 123 - "Community 123"
Cohesion: 0.27
Nodes (5): Boolean, Flow, List, UUID, RoomSmartDownloadStore
### Community 124 - "Community 124"
Cohesion: 0.22
Nodes (7): HomeBrowseCard(), Modifier, String, Color, Int, Modifier, UnwatchedEpisodeBadge()
### Community 125 - "Community 125"
Cohesion: 0.28
Nodes (7): Boolean, Composable, Modifier, Unit, PersistentOverlayContainer(), PersistentOverlayController, rememberPersistentOverlayController()
### Community 126 - "Community 126"
Cohesion: 0.39
Nodes (8): canPerform(), Boolean, Modifier, Series, MarkSeriesAsWatchedConfirmationDialog(), requiresNotificationPermission(), SeriesScreen(), SeriesScreenInternal()
### Community 127 - "Community 127"
Cohesion: 0.28
Nodes (5): List, Set, StateFlow, String, SearchManager
### Community 128 - "Community 128"
Cohesion: 0.33
Nodes (4): ArtworkKind, ImageUrlBuilder, String, UUID
### Community 129 - "Community 129"
Cohesion: 0.28
Nodes (6): UUID, UuidSerializer, Decoder, Encoder, KSerializer, SerialDescriptor
### Community 130 - "Community 130"
Cohesion: 0.22
Nodes (8): Boolean, Color, Dp, Int, Modifier, String, TextUnit, MediaSynopsis()
### Community 131 - "Community 131"
Cohesion: 0.36
Nodes (6): Boolean, Double, Flow, String, T, SettingsRepositoryImpl
### Community 132 - "Community 132"
Cohesion: 0.25
Nodes (6): ContentBadge(), Color, Modifier, String, HomeEmptyState(), Modifier
### Community 133 - "Community 133"
Cohesion: 0.25
Nodes (6): DownloadsContent(), Modifier, DownloadsScreen(), Boolean, Int, Modifier
### Community 134 - "Community 134"
Cohesion: 0.25
Nodes (7): HomeScreen(), Boolean, Int, List, Map, Modifier, UUID
### Community 136 - "Community 136"
Cohesion: 0.36
Nodes (7): GhostTextButton(), Dp, FocusRequester, Modifier, String, MediaDetailsTopBar(), MediaDetailsTopBarShortcut
### Community 137 - "Community 137"
Cohesion: 0.25
Nodes (5): HomeRepository, List, Map, StateFlow, UUID
### Community 138 - "Community 138"
Cohesion: 0.39
Nodes (3): HomeRefreshCoordinator, Boolean, Unit
### Community 139 - "Community 139"
Cohesion: 0.25
Nodes (7): CircularTextButton(), Color, Dp, Float, Int, Modifier, String
### Community 140 - "Community 140"
Cohesion: 0.25
Nodes (7): Color, Float, ImageVector, Int, Modifier, String, PurefinIconButton()
### Community 141 - "Community 141"
Cohesion: 0.29
Nodes (3): PurefinApplication, TvApplication, Application
### Community 142 - "Community 142"
Cohesion: 0.29
Nodes (6): Dp, Float, ImageVector, Modifier, String, PlayerAdjustmentIndicator()
### Community 143 - "Community 143"
Cohesion: 0.38
Nodes (4): BroadcastReceiver, AppUpdateInstallReceiver, Context, Intent
### Community 144 - "Community 144"
Cohesion: 0.48
Nodes (6): EpisodeMedia, Media, MovieMedia, SeasonMedia, SeriesMedia, toMedia()
### Community 146 - "Community 146"
Cohesion: 0.33
Nodes (6): Boolean, Color, Int, Modifier, WatchStateBadge(), WatchStateBadgePreview()
### Community 147 - "Community 147"
Cohesion: 0.48
Nodes (6): Color, ImageVector, Modifier, String, MediaPlaybackSettings(), MediaSettingDropdown()
### Community 148 - "Community 148"
Cohesion: 0.48
Nodes (6): Color, Float, Modifier, PurefinWaitingScreen(), WaitingDot(), WaitingDots()
### Community 149 - "Community 149"
Cohesion: 0.33
Nodes (5): DropdownSettingItem(), List, Modifier, String, T
### Community 150 - "Community 150"
Cohesion: 0.33
Nodes (5): ClosedFloatingPointRange, Double, Modifier, String, RangeSettingItem()
### Community 151 - "Community 151"
Cohesion: 0.60
Nodes (5): Downloaded, Downloading, DownloadState, Failed, NotDownloaded
### Community 152 - "Community 152"
Cohesion: 0.33
Nodes (4): Application, DataSource, Player, VideoPlayerModule
### Community 153 - "Community 153"
Cohesion: 0.33
Nodes (3): CodecDebugHelper, Boolean, String
### Community 154 - "Community 154"
Cohesion: 0.47
Nodes (3): String, UUID, UuidConverters
### Community 155 - "Community 155"
Cohesion: 0.40
Nodes (3): HorizontalSeekGestureHelper, Float, Long
### Community 156 - "Community 156"
Cohesion: 0.40
Nodes (4): DragDirection, Boolean, Modifier, PlayerGesturesLayer()
### Community 159 - "Community 159"
Cohesion: 0.40
Nodes (3): OkHttpClient, OkHttpDataSource, PlaybackNetworkModule
### Community 160 - "Community 160"
Cohesion: 0.40
Nodes (4): Color, Modifier, String, MediaMetaChip()
### Community 162 - "Community 162"
Cohesion: 0.50
Nodes (3): Modifier, String, StringSettingItem()
### Community 163 - "Community 163"
Cohesion: 0.50
Nodes (3): hslColor(), Color, Float
### Community 164 - "Community 164"
Cohesion: 0.50
Nodes (3): hslColor(), Color, Float
## Knowledge Gaps
- **37 isolated node(s):** `ColorFamily`, `DragDirection`, `SeriesDownloadOption`, `Episode`, `LibraryKind` (+32 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **18 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `Icon` connect `TV Navigation Module` to `Community 132`, `Community 133`, `Login Screen`, `Community 142`, `TV Nav Drawer Tests`, `Community 146`, `Community 147`, `Community 148`, `Home Screen UI`, `Player Screen UI`, `Download Service`, `Series Screen UI`, `Settings ViewModel`, `Media Detail Shell`, `Community 41`, `Community 49`, `Community 51`, `Community 59`, `Community 65`, `Community 75`, `Community 90`, `Community 91`, `Community 96`, `Community 104`, `Community 112`, `Community 120`?**
_High betweenness centrality (0.215) - this node is a cross-community bridge._
- **Why does `TrackOption` connect `Community 104` to `Media Segment Model`, `Track Mapper`, `Community 115`, `Player UI Models`, `Settings Screen UI`?**
_High betweenness centrality (0.174) - this node is a cross-community bridge._
- **Why does `Season` connect `Season & Series Model` to `Settings ViewModel`, `Community 135`, `Offline Media Repository`, `Community 114`, `Community 59`, `Community 60`, `Download Service`?**
_High betweenness centrality (0.130) - this node is a cross-community bridge._
- **Are the 41 inferred relationships involving `RoundedCornerShape` (e.g. with `MediaImageCard()` and `PosterCardContent()`) actually correct?**
_`RoundedCornerShape` has 41 INFERRED edges - model-reasoned connections that need verification._
- **Are the 36 inferred relationships involving `Icon` (e.g. with `MediaImageCard()` and `SectionHeader()`) actually correct?**
_`Icon` has 36 INFERRED edges - model-reasoned connections that need verification._
- **What connects `ColorFamily`, `DragDirection`, `SeriesDownloadOption` to the rest of the system?**
_40 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Playback Profile Family` be split into smaller, more focused modules?**
_Cohesion score 0.054746835443037975 - nodes in this community are weakly interconnected._