What's Changed
- 44f1d8f4 - Update GitHub Actions workflow to use latest Ubuntu version
- 6b964227 - Trakt: sort history before starting import (#1360)
- 0904f631 - Allow adding assets to measurements (#1356)
- d471a097 - Update GitHub Actions workflow dependencies to latest versions
- f389896e - Modal trigger to edit exercise details (#1353)
- b62b9365 - Assign multiple collections to media item at once (#1350)
- 42fd4524 - Normalize assets in the database (#1349)
- f692b28a - Respect filters when performing bulk collection actions (#1346)
- 0532aa21 - Allow updatin integration credentials (#1345)
- 75cc5498 - fix(frontend): handle onboarding tour edge cases
- b55d46e3 - Override user unit system on an active workout (#1344)
- c7d7ed60 - Commit search results before display (#1343)
- 54998d26 - Suggestions for collections (#1340)
- ca98cff0 - Add boolean collection extra information field type (#1336)
- 81dd4dd0 - fix(frontend): allow refreshing recommendations in the dashboard
- 4a409415 - Move trending and recommendations fetching to client side (#1334)
- 80b17b66 - Send notifications when item is removed from monitoring (#1331)
- 377fc2db - Trending metadata section (#1311)
- 4045ea3e - Allow configuring number of items in list pages via preferences (#1329)
- 01d095e8 - Update dependencies (#1322)
- c85b0f8e - fix(frontend): Refactor dashboard preferences handling to utilize cloneDeep for state management
- 7964a9af - Display reviews for people and groups (#1320)
- c43b60b9 - Import GenericJson provider_watched_on (#1319)
- 7c70d4b2 - Allow reviewing out of 10 (#1313)
- e60ba9b6 - fix(backend): expire cache key for
UserMetadataRecommendationsSet - 5ff8ac8d - Recommendations enhancements (#1309)
- 6816f20b - Increase expiry for onboarding tour cookie (#1308)
- c2535e89 - Localize recommendations to user (#1305)
- 9fb5531f - Move recommendations fetching to client side (#1303)
- 35105561 - fix(frontend): clone dashboard element before editing it
- 313e20ab - Update openidconnect (#1249)
- 59b104cc - Always open exercise details (#1302)
- 8ebb2ecd - New recommendation strategy (#1295)
- 9821ec0b - Default landing page (#1293)
- 5653ef00 - Onboarding tour for new users (#1280)
- a8d31357 - Add support for MarkPlayed event from Jellyfin (#1288)
- 4cce9ec1 - Auto launch OIDC (#1285)
- 1a13bddf - feat(migrations): conditionally add configured events column to notification platform
- aaecf387 - feat(frontend): enhance media item season details display
- 5112be57 - refactor(frontend): update UserMetadataList query input structure
- c51f8341 - General improvements (#1277)
- cb60be39 - Move notification preferences to notification_platform table (#1275)
- a6c3390d - refactor(frontend): remove ufo withFragment usage in fitness routes
- 74c888c0 - Display alert when workouts are scheduled for revision (#1273)
- a2b7d113 - Remove user_notification table (#1272)
- 6a6032ed - Fixed media tracker import if user has custom lists (#1270)
- 6834f64d - Change id for superset (#1269)
- e3a44f12 - Fix fitness entity list page when no elements (#1268)
- 0f6c4129 - docs: change name of header
- 465fb165 - fix(migrations): correct check for is_demo
- 5fc49966 - chore: upgrade dependencies
- 1dfe6866 - feat(backend): change import schema
- f5ee1d80 - ci: remove useless step
- 164e6d7b - Live updates in the imports page (#1258)
- 631fd488 - Fix bug in workout logging (#1256)
- b15244da - More details in metadata (show) card (#1253)
- 049862e0 - fix(frontend): remove incorrect invariant call
- 3cfcba3a - Minor updates (#1239)
- 8d7c9d58 - chore(frontend): bring back one collection filter
- 2c807902 - Advanced filter collections (#1251)
- 935704e1 - feat(website): write the config to a json file
- 65cf1c8b - Hide settings section if in access link session (#1248)
- 7d426796 - Store integration trigger result (#1247)
- c3203915 - Update outdated links (#1246)
- bb4db9f2 - ci: build all images using cross
- 287293a3 - Workout tracking enhancements (#1242)
- 979a6bdc - feat(website): changes for self hosting cloud version
- 70c5c7e3 - Person related changes (#1240)
- 822a22b3 - Display day of week for fitness entities (#1238)
- 2e3343af - ci: install wget in containers for health-check
- 4dfe6443 - fix(migrations): add check before adding new column
- c0e5ed75 - Allow hiding collections (#1234)
- 062016d7 - fix(website): get honeypot fields working again
- a353de97 - Add new exercise lots (#1228)
- 654c3f51 - fix(backend): handle case when plex directory is empty
- 5dcec14a - Correct equality check for committing person (#1227)
- 20d1d82e - build: upgrade all dependencies
- 12000a2f - Allow customizing unit for calories burnt (#1226)
- 3c84938c - Allow importing "Collection" from Trakt.tv (#1223)
- 24d80b82 - fix(frontend): add default secret to toast session storage
- 79dd3133 - Upgrade
frontendto react router v7 (#1219) - 7d81766d - Upgrade
websiteto react router v7 (#1214) - a86ecc39 - Allow random sorting in list pages (#1212)
- 2883943b - Allow order by times consumed (#1208)
- 75693e12 - Allow adding name for integrations (#1204)
- 3d1752d2 - fix(frontend): fix the start date parameter for all time in analytics page
- 473255af - Remove dependency on
zodix(#1198) - 4ac24a87 - fix: handle cases when dashboard is empty
- ca170112 - perf(services/miscellaneous): do not stream data to delete
- 9ac06141 - Add youtube music timezone support (#1197)
- 17d6131c - Hide spoilers in calendar and upcomping section by default (#1194)
- 11c8565c - [Ryot v8] Custom date filter in media list pages (#1183)
- a647c2d6 - fix(providers/hardcover): do not unwrap errors directly
- bc827d54 - fix: minor fixes
- a6297dba - Allow setting calories burnt for workouts (#1179)
- da5a2801 - Support for Hardcover integration (#1185)
- a4bb9e51 - Youtube music integration (#1154)
- 8b9538ed - docs: improve contribution guide (#1180)
- 9d33c03b - New import strategy (#1175)
- 64fccf62 - fix(backend): incorrect query for sending queued notifications
- 45f49c47 - Button to update entities if they are partial (#1172)
- 1161083e - Stopwatch during workout logging (#1166)
- 17cf8333 - fix(services/integration): handle case when ebook progress is returned in place of normal progress
- e0524239 - fix(migrations): migrate over old workout template data
- 15c3b291 - Do not include special seasons for shows when updating progress (#1164)
- b599c241 - Remove workout template visibility (#1159)
- 99a045ce - fix(backend): do not send notification for workout revision
- 5babadc6 - Notification for workout created (#1150)
- 2fa6a59e - feat(frontend): mechanism to handle isPartial metadata
- 5ad39c69 - fix(frontend): bug fixes for edge cases
- 215ad7c6 - Allow associating person with metadata groups (#1153)
- a27d59ff - Allow empty exercises in workout templates (#1151)
- 18f4c36b - fix(frontend): hard reload when starting new workout
- 4ab91498 - fix(backend): include provider watched in the cache
- 8442c5cb - Allow updating custom metadata (#1149)
- 22036d45 - feat: change name of group by column
- d77e2b30 - fix(backend): deploy update metadata job before starting import
- 5e1a32f2 - Workout enhancements (#1142)
- 69c7878f - fix(services/importer): handle anilist edge cases
- de5e2565 - Anilist importer (#1138)
- 94cb414e - Allow editing custom exercises correctly (#1144)
- c4604685 - Updates (#1137)
- 466153b0 - fix(utils/database): summary calculation and null ordering
- 5bc62a47 - perf(backend): update 3 media items at once
- 98bb0a54 - ci: update permissions for job
- 0118b8f5 - Add music tracking using YoutubeMusic (#1133)
- 5230642d - refactor: cache core details in the database
- ead24c6c - Start caching search responses (#1132)
- 127c40ff - ci: run
zizmoron the github action - 315fd788 - Merge pull request #1127 from IgnisDa/issue-966
- 52cb1584 - chore(backend): remove as many usages of
crate::as possible - 2a1f439f - refactor(services/importer): fn to parse a date string
- 479b994e - refactor(backend): derive expiry from key names
- 972cd012 - feat(backend): export id as well for exercises
- e2f90452 - ci: Run CI
- eaa948a0 - refactor(frontend): change order of props
- ee28bcae - feat(frontend): do not show graph if there are no values
- b4efc46f - feat(services/importer): also import the set rpe
- 9f6eb19d - refactor(services/importer): change order of attributes specified
- 260b264b - chore(utils/dependent): schedule user for workout revision if workouts were imported
- b3fdf321 - refactor(services/importer): use new utility function to associate with exercise
- d40b4940 - docs: add info about heavy imports
- 042edc89 - refactor(services/importer): use inbuilt csv parser
- 15ddd688 - chore(services/importer): add support for imperial units
- 7130331f - feat(services/importer): allow importing hevy data
- a1a7d1ea - feat(frontend): allow uploading for hevy
- 7280ed15 - feat(backend): start implementation for hevy import
- b84789c9 - Merge pull request #1126 from IgnisDa/issue-1125
- 29cd04d3 - perf(services/exporter): remove n+1 query
- b0864430 - docs: fix grammar
- 85304350 - feat(frontend): send rpe settings to backend
- 0da7c855 - feat(frontend): allow adjust rpe
- 3290bfcd - chore: remove useless file
- fc426f9f - docs: update running docs
- d22d5156 - chore: remove devcontainer config
- 0fec608f - feat(frontend): add information about RPE
- 310d70ba - feat(frontend): allow opening modal to adjust RPE
- ade53291 - chore(frontend): remove padding and change wordings
- 76fe6086 - chore(frontend): allow setting rpe for sets
- b0b64bcc - chore(gql): request rpe field for a set
- 0aac9ed9 - feat(backend): allow setting rpe for sets
- 5977c919 - Merge branch 'issue-1113'
- 97936a0b - Merge pull request #1118 from IgnisDa/issue-1113
- e8d524e5 - chore(services/importer): log the total number of metadata
- c097c4a3 - ci: Run CI
- fa75b94f - feat(frontend): hide analytics graph for non pro users
- b1688fc3 - refactor(frontend): change watch times to enum
- b7dc3896 - refactor(frontend): change it to an enum
- f828f6ca - feat(frontend): add pro validation for saving image
- f0a1f011 - fix(frontend): additional padding for statistics card
- 17606c35 - fix(frontend): additional padding for statistics card
- c28971d2 - feat(frontend): hide counter in captured screenshot
- 890195e0 - feat(frontend): display watermark in captured screenshot
- 3716cb78 - fix(frontend): better position for workout btn
- 2eb14b7a - feat(frontend): format workout reps number with compact notation
- 3691a082 - feat(ts-utils): add function to format numbers
- f04cdb3c - feat(frontend): make the text dim
- a82296b9 - refactor(frontend): create correct props
- 2f1058e1 - ci: Run CI
- 1a357e73 - feat(frontend): display rest time
- e63a4d44 - fix(utils/database): store rest time in correct unit
- a92158e8 - feat(backend): return total rest time
- ecfb135e - feat(frontend): display distance travelled
- 58b2409a - feat(frontend): display fitness statistics
- 0c43a84a - feat(backend): return some other data
- 7041c038 - feat(backend): do not use application cache for user workout revision
- 637ea6b5 - fix(frontend): handle cases when no daily user activities are present
- 43d356ca - refactor(frontend): some minor changes
- 1a415561 - feat(frontend): make loader more presentable
- 185940e8 - feat(frontend): add skeleton loader for fitness entity
- 3b7932a2 - feat(frontend): adapt to new gql schema
- ddab3236 - fix(services/fitness): specify column of correct model
- 03055aa5 - feat(backend): return only the id for workouts and workout templates list queries
- 2412236d - docs: improve documentation
- 3cd412fb - ci: Run CI
- cf64da06 - feat(backend): allow syncing to owned collection from plex
- c3a549af - docs: add info about ryot yank integration
- 91309b7c - fix(frontend): do not make input required
- 67d557e4 - feat(frontend): adapt to new gql schema
- ec0c05dd - fix(services/user): respect sync to owned collection in input
- 2b428a58 - feat(backend): migrate for existing plex sink integrations
- f6daa6b0 - refactor(backend): sync data to owned collection separately
- be66235b - chore(services/importer): add some more logs in plex importer
- 4ec06d50 - chore(frontend): remove useless zod usage
- b10a1d12 - fix(frontend): better wording
- 15e4f47e - perf(models): do not serialize none values
- a703de52 - ci: Run CI
- e32b782c - perf(backend): save user's analytics parameters
- 65557de9 - feat(frontend): capture screen after 1.5 seconds
- 67cb41d5 - feat(frontend): use new loader query
- 9dd24207 - refactor(services/statistics): call function serially
- 9c1b1878 - build(backend): change dependency tree
- 09a9fc9d - fix(services/statistics): apply null ordering
- 29179836 - feat(backend): add query to get user analytics parameters
- 815f34e2 - feat(frontend): adapt to new gql schema
- bf14d4d1 - refactor(backend): collapse two queries into one
- ebc65df7 - feat(frontend): adapt to new graphql schema
- be860b6b - feat(backend): get rid of latest user summary query
- 7614d2f7 - refactor(models/common): move structs around
- 32b5924b - refactor(backend): move models around
- d1e477fc - build(backend): change dependency tree
- 68e1fa56 - build(backend): change dependency tree
- aa9fb5ef - ci: Run CI
- cbabaf8d - fix(frontend): remove curly braces
- 069e1301 - refactor(backend): do not create new services for integrations
- 32c95b9d - ci: Run CI
- 1c6189fb - fix(frontend): render filter only on the frontend
- 3ab7b64f - feat(frontend): do not change case a lot
- d619692c - fix(migrations): collapse two queries into one
- 07c0bcc7 - feat(backend): send user measurements
- ecf7e5cc - chore(services/importer): import set lot for strong app
- ed28bb0c - fix(services/importer): select correct attribute of exercise
- 9f4bbe77 - fix(services/importer): select correct attribute of exercise
- c9a916ea - refactor(backend): extract common fn to generate exercise id
- 79a95b24 - fix(services/importer): send correct details to the importer
- 69d2a650 - feat(frontend): adapt to new gql schema
- c73804fe - feat(backend): change
namekey of workouts toid - 8d006ec0 - fix(backend): do not schedule user for workout revision if exercise name changed
- 5e2c20da - fix(frontend): cleanup remaining stuff
- c93e7e8b - ci: Run CI
- d5966047 - chore(frontend): adapt to new gql schema
- e1e8da06 - feat(frontend): start adapting to new graphql schema
- fa099b72 - feat(migrations): change names of indices
- e8b32b54 - feat(backend): allow naming exercises similarly
- 3ec736c4 - feat(backend): start making identifier the primary column
- 935f1fb1 - chore(frontend): sort attributes by length
- fef9cd8c - feat(frontend): filter out hours which do not have anything associated
- fcb8b5d5 - Revert "chore(frontend): always display chart"
- d80fc949 - chore(frontend): always display chart
- 84e99a87 - feat(frontend): display polar radius axis
- a7158b1e - ci: Run CI
- be8a43a8 - feat(frontend): display all entity types in scatter chart
- 7e157cb9 - feat(backend): return user analytics correctly
- a8fa2767 - Revert "Revert "feat(backend): return entire analytics from single endpoint""
- 2f3dc47a - fix(frontend): time of day
- cc179a67 - feat(frontend): display workout counts
- bdcd9526 - feat(frontend): use radar chart for time of day
- a4882743 - feat(frontend): adjust activity section to be more in sync with other graphs
- 245df92d - feat(frontend): move activity graph to analytics section
- 3ab5d9df - feat(backend): remove the activity section
- 843bbc06 - feat(frontend): do not display border if not applicable
- 1017d922 - feat(frontend): move to using new grid container
- 31f97132 - Merge branch 'main' into issue-1113
- c1a65d65 - feat(services/importer): use let guard
- 1c5f780b - fix(frontend): add background color to container to fix screenshots
- c1ac11ca - feat(frontend): button to download the analytics page as png
- bd53be24 - build(frontend): add screenshot deps
- 338c839a - feat(frontend): display time ranges for analytics page
- cb7b68d2 - feat(frontend): change the time of day graph
- d3057457 - fix(frontend): do not display counter if not allowed
- 6138332a - feat(frontend): load analytics page on client side
- 4f9b0f60 - refactor(frontend): remove duplicated code
- 9bd6b0b4 - feat(frontend): allow starting media from outside
- 07c74da5 - chore(frontend): run formatter
- ef9dd4dd - feat(frontend): respect features enabled when displaying fitness charts
- 001debcc - Revert "feat(backend): return entire analytics from single endpoint"
- f20a4de6 - feat(backend): return entire analytics from single endpoint
- 734312d4 - chore(frontend): adapt to new gql schema
- 6eea05bb - chore(backend): lift up analytics
- ee306464 - fix(services/misc): do not get recommendations for custom metadata
- 5ddf9938 - ci: Run CI
- 0061298e - refactor(utils/dependent): use filter instead of mutable variable
- 1a9295f5 - fix(utils/dependent): use Epley for reps higher than 10
- cc7a9997 - chore(services/fitness): add log for each user whose workouts are being revised
- 1d8efbbc - fix(migrations): run query only when there are more than 0 users
- 6c126fea - fix(migrations): insert correct cache value into database
- c2806c3c - fix(utils/dependent): use Epley formula for one rm calculation below 10 reps
- 53726cdb - chore(migrations): schedule all users for workout revision
- 258a1566 - feat(frontend): display when entity interacted with
- 9063154a - feat(backend): mark metadata as recently consumed
- fdeba1b8 - feat(backend): get whether person and metadata group were recently consumed
- 1ec772bf - refactor(backend): functions to mark and get entity recently consumed
- 4d3740a1 - fix(frontend): make box-shadow smaller
- 3cf6da39 - chore(frontend): sort prop ordering
- 8fa47e6e - chore(frontend): change some colors
- c5ec5594 - feat(frontend): highlight media which are currently in progress
- 06a3d9d9 - feat(backend): return whether media is recently consumed
- accbb4a6 - feat(utils/dependent): mark metadata as recently consumed when marking progress
- 416be3b0 - feat(models/common): add key for metadata recently consumed
- bb14bd7d - refactor(models/common): order of enum elements
- 2b9b9f4b - docs: change word of release section
- 2f5b5ccc - docs: change orders of headings
- 0ba6a99c - docs: move instructions around
- 81de5553 - fix(frontend): send old event attribute
- 44c11a30 - perf(utils/database): preselect all exercises
- 7578880c - build(ts): update nodejs deps
- 3dedb56e - chore(services/fitness): add log statement
- 187010ee - feat(backend): implement scheduled workout revision
- 6562e94b - feat(backend): deploy all changes at once
- 25819372 - chore(utils/database): add log after scheduling
- d1113210 - feat(backend): allow scheduling user for workout revision
- de2e6e15 - fix(frontend): change btn text
- 2da56a50 - feat: change "re-evaluate" to "revise"
- f48047e7 - chore(migrations): add fixme comment
- 509efcd8 - perf(utils/dependent): only get key if cache is being respect
- a1ded4cb - chore(backend): general changes
- 97e8804d - feat: more resilient logic for validating pro keys
- 6d63ab96 - chore(backend): change names of jobs
- 7b32251a - chore(backend): make the expiry of application cache nullable
- cfbf161b - fix(services/statistics): change fallback to include in same millenium
- 673e24ef - fix(services/statistics): adjust daily user activity calculation to new database schema
- c97da8ac - feat(backend): adjust daily user activity calculation to new database schema
- 5cf23c95 - feat(migrations): drop entire table and recreate it
- 6fc91413 - feat(migrations): new columns for daily_user_activity
- 664b36ab - chore(enums): some other changes
- 95d9a7a9 - Merge branch 'main' into issue-1113
- 3aa95f1b - Import movies and shows from Plex (#1122)
- c623456f - perf(services/fitness): do not cast json to text when filtering on muscles
- 1271a9a2 - Allow reviewing only show seasons (#1124)
- 4af5829e - fix(providers): do not unwrap directly
- 4f595be6 - Perform typescript upgrade (#1121)
- ebb71459 - feat(frontend): remove scroll margin when it is no longer first exercise
- e759bbb5 - feat(frontend): display the active episode for shows and podcasts
- b757fb2f - feat(frontend): allow excluding exercise from analytics
- aca3fda1 - fix(services/fitness): handle edge case for updating exercise settings
- 831425c9 - feat(utils/database): respect new exercise setting
- 9ce1d04a - feat(backend): setting to exclude exercise from analytics
- 35019ef5 - docs: better wording for authentication caveat
- abd96706 - chore(frontend): better types of stuff
- 8f99589d - feat(frontend): display bubble chart for time of day
- 29d244a2 - fix(frontend): generate correct arrays
- d1401b69 - feat(frontend): generate correct data for time of day chart
- 993bc3ee - fix(utils/database): calculate hour correctly
- 160a9543 - feat(frontend): start section to display time of day
- 14af0b12 - feat(frontend): function to convert utc hour to local hour
- a6c08377 - chore(frontend): change how props are structured
- 9cf4e74a - chore(frontend): select entire text when focusing on input
- 8f943d1b - fix(frontend): remove text align from page heading
- 33f28dad - Merge branch 'main' into issue-1113
- 1a7ff30b - Allow muting sounds in workout logging (#1120)
- fcbebc73 - feat(frontend): use better colors for graphs
- 825ed521 - chore(gql): fix formatting of query
- 581c1f3c - chore(frontend): minor changes to graphs
- c158727c - refactor(backend): change function names
- dce86b11 - chore(backend): adapt to new database schema
- 6e79e670 - chore(migrations): make column non nullable
- db0947e3 - fix(providers): cache tmdb settings in the database
- 79ff3c86 - feat(backend): save tmdb settings in application cache
- f2fec30b - perf(backend): do not make a useless clone
- cf757545 - refactor(backend): change function name
- 6d010b0c - perf(backend): remove extra parameter
- 1fe5871e - feat(backend): save listennotes settings in application cache
- 2faaf1f4 - feat(backend): save igdb settings in application cache
- 5f68630f - Merge branch 'main' into issue-1113
- b866e5b7 - Better strategy for getting identifier from book ISBN (#1117)
- 47794fa5 - feat(frontend): handle cases when no analytics present
- 38b4e113 - chore(frontend): minor enhancements to chart
- 037202d2 - feat(frontend): add bar chart for exercises done
- 628d0825 - chore(docs): remove fragment from link
- 1200f9ea - feat(frontend): also allow setting analytics timespan to "All Time"
- 1f7c55e1 - feat(frontend): save count of muscles shown in local storage
- e7995f41 - feat(frontend): allow changing how many muscles to display
- 11fcaad5 - refactor(frontend): extract component to display chart container
- f02330a8 - feat(frontend): display basic pie chart
- e6e50688 - Revert "chore(services/cache): log when cache key found"
- ca8e59df - chore(services/cache): log when cache key found
- 34b57508 - feat(frontend): fetch data for fitness analytics
- 9189043f - feat(frontend): allow specifying custom time ranges
- 17589b5b - feat(frontend): get fallback search params
- 6315b210 - feat(frontend): do most calculations on the server loader
- 935ad4dd - feat(frontend): design basic webpage
- 3f349d85 - feat(frontend): add fitness analytics to sidebar
- e50e905a - feat(backend): add new preference for fitness analytics
- 76cedd5e - fix(frontend): pass correct schema to parser
- 84429bf4 - feat(frontend): add basic fitness analytics page
- 6bd9e696 - feat(backend): cache fitness analytics for 2 hours
- d41fa647 - feat(backend): allow saving value in application cache
- 7885b14d - feat(migrations): add new column to store value
- e3c05ba3 - feat(backend): compute additional fields
- bb4b0634 - feat(backend): complete implementation of fitness statistics
- 45966688 - feat(services/statistics): calculate hour counts
- d4a7e753 - build(services/statistics): add new deps to crate
- dd715e7e - feat(backend): add query fragment for fitness analytics
- cac10a48 - feat(backend): add new query for getting fitness analytics
- 89b93b18 - build(backend): add new required deps
- 6160b204 - build(models/dependent): add new deps
- dac8fd76 - feat(models): add new struct to return response for analytics
- b0c1d90b - chore(utils): add debug logs for user activity calculation
- 9633ee7a - chore(frontend): adapt to new gql schema
- c45defbf - chore(backend): add comment to input struct
- 01587f6e - chore(backend): common input struct for date range
- d9b8837e - chore: make start date less than end date
- 7293becc - chore: make start time less than end time
- b2d498a6 - Merge branch 'main' into issue-1113
- e49585af - fix(frontend): icon changes
- 7e4599ee - Merge branch 'main' into issue-1113
- c1c9ffe2 - Change favicons (#1115)
- 91f9577a - chore(backend): change data type of muscles stored in db
- 24f3a739 - feat(backend): store data in new dua columns
- 614729e7 - chore(migrations): remove newlines
- 61d7c40c - feat(migrations): create new columns for daily user activities
- 3812629c - fix(frontend): minor react errors
- 2aa73682 - Allow collapsing sidebar in desktop mode (#1112)
- d5f1e11c - docs: add information about telemetry
- 6722ceb9 - Minor updates (#1109)
- 1c10b349 - chore(frontend): do not display weight in workout list if 0
- 48ec0dbb - New fitness graphs (#1108)
- e6a0985d - fix(frontend): handle some workout logging edge cases
- fc6cbb18 - New metrics for workouts and templates (#1104)
- f1057605 - fix(frontend): set correct workout key
- 2cb1443c - General bug fixes (#1102)
- 0dc7a00d - chore: general housekeeping
- d2557e47 - perf(backend): remove useless clones
- 81e97cf6 - fix(frontend): allow recovering from malformed auth cookies
- 4e11d893 - New calendar page (#1096)
- e75f765d - fix(frontend): use correct schema for creating integrations
- a1125998 - Display inline progress for media progress (#1093)
- 55203139 - Improved documentation and website (#1082)
- c399b0da - feat(backend): return external identifiers for metadata_details query (#1092)
- eb644f73 - Deduplicate media items for upcoming section (#1089)
- d62dc9f3 - Send additional details to *arr integrations (#1081)
- 22b89ebc - New preference for workout logging (#1085)
- 177b7971 - Bidirectional Jellyfin sync (#1075)
- e7ab8ebf - chore(frontend): prefill type of while creating custom media
- 664b3c95 - fix(frontend): remove incorrect input for supersets
- e7bbfb13 - chore(frontend): changes to exrrcise display
- b88e8794 - fix(*): general fixes
- cc66f81c - Better logic for monitored entities (#1074)
- a6163bff - Minor fixes (#1073)
- 4028eb03 - fix(migrations): add guard statement to prevent null values in workout summaries
- 23fd852f - Better workout UI (#1064)
- 7d8e9778 - fix(services/integration): switched push integrations
- 1aaf92ab - fix(frontend): clone request before using
- 619a8155 - fix(backend): respect cache when making progress updates from integrations
- d7a4922d - fix(frontend): get export button working
- c909f1bc - Upcoming projects for people (#1061)
- 46371a91 - chore(services/integration): add logging and some general improvements
- 8f7b5b8c - Webhook to import generic json (#1017)
- efe47368 - feat: enable LTO (#1060)
- 7990a8ab - fix(frontend): hook to get watch providers
- 447da082 - Granular watch providers (#1057)
- 8f2c2f40 - Bulk add items to collection (#1055)
- ecd4c9e8 - Move seen cache to database (#1053)
- e258b3dd - Allow associating seen with review (#1051)
- 1802268e - Allow editing workouts (#1050)
- 5aef90b0 - Trigger notification when timer is completed (#1048)
- dba3403b - Allow changing grid size (#1047)
- 228d5a28 - Open source pro (#1040)
- 0aaacc0b - fix(importer): incorrect trakt entries being imported
- 1dac299d - fix(services/user): correct admin check for deleting user
- 79dacd2b - perf(backend): only fetch yank integrations
- b59a2ea5 - fix(backend): unwrap provider specifics only when needed
- 16a7f55d - Integrations refactor (#1034)
- 621ae876 - feat(frontend): revalidate page once mutation has been deployed
- ff30ef8c - Added IOS18 Detection (#1030)
- a2fc9eed - Remove granular count (#1037)
- 72c80089 - fix(frontend): disable query once no longer partial
- 641dff03 - fix(frontend): do not request for useless information while getting partial details
- fdeb3b23 - Put entites in partial state (#1026)
- 7764990b - fix(services/fitness): deploy job to re-evaluate workout when time changes (#1024)
- 54d146db - fix(backend): three point smiley conversion
- a0c6660c - feat(frontend): display 3 point review in other places
- 357ae1be - 3 point smiley rating (#1022)
- fba67647 - Export workout collections (#1013)
- cd44a985 - Redirect to page 1 if on invalid page (#1010)
- 5eb6a156 - fix(frontend): increase timeout for focusing on exercise
- 938fc14f - chore: minor code changes
- 3bb2da6e - Merge branch 'main' of https://github.com/IgnisDa/ryot
- e56fef7a - View for storing monitored entities (#1003)
- ddb4c4d8 - ci: remove conditional elses
- 46b611aa - Moved Manga chapters over to Decimals for fractional releases (#1002)
- 5fcf0c78 - fix(frontend): move button to menu item
- bcc02622 - fix(providers): type error for anilist
- ceaeca52 - Backporting the ratelimit from ryot-pro (#1006)
- 3b6b9226 - Remove
user_to_collectiontable (#1000) - dbacb336 - fix(frontend): do not split by comma-space
- 66c0c2ef - feat(frontend): add menu item to reorder exercise
- a5297aa3 - feat(services): do not deploy jobs to calculate summary
- a5b47d20 - build(frontend): install remix development tools
- eb5a258d - fix(frontend): revalidate routes when starting/stopping workouts
- 6eee495c - build(ts): add resolution for types react
- ee26f8e1 - Allow removing media item from list pages (#998)
- 94fe7601 - ci: use variable in reverse proxy configuration
- 6d6817ce - ci: extract reverse proxy urls to variables
- 50b8e9ce - fix(backend): remove connection limits from database
- eead3969 - build(frontend): move filesize to deps
- 92fcdfd1 - Exercise charts (#975)
- 6c26c9fe - fix: unnecessary slash (#987)
- e78fa105 - Merge branch 'main' of https://github.com/IgnisDa/ryot
- 09239b95 - perf(misc): do not request additional details for review title
- 1d537a30 - fix(frontend): delete source before processing using zod
- 3abd10a1 - feat: allow sorting by provider rating
- 992af8fa - fix(services): allow sorting by user rating
- d4a31e09 - Resolved bug with urls introduced in e31071f (#979)
- 6850055b - chore: info about major upgrade
- eda1a278 - Resolved bug where we assumed timezone (#977)
- c218f2cc - chore(migrations): change order in which migrations are run
- 7589584a - chore(backend,frontend): backend improvements
- 7ccfcad1 - fix(fitness): account for non-existent workouts in PRs
- bfd4b53c - More counts for displaying summary (#974)
- edbd26f1 - fix(backend): minor errors
- 54ec2220 - fix(providers): remove trailing slashes from base urls
- b369586f - fix(statistics): delete old activity record before inserting new one
- ff3778ab - feat(backend): remove the google books API key
- 82e86cb1 - fix(providers): remove trailing slash from base urls
- 02257e10 - feat(backend): add
last_login_oncolumn to users - 898a9738 - feat(backend,frontend): store entire history of exercise
- 714661ed - chore(frontend,docs): minor changes
- e31071f5 - Statistics and graphs (#971)
- 5ef81a7c - ci: hardcode docker username
- 56943259 - ci: add secret for docker username
- f537c107 - Komga implementation (#943)
- 62d2b437 - V7 upgrade (#969)
- 1b8b9821 - Introduced media status for anilist (#972)
- d884135e - chore(backend): use transaction for creating collections
- 61416c4d - fix(frontend): select correct first index
- 2317c9be - chore(migrations): final v6 migration
- ea0236d7 - feat(frontend): make redirect cookies long lived
- 2ec1686f - Backend-refactor (#960)
- 171f7d1c - Multiple collection filters (#963)
- 2caea290 - Anime airing schedule (#961)
- d5cc4076 - ci: install curl in container
- 79307879 - ci: update action for changelog generation
- 240a4372 - ci: also publish latest tag for releases
- d218745e - ci: remove enable attribute
- 161e0e7e - ci: add cross-rs build (#939)
- b1c1069e - Addressed bug with Finished Condition during background tasks (#957)
- 15a3fe9c - Event emitter (#955)
- 01af4185 - PWA Icon fix (#948)
- ce75b95d - Fixed bug in review score rendering (#949)
- 2d4da191 - Collection Inversion Filter (#945)
- a451df48 - Fix missing "ps" terminal command (#944)
- ba13ecb7 - Showcase new features (#946)
- 9d091000 - feat(backend): use api key for google books
- b0ed55b2 - Workout enhancements (#940)
- 2b40a688 - docs: update outdated information
- 5bdaa2e7 - ci: fix arm64 build