Moving FilesRefreshButton and DirectoryRefreshButton out of browser file.
Moving file fetching tino FileBrowser.
Removing sub-folders from Files display when any parent folder is clicked.
Using closed captioning for vtt/srt file icon.
Using my own react-semantic-toasts-2 to use toasts in Node 18.
Fixing bug where more than the last page was displayed.
Upgrading yt-dlp.
Fixing sub-folder file selection.
Adding rowKey to SortableTable to give React a key for each row.
Renaming key to path.
Removing duplicate urls.
Unifying file modals.
Displaying modals for image and text files.
Handling refresh loading in FileBrowser. Creating refreshing_directory flag.
Removing accidental commit.
Sorting by url_count.
Using SortableTable on Domains page.
Using SortableTable for Channels page.
Created new FileBrowser which allows browsing of files in the media directory.
Using Node 18 in pi-gen.
Creating new FileBrowser to replace outdated react-keyed-file-browser.
Returning mimetype with file list.
Do not display 'Do not download' on Channel download in Dashboard.
Allowing null channel download frequency so user can stop downloading a channel.
Bumping version for Node 18.
Using my own semantic-ui-offline to avoid pulling Google fonts.
Upgrading app docker container to use Node 18. This requires the removal of several npm packages. File browser will require re-write. It now pulls fonts from Google, this will need to be fixed.
Testing DownloadsToggle click.
Testing trinary states of DownloadsToggle.
Installing @testing-library/user-event for testing App.
Special handling of json mimetype for json files.
Moving types up to avoid overwriting mime.types.
Adding custom types to nginx to server ebooks better.
Displaying EBookCard correctly when ebook was not indexed correctly.
Global search can search for all ebooks (mobi/epub).
Testing when mimetype suffix is searched.
Adding eBook to global search filter list. Opening mimetype search to match mimetypes that may not end with expected suffix.
Adding log warning to explain refresh speed.
Generating ebook covers after refresh.
Testing that another nearby book removes the cover.
Calibre covers can be discovered and associated with an ebook.
Handling if ebooklib is not yet installed.
Adding ebook table and modeler to allow searching the contents of epub files.
Marking all PDFs as un-indexed, so they will be indexed.
Replacing null characters in PDF text.
Testing PDFIndexer against example PDF file.
Installing PyPDF2 to extract text for PDFIndexer.