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.
Skipping channel import during test unless explicitly requested.
Deleting gis database during upgrade, if user agrees. Increasing API verbosity.
Using status context to prevent fetching status in useHotspot.
Disabling wifi toggle button when pending.
Toggling hotspot when clicking nav hotspot icon.
Displaying Hotspot status icon in nav menu.
Importing channels/favorites after refreshing.
Refresh tasks cancel when server shuts down.
Bumping version for release speed.
Refreshing files is 3x faster.
Creating useRecurringTimeout hook which repeatedly calls a callback after a timeout.
Changing intervals to timeout so fetches don't stack up while server is loaded.
Checking that video file exists before fetching.
Creating release candidate branch. Not indexing model associated files.
Updating archive's single-file call to use asyncio as well as fixing JSON error that used to be thrown.
Trying two place for single-file executable.
Adding more docs to bandwidth functions. Extracting reused functions out. Testing worker.
Ordering bandwidth statuses by their name.
Breaking down bandwidth by interface.
Splitting download buttons to avoid overflow.
Creating bandwidth worker which tracks server bandwidth usage to display on the status page.
Testing get_bandwidth_info() with no psutil.
Using psutil to fetch status. Adding bandwidth status.