Projects
Nosved Player
v1.3.0 • Apr 18, 2026
Latest ReleaseDownload Latest
Choose the variant for your device
What's Changed
Nosved Player v1.3.0 - Changelog
One of The Biggest as per me
Playback & Gestures
- Implement smooth seeking:
CLOSEST_SYNCseeks, 3-phase seek model (start/preview/commit), improved buffering and timestamp previews.
- Refactor gesture system:
- Long-press fast seek with gesture locking, double-tap ripple unified in GestureOverlay, fixed stuck animations.
- Remove legacy framerate field and start work on SW-decoder-friendly stats.
Watch History, States & Badges
- Add WatchHistoryScreen with clear history support and integrate into Home’s Continue Watching.
- Introduce
VideoWatchState+getWatchStateand unify badges:- WatchStateBadge on videos (NEW/Running/Ended).
- NewCountBadge on folders with real-time updates via historyMap.
- Fix mis-tagging of ended videos and add manual Tag dialog to override statuses.
Metadata, Search & Recycle Bin
- Implement hybrid metadata caching:
- MediaStore projections for shallow metadata, Room cache for deep metadata, background indexer for post-scan enrichment.
- Add RecycleBinScreen using MediaStore Trash APIs:
- Entry point in Home, full Marathi translation, fixed expiry calculation bug, repository return-type fix.
- Search system:
- New SearchResultScreen wired into NavGraph.
- Suggestion popup component, layout toggle (list/grid with persistent column count).
Home & Library
- Add Recently Added carousel (last 10 videos).
- Add delete confirmation dialog to prevent accidental deletes.
- Fix explorer sorting and display info in Files/Explorer views.
- Auto-refresh library after file operations.
Device Stats & Tools
- Redesign DeviceStatsOverlay:
- Material 3 Card, close button, dynamic framerate via
VideoFrameMetadataListener, tied to Developer section toggle.
- Material 3 Card, close button, dynamic framerate via
- Introduce Tool/ Timestamp Tool:
- Ms ↔ time conversion, clipboard actions, navigation wiring, and a live time section with lifecycle-aware updates.
MediaSession & Intents
- Configure ExoPlayer with proper
AudioAttributesand noisy audio handling. - Integrate Media3 MediaSession via ForwardingPlayer for headset controls.
- Add ACTION_VIEW intent handling and share actions (single/multiple).
- Register shortcuts for launcher discovery and fix shortcut XML/strings issues.
Player Interface & UI
- New PlayerInterface settings screen:
- Orientation, full-screen, soft buttons, brightness, elapsed/battery/clock toggles.
- Wire
showRemainingTimefrom SettingsViewModel through PlayerControls and YouTube-style controls. - Adjust overlay placement (elapsed/battery/clock) and rotation button positions for both standard and YT-style layouts.
- Fix watch history progress reset when re-entering videos.
FAB, Rotary, and Selection
- Rotary sort wheel redesign + layout fixes + close icon.
- Add Preview FAB:
- Dual gesture (tap=play/close, long press=preview card), spring rotation animation, Coil-based thumbnail caching.
- Implement “selectByThumbnail” behavior across list/grid/folder views.
Navigation Bar & Theme
- Add
isNavBarTransparentpreference (DataStore), wire to theme and MainActivity, propagate across major screens. - Standardize TopAppBar colors for About, Privacy, Log, and secondary screens.
- Refactor onboarding to support dynamic theme + add Greeting Splash to prevent initial flash.
Localization
- Add Marathi as a language option and translate (still work In Progress for lots of Pages InApp):
- Home, History, About, Log, Folder List, Recycle Bin, YT controls, formatters, explorer, info sheets.
Architecture & Data Safety
- Replace destructive Room migration with MIGRATION_1_2:
- Extend watch_history and video_metadata_cache schema safely; enforce migration in database builder.
- Implement longest-prefix visibility resolver and path normalization for SAF URIs.
- Extend WatchHistory with path field and update repository logic.
- Add safePopBackStack() to avoid back stack depletion.
Refactors, Cleanup & Misc
- Modularize VideoList and FolderList into dedicated packages with UiState/UiEvent/UiAction.
- Remove legacy screens and empty controllers.
- Address Gradle version compatibility, build warnings, and Material 3 API updates (
menuAnchor). - Update screenshots, .gitignore, and planning docs (codebase map).