# Revision history for pipe-viewer.

# For all changes, check out the release notes at:
#   https://github.com/trizen/pipe-viewer/releases

[CHANGELOG]

Version 0.5.6

- Bug-fix: when there are multiple audio tracks, select the default one.

Version 0.5.5

- Fixed the `400 Bad Request` issue (caused by YouTube changes).
- Workaround for the `403 Forbidden` issue. (requires yt-dlp)

Version 0.5.4

- CLI: added the config-options `download_in_subdir` and `download_in_subdir_format`.
- CLI: added the --set-mtime option and the `set_mtime` config-option.
- CLI: normalize the filename after applying the formatting.
- GUI: fixed a looping issue when `prefer_invidious` is set to `1` and there is no working instance available.

Version 0.5.3

- Fixed the "CONSENT" cookie (which no longer worked due to YouTube changes).

Version 0.5.2

- GUI: added key bind for "play as audio" as CTRL+N.
- GUI: extended the right-click menu in the Saved Channels window.
- Added support for including streams in subscription videos.
- Recognize several more itag values.
- Fixed the parsing of shorts.
- Fixed the downloading of videos that have multiple audio tracks, with yt-dlp.

Version 0.5.1

- gui: added "Backward" and "Forward" buttons for navigating the history.

Version 0.5.0

- Fixed the "400 Bad Request" error when playing a video.
- Fixed the support for related videos.
- Fixed the launch of the Gtk3 version on older versions of Perl.
- When there are no non-split URLs available, return split URLs.

Version 0.4.9

- gui: highlight downloaded videos as watched.
- gui: added the "Split A/V videos" check button.
- Extract livestream URLs with the fallback method.
- Recognize more itags from `yt-dlp` with `--force-fallback`.
- Fixed the JSON parsing for some videos that include the characters "<" and ">" in `initialData`.

Version 0.4.8

- Fixed the "CONSENT" cookie (which no longer worked due to YouTube changes).

Version 0.4.7

- Fixed the slow loading of videos, when using the internal extraction method of streaming URLs.

Version 0.4.6

- Fixed the internal extracting of streaming URLs.
- Extended `fat32safe` option to convert Unicode characters to ASCII equivalent when `Text::Unidecode` is available.
- Recognize several more audio itags.

Version 0.4.5

- CLI: added basic support for Android, playing videos with the VLC player.
- CLI: added the `:w=i` STDIN option for saving a video to watch history.
- Added the `bypass_age_gate_native` config-option. (disabled by default)
- Fixed the downloading of livestreams with `yt-dlp`.

Version 0.4.4

- CLI: added the `--shorts=s` and `--popular-shorts=s` command-line options.
- CLI: added the `:shorts=i` and `:popular-shorts=i` STDIN options.
- CLI: added the `--streams=s` and `--popular-streams=s` command-line options.
- CLI: added the `:streams=i` and `:popular-streams=i` STDIN options.
- CLI: added the `get_subscriptions_in_parallel` config-option (disabled by default)
- GUI: Added the `Author -> {Streams, Shorts, Popular streams}`.
- GUI: added the `Copy YouTube URL` right-click menu entry.
- Added support for the new format of YouTube usernames starting with `@`.

Version 0.4.3

- Added basic GET cache in `lwp_get()`.
- Fixed the support for popular videos from a channel.
- Fixed the extraction of the author name in `/browse` requests.
- Ckeck search keywords for a playlist ID and for a channel ID.
- CLI: added the `:p=i` option for playlist results.
- GUI: added the `DEL` keybind in the "Saved channels" window to remove the selected channel.
- Extract livestream URL with the fallback method only when our code fails.
- Remember a working invidious instance and reuse it across multiple sessions for 1 hour.
- Memoize the output of yt-dlp/youtube-dl and reuse it.

Version 0.4.2

- Support for `richItemRenderer` channel video results.
- GUI: allow the "next page" entry to be pressed multiple times (in case of network error).

Version 0.4.1

- GUI: progress bar pulse when playing a video. (by @benoit-pierre)
- GUI: improved handling of text entries. (by @benoit-pierre)
- GUI: fixed some focusing issues. (by @benoit-pierre)
- GUI: use `mqdefault` thumbnails for related videos. (instead of `hqdefault`)
- GUI: append the "next page" entry for results from invidious.
- CLI: remove the incomplete `mkv` file when `ffmpeg` fails.

Version 0.4.0

- GUI: moved network calls to a dedicated process. (by @benoit-pierre)
- GUI: reworked the comments window. (by @benoit-pierre)
- GUI: support for using the `menu` key on the results list. (by @benoit-pierre)
- GUI: simplified the support for channels. (by @benoit-pierre)
- Added the CLI `youtube_playlist_url` and `youtube_channel_url` config-options.
- Extended the `*ID*` special token to return either the video ID, the playlist ID or the channel ID.

Version 0.3.1

- Fixed detection support for the "webp" image format.

Version 0.3.0

- Lots of GUI improvements and fixes. (by @benoit-pierre)
- Added support for changing the audio quality.
- Fixed building of Youtube search parameters. (by @benoit-pierre)

Version 0.2.3

- Prefer the default language for audio.
- Workaround for "Video Not Available" issue.

Version 0.2.2

- Extract closed-captions for age-restricted videos.
- GUI: better cache support for thumbnails.
- GUI: added support for highlighting watched videos in a given color.

Version 0.2.1

- Added support for downloading videos with `yt-dlp` / `youtube-dl`.

Version 0.2.0

- New workaround for age-restricted videos.
- Fixed the overlapping display time for auto-generated captions.

Version 0.1.9

- Added the `subscriptions_lifetime` config-option.
- Added the `bypass_age_gate_with_proxy` config-option. (disabled by default)
- Support for YouTube "shorts" video URLs.
- GTK: added support for playing videos with a single left-click.
- When requesting playlists for a given channel ID, return the channel created playlists.

Version 0.1.8

- Added the `ytdlp_max_replies` config-option.
- Show the published date when playing a video by URL.
- Show the number of likes of a video and an engagement rating.
- Fixed a minor issue in the `--autoplay` feature.

Version 0.1.7

- Added support for extracting YouTube comments with `yt-dlp` via the config-option `ytdlp_comments`.
- Prefer JPEG over WEBP for thumbnails. (used to cause an issue when `webp-pixbuf-loader` was not installed)
- Some internal performance improvements.

Version 0.1.6

- Fixed the support for related videos.
- Thumbnail fixes for related videos and watched videos.

Version 0.1.5

- Workaround for the throttling issue.
- Added the force_fallback config-option. (disabled by default)

Version 0.1.4

- Extended the `get_video_id_re` regular expression to support URI-encoded YouTube URLs.
- GUI: update the list of saved and subscribed channels on-demand, in order to prevent data loss.

Version 0.1.3

- Added basic support for age-restricted videos.
- Improved support for retrieving closed-captions.

Version 0.1.2

- Fixed the support for related videos.

Version 0.1.1

- Temporary fix for the `404 Error` on `get_video_info`.
- Added fallback code for retrieving closed-caption URLs with `youtube-dl`.

Version 0.1.0

- CLI: added support for saving channel IDs (and listing them).
- CLI/GUI: added support for subscription videos, playlists (like/favorite/dislike), watch history.
- Auto-set proxy for .onion invidious instances (if not already set).
- Bug-fixes and improvements.

Version 0.0.9

- Workaround for EU consent YouTube cookie.
- gtk3: added the "144p" resolution entry.

Version 0.0.8

- Added the `prefer_invidious` config-option (disabled by default).
- Added support for auto-translated subtitles with `auto_captions => 1`.
- Added the "--srt-languages=s" command-line option.
- gtk3: use emoji instead of asciii symbols.
- gtk3: added the right-click "Author -> Save channel" menu entry.
- gtk3: added the right-click "Show more details" for playlist results.
- Fixed the next pages for user videos and playlists (due to YouTube change).
- Show the full video description in `:info=i` and in Gtk3 "Extra details" window.
- When the selected resolution is not available, select the nearest one available.

Version 0.0.7

- Added support changing the layout of channel and playlist results.

Version 0.0.6

- Better layout for channels and playlists.
- Better info (:info=n) for channels and playlists.
- Fixed the video filering parameters (--date, --duration, --order, --caption, etc...).

Version 0.0.5

- Fixed the search results, due to YouTube change.
- Filter out private/deleted videos from playlists.

Version 0.0.4

- Support for YouTube usernames (-u=username).
- No longer ignore live stream videos in search results.
- Display the relative age of videos in search results.

Version 0.0.3

- Support for multiple search parameters.
- Support for searching for videos from a given channel (with --author=channelID).
- Support for next pages in more contexts.
- Performance improvements and bug-fixes.

Version 0.0.2

- Support for next pages.
- Support for newest videos from a channel.
- Support for popular videos from a channel.
- Support for playlists from a channel.
- Support for listing a playlist of videos.
- Searching support for playlists and channels.

Version 0.0.1

- First release.
