v7.12.0
What's Changed
- 0118b8f5 - Add music tracking using YoutubeMusic (#1133)
- 5230642d - refactor: cache core details in the database
- ead24c6c - Start caching search responses (#1132)
- 127c40ff - ci: run
zizmor
on 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
name
key 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
- 4af5829e - fix(providers): do not unwrap directly
- 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
- 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
- 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
- 7e4599ee - Merge branch 'main' into issue-1113
- 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