yuliskov/SmartTube
46.4
Weak · 24 September 2026
308.7k
lines of production code
Java
primary language
5
measurements over time
What this system is
SmartTube is an Android TV client application designed for streaming video content, built upon a customized ExoPlayer engine. It provides core playback capabilities including adaptive streaming via DASH and SABR, automatic subtitle loading, and robust error recovery for network and codec issues. The system features a Leanback-optimized interface with navigation controls, search, and chat integration, while supporting gesture-based seeking and channel blocking.
Features
Add F-Droid-specific privacy policy and update documentation
A new PRIVACY.md file has been added to explicitly define the data practices for the F-Droid build of SmartTube, clarifying that it operates as a client-side application with no telemetry, analytics, or developer-controlled backend communication, while detailing interactions with third-party services like SponsorBlock and DeArrow. The README has been updated to include F-Droid and GitHub download badges, correct installation links (kutt.it to kutt.to), add Morphe and LibreTube as phone alternatives, and update device compatibility notes regarding Amazon FireTV devices.
(repo-wide) · high confidence
Add double-tap video seeking module with YouTube-style overlay
Introduces the new \doubletapplayerview\ module, which adds double-tap gesture support to ExoPlayer's \PlayerView\ for quick video seeking. The module includes a \DoubleTapPlayerView\ interface and implementation that intercepts touch events to detect double taps, triggering a seek action (defaulting to 10 seconds) while suppressing the default controller show/hide behavior to prevent UI flickering. It provides a \YouTubeOverlay\ component that renders a visual feedback animation (scaling circle and rotating play icons) similar to the official YouTube app, along with localized plural strings for the seek duration display across numerous languages.
doubletapplayerview/src · high confidence
Add doubletapplayerview module for ExoPlayer double-tap gestures
A new \doubletapplayerview\ module has been added to the project, providing a library that extends ExoPlayer's PlayerView with double-tap gesture support for fast-forward and rewind behaviors similar to YouTube. This module includes the core \DoubleTapPlayerView\ component and a customizable \YouTubeOverlay\ for the visual feedback, along with configuration files (LICENSE, README, ProGuard rules) to facilitate integration via JitPack.
doubletapplayerview · high confidence
Expose video zoom level via new getter
The AspectRatioFrameLayout now includes a getZoom() method that returns the current video zoom percentage. This addition allows external code to query the active zoom setting, complementing the existing setZoom() method for configuring it.
exoplayer-amzn-2.10.6/library/ui · high confidence
Slidr library adds partial slide support and listener callbacks
The Slidr library now supports a 'partial slide' mode, allowing activities to slide back to their original position instead of dismissing, controlled via the new \partialSlide\ configuration option. Additionally, the library introduces a \SlidrListener\ interface and adapter, enabling developers to receive callbacks for slide state changes, progress, and open/close events, while also including a custom \ViewDragHelper\ implementation to power these gesture interactions.
slidableactivity · high confidence
Removals
Removal of Windows release cleanup script
The Windows batch script \scripts/release\_cleanup.bat\ has been removed. This script was previously used to remove old APK attachments from GitHub releases while preserving tags, a capability that is no longer available to users.
scripts · high confidence
Behavioural changes
Add centralized license metadata file
A new .reuse/dep5 file has been added to define the project's copyright and licensing information in the DEP5 format. This file explicitly states that the SmartTube project is copyrighted by yuliskov from 2020-present and is licensed under the MIT License, providing a standardized way for tools and users to identify the software's legal terms.
.reuse · high confidence
Chat message layout adds spacing between header and content
The chat widget now inserts a small vertical gap between the message header (author and metadata) and the message body text. This visual tweak improves readability by preventing the header from appearing too crowded against the comment content.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/chat · high confidence
Chatkit message layout and text size adjustments
The chatkit library updates the visual presentation of messages: incoming text message bubbles now have increased bottom margins (10dp) to create more space between bubbles, and the default message text size has been adjusted to 16sp (previously 17sp, with comments noting an intent to move to 14sp). Additionally, the internal scroll listener for loading more messages has been modified to throttle calls, and comment markers were standardized from 'MODIFIED' to 'MOD'.
chatkit · high confidence
Cronet extension enables QUIC and caching
The CronetEngineWrapper in the ExoPlayer extension has been updated to explicitly enable QUIC support and caching for QUIC connections. This change modifies the builder configuration to call .enableQuic(true), ensuring that media playback via this extension utilizes the QUIC protocol and associated caching mechanisms.
cronet · high confidence
Dialog navigation fixes and state restoration improvements
This update improves stability and usability in the app's dialog system. On Android 8 devices, a new opaque fallback activity is introduced to handle display compatibility issues. For users on Android 9 (API 28) and above, the back button and touchscreen/mouse navigation in nested dialog categories now work correctly, preventing accidental dialog closure when trying to navigate back. Additionally, the Channel fragment now reliably restores its selected item and playback state after a crash, and dialog titles are handled as CharSequences for better text rendering. A minor fix also ensures that validation error messages in preferences are displayed immediately without throttling.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/dialogs · high confidence
Fixes memory leak in Leanback player adapter when no surface is present
The LeanbackPlayerAdapter now checks for the presence of a surface before notifying callbacks about position changes. This prevents unnecessary callback invocations and potential memory leaks when the player is active but not currently rendering video to a surface.
exoplayer-amzn-2.10.6/extensions/leanback · high confidence
Improved SABR playback reliability with CDN failover and subtitle fixes
The SABR media source now automatically retries playback on alternate CDN networks (e.g., switching from sn-primary to sn-secondary) when the current network fails, significantly reducing playback interruptions. Additionally, external caption files (VTT/TTML) are now loaded correctly via direct HTTP requests rather than the SABR container, and subtitle track selection has been refined to preserve original cue timestamps and properly handle visitor cookies. The player also now calculates media length more accurately and handles malformed CDN candidates gracefully.
exoplayer-amzn-2.10.6/library/sabr · high confidence
Improved SABR playback stability and reliability
The SABR playback engine now handles edge cases that previously caused infinite loops, stalls, and connection failures. Seeking to the end of a video no longer triggers an infinite reload loop, and backward seeks no longer stall when the buffer is full. The player correctly signals the end-of-stream for short or sponsor-trimmed videos and properly loads external caption files. Additionally, if a connection fails, the player will automatically retry the request on an alternate media network to maintain playback continuity.
sabr · high confidence
Improved playback stability and audio feature support
The player now recovers in-place from transient MediaCodec errors instead of crashing, significantly reducing unexpected playback interruptions. Audio playback supports modern Android features like allowed capture policies and spatialization behavior, and HDR10+ content is handled correctly with proper static info defaults. Additionally, format metadata is now preserved during internal copy operations, and HTTP connections use modern TLS ciphers.
exoplayer-amzn-2.10.6/library/core · high confidence
Improved playback stability and channel blocking features
The app now includes a dedicated ErrorFixerController to automatically resolve common playback issues such as DNS resolution failures, network errors, and buffering hangs by switching network engines or adjusting quality. A new BlockedChannelData system allows users to blacklist specific channels, with the blocked channels section hidden by default. Additionally, a CrashRestorer component preserves playback state to help recover from unexpected crashes, and a ZipHelper2 utility adds protection against Zip Slip vulnerabilities during backup and restore operations.
common · high confidence
Improved playback stability and memory management
The playback experience is now more stable with significant memory leak fixes in the PlaybackFragment, including proper cleanup of UI components, media session connectors, and the ExoPlayer controller to prevent resource pollution during restarts. The back-button behavior has been refactored to use a centralized detection method in MotherActivity, ensuring consistent handling of the back press state. Additionally, the double-tap player view is now integrated to respect seek increment settings, and the UI overlay logic has been optimized to fix focus issues and reduce RAM usage.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback · high confidence
Improved subtitle track identification and auto-subtitle support in DASH playback
The DASH manifest parser now uses the VSS ID from subtitle elements as the track identifier instead of a generic auto-incrementing ID, ensuring unique and meaningful track IDs for subtitle representations. Additionally, the parser passes the visitor cookie to the manifest constructor, enabling proper context for automatic subtitle selection.
exoplayer-amzn-2.10.6/library/dash · high confidence
Leanback library: disabled header focus zoom and expanded crash handling
The Leanback library now disables the focus zoom effect on sidebar headers to prevent visual distraction, and adds handling for IllegalStateException and ClassCastException in GridLayoutManager to prevent crashes on Chromecast devices running Android 14.
leanback-1.0.0 · high confidence
LoopingVideoView constructor requires Android 5.0 (API 21)
The four-argument constructor for LoopingVideoView now requires Android 5.0 (API 21) or higher. This change ensures that the view is only instantiated on devices that support the underlying API level, preventing potential runtime issues on older Android versions.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/vineyard · high confidence
QR code sign-in now supports explicit full URL input
The sign-in flow for QR code authentication has been updated to accept a full sign-in URL directly. Previously, the system constructed the URL by appending the user code to a base URL; it now prioritizes an explicitly provided full URL if available, falling back to the previous construction method only if no full URL is supplied. This change also adds a null-check for the context to prevent crashes during UI updates.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/signin · high confidence
Refactor card text scrolling and disable rounded corners in list presenters
The Channel and Settings card presenters now apply text scroll speed settings at initialization and conditionally enable marquee scrolling only when auto-scroll is enabled, improving text readability control. Additionally, the rounded corners feature has been disabled for the CustomListRowPresenter and CustomVerticalGridPresenter, and while outline code for rounded corners remains commented out in other card presenters, the active rounded corner effect is no longer applied to list rows.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/presenter · high confidence
Refactored crash state restoration and updated badge logic
The BrowseFragment now delegates crash state persistence and restoration (header index, selected video, and playback state) to a new CrashRestorer component, replacing the previous inline logic. Additionally, the badge icon update logic has been extracted into a dedicated updateBadge method, and several getActivity calls have been replaced with getContext to improve safety and consistency.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse · high confidence
Removal of throttling for double-back exit confirmation message
The confirmation message displayed when pressing the back button twice to exit the app is no longer throttled. In both the standard and secondary back-press managers, the code now calls the standard message helper instead of the throttled variant, ensuring the 'press again to exit' notification is shown immediately without artificial delay.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/common/keyhandler · high confidence
Search tags: crash recovery and individual tag removal
The search tags interface now preserves and restores the currently playing video if the app crashes or is killed, ensuring playback resumes seamlessly upon restart. Users can also remove individual search tags from the active search session. Additionally, the search results list now supports rounded card corners, configurable via the UI tweak settings.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/search · high confidence
Simplified app exit logic in LeanbackActivity
The logic for handling the app exit sequence in LeanbackActivity has been streamlined. Previously, the system would only register a finish callback if the device was not connected to a remote control; now, the finish callback is always registered, and the remote control connection check has been removed. This change also removes the dependency on the RemoteControlData class within this file.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/common · high confidence
UI navigation refinements and stability fixes in the player controls
This update improves the TV interface's navigation and stability. The player controls now support a 'shared focus' mode, allowing synchronized navigation between the playback and secondary control bars, and tooltips are enabled for control buttons. Seek behavior has been adjusted to respect user increment settings and prevent the UI from auto-hiding during seeking. Additionally, the app handles Android 9+ fragment manager errors more gracefully, fixes a crash when requesting audio permissions, and adds a compatibility check for the SeekBar's hotspot API on older Android versions.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/mod · high confidence
UI tweaks and grid layout fixes in video browsing
Video browsing grids now respect the user's rounded corners preference, applying the setting to settings, multi-video, and single-video grid presenters. Grid layout calculations on devices with screen cutouts (Android 11+) now use window bounds to ensure correct card sizing. The video grid fragment includes a safety check to prevent crashes if attached to a null activity, and the position restoration logic has been adjusted to show the loading indicator after UI handlers complete, improving perceived responsiveness.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/video · high confidence
UI tweaks disabled and RTL marquee navigation fixed
The previously enabled rounded card corners feature has been disabled, and the sidebar header zoom effect is no longer applied to selected items. Additionally, the marquee text view component has been updated to fix right-to-left (RTL) scrolling issues on Android 4 and later, ensuring text scrolls correctly in RTL languages. A new utility method has also been added to fix broken GridLayoutManager navigation on Android API 28+ when using Japanese fonts, by adjusting line spacing and font padding.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/util · high confidence
Updated ProGuard rules and added stable flavor configuration
The app's ProGuard configuration has been updated to include keep rules for several new classes and methods, including playback and browse activities, Kotlin coroutines, and RecyclerView components, while also removing keep rules for the legacy MarqueeTextView in favor of the compatible version. Additionally, a new client configuration for the 'app.smarttube.stable' package has been added to the Google Services file, supporting the F-Droid flavor with its own search provider suffix and Crashlytics settings.
smarttubetv · high confidence
Fixes
Fix subtitle scaling and prevent playback crash
Subtitles now scale correctly alongside the video sidebar and dialog overlays, ensuring they remain readable and properly positioned when the video aspect ratio changes. Additionally, a null-check on the root view prevents a crash during the initialization of the playback fragment.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/mod · high confidence
Fixes automatic subtitle loading by including visitor cookies
The DASH player now correctly loads automatic subtitles that require authentication by attaching the visitor cookie to the HTTP requests for subtitle segments. This change ensures that subtitle tracks protected by cookie-based access controls are fetched successfully, resolving previous errors where subtitles failed to load due to missing authentication headers.
dash · high confidence
Fixes crash in video group list and improves adapter stability
The VideoGroupObjectAdapter now uses a CopyOnWriteArrayList for its internal video group storage to prevent ArrayIndexOutOfBoundsException crashes that occurred during concurrent modifications. Additionally, the isEmpty check now relies on the adapter's size method for consistency, and the notification logic for other adapters includes an explicit check to skip empty groups, preventing potential errors when accessing the last item in a group list.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/adapter · high confidence
Fixes for Android TV 12 playback and volume booster crash
This update addresses stability issues on Android TV 12 where playback could fail on the Home screen, and resolves a crash associated with the volume booster feature. The changes refine the player initialization logic to correctly check the top view state, ensure proper resource release during engine shutdown, and standardize access to the view and playback presenters to prevent null-pointer exceptions.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/embedplayer · high confidence
Fixes for playback stutters, search crashes, and resource leaks in Leanback Assistant
This update addresses several stability and performance issues within the Leanback Assistant module. To prevent playback stutters, the channel update worker now skips synchronization when the app is in the foreground or when a sync is already scheduled, reducing CPU contention during video decoding. The search provider now initializes global preferences in its onCreate method, preventing crashes when search queries are executed before the app process has fully started. Additionally, the recommendations provider now uses try-with-resources for HTTP responses to prevent memory leaks, and the channels provider includes a null-check to avoid potential null-pointer exceptions when processing empty clip lists.
leanbackassistant/src/main · high confidence
Fixes video preview display on Android TV 12
The ComplexImageView widget now correctly handles video preview rendering on Android TV 12 by replacing the previous 'prefer simple preview' logic with an explicit 'preview URL enabled' flag. This change ensures that preview images are only displayed when a valid preview URL is available and the feature is explicitly enabled, preventing display issues on newer Android TV versions.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/complexcardview · high confidence
Improved app stability with global error handling and Android 8 dialog fix
The application now features a more robust global exception handler that suppresses known non-critical crashes (such as those from Google's Katniss service or USB broadcasts) and displays error messages via toast notifications for ignored exceptions. Additionally, a specific fix addresses an Android 8 (API 26) crash on certain TV devices by using an opaque activity variant for dialog windows, resolving orientation request issues. The initialization of the Conscrypt security provider has also been refined to prevent JNI linking errors during early startup.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/main · high confidence
Introduce MarqueeTextViewCompat for reliable scrolling text
The app now uses a new MarqueeTextViewCompat widget for scrolling text in headers, titles, and dialogs. This replacement fixes layout and navigation issues on older Android versions (API 19 and below) and API 28+, corrects right-to-left (RTL) scrolling direction, and ensures text scrolls correctly even when the view is not focused (such as in Picture-in-Picture titles).
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/marqueetextviewcompat · high confidence
Web browser activity handles fragment instantiation errors gracefully
The web browser activity now wraps its layout initialization in a try-catch block to handle potential Fragment instantiation failures. If the system fails to instantiate the WebBrowserFragment (e.g., due to a ClassCastException or InstantiationException), the app will display the error message to the user and close the activity instead of crashing.
smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/webbrowser · high confidence
Dependencies
Gradle wrapper upgraded to version 7.5
The Gradle wrapper configuration has been updated to use Gradle 7.5 (previously 6.9.1). This ensures that the project builds with the newer Gradle distribution, which may bring performance improvements and new features, while requiring users to have the appropriate Java version compatible with Gradle 7.5.
gradle · high confidence
Upgrade to Android Gradle Plugin 7.4.2 and migrate to Maven Central
The build system has been upgraded to Android Gradle Plugin 7.4.2 and Gradle 7.5, with the deprecated JCenter repository replaced by Maven Central. This update includes a migration of AndroidX dependency version variables (e.g., from \\*LibraryVersion\ to \\*Version\) across multiple modules, the addition of two new internal modules (\doubletapplayerview\ and \slidableactivity\), and a change to the default application ID from \org.smarttube\ to \app.smarttube\. The main app version has also been bumped to 32.56.
(dependencies) · high confidence
Housekeeping
Clarified comment in MediaSessionConnector metadata invalidation
The comment in MediaSessionConnector.invalidateMediaSessionMetadata() was updated from 'MODIFIED' to 'MOD' to better reflect the code's behavior of disabling notifications when no metadata provider is set.
exoplayer-amzn-2.10.6/extensions/mediasession · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 51 → 46 (-4.2)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 81 → 89 (+7.7)
- Architecture 100 → 98 (-1.6)
- Maturity 58 → 59 (+0.4)
- Readiness 41 → 51 (+9.6)
- Security 46 → 28 (-17.8)
Resolved (73)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/BrowsePresenter.java)
- Duplicated block (10 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/ChannelPresenter.java)
- Duplicated block (10 lines × 2) (smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/video/MultiVideoGridFragment.java)
- Duplicated block (10 lines × 2) (smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/video/MultipleRowsFragment.java)
- Duplicated block (11 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/SearchPresenter.java)
- Duplicated block (11 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/BackupAndRestoreHelper.java)
- Duplicated block (11 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/ZipHelper.java)
- Duplicated block (11 lines × 2) (smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/layout/TouchHorizontalGridView.java)
- Duplicated block (12 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/data/VideoGroup.java)
- Duplicated block (12 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/selector/TrackSelectorUtil.java)
- Duplicated block (12 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/proxy/PasswdURI.java)
- Duplicated block (12 lines × 2) (leanbackassistant/src/main/java/com/liskovsoft/leanbackassistant/channels/ChannelsProvider.java)
- Duplicated block (12 lines × 2) (slidableactivity/src/main/java/com/r0adkll/slidr/util/ViewDragHelper.java)
- Duplicated block (12 lines × 3) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/ChannelUploadsPresenter.java)
- Duplicated block (14 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/ChannelPresenter.java)
- Duplicated block (14 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/ChannelPresenter.java)
- Duplicated block (14 lines × 2) (smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/mod/surface/SurfaceViewWrapper.java)
- Duplicated block (14 lines × 2) (smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/vineyard/videoview/VideoCardView.java)
- …and 53 more
New (533)
- Assertions commented out: downloadRunner_multipleInstancePerContent_throwsException (exoplayer-amzn-2.10.6/library/core/src/test/java/com/google/android/exoplayer2/offline/DownloadManagerTest.java)
- ClassTooLong: AppDialogUtil (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java)
- ClassTooLong: BrowsePresenter (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/BrowsePresenter.java)
- ClassTooLong: GeneralData (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/GeneralData.java)
- ClassTooLong: GeneralSettingsPresenter (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/GeneralSettingsPresenter.java)
- ClassTooLong: PlaybackFragment (smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackFragment.java)
- ClassTooLong: PlayerSettingsPresenter (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/PlayerSettingsPresenter.java)
- ClassTooLong: PlayerTweaksData (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/PlayerTweaksData.java)
- ClassTooLong: PlayerUIController (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/PlayerUIController.java)
- ClassTooLong: SliderPanel (slidableactivity/src/main/java/com/r0adkll/slidr/widget/SliderPanel.java)
- ClassTooLong: SuggestionsController (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/SuggestionsController.java)
- ClassTooLong: TrackSelectorManager (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/selector/TrackSelectorManager.java)
- ClassTooLong: Utils (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/Utils.java)
- ClassTooLong: Video (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/data/Video.java)
- ClassTooLong: VideoMenuPresenter (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/dialogs/menu/VideoMenuPresenter.java)
- ClassTooLong: ViewDragHelper (slidableactivity/src/main/java/com/r0adkll/slidr/util/ViewDragHelper.java)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no installation or build instructions (README.md)
- Duplicated block (10 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/SuggestionsController.java)
- Duplicated block (10 lines × 2) (common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/AboutSettingsPresenter.java)
- …and 513 more
Changes since last survey
- 184 commits — 135 feature/other, 49 fixes
By area
- common/src — 67 commits
- (root) — 44 commits
- (repo) — 30 commits
- smarttubetv/build.gradle — 24 commits
- exoplayer-amzn-2.10.6/library — 12 commits
- smarttubetv/src — 5 commits
- leanbackassistant/src — 1 commit
- smarttubetv/multidex-keep.pro — 1 commit
Notable commits
- fix: BufferingDetector: fix negative durations
- fix: Fix SABR playback and CDN routing @Jupiops
- fix: Fix SABR subtitle loading for external caption files
- fix: Fix controller A longpress; upd MediaServiceCore
- fix: Fix for the 'IllegalStateException: Only fullscreen opaque activities can request orientation
- fix: Fix spacing in local backup not supported message
- fix: Fixed capitalization in some strings
- fix: Fixes: controller key mapping fix; Android 4.4 crash fix; player error fixer improvements
- fix: Home: hide fully watched videos; fix watched progress reset after reboot
- fix: MediaServiceManager: group continuation fix and channel presenter refactor
- fix: Merge branch 'TUSHAR91316-docs-readme-fixes'
- fix: Merge branch 'TUSHAR91316-fix-restore-string-set'
- fix: Merge branch 'docs-readme-fixes' of https://github.com/TUSHAR91316/SmartTube into TUSHAR91316-docs-readme-fixes
- fix: Merge branch 'fix-restore-string-set' of https://github.com/TUSHAR91316/SmartTube into TUSHAR91316-fix-restore-string-set
- fix: Merge branch 'fix/4128-smarttube-screensaver-lifecycle' of https://github.com/mvanhorn/SmartTube into mvanhorn-fix/4128-smarttube-screensaver-lifecycle
- fix: Merge branch 'fix/sabr-subtitle-loading' of https://github.com/yasoob/SmartTube into yasoob-fix/sabr-subtitle-loading
- fix: Merge branch 'mvanhorn-fix/4128-smarttube-screensaver-lifecycle'
- fix: Merge branch 'yasoob-fix/sabr-subtitle-loading'
- fix: PlayerUIController: fix screen off button highlight after apply a settings
- fix: Revert screensaver suspend fix (temporary, conflicts with constant dimming feature)
- …and 164 more
Architecture
- Containers 0 added · 0 removed · contexts 24 added · 1 removed · edges 35 added · 0 removed
Added bounded contexts (24)
- chatkit
- common
- core
- cronet
- dash
- doubletapplayerview
- filepicker-lib
- flac
- fragment-1.1.0
- gvr
- hls
- jobdispatcher
- leanback-1.0.0
- leanbackassistant
- main
- mediasession
- rtmp
- sabr
- slidableactivity
- smoothstreaming
- …and 4 more
Removed bounded contexts (1)
- .
Added dependency edges (35)
- common → core
- common → dash
- common → fragment-1.1.0
- common → sabr
- common → slidableactivity
- common → smoothstreaming
- common → ui
- cronet → core
- dash → core
- filepicker-lib → fragment-1.1.0
- flac → core
- gvr → core
- gvr → ui
- hls → core
- jobdispatcher → core (coupling)
- leanback-1.0.0 → fragment-1.1.0
- main → core
- main → fragment-1.1.0
- main → ui
- mediasession → core
- …and 15 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
yuliskov/SmartTube was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 9336539b3db340c7bcf55f95afad44d1d1abb7e4 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-ae95d6cad036.