* start to implement some parental controls
* Hide share + Hide Unsubscribe
* Hide live streams
* fix hide live streams
* Add "parental-control-settings"
* Implement Hide Live Streams & Hide "Age Restricted"
* Hide live streams from Subscriptions + fix hide live streams from search
* enable safe search on showFamilyFriendlyOnly
* Move some settings from parental control to distraction free
* fix channel loading
* make parental control settings collapsible
* fix lint
* dont show age restricted on videos that are loading
* improve hide live videos
* code refactor
* grammar
* nvm im dumb
* use named placeholder for age restricted message
* improve readability
* change Hide Description to Hide Video Description
* update translated strings
* fix age restricted component
Co-authored-by: Preston <freetubeapp@protonmail.com>
Co-authored-by: peepopoggers <72892531+peepopoggers@users.noreply.github.com>
If a current video is practically over or the value in
the history's watch progress is almost the same as the length
of the video, it's safe to deduce that if the external player
button is clicked, the user is most likely just rewatching
the video, making no sense to pass a start offset to it
* Add hover visual on thumbnails
* Fix white-space issues on playlist description
* Fix playlist issues with scrolling
* Fix end of file new lines
* Fix dropdown not visible issue
* Fix mobile styling
* Clean up using flex
* Fix lint issue
* Clean up ft-input for top-nav
* Even out padding on ft-input
* Remove difference in in/out transitions for input
* Alternative solution to showing clear text button
* Keep clear text button visible if applicable
* Fix typo
* Format Invidious playlist dates with the selected locale
* Fix language for locale API as well
* Add special handling for Norsk nynorsk
* Workaround system locale issue
* * Implement divider for video "more dropdown menu"
* * Update API for ft-icon-button
* * Update existing ft-icon-button user to use new API for dropdown options
* * Update ft-icon-button to remove unused old API
* * Update divider to be less visible
* * Update padding of list item
* * Update WebpackDevServer option to avoid app reloading on MacOS .DS_Store file change
* Add setting for each SB category
* Update SB Settings Component
* Show other SB categories in seek bar
* Use camelCase for SponsorBlock values
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* change "Don't Skip" to "Do Nothing" in locale
* improve styling of sponsorblock settings
* add filler category, don't repeat colors
* Fix JS format issue caused during code conflict resolving
* make sponsor block markers transparent
* change opacity to 0.6
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* channel member + custom channel emojis
* accessibility improvements
* show member icon for comment replies
* update yt-comment-scraper. make member icon more accessible.
* Add system preference to theme-settings
* Add watching logic to check for dark theme settings
* Add en system theme translation
* Add explicit darkTheme option to browserWindow
* Remove unnecessary themeSource line
* Fix lint errors
* Move to using main process messaging for theme change
* Add system dataset selectors for themes
* Fix lint errors
* Change system theme to system default
* Use system default for deciding background color of newWindow
* Add baseTheme to state persistance
* Use baseTheme on browserWindow creation
* Fix lint errors
* Improve window background logic
* Catch settingsDb errors
* Remove dark flash on light themes
* Fix lint issues
* Fix system default sync on multiple windows
* Load database on each new window
* Fix lint errors
* Update compatibility for shared electron storage
* Remove unused console log
* Revert unnecessary changes
* Fix window maximize white flash
* Fix handleBaseTheme usage
* Use data-system-theme instead of data-theme
* Revert window maximize changes
* Fix theme flash on new window open
* ^ Update electron 15.x
* ^ Update electron 15.x > 16.x
This fixes the issue of white flash on new window shown before event `ready-to-show`
even window created with option `backgroundColor`
* * Update `createWindow` to pass options via an object instead of positional arguments
* * Implement windows opening with new window won't be closed when "parent" window closed
* * Update new window opened via middle click to be shown immediately
Matches current behaviour and better user experience (due to elimination of delay from the click to window appearance)
* * Update new window button to show new window faster
* * Only focus on new window on event `ready-to-show` if new window is not already shown
* Update src/main/index.js
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
* src/renderer/store/modules/utils.js, src/renderer/components/watch-video-info/watch-video-info.vue, src/renderer/components/watch-video-info/watch-video-info.js, src/renderer/components/ft-icon-button/ft-icon-button.js, src/main/index.js
in-app download in hardcoded path
* download into variable folder supported
download can be done into a specify folder defined in the settings or can be done by choosing a folder just before the downloading
* src/renderer/store/modules/utils.js: folder is asked before downloading when appropriate
* src/renderer/store/modules/utils.js: toast added for success and faillure
* src/renderer/store/modules/utils.js: mecanism to show download progress
* src/renderer/store/modules/utils.js: percentage symbol added to toast message when displaying progress
* src/renderer/components/download-settings/download-settings.js: clarification comment about electron
* src/renderer/store/modules/utils.js: typo in comment resolved
* src/renderer/store/modules/utils.js: show a toast when there is a file error
* static/locales/fr-FR.yaml: resolved typo in Choose Path
* src/renderer/store/modules/utils.js: download progress notification toast deleted
* corrections of typos, changes in toast messages, toast messages translatable by modifying the ft-toast component to allow translatable strings
* cleaner code for translatable toast
* downloadMedia argument changed from array to object
* src/renderer/components/download-settings/download-settings.sass: trailling space added
* Apply suggestions from code review
folder changed for folderPath
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* fix forgotten folderPath renaming
* extra space deleted
* starting toast displayed after download folder asks
* audio button deleted
* experimental electron web library deleted because can cause performance issues
* placeholder for web support
* made better condition for web and electon compatibility and small variable renaming
* better error message when user cancel the download
* falling back to asking the user if the download repository doesn't exist
* falling back mode implemented
* console.log for debugging deleted
* useless import deleted
* small renaming
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* transition duration of 0.5s added to watched videos
* small code reformating
* extra white spaces deleted
* typo in the word transition corrected
* original whitespaces respected
* transition added when hovering end
* video stat components started and properties chosen
* ft-video-stats integraded into the video player for dev and debugging
* using a timer to get video stats and a method to update the statistic every second
* getting statistic from vhs and adaptativeFormat
* frame drop capture
* stats capture in the form of event
* useless comment deleted
* stats render with a for loop in the template
* stats correctly displayed
* overlay stats added
* video stats component deleted
* video stats component deleted inside template video player
* video stats component fully deleted
* modal solution working need more styling and code messy
* lint
* modal working with stats
* keyboard shortcut for stats
* lint fix
* network state is now a string
* new line deleted
* useless whitespace deleted
* package-lock.json remove and ignore
* keyboard shortcut restricted to up arrow
* stats overlay made larger
* align to left corner
* useless formatting of string deleted
* renaming of variable formatedStrats for formattedStats
* keyboard shortcut made into a variable
* lint-fix
* key change for i
* label translated
* whitespace added for gitignore
* lock file not ignored
* videoId stat deleted
* ft-video-player.js, en-US.yaml, fr-FR.yaml: changing percentage stats display
changing the display for percentage stats for the format 'x%' instead of 'xx.xx'
* ft-video-player.js, en-US.yaml, fr-FR.yaml: network state video statistic deleted
* ft-video-player.js: made stats modal background color darker
* ft-video-player.js, en-US.yaml, fr-FR.yaml: video id are now related to the one of youtube
* ft-video-player.js, en-US.yaml, fr-FR.yaml: stats displayed made closet to the youtube implementation
the name are capitalized, the order of display is changed and fps is combined with viewport
* lint-fix
* en-US.yaml, fr-FR.yaml: network state possibilities deleted because not used
* package.json.lock: deleted
* ft-video-player.js: formated_stats renamed for formatted_stats
* lock file deleted
* index.js, ft-video-player.js: handling of right click context menu
via electon ipc bus an event is send to tell the vue component to show the stats modal
* ft-video-player.js, index.js: renaming of video stats display event and definition of it as a variable
* index.js, en-US.yaml: inconsistant capitalization of video statistics label solved
* index.js: pluralized video stats
* ft-video-player.js: fix right click undefined this.player
change the arrow function inside the closure for a function with a bind to this
* ft-video-player.js: handling of the case when this.player is not defined
the property this.stats.display.activated as been added and manage when the to show the stats. In this way in the runtime (it is still refered in the run time but it is capture in an event loop) with dont have to refer to this.player so when it is not defined it doesnt affect the behavior.
* lint fix
* src/renderer/components/ft-video-player/ft-video-player.js: modal.close move into the display event of the statistic context
* lint fix
* src/renderer/components/ft-video-player/ft-video-player.js, static/locales/en-US.yaml, static/locales/fr-FR.yaml: better capitalization of the stats labels
* static/locales/en-US.yaml: fps capitalized
* static/locales/fr-FR.yaml, static/locales/en-US.yaml: capitalized label
* src/renderer/views/History/History.js, src/renderer/store/datastores.js, src/renderer/store/modules/history.js: search history function added and indexing of history database
* npm fix
* src/renderer/views/History/History.js, src/renderer/store/modules/history.js: regex used to handle text search since their is no text indexing
* src/renderer/views/History/History.js, src/renderer/views/History/History.vue: search bar added but not adapted for history search use case
* src/renderer/views/History/History.js, src/renderer/views/History/History.vue: search bar added but not adapted for history search use case
* src/renderer/views/History/History.js, src/renderer/store/modules/history.js, src/renderer/views/History/History.vue: search history working but order do not remain the same depending on search
* src/renderer/views/History/History.js, src/renderer/store/modules/history.js, src/renderer/views/History/History.vue: search history working but order do not remain the same depending on search
* src/renderer/views/History/History.js: loading added when query is empty to order the history
* src/renderer/views/History/History.vue, src/renderer/views/History/History.js, static/locales/en-US.yaml, static/locales/fr-FR.yaml: translation added
* src/renderer/components/ft-list-video/ft-list-video.js, src/renderer/views/History/History.vue, src/renderer/views/History/History.js: fix the bad history reconstruction problem by adding an update hook to ft-list-video component
* lint fix
* src/datastores/handlers/base.js, src/datastores/handlers/electron.js, src/datastores/handlers/web.js, src/datastores/index.js, src/renderer/store/modules/history.js, src/renderer/views/History/History.js, src/constants.js: history adapted to the new db
* src/renderer/store/modules/history.js: print statement deleted
* src/renderer/views/History/History.js, static/locales/en-US.yaml, static/locales/fr-FR.yaml: search history place holder renamed
* search playlists backend
* search bar added into the frontend, search method of playlist deleted because the document are the playlist and not the videos
* src/renderer/store/modules/playlists.js: commment typo resolved
* placeholder name of search bar only defined into the .vue file instead of in the .js file
* src/renderer/components/ft-list-video/ft-list-video.js: fix the mecanism to modify a video card to reflect the current data
* src/renderer/views/History/History.js: doesn't load when query is empty
* src/renderer/components/ft-list-video/ft-list-video.js: fix problem date disapearing
* video id query deleted from search in history and playlist
* History: Refactor history module
* Profiles: Refactor profiles module
* IPC: Move channel ids to their own file and make them constants
* IPC: Replace single sync channel for one channel per sync type
* Everywhere: Replace default profile id magic strings with constant ref
* Profiles: Refactor `activeProfile` property from store
This commit makes it so that `activeProfile`'s getter returns
the entire profile, while the related update function only needs
the profile id (instead of the previously used array index)
to change the currently active profile.
This change was made due to inconsistency regarding the active profile
when creating new profiles.
If a new profile coincidentally landed in the current active profile's
array index after sorting, the app would mistakenly change to it
without any action from the user apart from the profile's creation.
Turning the profile id into the selector instead solves this issue.
* Revert "Store: Implement history synchronization between windows"
This reverts commit 99b61e6178.
This is necessary for an upcoming improved implementation of the
history synchronization.
* History: Remove unused mutation
* Everywhere: Create abstract database handlers
The project now utilizes abstract handlers to fetch, modify
or otherwise manipulate data from the database.
This facilitates 3 aspects of the app, in addition of
making them future proof:
- Switching database libraries is now trivial
Since most of the app utilizes the abstract handlers, it's incredibly
easily to change to a different DB library.
Hypothetically, all that would need to be done is to simply replace the
the file containing the base handlers, while the rest of the app
would go unchanged.
- Syncing logic between Electron and web is now properly separated
There are now two distinct DB handling APIs: the Electron one and
the web one.
The app doesn't need to manually choose the API, because it's detected
which platform is being utilized on import.
- All Electron windows now share the same database instance
This provides a single source of truth, improving consistency
regarding data manipulation and windows synchronization.
As a sidenote, syncing implementation has been left as is
(web unimplemented; Electron only syncs settings, remaining
datastore syncing will be implemented in the upcoming commits).
* Electron/History: Implement history synchronization
* Profiles: Implement suplementary profile creation logic
* ft-profile-edit: Small fix on profile name missing display
* Electron/Profiles: Implement profile synchronization
* Electron/Playlists: Implement playlist synchronization
* Select current playback rate in playback rate selector
* More concise implementation
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* Scroll to the selected element instead of focusing it
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* added the setting to toggle the 'scroll playback rate over video player' on and off. Set the default to off
* • Added Setting to toggle the 'ctrl+scroll for playback rate' feature
• Added the label and tooltip to the en-US local file
• Added the ctrl+scroll functionality to the video player component
• Added the ctrl+click functionality to the video player component
• Modified the existing scroll to change volume funtionality to ignore the event if the ctrl key is pressed
* changed the max playrate to 8 in Player Settings. Changed the available playrate options in the video player component popup menu to go up to 8 in steps of .25
* reverted back to hard coded values for playback rates
* opps, forgot to remove the playbackRates method. It has been removed now.
* fixed (at lesast I think) the hacky way I was overwriding the click handler. Also added a check for event.meteKey for mac users.
* added a check for if the metakey is pressedin the the mosueScrollVlumne method
* made a slight change to the tooltip text. The point of this commit is just to try and get the tests to re-run after I marked the PR as ready for review.
* added 'event.metaKey' back to the 'mouseScrollPlaybackRate' method. Not sure how I ended up leaving it off a few commits ago
Co-authored-by: Cody Sechelski <codysechelski@RMC02G68EYMD6R.local>
* transition duration of 0.5s added to watched videos
* small code reformating
* extra white spaces deleted
* typo in the word transition corrected
* original whitespaces respected
* transition added when hovering end
* video stat components started and properties chosen
* ft-video-stats integraded into the video player for dev and debugging
* using a timer to get video stats and a method to update the statistic every second
* getting statistic from vhs and adaptativeFormat
* frame drop capture
* stats capture in the form of event
* useless comment deleted
* stats render with a for loop in the template
* stats correctly displayed
* overlay stats added
* video stats component deleted
* video stats component deleted inside template video player
* video stats component fully deleted
* modal solution working need more styling and code messy
* lint
* modal working with stats
* keyboard shortcut for stats
* lint fix
* network state is now a string
* new line deleted
* useless whitespace deleted
* package-lock.json remove and ignore
* keyboard shortcut restricted to up arrow
* stats overlay made larger
* align to left corner
* useless formatting of string deleted
* renaming of variable formatedStrats for formattedStats
* keyboard shortcut made into a variable
* lint-fix
* key change for i
* label translated
* whitespace added for gitignore
* lock file not ignored
* videoId stat deleted
* ft-video-player.js, en-US.yaml, fr-FR.yaml: changing percentage stats display
changing the display for percentage stats for the format 'x%' instead of 'xx.xx'
* ft-video-player.js, en-US.yaml, fr-FR.yaml: network state video statistic deleted
* ft-video-player.js: made stats modal background color darker
* ft-video-player.js, en-US.yaml, fr-FR.yaml: video id are now related to the one of youtube
* ft-video-player.js, en-US.yaml, fr-FR.yaml: stats displayed made closet to the youtube implementation
the name are capitalized, the order of display is changed and fps is combined with viewport
* lint-fix
* en-US.yaml, fr-FR.yaml: network state possibilities deleted because not used
* package.json.lock: deleted
* ft-video-player.js: formated_stats renamed for formatted_stats
* lock file deleted
* index.js, ft-video-player.js: handling of right click context menu
via electon ipc bus an event is send to tell the vue component to show the stats modal
* ft-video-player.js, index.js: renaming of video stats display event and definition of it as a variable
* index.js, en-US.yaml: inconsistant capitalization of video statistics label solved
* index.js: pluralized video stats
* ft-video-player.js: fix right click undefined this.player
change the arrow function inside the closure for a function with a bind to this
* ft-video-player.js: handling of the case when this.player is not defined
the property this.stats.display.activated as been added and manage when the to show the stats. In this way in the runtime (it is still refered in the run time but it is capture in an event loop) with dont have to refer to this.player so when it is not defined it doesnt affect the behavior.
* lint fix
* src/renderer/components/ft-video-player/ft-video-player.js: modal.close move into the display event of the statistic context
* lint fix
* src/renderer/components/ft-video-player/ft-video-player.js, static/locales/en-US.yaml, static/locales/fr-FR.yaml: better capitalization of the stats labels
* static/locales/en-US.yaml: fps capitalized
* static/locales/fr-FR.yaml, static/locales/en-US.yaml: capitalized label
* ^ Update electron 13.x > 15.x
* ! Fix child window options due to breaking change in electron 14.x
Breaking change:
https://github.com/electron/electron/pull/28550
Child windows no longer inherit BrowserWindow construction options from their parents.
* Add pinned, owner and reply from owner indicators
* fix locale
* show owner for invidious
* add margin to pinned indicator
* show owner indicator for replies
* don't show "from owner and others" on hide
* Pass variable into translated string
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* fix replacing channelName
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>