* Fixed bookmarks not being able to load due to missing [AllowAnonymous]
* Downgraded Docnet to 2.4.0-alpha2 which is the version we added our patches to. This might fix reports of broken PDF reading on ARM
* Updated all but one api in collections to admin only policy
* Ensure all config folders are created or exist on first load
* Ensure plugins can authenticate
* Updated some headers we use on Kavita to tighten security.
* Tightened up cover upload flow to restrict more APIs to only the admin
* Enhanced the reset password flow to ensure that the user passes their existing password in (if already authenticated). Admins can still change other users without having existing password.
* Removed an additional copy during build and copied over the prod appsettings and not Development.
* Fixed up the caching mechanism for cover resets and migrated to profiles. Left an etag filter for reference.
* Fixed up manual jump key calculation to include period in #
* Added jumpbar to reading lists page
* Fixed a double scrollbar on library detail page
* Fixed weird scroll issues with want to read
* Fixed a bug where remove from want to read list wasn't hooked up on series card
* Cleaned up Clear bookmarks to use a dedicated api for bulk clearing. Converted Bookmark page to OnPush.
* Fixed jump bar being offset when clicking a jump key
* Ensure we don't overflow on add to reading list
* Fixed a bad name format on reading list items
* Updated ngx-extended-pdf-viewer to 14.5.2 + misc security vuln
* Hooked up remove from want to read AND fixed a bug in the logic that was removing everything BUT what was passed.
Allow for bookmarks to have date info for better ordering.
* Implemented a quick way to set darkneses level on manga reader for when nightlight just isn't dark enough
* Added Japanese Series name support in the Parser
* Updated our security file with our Huntr.
* Fixed a security vulnerability where through the API, an unauthorized user could delete/modify reading lists that did not belong to them.
Fixed a bug where when creating a reading list with the name of another users, the API would throw an exception (but reading list would still get created)
* Ensure all reading list apis are authorized
* Ensured all APIs require authentication, except those that explicitly don't. All APIs are default requiring Authentication.
Fixed a security vulnerability which would allow a user to take over an admin account.
* Fixed a bug where cover-upload would accept filenames that were not expected.
* Explicitly check that a user has access to the pdf file before we serve it back.
* Enabled lock out when invalid user auth occurs. After 5 invalid auths, the user account will be locked out for 10 mins.
* Implemented a Want To Read list of series for all users, as a way to keep track of what you want to read.
When canceling a bulk action, like Add to Reading list, the selected cards wont de-select.
* Hooked up Remove from Want to Read
* When making bulk selection, allow the user to click on anywhere on the card
* Added no series messaging
* Code cleanup
* Implemented a workaround for nginx users with BlockCommonExploits enabled, which would interfere with book image escaping done by Kavita when images had ../ in their path.
* Added back to top support on all pages but those that untilize virtual scrolling without a parent scroll.
* Hide jumpbar on pages where there is no scroll
* Refactored jumbar code into a dedicated service
* Stash some jumpkey resume code as I can't get it working with the virtual scroller.
* Don't allow non-admins to see File locations on card detail drawer.
* Some cleanup on GetServerInfo
* When an error occurs in register, delete the user on exception.
* Fixed a NPE in Stat collection for brand new users
* When we catch an exception on registering a new user, delete the user as rolling back doesn't do anything.
* Don't close typeahead when we are selecting options from it
* Added shortcut key H to open shortcut modal on manga reader
* When processing progress updates on cards, for volumes, properly find the chapter to update pages read.
* Hide cover image on reading list if it's not set and fixed a missing closing div tag
* Hide collection poster when nothing is set on collection detail
* Small fix around updating state
* Sped up the bookmark image call by removing one DB call
* Fixed broken test from change in bookmark code
* Fixed an oversight where if there is no tag in ComicInfo after a chapter was updated with People or Genres, then the People/Genres would never be removed.
* Added test with TagHelper
* Fixed a bug where 2 clear buttons would show on search bar due to browser injecting their own. Search bar wont show clear button until text is typed.
* Fixed a bug where InstallID wasn't being selected correctly in converter
* Implemented a manual button to allow users to setup an account, even after they invited.
Updated error toast to put "Error" in the title of the toast.
* Updated the exception middleware to always send full context instead of generic "Internal Server Error"
* Fixed up swagger generation
* Updated Tachiyomi's latest-chapter to hopefully solve some sync issues.
* Fixed#1279 with table of contents due to new EPubReader
* When errors occur, show the event widget icon in red
* Lots of documentation added and tweaked some wording around backups and swagger
* For promidius
* Return proper ChapterDTO
* Hacks for Promidius
* Cleanup code
* No loose leaf, send max chapter
* One more encode change
* Implemented code per promiduius' requirements
* Fixed a bug in the epub parsing where even if you had a series index and series group, but didn't have the series in the title, Kavita wouldn't group them properly.
* Removed some extra comment
* Implemented the ability to change a library's type after it's been setup. This displays a warning explaining the dangers of it.
* Removed some whitespace
* Blur descriptions based on read status for list item view to avoid spoilers
* Tweaked placement of a tooltip due to new series detail styles
* Hooked up a user preference for bluring unread summaries. Fixed a bug in refresh token where we would cause re-authentication when it shouldn't be needed.
* Started with the redesign of the cover image chooser redesign to be less click intensive for volume/chapter images.
Made some headings bold in card detail drawer.
* Tweaked the styles
* Moved where the info cards show
* Added an ability to open a page settings drawer
* Cleaned up some old code that isn't needed anymore.
* Started implementing a list view. Refactored some title code to a dedicated component
* List view implemented but way too many API calls. Either need caching or adjusting the SeriesDetail api.
* Fixed a bug where if the progress bar didn't render on a card item while a download was in progress, the download indicator would be removed.
* Large refactor to move a lot of the needed fields to the chapter and volume dtos for series detail. All fields are noted when only used in series detail.
* Implemented cards for other tabs (except related)
* Fixed the unit test which needed a mocked reader service call.
* More cleanup around age rating and removing old code from the refactor. Commented out sorting till i feel motivated to work on that.
* Some cleanup and restored cards as initial layout. Time to test this out and see if there is value add.
* Added ability for Chapters tab to show the volume chapters belong to (if applicable)
* Adding style fixes
* Cover image updates, don't allow the first image (which is what is currently set) to respond to cover changes.
Hide the ID field on list item for series detail.
* Refactored the title for list item to be injectable
* Cleaned up the selection code to make it less finicky on mobile when tap scrolling.
* Refactored chapter tab to show volume as well on list view.
* Ensure word count shows for Volumes
* Started adding virtual scrolling, pushing up so Robbie can mess around
* Started adding virtual scrolling, pushing up so Robbie can mess around
* Fixed a bug where all chapters would come under specials
* Show title data as accent if set.
* Style fixes for virtual scroller
* Restyling scroll
* Implemented a way to show storyline with virtual scrolling
* Show Word Count for chapters and cleaned up some logics.
* I might have card layout working with virtual scroll code.
* Some cleanup to hide more system like properties from info bar on series detail page. Fixed some missing time estimate info on storyline chapters.
* Fixed a regression on series service when I integrated VolumeTitle.
* Refactored read time to the backend. Added WordCount to the volume itself so we don't need to calculate on frontend. When asking to analyze files from a series, force the calculation.
* Fixed SeriesDetail api code
* Fixed up the code in the drawer to better update list/card mode
* Basic infinite scroll implemented, however due to how we are updating the list to render, we are re-rending cards that haven't been touched.
* Updated how we render and layout data for infinite scroll on library detail. It's almost there.
* Started laying foundation for loading pages backwards.
Removed lazy loading of images since we are now using virtual paging.
* Hooked in some basic code to allow user to load a prev page with infinite scroll.
* Fixed up series detail api and undid the non-lazy loaded images.
Changed the router to help with this infinite loading on Firefox issue.
* Fixed up some naming issues with Series Detail and added a new test.
* This is an infinite scroll without pagination implementation. It is not fully done, but off to a good start. Virtual scroller with jump bar is working pretty well, def needs more polishing and tweaking. There are hacks in this implementation that need to be revisited.
* Refactored code so that we don't use any pagination and load all results by default.
* Misc code cleanup from build warnings.
* Cleaned up some logic for how to display titles in list view.
* More title cleanup for specials
* Hooked up page layout to user preferences and renamed an existing user pref name to match the dto.
* Swapped out everything but storyline with virtual-scroller over CDK
* Removed CDK from series detail.
* Default value for migration on page layout
* Updating card layout for library detail page
* fixing height for mobile
* Moved scrollbar
* Tweaked some styling for layouts when there is no data
* Refactored the series cards into their own component to make it re-usable.
* More tweaks on series info cards layout and enhanced a few pages with trackby functions.
* Removed some dead code
* Added download on series detail to actionables to fit in with new scroll strategy.
* Fixed language not being updated and sent to the backend for series update.
* Fixed a bad migration (if you ran any prior migration in this branch, you need to undo before you use this commit)
* Adding sticky tabs
* fixed mobile gap on sticky tab
* Enhanced the card title for books to show number up front.
* Adjusted the gutters on admin dashboard
* Removed debug code
* Removing duplicate book title
* Cleaned up old references to cdk scroller
* Implemented a basic jump bar scaling algorithm. Not perfect, but works pretty well.
* Code smells
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* When account updates occur for a user, send an event to them to tell them to refresh their account information (if they are on the site at the time). This way if we revoke permissions, the site will reactively adapt.
* Some cleanup on the user preferences to remove some calls we don't need anymore.
* Removed old bulk cleanup bookmark code as it's no longer needed.
* Tweaked the messaging for stat collection to reflect what we collect now versus when this was initially implemented.
* Implemented the ability for users to configure their servers to save bookmarks as webP. Reorganized the tabs for Admin dashboard to account for upcoming features.
* Implemented the ability to bulk convert bookmarks (as many times as the user wants).
Added a display of Reoccurring Jobs to the Tasks admin tab. Currently it's just placeholder, but will be enhanced further later in the release.
* Tweaked the wording around the convert switch.
* Moved System actions to the task tab
* Added a controller just for Tachiyomi so we can have dedicated APIs for that client. Deprecated an existing API on the Reader route.
* Fixed the unit tests
* Refactored code to show action bar instead of drawer in immersive mode
* Card grid
* adding margin for pagination gap
* Fixed a rare routing case that wouldn't redirect
* Fixed a bug where series detail would show blank filtering
* Fixing image scaling and library card spacing
* Refactored some methods to be static
* Adding card grid to series detail
* Fixed a bug with webtoon going to non-webtoon mode, resulting in black screen.
* Ensure emails are trimmed when trying to invite.
* Don't show More In if there is only 1 item in there on library recommended tab
* Fixed some bugs around locking metadata fields where the correct param wasn't being sent to backend.
* Added some UI error messaging when the email doesn't match the confirm-email (or rather any email in the system).
* Fixed some pages where actions weren't working (library detail) and removed some actionable buttons where they didn't make sense
* Refactored the series detail to use Robbie's new grid system.
* some styling fixes
* Styling fixes
- Removing select border gap
- fixing switches on lite theme
- fixing search result text-light
* better css var naming
* changing search lite text color override
* fixing as per feedback
* Removing boolean from being visible in bookreader
* Fixed some bugs in bulk operations not being visible on light/eink screens. Added --bulk-selection-highlight-text-color and --bulk-selection-text-color.
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Cleaned up some styles on the progress bar in book reader
* Fixed up some phone-hidden classes and added titles around the codebase. Stat reporting on first run now takes into account that admin user wont exist.
* Fixed manage library page not updating last scan time when a notification event comes in.
* Integrated SeriesSort ComicInfo tag (somehow it got missed)
* Some minor style changes and no results found for bookmarks on chapter detail modal
* Fixed the labels in action bar on book reader so Prev/Next are in same place
* Cleaned up some responsive styles around images and reduced custom classes in light of new display classes on collection detail and series detail pages
* Fixed an issue with webkit browsers and book reader where the scroll to would fail as the document wasn't fully rendered. A 10ms delay seems to fix the issue.
* Cleaned up some code and filtering for collections. Collection detail is missing filtering functionality somehow, disabled the button and will add in future release
* Correctly validate and show a message when a user is not an admin or has change password role when going through forget password flow.
* Fixed a bug on manage libraries where library last scan didn't work on first scan of a library, due to there being no updated series.
* Fixed a rendering issue with text being focused on confirm email page textboxes. Fixed a bug where when deleting a theme that was default, Kavita didn't reset Dark as the default theme.
* Cleaned up the naming and styles for side nav active item hover
* Fixed event widget to have correct styling on eink and light
* Tried to fix a rendering issue on side nav for light themes, but can't figure it out
* On light more, ensure switches are green
* Fixed a bug where opening a page with a preselected filter, the filter toggle button would require 2 clicks to collapse
* Reverted the revert of On Deck.
* Improved the upload by url experience by sending a custom fail error to UI when a url returns 401.
* When deleting a library, emit a series removed event for each series removed so user's dashboards/screens update.
* Fixed an api throwing an error due to text being sent back instead of json.
* Fixed a refresh bug with refreshing pending invites after deleting an invite. Ensure we always refresh pending invites even if user cancel's from invite, as they might invite, then hit cancel, where invite is still active.
* Fixed a bug where invited users with + in the email would fail due to validation, but UI wouldn't properly inform user.
* Moved libraryType into chapter info
* Fixed a bug where you could not reset cover on a series
* Patched in relevant changes from another polish branch
* Refactored invite user setup to shift the checking for accessibility to the backend and always show the link. This will help with users who have some unique setups in docker.
* Refactored invite user to always print the url to setup a new account.
* Single page renderer uses canvasImage rather than re-requesting and relying on cache
* Fixed a rendering issue where fit to split on single on a cover wouldn't force width scaling just for that image
* Fixed a rendering bug with split image functionality
* Added title to copy button
* Fixed a bug in GetContinuePoint when a chapter is added to an already read volume and a new chapter is added loose leaf. The loose leaf would be prioritized over the volume chapter.
Refactored 2 methods from controller into service and unit tested.
* Fixed a bug on opening a volume in series detail that had a chapter added to it after the volume (0 chapter) was read would cause a loose leaf chapter to be opened.
* Added mark as read/actionables on Files in volume detail modal. Fixed a bug where we were showing the wrong page count in a volume detail modal.
* Removed OnDeck page and replaced it with a pre-filtered All-Series. Hooked up the ability to pass read state to the filter via query params. Fixed some spacing on filter post bootstrap update.
* Fixed up some poor documentation on FilterDto.
* Some string equals enhancements to reduce extra allocations
* Fixed an issue when trying to download via a url, to remove query parameters to get the format
* Made an optimization to Normalize method to reduce memory pressure by 100MB over the course of a scan (16k files)
* Adjusted the styles on dashboard for first time setup and used a routerlink rather than href to avoid a fresh load.
* Use framgment on router link
* Hooked in the ability to search by release year (along with series optionally) and series will be returned back.
* Fixed a bug in the filter format code where it was sending the wrong type
* Only show clear all on typeahead when there are at least one selected item
* Cleaned up the styles of the styles of the typeahead
* Removed some dead code
* Implemented the ability to filter against a series name.
* Fixed filter top offset
* Ensure that when we add or remove libraries, the side nav of users gets updated.
* Tweaked the width on the mobile side nav
* Close side nav on clicking overlay on mobile viewport
* Don't show a pointer if the carousel section title is not actually selectable
* Removed the User profile on the side nav so home is always first. Tweaked styles to match
* Fixed up some poor documentation on FilterDto.
* Fixed a bug where Latest read date wasn't being set due to an early short circuit.
* When sending the chapter file, format the title of the FeedEntry more like Series Detail.
* Removed dead code
* adding back side-nav
* Event Widget Update (#1098)
* Took care of some notes in the code
* Fixed an issue where Extra might get flagged as special too early, if in a word like Extraordinary
* Moved Tag cleanup code into Scanner service. Added a SplitQuery to another heavy API. Refactored Scan loop to remove parallelism and use async instead.
* Lots of rework on the codebase to support detailed messages and easier management of message sending. Need to take a break on this work.
* Progress is being made, but slowly. Code is broken in this commit.
* Progress is being made, but slowly. Code is broken in this commit.
* Fixed merge issue
* Fixed unit tests
* CoverUpdate is now hooked into new ProgressEvent structure
* Refactored code to remove custom observables and have everything use standard messages$
* Refactored a ton of instances to NotificationProgressEvent style and tons of the UI to respect that too. UI is still a bit buggy, but wholistically the work is done.
* Working much better. Sometimes events come in too fast. Currently cover update progress doesn't display on UI
* Fixed unit tests
* Removed SignalREvent to minimize internal event types. Updated the UI to use progress bars. Finished SiteThemeService.
* Merged metadata refresh progress events and changed library scan events to merge cleaner in the UI
* Changed RefreshMetadataProgress to CoverUpdateProgress to reflect the event better.
* Theme Cleanup (#1089)
* Fixed e-ink theme not properly applying correctly
* Fixed some seed changes. Changed card checkboxes to use our themed ones
* Fixed recently added carousel not going to recently-added page
* Fixed an issue where no results found would show when searching for a library name
* Cleaned up list a bit, typeahead dropdown still needs work
* Added a TODO to streamline series-card component
* Removed ng-lazyload-image module since we don't use it. We use lazysizes
* Darken card on hover
* Fixing accordion focus style
* ux pass updates
- Fixed typeahead width
- Fixed changelog download buttons
- Fixed a select
- Fixed various input box-shadows
- Fixed all anchors to only have underline on hover
- Added navtab hover and active effects
* more ux pass
- Fixed spacing on theme cards
- Fixed some light theme issues
- Exposed text-muted-color for theme card subtitle color
* UX pass fixes
- Changed back to bright green for primary on dark theme
- Changed fa icon to black on e-ink
* Merged changelog component
* Fixed anchor buttons text decoration
* Changed nav tabs to have a background color instead of open active state
* When user is not authenticated, make sure we set default theme (dark)
* Cleanup on carousel
* Updated Users tab to use small buttons with icons to align with Library tab
* Cleaned up brand to not underline, removed default link underline on hover in dropdown and pill tabs
* Fixed collection detail posters not rendering
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Bump versions by dotnet-bump-version.
* Tweaked some of the emitting code
* Some css, but pretty bad. Robbie please save me
* Removed a todo
* styling update
* Only send filename on FileScanProgress
* Some console.log spam cleanup
* Various updates
* Show events widget activity based on activeEvents
* progress bar color updates
* Code cleanup
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Bump versions by dotnet-bump-version.
* Scanner event hub fix (#1099)
* Scanner event hub fix
- Fixed an issue where the scanner would error when adding a new series because the series didn't have a library name yet. (develop)
* Removing library.type
* Bump versions by dotnet-bump-version.
* Workflow update to add nightly versions (#1100)
# Changed
- Changed: Changed automated workflow to release individual nightly versions on dockerhub
* Bump versions by dotnet-bump-version.
* Updating GA to parse version (#1101)
* Bump versions by dotnet-bump-version.
* GA Fixes (#1103)
**Strictly Repo Changes**
# Fixed
- Fixed: Fixed an issue where patch version was not being added to docker tag.
* Bump versions by dotnet-bump-version.
* Fixed specials being misaligned (#1106)
# Fixed
- Fixed: Fixed issue with specials not being properly aligned (develop)
* Bump versions by dotnet-bump-version.
* Bugfix/ux pass 2 (#1107)
* Adding margin bottom to series detail tabs
* Styling tag badges with green on dark
- Added 3 new css vars
* Removing underline from readmore
* Fixing see more to be on one line
* adding gutter to see more
* Changing queue toasts to info
* adding api key tooltip
* Updating active accordion on user preference.
* Fixing search bar and close btn position
* Fixed a bug where entering book reader in dark mode then closing out, would leave you in a broken white state.
* Fixed broken wiki links
Co-authored-by: Joseph Milazzo <joseph.v.milazzo@gmail.com>
* Bump versions by dotnet-bump-version.
* Series Detail Refactor (#1118)
* Fixed a bug where reading list and collection's summary wouldn't render newlines
* Moved all the logic in the UI for Series Detail into the backend (messy code). We are averaging 400ms max with much optimizations available. Next step is to refactor out of controller and provide unit tests.
* Unit tests for CleanSpecialTitle
* Laid out foundation for testing major code in SeriesController.
* Refactored code so that read doesn't need to be disabled on page load. SeriesId doesn't need the series to actually load.
* Removed old property from Volume
* Changed tagbadge font size to rem.
* Refactored some methods from SeriesController.cs into SeriesService.cs
* UpdateRating unit tested
* Wrote unit tests for SeriesDetail
* Worked up some code where books are rendered only as volumes. However, looks like I will need to use Chapters to better support series_index as floats.
* Refactored Series Detail to change Volume Name on Book libraries to have book name and series_index.
* Some cleanup on the code
* DeleteMultipleSeries test is hard. Going to skip.
* Removed some debug code and make all tabs Books for Book library Type
* Bump versions by dotnet-bump-version.
* Tachiyomi Bugfix (#1119)
* Updated the dependencies for .NET 6.0.2
* Fixed a bad prev chapter logic where we would bleed into chapters from last volume instead of specials.
* Fixed the get prev chapter code to properly walk the order according to documentation and updated some bad test cases
* Updated side nav to float a bit and added user settings to it.
* Refactored the code to hide/show sidenav to be more angular and decoupled
* Moved Changelog out of admin dashboard and into a dedicated page in user menu. Added a wiki link from user menu
* Introduced a side nav item for rendering each item and refactored code to use it.
* Added a filter of side nav when there are more than 10 libraries. Added some themeing overrides for side nav.
* Cleaned up the template code for side nav item so if there is no link, we don't generate that html directive
* Refactored side nav into a module and migrated a few pipes into a pipe module for easy re-use
* Added companion bar on reading list and collection. Updated modules to load pages and make side nav items clickable as anchors, so new tab works.
* Moved metadata filter into separate component/module and the button in the companion bar. Needs cleanup.
* Finished cleanup and refactoring of metadata filter into separate component.
Removed filtering from Collections as it doesn't work and wasn't hooked up.
* Tweaked the css on carousel component
* Added to library detail and series-detail
* Fixes and css vars
* Stop destroying sidenav, animaton timing
* Integrated side nav on the rest of the pages
* Navbar now collapses to icons
* mobile sidenav start
* more mobile fixes
* mobile tweaks
* light and e-ink theme updates
* white and eink dropdown color fixes
* plex inspired side-nav
* theme fixes
* Making spacing more uniform across app
* More fixes
* fixing spacing on cards
* actionable fix for sidenav
* no scroll on mobile when sidenav is open
* hide sidenav on pages
* Adding card spacing
* Adding ability to remove sidenav when in a reader
* tidying up sidenav toggles
* side-nav mobile updates
* fixing up other themes
* overlay fixes
* Cleaned up the code to make the observables have better names.
Removed a bunch of pointless subscriptions. Cleaned up methods that werent needed.
Added jsdocs to help ensure the understandability of the 2 states for the side nav.
* Integrated a highlight effect on side nav. Fixed a ton of places where the nav was being hidden when it shouldn't.
* Fixed where active state wasn't working on all urls
* misc fixes
- smaller hamburger
- z-index fixes
- active fixes
* Revert "Merge branch 'develop' into feature/side-nav-upgrade"
This reverts commit 76b0d15a984692874e0cb57e821686ea703144cf, reversing
changes made to b3ed55395473aa35577500596a211ad22a42631b.
* Fixing edit-series modal spacing
* Give the ability to jump to a library from admin manage libraries page
* Fixed a bug with highlighting active item on side nav
* Moved localized series title to companion bar via subtitle
* Removed old title
* Fixed a bug where clicking a link would reload the whole app, styling fixes on filter, fixed issue with initial load not setting active state, adjusted styles on active style.
* code cleanup
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Moved libraryType into chapter info
* Fixed a bug where you could not reset cover on a series
* Patched in relevant changes from another polish branch
* Refactored invite user setup to shift the checking for accessibility to the backend and always show the link. This will help with users who have some unique setups in docker.
* Refactored invite user to always print the url to setup a new account.
* Single page renderer uses canvasImage rather than re-requesting and relying on cache
* Fixed a rendering issue where fit to split on single on a cover wouldn't force width scaling just for that image
* Fixed a rendering bug with split image functionality
* Added title to copy button
* Fixed a bug in GetContinuePoint when a chapter is added to an already read volume and a new chapter is added loose leaf. The loose leaf would be prioritized over the volume chapter.
Refactored 2 methods from controller into service and unit tested.
* Fixed a bug on opening a volume in series detail that had a chapter added to it after the volume (0 chapter) was read would cause a loose leaf chapter to be opened.
* Added mark as read/actionables on Files in volume detail modal. Fixed a bug where we were showing the wrong page count in a volume detail modal.
* Removed OnDeck page and replaced it with a pre-filtered All-Series. Hooked up the ability to pass read state to the filter via query params. Fixed some spacing on filter post bootstrap update.
* Fixed up some poor documentation on FilterDto.
* Started the migration to bootstrap 5. Introduced a breakpoint system that bootstrap reflects for our screens.
* sr only migrated
* mr/ml -> me/ms
* pl/pr -> ps/pe
* btn-block
* removed input-group-append
* Added form-label to all labels
* Added some style overrides for inputs
* Replaced form-group with mb-3
* Ignore journal files
* Update media to d-flex/flex-grow-1
* Fixed reading list detail page
* For develop builds, don't inline critical styles
* Fixed some downstream security issues
* Fixed a layout issue in series detail
* Fixed issue with btn-light not having background color. Updated layout for series detail metadata
* Cleaned up nav search
* Laid out the organization for custom theme components. Update _inputs.scss with variable overrides and depending on theme, it will just work.
* Lots of theming work
* Added inputs to the theme page
* Login and input placeholder changes
- Fixed login screen centering issue on all devices
- Changed the format of the login screen
- Change the input placeholder color
* Added checkbox styles
* Refactored tagbadges and removed some ngdeep selectors
* Added nav bar component and refactored some styles into event widget
* Cleaned nav events again and made dedicated popover body
* Finished pagination component
* Fixed up some styles with buttons
* refactored dropdown component
* Update accordion component
* Refactored breadcrumbs and rating star. Fixed a missing style for cards
* Fixed some styling issues on person badge, added modal component, and some global styles
* Finished moving everything within dark to component files
* Fixed up filter buttons, move card styles into a component theme, fixed slider style
* Refactored library card and grouped typeahead
* Updated normal typeahead component and reduced amount of ngdeep selector
* Refactored grid breakpoints to be available by css variable, but it's hardcoded into the app
* Ensure breakpoints are defined per theme
* Fixed up some styling overrides and customization for nav links and alt button
* Removed some deep styles, moved css out of splash container and brough back labels for login page
* Finished css variable refactor
* Refactored all the theme variable definitions into files for each theme.
* Added back bootstrap overrides
* Added a note about bootstrap theme colors being not-possible to swap out at runtime
* Cleaned up some dead code
* Implemented the ability to set a custom theme on the site. Cleaned up misc code throughout.
* Additional changes
- Fixed nav where "kavita" was not hiding correctly on small viewports
- Fixed search bar to make the behavior more consistent
- Fixed accordion buttons
- Changed accordion buttons to be more responsive
- Added radio button colors
- Fixed radios on theme test page
- Changed login and reset password card layouts to be more consistent.
- Added primary color shade for when darker shading is needed.
* Built a basic site, allow the user to apply different themes, refactored nav service code out.
* Implemented the ability update a user's theme
* Added unit tests for Scan and Get Content in SiteThemeService.
* Fixed a bug in the login code and Pref code which wasn't joining on SiteTheme table. Wrote Unit tests and the UI component to manage current theme.
* Implemented scan so that it manages custom themes with unit tests
* Component updates
- Repositioning style ordering
- Adding indicator override
- Adding select styles
* SignlaR integration, some fixes when creating custom entities, one single migration. Just login functionality left.
* More ui updated
- Added .no-hover to prevent hover on elements where not needed
- Changed all selects I could find to appropriate class
- Changed up nav tabs to work more like bootstrap tabs than pills
- Added padding to top of some containers to make styles consistent
- Added ability to change navbar fontawesome icon colors
- removed some unecessary inline styling
- Changed radio button to appropriate class
- Toned down primate color, a bit too bright for dark theme.
- Added ability to change button fontawesome icon color
* nav-tab fix for series-detail
* Added themes folder to gitignore
* Adding card overlay
* Fixing up light theme
* Everything is done. Only bug is that color-scheme isn't being set properly from css variable.
* Checkboxes have pointer by default. Confirm/Confirm email use default (dark) theme by default
* Fixed an error where color-scheme wasn't reflecting correctly on themes on first load
* Fixed user preferences not available on login
* Changing dual radios to switches and color tweaks
* disabled primary APCA fix
* button APCA fixes
* Fixed some timing issues with first load and image service
* Fixed swiper issues from upgrade
* Changed themes to be scss files again and adjusted Seed code
* Migrated carousel to css variables. Fixed a broken animation for search.
* Cleaned up some backend smells
* Fixed white border outline on nav tabs, added some variables for header
* Nav bar has been css variable-ified
* Added some basic eink stuff to make the app useable
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Fixed an issue where cover update events wouldn't refresh an image after the second event came through due to randomization
* Fixed an issue where download event wasn't send consistently when downloading files.
* Fixed a bug where you couldn't add a new role to a user
* Fixed a bug where if you went to edit user library, the roles would get reset to nothing
* Adjust the rendering on reading list page to be better on smaller screens (and worse on larger ones)
* Tweaked the refresh covers message to use queued and not started
* Cleaned up the code for image on when to update based on CoverUpdate event. On dashboard, don't spam reload recently added on every series update or scan complete. Debouce for 1 second between calls.
* Fixed an issue where we sent an error on forgot password confirmation, but really, it was successful.
* Added Reading Lists and Library to search results
* Fixed a bug in the search component where hitting esc to close overlay then typing again wouldn't reopen the overlay
* When resending invites, send the correct link for an invite
* Tell the admin an email was sent on invite
* Fixed the error interceptor to flatten validation error messages more robustly and now confirm email will show validation exceptions
* Fixed a bug in webtoon reader where we were reading the wrong dimension for fitting images to screen on render
* When generating email links, inform who they are for in the logs.
Fixed an issue with an error message on login when password was incorrect, but user hadn't confirmed email yet.
Fixed multiple cases where migration wasn't sending error messages back correctly and hence the user never saw them.
* Show errors on migration UI form
* Changed log rolling to be easier to understand
* Added some extra logic to throw unauthorized
* Tweaked some wording to inform user how to best find email link
* Fixed a code smell
* Added ServerSettingKey's for SMTP and moved email service code to Kavita. Nothing integrated in the UI yet.
* Undo all the custom SMTP stuff and prepare for custom email service url.
* Foundation for email service to use a custom url is setup.
* Implemented the ability to hook up custom email url
* Implemented a new role "Change Password". This role allows you to change your own password. By default, all users will have it. A user can have it removed arbitrarliy.
Removed components that are no longer going to be used.
* Cleaned up some code
* Implemented forgot password flow. Fixed a bug in manage user where admins were showing the Sharing With section.
* Cleaned up the reset password flow.
* Reverted some debug code
* Fixed an issue with invites due to ImmutableArray not being set.
* Moved the Server Settings out into a button on nav header
* Refactored Mange Users page to the new design (skeleton). Implemented skeleton code for Invite User.
* Hashed out more of the code, but need to move all the email code to a Kavita controlled API server due to password credentials.
* Cleaned up some warnings
* When no user exists for an api key in Plugin controller, throw 401.
* Hooked in the ability to check if the Kavita instance can be accessed externally so we can determine if the user can invite or not.
* Hooked up some logic if the user's server isn't accessible, then default to old flow
* Basic flow is working for confirm email. Needs validation, error handling, etc.
* Refactored Password validation to account service
* Cleaned up the code in confirm-email to work much better.
* Refactored the login page to have a container functionality, so we can reuse the styles on multiple pages (registration pages). Hooked up the code for confirm email.
* Messy code, but making progress. Refactored Register to be used only for first time user registration. Added a new register component to handle first time flow only.
* Invite works much better, still needs a bit of work for non-accessible server setup. Started work on underlying manage users page to meet new design.
* Changed (you) to a star to indicate who you're logged in as.
* Inviting a user is now working and tested fully.
* Removed the register member component as we now have invite and confirm components.
* Editing a user is now working. Username change and Role/Library access from within one screen. Email changing is on hold.
* Cleaned up code for edit user and disabled email field for now.
* Cleaned up the code to indicate changing a user's email is not possible.
* Implemented a migration for existing accounts so they can validate their emails and still login.
* Change url for email server
* Implemented the ability to resend an email confirmation code (or regenerate for non accessible servers). Fixed an overflow on the confirm dialog.
* Removed all code around disabling authentication. Users that were already disabled can look up their password on the wiki.
* Moved the Server Settings out into a button on nav header
* Refactored Mange Users page to the new design (skeleton). Implemented skeleton code for Invite User.
* Hashed out more of the code, but need to move all the email code to a Kavita controlled API server due to password credentials.
* Cleaned up some warnings
* When no user exists for an api key in Plugin controller, throw 401.
* Hooked in the ability to check if the Kavita instance can be accessed externally so we can determine if the user can invite or not.
* Hooked up some logic if the user's server isn't accessible, then default to old flow
* Basic flow is working for confirm email. Needs validation, error handling, etc.
* Refactored Password validation to account service
* Cleaned up the code in confirm-email to work much better.
* Refactored the login page to have a container functionality, so we can reuse the styles on multiple pages (registration pages). Hooked up the code for confirm email.
* Messy code, but making progress. Refactored Register to be used only for first time user registration. Added a new register component to handle first time flow only.
* Invite works much better, still needs a bit of work for non-accessible server setup. Started work on underlying manage users page to meet new design.
* Changed (you) to a star to indicate who you're logged in as.
* Inviting a user is now working and tested fully.
* Removed the register member component as we now have invite and confirm components.
* Editing a user is now working. Username change and Role/Library access from within one screen. Email changing is on hold.
* Cleaned up code for edit user and disabled email field for now.
* Cleaned up the code to indicate changing a user's email is not possible.
* Implemented a migration for existing accounts so they can validate their emails and still login.
* Change url for email server
* Implemented the ability to resend an email confirmation code (or regenerate for non accessible servers). Fixed an overflow on the confirm dialog.
* Took care of some code cleanup
* Removed 3 db calls from cover refresh and some misc cleanup
* Fixed a broken test
* Implemented the framework for Refresh Token. Needs testing.
* Implemented Refresh Tokens. Users are issued tokens that last 7 days, just before the 7 days, the UI will request a new token to avoid having to re-authenticate.
* Refactored the Font Escaping Regex with new unit tests.
* Fonts are now properly escaped, somehow a regression was introduced.
* Refactored most of the book page loading for the reader into the service.
* Fixed a bug where going into fullscreen in non dark mode will cause the background of the reader to go black. Fixed a rendering issue with margin left/right screwing html up. Fixed an issue where line-height: 100% would break book's css, now we remove the styles if they are non-valuable.
* Changed how I fixed the black mode in fullscreen
* Fixed an issue where anchors wouldn't be colored blue in white mode
* Fixed a bug in the code that checks if a filename is a cover where it would choose "backcover" as a cover, despite it not being a valid case.
* Validate if ReleaseYear is a valid year and if not, set it to 0 to disable it.
* Fixed an issue where some large images could blow out the screen when reading on mobile. Now images will force to be max of width of browser
* Put my hack back in for fullscreen putting background color to black
* Change forwarded headers from All to explicit names
* Fixed an issue where Scheme was not https when it should have been. Now the browser will handle which scheme to request.
* Cleaned up the user preferences to stack multiple controls onto one row
* Fixed fullscreen scroll issue with progress, but now sticky top is missing.
* Corrected the element on which we fullscreen
* Refactored all files to have Interfaces within the same file. Started moving over to file-scoped namespaces.
* Refactored common methods for getting underlying file's cover, pages, and extracting into 1 interface.
* More refactoring around removing dependence on explicit filetype testing for getting information.
* Code is buildable, tests are broken. Huge refactor (not completed) which makes most of DirectoryService testable with a mock filesystem (and thus the services that utilize it).
* Finished porting DirectoryService to use mocked filesystem implementation.
* Added a null check
* Added a null check
* Finished all unit tests for DirectoryService.
* Some misc cleanup on the code
* Fixed up some bugs from refactoring scan loop.
* Implemented CleanupService testing and refactored more of DirectoryService to be non-static.
Fixed a bug where cover file cleanup wasn't properly finding files due to a regex bug.
* Fixed an issue in CleanupBackup() where we weren't properly selecting database files older than 30 days. Finished CleanupService Tests.
* Refactored Flatten and RemoveNonImages to directory service to allow CacheService to be testable.
* Finally have CacheService tested. Rewrote GetCachedPagePath() to be much more straightforward & performant.
* Updated DefaultParserTests.cs to contain all existing tests and follow new test layout format.
* All tests fixed up
* Some small changes to how maxPage is handled for better page tracking on webtoon reader.
* Fixed a bug in cover image selection (#756)
* Refactored webtoon reader to report page progress exactly as manga reader does. In addition, manga reader moved progress saving to setPageNumber making them the same.
* Implemented the ability to disable authentication on a server instance. Admins will require authentication, but non-admin accounts can be setup without any password requirements.
* WIP for new login page.
* Reworked code to handle disabled auth better. First time user flow is moved into the user login component.
* Removed debug code
* Removed home component, shakeout testing is complete.
* remove a file accidently committed
* Fixed a code smell from last PR
* Code smells
* Fixed an issue from perf tuning where I forgot to send Pages to frontend, breaking reader.
* Built out continuous reading for webtoon reader. Still has some issues with triggering.
* Refactored GetUserByUsernameAsync to have a new flavor and allow the caller to pass in bitwise flags for what to include. This has a get by username or id variant. Code is much cleaner and snappier as we avoid many extra joins when not needed.
* Cleanup old code from UserRepository.cs
* Refactored OPDS to use faster API lookups for User
* Refactored more code to be cleaner and faster.
* Refactored GetNext/Prev ChapterIds to ReaderService.
* Refactored Repository methods to their correct entity repos.
* Refactored DTOs and overall cleanup of the code.
* Added ability to press 'b' to bookmark a page
* On hitting last page, save progress forcing last page to be read. Adjusted logic for the top and bottom spacers for triggering next/prev chapter load
* When at top or moving between chapters, scrolling down then up will now trigger page load. Show a toastr to inform the user of a change in chapter (it can be really fast to switch)
* Cleaned up scroll code
* Fixed an issue where loading a chapter with last page bookmarked, we'd load lastpage - 1
* Fixed last page of webtoon reader not being resumed on loading said chapter due to a difference in how max page is handled between infinite scroller and manga reader.
* Removed some comments
* Book reader shouldn't look at left/right tap to paginate elems for position bookmarking. Missed a few areas for saving while in incognito mode
* Added a benchmark to test out a sort code
* Updated the read status on reading list to use same style as other places
* Refactored GetNextChapterId to bring the average response time from 1.2 seconds to 400ms.
* Added a filter to add to list when there are more than 5 reading lists
* Added download reading list (will be removed, just saving for later). Fixes around styling on reading lists
* Removed ability to download reading lists
* Tweaked the logic for infinite scroller to be much smoother loading next/prev chapter. Added a bug marker for a concurrency bug.
* Updated the top spacer so that when you hit the top, you stay at the page height and can now just scroll up.
* Got the logic for scrolling up. Now just need the CSS then cont infinite scroller will be working
* More polishing on infinite scroller
* Removed IsSpecial on volumeDto, which is not used anywhere.
* Cont Reading inf scroller edition is done.
* Code smells and fixed package.json explore script
* Added some basic OPDS implementation
* Fixed an issue with feed href
* More changes
* Added library routes and moved user code to a method so we can hack in fixed code without authentication
* Images now load on the OPDS reusing our existing Image infrastructure.
* Added the ability to download and moved some download code to a dedicated service
* Download is working, pagination is implemented.
* Refactored libraries to use pagination
* Laid foundation for OpenSearch implementation
* Fixed up some serialization issues and some old code that wasn't referencing helper methods
* Ensure chapters are sorted when we send them over OPDS
* OpenSearch implemented
* Removed any support for OPDS-PS due to lack of apps supporting it.
* Don't distribute development.json nor stats directory on build.
* Implemented In Progress feed as well.
* Ability to enable OPDS for server. OPDS now accepts initial call as POST in case app uses username/password.
* UI now properly renders state for OPDS enablement. Added Collections routes.
* Fixed pagination startIndex on OPDS feeds when there is less than 1 page.
* Chunky Reader now works. It only accepts UTF-8 encodings
* More Chunky fixes
* More chunky changes, such a fussy client.
* Implemented the ability to have a custom api key assigned to a user and use that api key as your authentication token against OPDS routing.
* Implemented the ability to reset your API Key
* Fixed favicon not being sent back correctly
* Fixed an issue where images wouldn't send on OPDS feed.
* Implemented Page streaming and fixed a pagination bug
* Hooked in the ability to save progress in Kavita when Page Streaming
* Removed some extra spam for the console
* Implemented the code to update RowVersion, which is our concurrency check
* Fixed a critical issue where more than one bookmark could occur for a given chapter due to a race condition. Now we use concurrency checks and we also gracefully allow more than one row, by only grabbing first.
* Cleaned up the logic for IHasConcurencyToken and updated the setters to be private.
* Lots of comments and when deleting a library, remove any user progress items for which chapters don't exist.
* When deleting a Series, cleanup user progress rows.
* Now after a scan of library, if a series is removed, collection tags are pruned as well if there are no longer any series bound to it.
* Updated the image on the Readme to show a better picture
* Small code cleanup to remove null check modifier as I check for null just before then
* Fixed images loading multiple times due to using function in binding with random. You can now click chapter images to read that chapter specifically.
* Fixed cards being different sizes when read vs unread
* Moved over Robbie's workflow changes from notifier. Commented out activity indicators as that is not shipping with this release.
* Remove code that isn't needed
* Reverted GA
* Changed GA to trigger only when HEAD is updated
* Implemented the ability to download files (series, volume, chapter)
* Added RBS checks to ensure user is either an admin or has download role
* Added the ability to change a users feature RBS. Changed the Role seed to use reflection
* Remove automatic retry for scanLibraries as if something fails, it wont pass magically. Catch exceptions when opening books for parsing and swallow to ignore the file.
* Delete extra attempts
* Switched to using FirstOrDefault for finding existing series. This will help avoid pointless crashes.
* Updated message when duplicate series are found (not sure how this happens)
* Fixed a negation for deleting volumes where files still exist.
* Implemented the ability to automatically scale the manga reader based on screen size.
* Default to automatic scaling
* Fix an issue where malformed epubs wouldn't be readable due to incorrect keys in the OPF. We now check if key is valid and if not, try to correct it. This makes a page load about a second on malformed books.
* Fixed#176. Refactored the recently added query to be restricted to user's access to libraries.
* Fixed a one off bug with In Progress series
* Implemented the ability to refresh metadata of just a single series directly
* Fixed a parser case where Series c000 (v01) would fail to parse the series
* Fixed#189. In Progress now returns data properly for library access and in multiple libraries.
* Fixed#188 by adding an extra message for bad login and updating UI
* Generate a fallback for table of contents by parsing the toc file (if we can find one)
* Remove automatic retry for scanLibraries as if something fails, it wont pass magically. Catch exceptions when opening books for parsing and swallow to ignore the file.
* Delete extra attempts
* Switched to using FirstOrDefault for finding existing series. This will help avoid pointless crashes.
* Updated message when duplicate series are found (not sure how this happens)
* Fixed a negation for deleting volumes where files still exist.
* Implemented the ability to automatically scale the manga reader based on screen size.