Some of these I may have mentioned elsewhere in a bug report or other post.
Just my opinion, but I think there's a lot of UX and technical issues with settings right now.
Right now, the GC app settings are just a long list of key/value pairs. In some cases, apps use very long labels with newlines as a workaround for help text, since actual help text is not available. This looks terrible in iOS, since newlines in labels are not rendered on that platform. It looks fine on Garmin Express, but how many people use that? I tried all kinds of workarounds like using unicode box drawing chars and non-breaking spaces to separate things, and it still looks bad, especially because you can't tell what it will look on a phone. (And every phone will be a bit different.)
I am also aware that many devs are telling users not to use GCM iOS to change settings, and many users have come to that conclusion on their own. So they are using Garmin Express. But who wants to connect their watch by USB to their PC, wait for the watch to go into USB mode and open Garmin Express? I don't, even if the settings are nicer. I want to use my phone because it's more convenient.
The amazing thing for Garmin, devs and users is that much of this could be implemented without changing a single line of code on the devices or apps. All users and devs could get the benefit of nicer settings, which would result in happier users and devs, IMO.
Thanks for reading!
Basic
- Please stop auto-kicking the user out of settings when GC iOS auto-syncs.
This is extremely frustrating, especially after you just changed 20 settings, and now they've been silently discarded. - Allow settings strings to be placed in separate area which is not included by app at run time.
I would prefer not to waste 1000 bytes or more just on the Rez_Strings index plus whatever else code/data gets added.
Same goes for any other "store/GC"-only resource, like FitContributions strings - Allow newlines to be rendered in settings labels, so we can have explanatory text and/or separate options.
- Even better, allow generic lines of text to be added
- Wrap long lines, instead of just horizontally scrolling the settings page on iOS. That way we can have short paragraphs of explanatory text.
- Always enforce <settings> constraints in the GC app. e.g. Numeric vs. non-numeric, and ranges.
This avoids the previously reported problem of receiving a null value when the user types in a non-numeric value for a numeric setting, and having no good way to deal with it without duplicating default value in app code.
IMO, the best way to enforce settings constraints is to use an "old-school" Save/Cancel form which cannot be exited until the user either presses Cancel, or has all valid values and presses Save. iOS does this for Account Settings. - On the same note, do not allow the settings page to be exited on pressing Back or accidental right-swipe.
Also very frustrating when you exit settings by accident and lose your changes, even if it was "your fault"
Nice to have
- Allow devs the option of receiving settings in an array, to save precious memory
Even better, allow the option of receiving settings in a flat string with some kind of fixed delimiter (I don't expect this one to happen tho) - Allow splitting config into multiple pages.
Similar to how settings are grouped in iOS. - Allow show/hide dependencies between select/checkbox settings and other groups of settings
I would like to be able to hide settings that are not relevant for a given situation, especially since right now it's just one long form. - Allowing settings/properties dictionary to be unloaded at run-time
Maybe the app doesn't need those properties after init time.... Same goes for the resource table.