summaryrefslogtreecommitdiff
path: root/spike/settings/resources
diff options
context:
space:
mode:
authorcirakg <cirakg@cirakg.xyz>2026-10-18 23:44:18 +0200
committercirakg <cirakg@cirakg.xyz>2026-10-18 23:44:18 +0200
commitac60fb060414261935ac5e158b26b34e211e1e06 (patch)
treea8f97e1c4b0bf8f1b433d3e8f33a5d30994e7c58 /spike/settings/resources
parent93aa7e3aa291f3328cf34a5a2f86172f41d0affd (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.xml7
-rw-r--r--spike/settings/resources/drawables/launcher_icon.pngbin0 -> 3506 bytes
-rw-r--r--spike/settings/resources/settings/properties.xml23
-rw-r--r--spike/settings/resources/settings/settings.xml58
-rw-r--r--spike/settings/resources/strings/strings.xml31
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
new file mode 100644
index 0000000..a4b5902
--- /dev/null
+++ b/spike/settings/resources/drawables/launcher_icon.png
Binary files differ
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>