diff options
| author | cirakg <cirakg@cirakg.xyz> | 2026-10-18 23:44:18 +0200 |
|---|---|---|
| committer | cirakg <cirakg@cirakg.xyz> | 2026-10-18 23:44:18 +0200 |
| commit | ac60fb060414261935ac5e158b26b34e211e1e06 (patch) | |
| tree | a8f97e1c4b0bf8f1b433d3e8f33a5d30994e7c58 /spike/settings/resources | |
| parent | 93aa7e3aa291f3328cf34a5a2f86172f41d0affd (diff) | |
feat(spike): add the M1 settings spike app and make targets
A separate throwaway app (own app ID, no permissions) that shows what the
Garmin Connect app delivers per settings field and writes values back, to
measure the undocumented settings limits on the real phone and watch.
Includes length-marked test strings, `make spike` / `make spike-sim`,
`make vectors`, and step-by-step instructions in docs/SETTINGS_SPIKE.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'spike/settings/resources')
| -rw-r--r-- | spike/settings/resources/drawables/drawables.xml | 7 | ||||
| -rw-r--r-- | spike/settings/resources/drawables/launcher_icon.png | bin | 0 -> 3506 bytes | |||
| -rw-r--r-- | spike/settings/resources/settings/properties.xml | 23 | ||||
| -rw-r--r-- | spike/settings/resources/settings/settings.xml | 58 | ||||
| -rw-r--r-- | spike/settings/resources/strings/strings.xml | 31 |
5 files changed, 119 insertions, 0 deletions
diff --git a/spike/settings/resources/drawables/drawables.xml b/spike/settings/resources/drawables/drawables.xml new file mode 100644 index 0000000..4425922 --- /dev/null +++ b/spike/settings/resources/drawables/drawables.xml @@ -0,0 +1,7 @@ +<!-- + Author: cirakg & claude ai + Summary: Default launcher icon of the spike (per-size icons come from resources-icons/ via icons.jungle). +--> +<drawables> + <bitmap id="LauncherIcon" filename="launcher_icon.png" /> +</drawables> diff --git a/spike/settings/resources/drawables/launcher_icon.png b/spike/settings/resources/drawables/launcher_icon.png Binary files differnew file mode 100644 index 0000000..a4b5902 --- /dev/null +++ b/spike/settings/resources/drawables/launcher_icon.png diff --git a/spike/settings/resources/settings/properties.xml b/spike/settings/resources/settings/properties.xml new file mode 100644 index 0000000..ff444cf --- /dev/null +++ b/spike/settings/resources/settings/properties.xml @@ -0,0 +1,23 @@ +<!-- + Author: cirakg & claude ai + Summary: Properties behind the spike's settings: eight text fields plus one of each other field type. +--> +<properties> + <!-- Length tests: no maxLength, so the phone app's own limit shows. --> + <property id="text1" type="string"></property> + <property id="text2" type="string"></property> + <property id="text3" type="string"></property> + <property id="text4" type="string"></property> + <property id="text5" type="string"></property> + <property id="text6" type="string"></property> + <property id="text7" type="string"></property> + <property id="text8" type="string"></property> + <!-- Masked input; the watch clears it after reading (write-back test). --> + <property id="secretField" type="string"></property> + <!-- Read-only on the phone; the watch writes a status line here. --> + <property id="statusField" type="string"></property> + <property id="switchField" type="boolean">false</property> + <property id="listField" type="number">0</property> + <property id="numberField" type="number">30</property> + <property id="longField" type="long">0</property> +</properties> diff --git a/spike/settings/resources/settings/settings.xml b/spike/settings/resources/settings/settings.xml new file mode 100644 index 0000000..967e27c --- /dev/null +++ b/spike/settings/resources/settings/settings.xml @@ -0,0 +1,58 @@ +<!-- + Author: cirakg & claude ai + Summary: Settings screen of the spike as shown in Garmin Connect: length-test fields and one of each field type. +--> +<settings> + <setting propertyKey="@Properties.statusField" title="@Strings.Status"> + <settingConfig type="alphaNumeric" readonly="true" /> + </setting> + + <group id="lengthTests" title="@Strings.GroupLength" description="@Strings.GroupLengthHelp"> + <setting propertyKey="@Properties.text1" title="@Strings.Text1" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + <setting propertyKey="@Properties.text2" title="@Strings.Text2" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + <setting propertyKey="@Properties.text3" title="@Strings.Text3" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + <setting propertyKey="@Properties.text4" title="@Strings.Text4" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + <setting propertyKey="@Properties.text5" title="@Strings.Text5" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + <setting propertyKey="@Properties.text6" title="@Strings.Text6" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + <setting propertyKey="@Properties.text7" title="@Strings.Text7" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + <setting propertyKey="@Properties.text8" title="@Strings.Text8" prompt="@Strings.TextPrompt"> + <settingConfig type="alphaNumeric" /> + </setting> + </group> + + <group id="otherTypes" title="@Strings.GroupOther" description="@Strings.GroupOtherHelp"> + <setting propertyKey="@Properties.secretField" title="@Strings.Secret" prompt="@Strings.SecretPrompt"> + <settingConfig type="password" /> + </setting> + <setting propertyKey="@Properties.switchField" title="@Strings.Switch"> + <settingConfig type="boolean" /> + </setting> + <setting propertyKey="@Properties.listField" title="@Strings.ListTitle"> + <settingConfig type="list"> + <listEntry value="0">@Strings.ListA</listEntry> + <listEntry value="1">@Strings.ListB</listEntry> + <listEntry value="2">@Strings.ListC</listEntry> + </settingConfig> + </setting> + <setting propertyKey="@Properties.numberField" title="@Strings.NumberTitle"> + <settingConfig type="numeric" min="1" max="300" errorMessage="@Strings.NumberError" /> + </setting> + <setting propertyKey="@Properties.longField" title="@Strings.LongTitle"> + <settingConfig type="numeric" min="0" /> + </setting> + </group> +</settings> diff --git a/spike/settings/resources/strings/strings.xml b/spike/settings/resources/strings/strings.xml new file mode 100644 index 0000000..302ffb0 --- /dev/null +++ b/spike/settings/resources/strings/strings.xml @@ -0,0 +1,31 @@ +<!-- + Author: cirakg & claude ai + Summary: Strings of the settings spike (app name and settings titles). +--> +<strings> + <string id="AppName">Settings Spike</string> + <string id="Status">Status written by the watch</string> + <string id="GroupLength">Length tests</string> + <string id="GroupLengthHelp">Paste one test string per field, then save.</string> + <string id="Text1">Text 1</string> + <string id="Text2">Text 2</string> + <string id="Text3">Text 3</string> + <string id="Text4">Text 4</string> + <string id="Text5">Text 5</string> + <string id="Text6">Text 6</string> + <string id="Text7">Text 7</string> + <string id="Text8">Text 8</string> + <string id="TextPrompt">Paste a test string</string> + <string id="GroupOther">Other field types</string> + <string id="GroupOtherHelp">Password, switch, list and numbers.</string> + <string id="Secret">Password field</string> + <string id="SecretPrompt">Type anything (fake)</string> + <string id="Switch">Switch</string> + <string id="ListTitle">List</string> + <string id="ListA">Option A</string> + <string id="ListB">Option B</string> + <string id="ListC">Option C</string> + <string id="NumberTitle">Number (1-300)</string> + <string id="NumberError">Enter 1 to 300</string> + <string id="LongTitle">Long number</string> +</strings> |
