Git Product home page Git Product logo

flexify's Introduction

Flexify

Get fit with Flexify. Easily track your gym progression with offline records and seamless graphs.

GitHub Release Release downloads GitHub repo size

Features

  • ๐Ÿ’ช Track gym progress: Log your reps and weights with ease.

  • ๐Ÿ“ต Offline: Flexify doesn't use the internet at all.

  • ๐Ÿ“ˆ Graphs: Visualize your progress over time with intuitive graphs.

  • ๐Ÿƒ Cardio tracking: Record your progress with cardio types.

  • โš™๏ธ Highly customizable: Toggle features on/off, swap between light/dark theme and much more.

  • โฑ๏ธ Automatic rest timers: Stay focused with alarms after resting.

Get it on Google PlayGet it on F-Droid

Download on the App Store

Screenshots

Migration from Massive

Gym sets and plans can be imported into Flexify.

Donations

If you would like to support this project:

  • Bitcoin bc1qzlte8featxzf7xvtp3rjv7qqtwkgpup8hu85gp
  • Monero (XMR) 85tmLfWKbpd8nxQnUY878DDuFjmfcoCFXPWR7XYKLHBSbDZV8wxgoKYUtHtq1kHWJg4m14sdBXhYuUSbxEDA29d19XuREL5
  • GitHub sponsor

Getting Started

To get started with Flexify, follow these steps:

  1. Clone the Repository: Clone the Flexify repository to your local machine using Git:

    git clone --recursive https://github.com/brandonp2412/Flexify flexify
  2. Install Dependencies: Navigate to the project directory and install the necessary dependencies:

    cd flexify
    flutter pub get
  3. Run the App: Launch the Flexify app on your preferred device or emulator:

    flutter run

Migrations

If you edit any of the models in the lib/database directory you probably need to create migrations. E.g. assume the version starts at 1.

  1. Bump the schemaVersion lib/database/database.dart
  int get schemaVersion => 2;
  1. Run database migrations
./scripts/migrate.sh
  1. Add the migration step lib/database/database.dart
from1To2: (Migrator m, Schema2 schema) async {
  await m.addColumn(schema.myTable, schema.myTable.myColumn);
},

Contributing

Contributions to Flexify are welcomed and encouraged! Whether you want to report a bug, suggest a feature, or submit a pull request, please feel free to contribute. For major changes, please open an issue first to discuss the proposed changes.

License

Flexify is licensed under the MIT License.

flexify's People

Contributors

brandonp2412 avatar dqnne avatar josephnglynn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

flexify's Issues

Automated screenshots

We should have a way to generate screenshots and place them in the metadata folder whenever a new release is made.

Create custom exercises, and add plans not tied to a day with a custom name

Hi!

I've been using Massive for a while and tried to move to Flexify, but in its current state, it is practically useless for me. It looks great and works great, but it is missing some important features from Massive.

My two main issues are the following:

  • The list of exercises is static, and out of it, only two are part of my plans. I cannot document the other exercises unless I do some mental gymnastics and maintain a mapping to entries from the static list outside of the app, which is counter-productive.
  • Plans are tied to a day and cannot have a custom name. I train every other day, and I have 3 plans. They never fall on the same days. I also want to keep my older plans and be able to name them accordingly.

The static list of exercises is a show-stopper for me and probably a lot of other potential users. The issue with the plans I can live with (for now), but will be exacerbated if you have more than 7 plans that you rotate through (or just want to keep your plans for archiving purposes). Having 3 plans named "Monday" and having to check the exercises to see which "Monday" you need to document is more complicated than looking up plans by their custom name.

Is it planned to bring these two features into Flexify?

Thanks!

Play Store Rejecting App

This app keeps being rejected by the play store for the reason of "app unresponsive".
Every version that is rejected for being "unresponsive" is given a screenshot of the app, despite the app working fine on my own devices and emulators. The last rejection said that there was "no content" when tapping the graphs or plans tabs.

Truncating exercises inside history?

Loving the app(dropped you a small sponsor) recently started working out and wanted a simple option to track my workouts.

As is, its very good but wanted to improve the readability of the history page. Maybe combine all sets of the same exercise on the same day that expand with an arrow?

history can be a little hard to follow.

Screenshot_20240616-123822

Add exercise override setting for sets and rest length

Related to #27 I think.

At the moment all exercises inherit the global rest duration and set amount.

Most exercises I do follow the same duration and sets, but there's a few where I prefer to do more sets / have more rest between sets.

Would it be possible to add a toggleable override for specific exercises which differ from the global setting in those aspects?

History tab only shows sets from the current month

The history tab only shows sets from the current month by default, making it seem - especially at the beginning of a month - as if data is lost.
Searching for individual exercises via the search bar shows that those data points are still there, but I'd prefer to see all of the history in the history tab without having to search for single exercises

Workout History tracking

This issue may contribute to full completion of #23.

Feature request

Currently

Flexify doesn't have a free-form input for sets so this style of working out is probably not best for it.

Yet the readme says:

Track Gym Progress: Flexify allows you to effortlessly track your gym progress. Log your workouts, sets, reps, and weights with ease

Imo Flexify would benefit in having the History feature that Massive has in order to cover the fine grained logging of sets and reps with weight activities. It would also enrich the graphs with precious metrics.

Desired

Workouts

As a user I can

  • Have plans acting as workouts templates
  • Tracking of individual workouts, can add the entity of a workout off a template represented by sets, number of reps and weight for each.
  • When Adding a log entry to track a set, it auto complete the form with set title, and number of reps and weight from the latest logged entry, or from a selected Plan set
  • Can edit reps and weight in that form.

Graphs

I don't care much what time my workout took place in the graphs, what matter most to me is metrics evolution over weeks, months, years.

As a user I can visualize

  • How many sets, reps with how much weight I performed over time for each exercise/plan
  • how long workouts last, frequency of workouts, over time.

Or basically to do what Massive was capable of doing very well via its history feature.

Add ability to see all reps of last workout

I've been missing the ability to see how many reps I did in all sets of the previous workout.
Sometimes I will do 8-8-8-8-9 and when I get back to the exercise I don't remember and I'll only know I did 9 in the last set.

By having full visibility I'll know to target 8-8-8-9-9 next time.

Do you think this is something you could incorporate?

Some migrations fail

Issue #46 pointed out a general issue which is sometimes migrations try to add the same columns twice.

My "solution" was to just add try/catch ignoring for the addColumn calls, but really we should figure out why columns end up being added twice in the first place. In Massive I think I just did the same with everything being a try/catch and never ended up with any issues doing that, but probably not best practice.

Small jmprovment

Can you make this move like this it would be nice improvement Screenshot_2024-06-27-03-11-30-59_14db63cb48ce214e28b10f236337bbc9.jpg

lv_0_20240627031043.mp4

Problem with history

So when I'm in the middle of working out iuse the plans page to save my reps and weight for any exercises so for example after ido one set so the exercise is shown in the history page when I try to add my weight and reps for the second set on that page it doesn't count it up like I didn't add it

How to do all the workouts ?

First of all: Great, an app that already has many workouts included.

But i don't know how to do all the workouts.

Maybe there will be an explanation in later releases, who knows.

Unable to save set data

Hi!

After all the issues with updating from v.1.0.44 to the latest version, set data does not save when tapping the save button.

The set counter does not increment, and no record gets generated for the graphs. I tried with the built-in plans and the one I imported and both have the same issue. There's no error message displayed on screen.

I had to revert back to v.1.0.44 to be able to save anything. Uninstall/clean cache/reinstall does not help.

Thanks!

Google play store is very dumb

Once again Googles bot has decided that our app (Free and Open Source) is insecure. Ironic for non-free spyware like the Play Store to say, but here we are.

Basically play store updates will be much behind the GitHub and f-droid releases for a while probably.

They just keep crying about how we legitimately need to use the foreground special use permissions. I hate them so much it's unreal.

I didn't figure it out how to use flexify

I have been using massive for long time it easy to use and easy to insert your sets and exercices and weights but when I move to flexify I can't figure it out how to use it I love the design it look much much better I hope ican get some help ibeen exercising for 2 weeks since I install this app and each
time trying to figure it out but I can't so please help

Set data does not save when rest timers are enabled

Hey,

I seem to be having the opposite problem to Issue #17.

When rest timers are enabled, the rest timer activates, however the set data does not seem to save. Disabling the rest timer allows the sets to save as expected.

Cheers

Massive's db or sets import

As Massive is being phased out, it would be awesome if we could expect to be able to export its db and import it into Flexify.

It's also probably easier to get on with it to support the import of more and more fields as dev goes along than adding support for all imports when the new app becomes full fledged.

If db migration to the new app is too much of a headache, being able to import sets from legacy (Massive) CSV exports would be enough.

Thanks so much for these apps, and for open sourcing it. The philosophy is great, graphs look super promising, timer is awesome and done right, UI overall is sleek and minimalist which is ideal for a workout log app really.

Graph line goes above the graph and over other controls when "Curve line graph" is enabled

Hi!

As the title says, the graph curves shoot outside of the graph and into the top section of the UI when the Curve line graph setting is enabled.

I'm not sure if the library used to render the graph supports it, but the lines should plateau a bit more aggressively instead of shooting up and then going back down.

Screenshot from v1.0.59 of how it looks like, along with a proposed line of how it could be (in red-ish):
Screenshot_20240422_072816.png

My graph drawing skills are not on point, but the line should be contained within the graph itself. Making the graph slightly bigger can prevent the line from over-shooting the graph boundary, however, as it is, it may not represent the actual progress based on the entered data (in this case, I never used anything other than a 30lbs barbell, and the graph going higher than that doesn't make much sense).

One thing I didn't test is how it looks with multiple data points (I only have two...). With higher values (Volume graph, for example), it does the same, but the line doesn't go that high outside the graph borders.

Thanks!

Graphs to properly represent history logs

steps to reproduce

Track some history entries, in my case I've tracked 3 different named entries. Single day work out. And one named entry, the day before.

expected graph

  • I would expect the dot to be higher on the axis. The issue might be due to the fact there is no range to establish where to put that dot with just a few entries, I don't know. Somewhere above the middle would make sense to me. Anywhere but at y zero.

  • the one named entry also got the issue. I would expect a line/curve to form since I tracked entries for that one two days in a row.

actual

Screenshot_20240508_233411
Screenshot_20240508_233432

Note those entries were imported via CSV, not typed in via Flexify. But they look like totally correct history logs in the history tab with weight , about of reps, date.

Production build error

After adding share functionality the app started giving me errors on build:

Launching lib/main.dart on Pixel 5 in debug mode... 
Running Gradle task 'assembleDebug'... 
FAILURE: Build failed with an exception. 
* What went wrong: 
Execution failed for task ':app:checkDebugDuplicateClasses'. 
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
   > Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.internal.jdk7.JDK7PlatformImplementations$ReflectSdkVersion found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.internal.jdk8.JDK8PlatformImplementations$ReflectSdkVersion found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.io.path.ExperimentalPathApi found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.io.path.PathRelativizer found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.io.path.PathsKt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.io.path.PathsKt__PathReadWriteKt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.io.path.PathsKt__PathUtilsKt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.jdk7.AutoCloseableKt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk7-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10) 
     Duplicate class kotlin.jvm.jdk8.JvmRepeatableKt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.jvm.optionals.OptionalsKt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.random.jdk8.PlatformThreadLocalRandom found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.streams.jdk8.StreamsKt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$1 found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$2 found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$3 found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.streams.jdk8.StreamsKt$asSequence$$inlined$Sequence$4 found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.text.jdk8.RegexExtensionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Duplicate class kotlin.time.jdk8.DurationConversionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.22 (org.jetbrains.kotlin:kotlin-stdlib:1.8.22) and jetified-kotlin-stdlib-jdk8-1.7.10 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10) 
     Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>. 

To which I found a fix on a stackoverflow page which told me to add:

    implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))

to android/app/build.gradle. While this runs fine, now we are getting an "error" below:

e: /home/brandon/.gradle/caches/transforms-3/5a90bf5553fb00e500acce2bce40edfd/transformed/jetified-core-ktx-1.12.0/jars/classes.jar!/META-INF/core-ktx_release.kotlin_module: Module was
compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
e: /home/brandon/.gradle/caches/transforms-3/e2bfd6e341c67db9edd9652286810588/transformed/core-1.12.0/jars/classes.jar!/META-INF/core_release.kotlin_module: Module was compiled with an
incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
e: /home/brandon/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.8.22/636bf8b320e7627482771bbac9ed7246773c02bd/kotlin-stdlib-1.8.22.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
e: /home/brandon/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.8.22/636bf8b320e7627482771bbac9ed7246773c02bd/kotlin-stdlib-1.8.22.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
e: /home/brandon/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.8.22/636bf8b320e7627482771bbac9ed7246773c02bd/kotlin-stdlib-1.8.22.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
e: /home/brandon/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.8.22/1a8e3601703ae14bb58757ea6b2d8e8e5935a586/kotlin-stdlib-common-1.8.22.jar!/META-INF/kotlin-stdlib-common.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.8.0, expected version is 1.6.0.
Running Gradle task 'assembleRelease'...                           23.8s

Despite saying it's an error, the build completes fine and the app works, it just bugs me to see this in my terminal.

Plans with only a title and no days selected do not export the title in the generated CSV file

Hi again!

I tried importing into Flexify the data I exported earlier today from v.1.0.44. It does import correctly (both plans and graphs), however, the plans only export the the id, days, and exercises. If a plan was created with a title only, it will get imported without any days or title, and attempting to open it to enter set data will result in a grey screen with nothing rendered.

Plans can still be edited to select days or enter a title, which fixes the issue. The CSV file can be also manually modified to add a value in the days column, but that's too much work and editing the plan after it is imported but before entering set data is a lot easier.

The file was originally exported from v1.0.44, but the same behaviour is present in v1.0.51.

Exporting and importing plans should also serialize/deserialize the title if one is set.

Source file:
Screenshot_20240419_230547_Solid Explorer

Once imported:
Screenshot_20240419_230241

When trying to enter new set data:
Screenshot_20240419_230255

What it should look like:
Screenshot_20240419_231722

Unrelated, but the System color theme setting doesn't seem to persist between application restarts...

Sorry to bug you again today...

Thanks!

Feature request: repetition graphing

I am a fan of your app, however I practice calisthenics, for which the progression and the reps of that progression are the most important, however the app doesn't seem to have the ability to graph max repetitions. It would be great if this could be added!

Wrong data types - minor issue

Problem

As of now, reps can be decimal like 6.7 reps
Reps, weight and body weight can be negative
And these unreal values get interpreted in the graph

Proposed solution

  • change reps datatype to int
  • ensure the minimum value for inputs is 0

Amazing software bro, I like it

Add ability to change number of sets

Hey, started using the app recently and really liked how simple and clean it is.

One thing that I felt missing is the ability to choose how many sets to do either per exercise or in general for the whole workout.

I like to do 3 sets and the app seems to be intended to be used only with 5 sets in mind.

I understand having it changeable for each exercise in a workout might be a lot of work but I would be happy with an app wide setting.

Graphs blank screen after editing

Right now if you edit a graph from the graphs page after successfully saving it ends up on a blank page.

Steps to Reproduce

  1. Navigate to graphs
  2. Long press a graph
  3. Tap the ... menu
  4. Tap edit
  5. Tap save
  6. Observe blank page

Graph days bug

Some graphs display records from separate days as being on the same day.

This is likely due to the hour difference between two dates. If you guarantee a ~24hr difference between two entries then they show up as separate. However if they are close together (sometimes) they end up being a single point on the graph.

You can verify this by forcefully entering gym sets as being at the beginning or end of the day.

Hopefully we can find a way to query properly on the ViewGraphPage, such that it always gets the correct date.
If we can't do this another idea could be to just not record the time of day (might be worse than leaving the current bug).

Performance issues with flutter-side timers

After we changed the logic for flutter-side rest timers, while they ran the app started lagging. It was especially noticeable when swiping between tabs.

Right now I've got it relegated to the notification area, but the Google Play store is refusing my app submissions because it's "misleading" to say the app currently has rest timers.

@josephnglynn

I tried reading the performance mode but honestly it just pointed at the StartPlanPage widget and said it was slow, which was not much help. Something about this must be re-rendering a lot of pages at once or something.

02d2fd5

Bringing back some old futures

  1. The ability to show which set you're in because I often forget
    IMG_20240524_111538.jpg

  2. Set custom rest time when adding set because I like to rest between each set 1min not 3

  3. It not old but new impovment, not forcing to make the app always run in the background when setting a timer because I have like low battery capacity (3000meh) and the only time I want the app to work is for one hour is when I working out and not 24/7 I recommend adding a toggle in settings to set it run in the backround

ability to see history from single exercise

As far as I can see v1.0.69 contained this button on the graph page that allowed to see the history for that single exercise
https://github.com/brandonp2412/Flexify/blob/b435e86d28719569f84268259af6417f7317d2da/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png

After v1.0.69 the button was removed, and looking at the history for a single exercise now would entail searching for the exercise via the search bar on the history page. Was this functionality removed intentionally?

[ Reappearance of #28 ]

Lag after adding grouping to graphs

I notice jank when swiping tabs after selecting different metrics/groups on graphs. This happened from 1.0.60 onwards and the commit adding group by is 4850e23.

Things that could be causing the performance problems:

  1. Unneccesary re-renders when widget state changes didUpdateWidget
  2. Calculations done in Dart that could (yuckily) be done in SQL (maybe drift has a nice way of doing this?)
  3. Using a stream watch instead of manually getting the data for line graphs (then we need to check everywhere that edits gym sets and listen to updates ourselves)

I have been struggling to use the flutter performance debugger. Not sure how to use it effectively.

Play store "reviewing" app again

The APKs released here and on f-droid will probably be more up-to-date than the Play store for a while.

This is because the play store randomly forced me to prove the app needs background permissions again and then stuck future releases in "review" mode.

Optimize next page fetching for gym history

Right now the SELECTs fire like 5x per scroll to bottom. We should find a way to debounce this or just properly check when we have gotten close to the bottom once. I think my initial attempt at this project fMassive had this feature? I can't find the source code any more.

Release 1.0.50 not installing or updating

Hi!

I downloaded the 1.0.50 release (the latest at the time of creating this ticket), and it errors out when installing or upgrading the installed version.

I downloaded the package multiple times and got the same error each time, and it complains about the package being invalid. I am using the app-arm64-v8a-release.apk file, but I didn't try the others (since I don't have devices for those). A reboot of the device and a cleaning of the cache did not fix the issue.

Sixo online APK analyzer can parse it just fine (https://sisik.eu/apk-tool), but my device doesn't agree with it... I'm running a Samsung S24 Ultra with Android 14 and the latest patch installed from Samsung.

That's the message I get:
SmartSelect_20240419_140006_Package installer.png

I couldn't find any logs anywhere (either app logs or system logs) where I could see what's the actual error.

Thanks!

Plans exported with Flexify version v1.0.54 cannot be imported back

Hi!

Discovered this issue when trying to investigate #17.

Plans and graphs were exported prior to uninstalling v1.0.54. When importing back to v1.0.54, the graphs imports fine, but the plans display a Failed to upload csv. message. Plans exported with a version earlier than v1.0.52 (without the title and sequence columns) import correctly.

It seems that the generated CSV file has no double-quotes around values in the title column, and the sequence column is empty but a value is expected when importing. Manually modifying the CSV file to add the missing double-quotes and removing the sequence column or adding numeric values to each records allows the plans to be imported back in the application.

Thanks!

Feature Request: Migration from Massive

Hey thanks for all the work you've done on Massive. I've been using it for a long time so I have quite a bit of data in there (especially all the custom workouts). It would be great if I could somehow migrate over to Flexify.

Blank page after importing Database from Graphs

Steps to Reproduce

  1. Navigate to graphs
  2. Tap top right menu
  3. Tap settings
  4. Scroll down to "Import data"
  5. Import "Database"
  6. Pick relevant database download
  7. See blank screen

This isn't a major since swiping between any of the other tabs fixes it.

Relative strength calculation

Users should have a metric for relative body weight in the graphs section.

My first thoughts were to use the Brzycki formula and divide that estimated one rep max by your body weight.

We could also do something simpler like best weight / body weight.

Cardio duration

I did not initially realize that Flexify could track cardio. I took photos of all of my stop screens and I will enter them in.

Distance and incline seem good, but duration does not make sense to me. Is duration minutes? It looks like I can enter a decimal value, but I would expect to see HH:MM:SS format or some variation of that. To accurately log time, I would need to divide seconds by 60 to get a decimal if I understand this correctly that duration is minutes.

Error on History tab after update

Updated today. To Version 1.0.92

Opening the app now displays an error on the history tab. Forced closed the app and restart makes no difference.

Screenshot_20240528_140216

Cardio graphs missing units

The unit should impact the cardio graphs. We should have a selector for which to normalize the unit to, and it should mention it in the tooltips.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.