* 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 76b0d15a98, reversing
changes made to b3ed553954.
* 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>
* Fixed a bug where GetNextChapter would return a loose leaf chapter from a special when it should return nothing.
* Fixed a bug in events widget when an update comes in after a user refreshes, the active event counter could get out of sync, thus showing "Nothing going on here"
Refactored the events widget to be named appropriately.
* Refactored code to have errors during threaded tasks propagate to the UI via events widget (css still needed).
Removed ScanLibraryError in favor of generic Error event.
* Fixed up some code and added ability to remove the event from events widget
* Fixed a bug where modifiying certain fields, like summary, wouldn't lock the field
* Fixed a few bugs where lock state was not being set in the DB correctly nor were certain combinations of locking fields and editing fields.
* Removed debug code
* Updated the discord alert to tag new group
* Refactored cover upload to actually handle uploading a temp file via url on the backend so that users can user change cover by url. Fixed up some bugs that occured when chaning the image container in a previous PR.
* Code cleanup
* Cleaned up the css on the error items
* Code cleanup
* Started with some basic plumbing with comic info parsing updating Series/Volume.
* We can now get chapter title from comicInfo.xml
* Hooked in the ability to store people into the chapter metadata.
* Removed no longer used imports, fixed up some foreign key constraints on deleting series with person linked.
* Refactored Summary out of the UI for Series into SeriesMetadata. Updated application to .net 6. There is a bug in metadata code for updating.
* Removed the parallel.ForEach with a normal foreach which lets us use async. For I/O heavy code, shouldn't change much.
* Refactored scan code to only check extensions with comic info, fixed a bug on scan events not using correct method name, removed summary field (still buggy)
* Fixed a bug where on cancelling a metadata request in modal, underlying button would get stuck in a disabled state.
* Changed how metadata selects the first volume to read summary info from. It will now select the first non-special volume rather than Volume 1.
* More debugging and found more bugs to fix
* Redid all the migrations as one single one. Fixed a bug with GetChapterInfo returning null when ChapterMetadata didn't exist for that Chapter.
Fixed an issue with mapper failing on GetChapterMetadata. Started work on adding people and a design for people.
* Fixed a bug where checking if file modified now takes into account if file has been processed at least once. Introduced a bug in saving people to series.
* Just made code compilable again
* Fixed up code. Now people for series and chapters add correctly without any db issues.
* Things are working, but I'm not happy with how the management of Person is. I need to take into account that 1 person needs to map to an image and role is arbitrary.
* Started adding UI code to showcase chapter metadata
* Updated workflow to be .NET 6
* WIP of updating card detail to show the information more clearly and without so many if statements
* Removed ChatperMetadata and store on the Chapter itself. Much easier to use and less joins.
* Implemented Genre on SeriesMetadata level
* Genres and People are now removed from Series level if they are no longer on comicInfo
* PeopleHelper is done with unit tests. Everything is working.
* Unit tests in place for Genre Helper
* Starting on CacheHelper
* Finished tests for ShouldUpdateCoverImage. Fixed and added tests in ArchiveService/ScannerService.
* CacheHelper is fully tested
* Some DI cleanup
* Scanner Service now calls GetComicInfo for books. Added ability to update Series Sort name from metadata files (mainly epub as comicinfo doesn't have a field)
* Forgot to move a line of code
* SortName now populates from metadata (epub only, ComicInfo has no tags)
* Cards now show the chapter title name if it's set on hover, else will default back to title.
* Fixed a major issue with how MangaFiles were being updated with LastModified, which messed up our logic for avoiding refreshes.
* Woohoo, more tests and some refactors to be able to test more services wtih mock filesystem. Fixed an issue where SortName was getting set as first chapter, but the Series was in a group.
* Refactored the MangaFile creation code into the DbFactory where we also setup the first LastModified update.
* Has file changed bug is now finally fixed
* Remove dead genres, refactor genre to use title instead of name.
* Refactored out a directory from ShouldUpdateCoverImage() to keep the code clean
* Unit tests for ComicInfo on BookService.
* Refactored series detail into it's own component
* Series-detail now received refresh metadata events to refresh what's on screen
* Removed references to Artist on PersonRole as it has no metadata mapping
* Security audit
* Fixed a benchmark
* Updated JWT Token generator to use new methods in .NET 6
* Updated all the docker and build commands to use net6.0
* Commented out sonar scan since it's not setup for net6.0 yet.
* Updated readme with new host information and new feature site.
* Implemented basic fit to screen splitting option for manga reader such that the reader will try to fit the whole cover on the screen via scaling it.
Updated a bunch of defaults in the preferences to give a better experience for first installs.
* Refactored the stat scheduling code slightly to clean it up and have better logging.
* Replaced @import with @use to lower css bundling.
* Changed up the defaults for the reading preferences to give a better experience. Fixed a duplicate render on automatic scaling due to emitting a valuechange with automatic scaling changing fit.
Implemented basic form of fit to screen. Still needs some tweaking and optimization.
* Update link to new feature server and update kavita homepage to use www.
* Updated the serverInfo to match backend. Tweaked some of the css for the changelog
* Added publish date for changelog
* First page works except for tablet
* I'm stumped, taking a break
* Hide the arrow for nav events
* Ensure specials in reading lists don't have their extensions visible
* Testing out removing no-connection
* Fixed a bug in infinite scroller where next chapter spacer when clicked would emit for prev chapter load. Fixed an issue where next/prev chapter loaders would execute when they shouldn't.
* Fit Split is working in all cases as of this code. New optimization is still needed.
* Fit to screen is now working well
* Updated the bookmark effect to look much better
* Updated new issue template to inform users to request features on our site.
* Removed an empty migration
* Added Date Added time to volume/chapter card detail modals to help users understand when new chapters are added after something has been fully read. Changed Created -> Added for better clarity.
* updating workflow discord parser
- Added ` and > to parser
Co-authored-by: Robbie Davis <robbie@therobbiedavis.com>
* Refactored all the config files for Kavita to be loaded from config/. This will allow docker to just mount one folder and for Update functionality to be trivial.
* Cleaned up documentation around new update method.
* Updated docker files to support config directory
* Removed entrypoint, no longer needed
* Update appsettings to point to config directory for logs
* Updated message for docker users that are upgrading
* Ensure that docker users that have not updated their mount points from upgrade cannot start the server
* Code smells
* More cleanup
* Added entrypoint to fix bind mount issues
* Updated README with new folder structure
* Fixed build system for new setup
* Updated string path if user is docker
* Updated the migration flow for docker to work properly and Fixed LogFile configuration updating.
* Migrating docker images is now working 100%
* Fixed config from bad code
* Code cleanup
Co-authored-by: Chris Plaatjes <kizaing@gmail.com>
# Added
- Added: Added automatic character parsing for discord notifier. Now if the PR is over a certain character limit, it will trim and add an appropriate link to the full changelog. (Release for Stable, PR for Dev)
# Removed
- Removed: Removed Sentry map task from the workflow since Sentry is no longer used.
* Replaced profile links to anchors so we can open in new tab if we like
* Refactored how update checking works. We now explicitly check and send back on the same API. We have a weekly job that will push an update to the user.
* Implemented a changelog tab
* Ported over a GA fix for using ' in PR bodies.
* Don't check cert for Github
* 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
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating write
* testing artifact
* consolidating nightly-docker into main workflow
* pulling stable into main
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating write
* testing artifact
* consolidating nightly-docker into main workflow
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating write
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating write
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating action version
* syntax fix
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* testing passing pr body via artifact
* Updating syntax
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* updating parsing
* Replacement in parsing
* Update sonar-scan.yml
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* trying to remove newline
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker workflow
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating parsing
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
* updating parse
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Reverting back to default variables
* fixing syntax error
* removing heading syntax
## Changes
- Changed github action to allow for discord notification to use markdown styling
## Added
- Added version to discord notification
- Added ability to use PR body instead of commit body for discord notification description.
## Changes
- Changed github action to allow for discord notification to use markdown styling
## Added
- Added version to discord notification
- Added ability to use PR body instead of commit body for discord notification description.
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker workflow
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating parsing
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* parsing pr body
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* adding token
The description on this action is awful, it didn't mention needing a token. I found this solution from the repo's issues
* Updating docker action
* adding version to message
* adding way to get PR title and body
* Adding input pass to workflows
Workflow dispatches may not get push header info. Switching logic to pass needed title and body info through just in case.
* Fixed the In progress API returning back series that had another users progress on them. Added SplitQuery which speeds up query significantly.
* Try out putting PR body into notification