Skip to content

Releases: EdinUser/YouTubeLocalHistory

YT re:Watch 4.0.3

28 Nov 11:04
cee08ca

Choose a tag to compare

🐛 Playback & Navigation Fixes

Enhanced playlist autoplay detection: Improved logic to detect playlist autoplay scenarios and delay timestamp restoration appropriately, preventing conflicts with YouTube's autoplay behavior.
Smart timestamp restoration: Added checks for significant viewing history (>30s) before attempting timestamp restoration to avoid unnecessary resets for short or unwatched videos.
Refined timing reset logic: Skip timing resets when videos are already playing near the beginning (within 5 seconds) to prevent unnecessary interruptions during playlist navigation. 
Improved SPA navigation handling: Enhanced single-page application navigation detection with better timestamp flag management and null video object protection. 

📊 Analytics & Statistics Improvements

Robust average duration calculation: Added Number.isFinite checks to prevent invalid duration calculations in analytics summaries.
Enhanced video tracking reliability: Improved timestamp reset logic and dataset flag management for better consistency across navigation types.

🗄️ Storage System Enhancements

Fixed date manipulation logic: Corrected retention days calculation to properly handle date arithmetic and prevent incorrect pruning of daily statistics.

🧪 Testing & Quality Assurance

Enhanced E2E test setup: Improved Playwright configuration with dedicated chromium-with-extension project for better extension testing.
Better navigation and consent dialog handling: Updated test suites to handle YouTube's cookie/consent dialogs and improve test reliability.
Jest setup improvements: Added ytStorage mock and exposed testing helpers for more comprehensive unit testing.
Memory management: Replaced WeakSet with Set for trackedVideos to allow manual management during testing.

YT re:Watch 4.0.1

26 Nov 16:10
9c13f9a

Choose a tag to compare

🐛 Stats & Analytics Fixes

  • Fixed inconsistent Analytics summary cards by rebuilding the persistent stats snapshot from the full hybrid history (IndexedDB + localStorage) and using it as the single source of truth.
  • Summary cards (Total Watch Time, Videos Watched, Shorts Watched, Average Duration, Completion Rate, Playlists Saved) now read from the stored stats counters instead of only the currently loaded page.
  • Activity (Last 7 Days) and Watch Time by Hour charts now use the same persisted daily/hourly stats snapshot (with local‑day keys and 24 hourly buckets) for stable, full‑history graphs.

🎬 Playlist Handling Improvements

  • Improved playlist detection and title extraction across YouTube layout variants using a broader selector set and a retry‑based saver.
  • Playlist “pause history” toggles are now more reliable and consistently respected when saving progress, preventing unwanted history entries for ignored playlists.

🧹 Data Hygiene

  • Hybrid stats rebuilds now prune the daily stats map to the last 7 local days, keeping the snapshot compact and aligned with what the UI displays.

YT re:Watch 4.0.0

25 Nov 07:28
9c20873

Choose a tag to compare

✨ Major New Features

🔄 Hybrid Storage Architecture - Unlimited Local Storage

  • Complete removal of Firefox Sync - Eliminated cross-device synchronization complexity
  • IndexedDB + localStorage hybrid system - Unlimited local storage capacity (GBs scale vs previous ~50MB limit)
  • Manual export/import for data portability - Transfer data between devices via JSON files instead of sync
  • Enhanced performance - Fast local queries, memory-efficient pagination, no sync overhead
  • Bulletproof reliability - Core functionality (getVideo/setVideo) never depends on IndexedDB availability

🗄️ Storage System Overhaul

  • Layer 1: IndexedDB - Complete video/playlists history with full metadata (unlimited capacity)
  • Layer 2: localStorage - Fast overlay for recent/active content and lightweight config
  • Merged view reads - Seamless access to complete history with local changes taking priority
  • Fail-safe migration - Verified batch migration from old storage with comprehensive error handling
  • Context-aware access - Extension origin owns IndexedDB, content scripts use RPC for privacy

🧭 Behavior Changes

  • No cross-device sync - All storage is local-only, eliminating sync conflicts and bandwidth usage
  • Export/import workflow - Manual data portability replaces automatic sync
  • Local-only architecture - No network dependencies, works completely offline
  • Simplified complexity - Removed ~1300 lines of sync-related code

📊 Performance Improvements

  • Unlimited storage scaling - Handle 100,000+ videos without performance degradation
  • Memory efficiency - Load only current page into memory, not entire dataset
  • Fast queries - IndexedDB indexes for timestamp, isShorts, and title search
  • No sync overhead - Eliminated background sync operations and quota limits

🔒 Privacy & Security

  • Extension-scoped IndexedDB - Database never created under YouTube origin
  • No cloud storage - All data stays local, no external servers involved
  • No sync tracking - Eliminated potential sync metadata collection
  • Enhanced local encryption - Browser's built-in storage security applies

🚀 Core Stability

  • Bulletproof core functionality - Reading/saving video times always works
  • Failsafe strategy - localStorage primary, IndexedDB non-blocking archive
  • Graceful degradation - Continues working if IndexedDB unavailable
  • Verified migration - Each migration batch verified before cleanup

💔 Breaking Changes

  • Firefox Sync completely removed - No longer available in any form
  • Cross-device workflow changed - Manual export/import replaces sync
  • Storage architecture rewritten - Hybrid system replaces layered sync
  • API simplification - Removed all sync-related methods and interfaces

🔄 Migration Notes

  • Automatic migration - Existing data seamlessly moved to hybrid storage
  • Data preservation - No data loss during architectural transition
  • Backward compatibility - Export format remains compatible
  • Performance improvement - Immediate benefits after migration completes

What's Changed

Full Changelog: 3.1.5...4.0.0

YT re:Watch 3.1.5

30 Oct 06:52
489d730

Choose a tag to compare

What's Changed

  • Enhance build script for Chrome extension signing and env variables by @EdinUser in #75
  • docs: reorganize and update documentation, add new images by @EdinUser in #76
  • fix/update-doxs-after-3-1-4-version by @EdinUser in #77
  • build(deps): bump playwright and @playwright/test by @dependabot[bot] in #78
  • fix(navigation): enhance navigation detection and timestamp restoration for YouTube's new player by @EdinUser in #79

Full Changelog: 3.1.4...3.1.5

YT re:Watch 3.1.4

18 Oct 17:51
dbe0631

Choose a tag to compare

What's Changed

  • Enhance video timestamp restoration for new YouTube interface by @EdinUser in #74

Full Changelog: 3.1.3...3.1.4

YT re:Watch 3.1.3

25 Sep 05:22
c35776d

Choose a tag to compare

  • Fix discrepancies in daily/hourly stats by seeding from history when necessary
  • Ensure accurate short-window charting by computing stats dynamically
  • Enhance Analytics tab with updated labels showing video counts and minutes

YT re:Watch 3.1.2

24 Sep 18:03
dba566f

Choose a tag to compare

[3.1.2] - 2025-09-24

✨ New Features

  • Persistent, privacy‑preserving watch‑time statistics stored locally (totalWatchSeconds, last 7 days daily, 24‑slot hourly)
  • History list now shows the video channel name beneath the title

🧭 Behavior Changes

  • Shorts tracking: save interval aligned to 5s and relaxed duration checks to avoid missed saves
  • Initial stats seeding from existing history for accurate analytics on upgrade

📊 Analytics

  • Summary cards and charts now prefer persistent stats for accuracy and performance
  • Activity (last 7 days) and "Watch time by hour" use stored stats with local‑day keys

🔄 Sync & Performance (Firefox)

  • Throttled storage.sync change listener to prevent self‑triggered loops; ignores self‑writes for 20s and enforces a 5‑minute minimum between listener‑triggered syncs
  • Stats updates are debounced to the background cadence (default ~10 minutes) unless immediate sync is explicitly enabled

🗄️ Export/Import

  • Export schema bumped to dataVersion: "1.1" and now includes a stats object

🐛 Fixes

  • Improved timestamp validation and optimized timeupdate handling to reliably record progress
  • Shorts tracking no longer skips saves when duration is unavailable

YT re:Watch 3.1.0

06 Sep 07:13
d05fdee

Choose a tag to compare

Highlights

  • Add “Remove from history” button on YouTube thumbnails (hover to reveal)
  • Add per‑playlist “Ignore videos” toggle (Playlists tab)
  • Add global “Pause history in playlists” setting
  • Default auto‑sync interval changed to ~10 minutes; immediate sync on updates disabled by default (Firefox only)

Details

  • Thumbnail actions: Quickly remove individual videos from local history directly from YouTube thumbnails. Integrates with the deletion system so removed items stay deleted.

Playlist controls:

  • Per‑playlist “Ignore videos”: When enabled for a playlist, progress for videos watched within that playlist isn’t saved.
  • Global “Pause history in playlists”: Prevent saving progress for any playlist session until you turn it off.

Other changes:

  • Sync (Firefox): Reduced background sync frequency to lower resource usage; immediate sync on updates now off by default. Manual sync remains available from Settings.
  • UI and translations: Updated popup UI and all supported locales to expose the new playlist controls and messages.
  • General: Minor stability and internal improvements.

YT re:Watch 3.0.3

29 Aug 05:57
8d9dd15

Choose a tag to compare

[3.0.3] - 2025-08-29

🐛 Fixes

  • Restored watched overlays on YouTube Home after recent layout changes
  • Improved video ID detection for new home tiles and playlist items
  • Ensured overlays render above thumbnails (higher z-index)
  • Fixed incorrect "viewed" overlays on unwatched videos in YouTube's home feed
  • Improved thumbnail processing to handle YouTube's dynamic content loading
  • Reduced console logging for cleaner developer experience
  • Enhanced memory management with better cleanup of processed elements
  • Fixed race conditions in thumbnail overlay processing

🧪 Stability

  • Hardened tests and minor internal cleanups

— Small compatibility release; no settings or UI changes

What's Changed

  • build(deps-dev): bump form-data from 4.0.3 to 4.0.4 by @dependabot[bot] in #63
  • fix(overlays): restore watched overlays on YouTube Home by @EdinUser in #65

New Contributors

Full Changelog: 3.0.1...3.0.3

YT re:Watch 3.0.1

11 Jul 04:59
16bad78

Choose a tag to compare

✨ Major New Features

🔄 Tombstone-Based Deletion System

  • Robust video deletion with tombstone markers to prevent deleted videos from reappearing after sync
  • 30-day tombstone retention ensures deletion consistency across all devices
  • Stale device protection automatically handles devices that haven't synced for 29+ days
  • Cross-device deletion propagation ensures deletions are respected on all synchronized devices

🐛 Critical Bug Fixes

  • Fixed deleted videos reappearing after sync operations
  • Resolved immediate video restoration when delete button was clicked
  • Enhanced popup filtering prevents deleted videos from appearing in the UI

🐛 Bug Fixes

  • Video Overlay: Fixed an issue where the "viewed" overlay was not appearing on related videos in the right-hand column of a video page. This was caused by a YouTube UI update that introduced a new yt-lockup-view-model element, which is now correctly handled.

🚀 Core Stability

  • Chrome MV3 Compatibility: Refactored the background script to use chrome.storage.session for state management, preventing state loss when the service worker becomes inactive. This fixes bugs related to popup handling and ensures reliable operation on Chrome.
  • Enhanced Reliability: Replaced unreliable beforeunload events with pagehide and added defensive checks to prevent race conditions and errors during page unload.
  • Improved Popup Handling: The extension now focuses the existing popup window instead of opening a duplicate if the action is triggered multiple times.

🛠️ Other Improvements

  • Automatic tombstone cleanup and storage optimization
  • Improved sync reliability with enhanced conflict resolution
  • Better handling of offline devices and stale data scenarios