@focus8/settings-registry 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -62,6 +62,69 @@ export declare const TIME_BASED_ONLY_CATEGORIES: ReadonlySet<SettingsCategory>;
62
62
  * Categories not exclusive to either type are always included.
63
63
  */
64
64
  export declare function getCategoriesForCalendarType(calendarType: CalendarType): SettingsCategory[];
65
+ /**
66
+ * Settings group IDs matching the mobile app's settings menu structure.
67
+ * These provide user-friendly groupings that may pull settings from multiple
68
+ * raw registry categories.
69
+ */
70
+ export declare const SETTINGS_GROUP_IDS: readonly ["appearance", "calendarType", "calendarView", "activities", "dateWeather", "soundAlerts", "timer", "lockScreen", "touch", "chronological", "device", "language"];
71
+ export type SettingsGroupId = (typeof SETTINGS_GROUP_IDS)[number];
72
+ export type SettingsGroupDef = {
73
+ /** Unique group identifier */
74
+ id: SettingsGroupId;
75
+ /** i18n message key for the group label */
76
+ labelKey: string;
77
+ /** Lucide icon name */
78
+ icon: string;
79
+ /**
80
+ * Setting key matchers. A setting is included if its key:
81
+ * - equals a matcher exactly, OR
82
+ * - starts with a matcher that ends with '.' (prefix match)
83
+ */
84
+ keys: string[];
85
+ /** Only show for this calendar type (undefined = always) */
86
+ calendarType?: CalendarType;
87
+ };
88
+ /**
89
+ * Group definitions matching the mobile app's settings structure.
90
+ *
91
+ * ─ i18n keys use the format `Settings.GroupLabel.<Id>` and must exist
92
+ * in every consumer's i18n catalog.
93
+ */
94
+ export declare const SETTINGS_GROUPS: readonly SettingsGroupDef[];
95
+ /**
96
+ * Settings excluded from remote editing (web portal / profile management).
97
+ * These are device-local or internal-only settings.
98
+ */
99
+ export declare const EXCLUDED_DEVICE_SETTINGS: ReadonlySet<string>;
100
+ export type SettingLabelDef = {
101
+ /** i18n message key for the setting label */
102
+ labelKey: string;
103
+ /** Optional i18n message key for a description shown below the label */
104
+ descriptionKey?: string;
105
+ };
106
+ /**
107
+ * Maps each setting key to its i18n label and optional description key.
108
+ * These keys must exist in every consumer's i18n catalog.
109
+ *
110
+ * When a key is missing from this map, consumers should fall back to
111
+ * the auto-generated label from `SettingsRegistry.getSettingLabel()`.
112
+ */
113
+ export declare const SETTINGS_LABELS: Readonly<Record<string, SettingLabelDef>>;
114
+ /**
115
+ * Group parsed setting entries into user-facing groups matching the mobile
116
+ * app's settings menu structure.
117
+ *
118
+ * Takes a flat list of parsed settings (from `parseSettingsSnapshot`) and
119
+ * buckets them into the standard groups, filtering by calendar type and
120
+ * excluded keys.
121
+ */
122
+ export declare function groupSettingsForDevice(allSettings: ParsedSettingEntry[], calendarType: CalendarType): {
123
+ id: SettingsGroupId;
124
+ labelKey: string;
125
+ icon: string;
126
+ settings: ParsedSettingEntry[];
127
+ }[];
65
128
  export type SettingsDataType = 'string' | 'number' | 'boolean' | 'json';
66
129
  export type SettingDef<T = unknown> = {
67
130
  category: SettingsCategory;
@@ -235,6 +298,10 @@ export type ParsedSettingEntry = {
235
298
  name: string;
236
299
  /** Human-readable label (e.g. 'Inactivity Timeout Minutes') */
237
300
  label: string;
301
+ /** i18n message key for the label (from SETTINGS_LABELS) */
302
+ labelKey?: string;
303
+ /** i18n message key for a description (from SETTINGS_LABELS) */
304
+ descriptionKey?: string;
238
305
  /** The setting value */
239
306
  value: unknown;
240
307
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AACvD,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AACb,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAErC,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC7C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAChD,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC9C,eAAO,MAAM,cAAc,EAAE,YAAY,EAAqB,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,CAAC;AACf,MAAM,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACnD,MAAM,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;AACvE,MAAM,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAMF,eAAO,MAAM,mBAAmB,sMAetB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMpE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAe5D,CAAC;AAMF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAe3D,CAAC;AAMF,4DAA4D;AAC5D,eAAO,MAAM,6BAA6B,EAAE,WAAW,CAAC,gBAAgB,CACA,CAAC;AAEzE,yDAAyD;AACzD,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,gBAAgB,CAC3B,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,YAAY,GACzB,gBAAgB,EAAE,CAgBpB;AAMD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,4KAarB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8BAA8B;IAC9B,EAAE,EAAE,eAAe,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4DAA4D;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,gBAAgB,EA2G7C,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAKvD,CAAC;AAMH,MAAM,MAAM,eAAe,GAAG;IAC5B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAiOrE,CAAC;AAYF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,kBAAkB,EAAE,EACjC,YAAY,EAAE,YAAY,GACzB;IAAE,EAAE,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAA;CAAE,EAAE,CAoD3F;AAMD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAMxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,yEAAyE;IACzE,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAMF,MAAM,MAAM,cAAc,GAAG;IAC3B,mDAAmD;IACnD,UAAU,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,0BAA0B;IAC1B,aAAa,EAAE,UAAU,CAAC;CAC3B,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,uBAAuB,EAAE,cAIrC,CAAC;AAmBF,iBAAS,YAAY,CAAC,MAAM,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAob3C;AAMD,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,4CAA4C;AAC5C,MAAM,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC;AAE/C,mDAAmD;AACnD,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAE/E,qEAAqE;AACrE,MAAM,MAAM,WAAW,GAAG;KACvB,CAAC,IAAI,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC;CACnC,CAAC;AAMF,qBAAa,gBAAgB;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAElC,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;gBAEhB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAMhD,0CAA0C;IAC1C,UAAU,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAIzD,+CAA+C;IAC/C,cAAc,IAAI,WAAW;IAQ7B,0CAA0C;IAC1C,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB;IAI9C,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO;IAIlC,0CAA0C;IAC1C,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,UAAU,EAAE;IAIvD,2DAA2D;IAC3D,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM;IAclD,4DAA4D;IAC5D,WAAW,CAAC,CAAC,SAAS,UAAU,EAC9B,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,MAAM,GAAG,IAAI,GACjB,YAAY,CAAC,CAAC,CAAC;IAsBlB;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAetD;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CASrC;AAMD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,uBAAuB;IACvB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,YAAY,CAAC,EAAE,YAAY,EAC3B,QAAQ,GAAE,gBAAkC,GAC3C,mBAAmB,EAAE,CAwDvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAoBzD;AAMD,eAAO,MAAM,eAAe,kBAAyB,CAAC;AAQtD,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE1E"}
package/dist/index.js CHANGED
@@ -95,6 +95,420 @@ export function getCategoriesForCalendarType(calendarType) {
95
95
  return true;
96
96
  });
97
97
  }
98
+ // ---------------------------------------------------------------------------
99
+ // Settings groups — user-facing groups that reorganize raw categories
100
+ // ---------------------------------------------------------------------------
101
+ /**
102
+ * Settings group IDs matching the mobile app's settings menu structure.
103
+ * These provide user-friendly groupings that may pull settings from multiple
104
+ * raw registry categories.
105
+ */
106
+ export const SETTINGS_GROUP_IDS = [
107
+ 'appearance',
108
+ 'calendarType',
109
+ 'calendarView',
110
+ 'activities',
111
+ 'dateWeather',
112
+ 'soundAlerts',
113
+ 'timer',
114
+ 'lockScreen',
115
+ 'touch',
116
+ 'chronological',
117
+ 'device',
118
+ 'language',
119
+ ];
120
+ /**
121
+ * Group definitions matching the mobile app's settings structure.
122
+ *
123
+ * ─ i18n keys use the format `Settings.GroupLabel.<Id>` and must exist
124
+ * in every consumer's i18n catalog.
125
+ */
126
+ export const SETTINGS_GROUPS = [
127
+ {
128
+ id: 'appearance',
129
+ labelKey: 'Settings.Appearance',
130
+ icon: 'Palette',
131
+ keys: [
132
+ 'appearance.theme',
133
+ 'appearance.clockType',
134
+ 'appearance.enableDayColors',
135
+ ],
136
+ },
137
+ {
138
+ id: 'calendarType',
139
+ labelKey: 'Settings.CalendarType',
140
+ icon: 'ArrowLeftRight',
141
+ keys: ['calendarView.type', 'calendarView.view'],
142
+ },
143
+ {
144
+ id: 'calendarView',
145
+ labelKey: 'Settings.CalendarView',
146
+ icon: 'Eye',
147
+ keys: [
148
+ 'calendarView.showCalendarNames',
149
+ 'calendarView.splitView',
150
+ 'calendarView.calendarColumns',
151
+ 'calendarView.dayViewZoom',
152
+ 'calendarView.weekViewZoom',
153
+ ],
154
+ },
155
+ {
156
+ id: 'activities',
157
+ labelKey: 'Settings.Activities',
158
+ icon: 'CalendarPlus',
159
+ keys: ['eventForm.', 'chronologicalEventForm.'],
160
+ },
161
+ {
162
+ id: 'dateWeather',
163
+ labelKey: 'Settings.DateWeather',
164
+ icon: 'CloudSun',
165
+ keys: [
166
+ 'calendarView.showWeatherOnEvents',
167
+ 'calendarView.showWeatherOnTimeline',
168
+ 'calendarView.weatherLocation',
169
+ ],
170
+ },
171
+ {
172
+ id: 'soundAlerts',
173
+ labelKey: 'Settings.SoundAlerts',
174
+ icon: 'Volume2',
175
+ keys: [
176
+ 'sound.reminderVolume',
177
+ 'sound.mediaVolume',
178
+ 'sound.alarmSound',
179
+ 'sound.reminderAlarmSound',
180
+ 'sound.reminderAlarmTimeout',
181
+ 'sound.allowCustomReminderSounds',
182
+ 'sound.ttsEnabled',
183
+ 'sound.ttsRate',
184
+ 'notification.',
185
+ ],
186
+ },
187
+ {
188
+ id: 'timer',
189
+ labelKey: 'Settings.TimerTitle',
190
+ icon: 'Timer',
191
+ keys: [
192
+ 'sound.timerVolume',
193
+ 'sound.timerAlarmSound',
194
+ 'sound.timerAlarmTimeout',
195
+ 'timer.',
196
+ ],
197
+ },
198
+ {
199
+ id: 'lockScreen',
200
+ labelKey: 'Settings.LockScreen',
201
+ icon: 'Lock',
202
+ keys: ['lockScreen.'],
203
+ },
204
+ {
205
+ id: 'touch',
206
+ labelKey: 'Settings.FunctionsTitle',
207
+ icon: 'Hand',
208
+ keys: ['touch.'],
209
+ },
210
+ {
211
+ id: 'chronological',
212
+ labelKey: 'Settings.Chronological',
213
+ icon: 'List',
214
+ keys: ['chronological.'],
215
+ calendarType: 'chronological',
216
+ },
217
+ {
218
+ id: 'device',
219
+ labelKey: 'SettingsDevices.Title',
220
+ icon: 'Smartphone',
221
+ keys: [
222
+ 'device.',
223
+ 'calendarView.autoReturnToTodayEnabled',
224
+ 'calendarView.autoReturnToTodayTimeoutSeconds',
225
+ ],
226
+ },
227
+ {
228
+ id: 'language',
229
+ labelKey: 'Settings.Language',
230
+ icon: 'Globe',
231
+ keys: ['language.'],
232
+ },
233
+ ];
234
+ /**
235
+ * Settings excluded from remote editing (web portal / profile management).
236
+ * These are device-local or internal-only settings.
237
+ */
238
+ export const EXCLUDED_DEVICE_SETTINGS = new Set([
239
+ 'device.id',
240
+ 'device.devMenuEnabled',
241
+ 'device.authWarningDismissTtlDays',
242
+ 'notification.hasBeenPrompted',
243
+ ]);
244
+ /**
245
+ * Maps each setting key to its i18n label and optional description key.
246
+ * These keys must exist in every consumer's i18n catalog.
247
+ *
248
+ * When a key is missing from this map, consumers should fall back to
249
+ * the auto-generated label from `SettingsRegistry.getSettingLabel()`.
250
+ */
251
+ export const SETTINGS_LABELS = {
252
+ // ── Appearance ──────────────────────────────────────────────────────────
253
+ 'appearance.theme': { labelKey: 'Settings.SelectTheme' },
254
+ 'appearance.clockType': {
255
+ labelKey: 'Settings.ClockType',
256
+ descriptionKey: 'Settings.ClockTypeDescription',
257
+ },
258
+ 'appearance.enableDayColors': {
259
+ labelKey: 'Settings.EnableDayColors',
260
+ descriptionKey: 'Settings.EnableDayColorsDescription',
261
+ },
262
+ // ── Calendar type ───────────────────────────────────────────────────────
263
+ 'calendarView.type': {
264
+ labelKey: 'Settings.CalendarType',
265
+ descriptionKey: 'Settings.ModeDescription',
266
+ },
267
+ 'calendarView.view': { labelKey: 'Settings.Calendar' },
268
+ // ── Calendar view ───────────────────────────────────────────────────────
269
+ 'calendarView.showCalendarNames': { labelKey: 'Settings.ShowCalendarNames' },
270
+ 'calendarView.splitView': {
271
+ labelKey: 'Settings.SplitViewLabel',
272
+ descriptionKey: 'Settings.SplitViewDescription',
273
+ },
274
+ 'calendarView.calendarColumns': {
275
+ labelKey: 'Settings.SplitViewConfig',
276
+ descriptionKey: 'Settings.SplitViewConfigDescription',
277
+ },
278
+ 'calendarView.dayViewZoom': {
279
+ labelKey: 'Settings.CalendarDayViewIntervalTitle',
280
+ descriptionKey: 'Settings.CalendarDayViewIntervalDescription',
281
+ },
282
+ 'calendarView.weekViewZoom': {
283
+ labelKey: 'Settings.CalendarWeekViewIntervalTitle',
284
+ descriptionKey: 'Settings.CalendarWeekViewIntervalDescription',
285
+ },
286
+ // ── Auto return to today ────────────────────────────────────────────────
287
+ 'calendarView.autoReturnToTodayEnabled': {
288
+ labelKey: 'Settings.AutoReturnToTodayEnabled',
289
+ },
290
+ 'calendarView.autoReturnToTodayTimeoutSeconds': {
291
+ labelKey: 'Settings.AutoReturnToTodayTimeout',
292
+ },
293
+ // ── Weather ─────────────────────────────────────────────────────────────
294
+ 'calendarView.weatherLocation': { labelKey: 'Settings.WeatherLocation' },
295
+ 'calendarView.showWeatherOnEvents': {
296
+ labelKey: 'Settings.ShowWeatherOnEvents',
297
+ descriptionKey: 'Settings.ShowWeatherOnEventsDescription',
298
+ },
299
+ 'calendarView.showWeatherOnTimeline': {
300
+ labelKey: 'Settings.ShowWeatherOnTimeline',
301
+ descriptionKey: 'Settings.ShowWeatherOnTimelineDescription',
302
+ },
303
+ // ── Sound & alerts ──────────────────────────────────────────────────────
304
+ 'sound.reminderVolume': {
305
+ labelKey: 'Settings.ReminderVolume',
306
+ descriptionKey: 'Settings.ReminderVolumeDescription',
307
+ },
308
+ 'sound.timerVolume': {
309
+ labelKey: 'Settings.TimerVolume',
310
+ descriptionKey: 'Settings.TimerVolumeDescription',
311
+ },
312
+ 'sound.mediaVolume': {
313
+ labelKey: 'Settings.MediaVolume',
314
+ descriptionKey: 'Settings.MediaVolumeDescription',
315
+ },
316
+ 'sound.alarmSound': { labelKey: 'Settings.AlarmSound' },
317
+ 'sound.reminderAlarmSound': { labelKey: 'Settings.ReminderAlarmAsset' },
318
+ 'sound.reminderAlarmTimeout': { labelKey: 'Settings.ReminderAlarmTimeout' },
319
+ 'sound.timerAlarmSound': { labelKey: 'Settings.TimerAlarmSound' },
320
+ 'sound.timerAlarmTimeout': { labelKey: 'Settings.TimerAlarmTimeout' },
321
+ 'sound.allowCustomReminderSounds': {
322
+ labelKey: 'Settings.AllowCustomReminderSounds',
323
+ },
324
+ 'sound.ttsEnabled': {
325
+ labelKey: 'Settings.EnableSpeech',
326
+ descriptionKey: 'Settings.EnableSpeechDescription',
327
+ },
328
+ 'sound.ttsRate': { labelKey: 'Settings.TtsTitle' },
329
+ // ── Timer ───────────────────────────────────────────────────────────────
330
+ 'timer.showTimeRemaining': { labelKey: 'Settings.TimerShowTimeRemaining' },
331
+ 'timer.showEndTime': { labelKey: 'Settings.TimerShowEndTime' },
332
+ 'timer.showRestartButton': { labelKey: 'Settings.TimerShowRestartButton' },
333
+ 'timer.showPauseButton': { labelKey: 'Settings.TimerShowPauseButton' },
334
+ // ── Lock screen ─────────────────────────────────────────────────────────
335
+ 'lockScreen.pin': { labelKey: 'Settings.LockScreenTitlePin' },
336
+ 'lockScreen.clockDisplay': { labelKey: 'Settings.LockScreenClockTitle' },
337
+ 'lockScreen.showDate': { labelKey: 'Settings.LockScreenShowDate' },
338
+ 'lockScreen.showHourNumbers': {
339
+ labelKey: 'Settings.LockScreenShowHourNumbers',
340
+ },
341
+ 'lockScreen.imageMode': { labelKey: 'Settings.LockScreenImageModeTitle' },
342
+ 'lockScreen.backgroundImage': {
343
+ labelKey: 'Settings.LockScreenImageModeBackground',
344
+ },
345
+ 'lockScreen.photoFrameImages': {
346
+ labelKey: 'Settings.LockScreenImageModePhotoFrame',
347
+ },
348
+ 'lockScreen.photoFrameIntervalSeconds': {
349
+ labelKey: 'Settings.LockScreenPhotoFrameIntervalTitle',
350
+ },
351
+ 'lockScreen.inactivityLockEnabled': {
352
+ labelKey: 'SettingsInactivity.EnableLabel',
353
+ },
354
+ 'lockScreen.inactivityTimeoutMinutes': {
355
+ labelKey: 'SettingsInactivity.TimeoutLabel',
356
+ },
357
+ // ── Touch / gestures ───────────────────────────────────────────────────
358
+ 'touch.enableTapToCreate': {
359
+ labelKey: 'Settings.EnableTapToCreate',
360
+ descriptionKey: 'Settings.EnableTapToCreateDescription',
361
+ },
362
+ 'touch.enableDragDrop': {
363
+ labelKey: 'Settings.EnableDragDrop',
364
+ descriptionKey: 'Settings.EnableDragDropDescription',
365
+ },
366
+ // ── Device ──────────────────────────────────────────────────────────────
367
+ 'device.timePickerMode': { labelKey: 'Settings.DateTimeTitle' },
368
+ // ── Language ────────────────────────────────────────────────────────────
369
+ 'language.locale': { labelKey: 'Settings.SelectLanguage' },
370
+ // ── Notifications ───────────────────────────────────────────────────────
371
+ 'notification.enabled': { labelKey: 'Settings.NotificationsEnabled' },
372
+ 'notification.notifyAllCalendars': {
373
+ labelKey: 'Settings.NotifyAllCalendars',
374
+ },
375
+ 'notification.enabledCalendarIds': {
376
+ labelKey: 'Settings.NotificationsCalendars',
377
+ },
378
+ // ── Chronological header ────────────────────────────────────────────────
379
+ 'chronological.header.showNavigationArrows': {
380
+ labelKey: 'ChronologicalFeatures.NavigationArrows',
381
+ },
382
+ 'chronological.header.showClock': {
383
+ labelKey: 'ChronologicalFeatures.Clock',
384
+ },
385
+ 'chronological.header.showCurrentYearInDate': {
386
+ labelKey: 'ChronologicalFeatures.ShowCurrentYear',
387
+ },
388
+ 'chronological.header.showTimeOfDay': {
389
+ labelKey: 'ChronologicalFeatures.TimeOfDay',
390
+ },
391
+ // ── Chronological footer ────────────────────────────────────────────────
392
+ 'chronological.footer.showMenuButton': {
393
+ labelKey: 'ChronologicalFeatures.MenuButton',
394
+ },
395
+ 'chronological.footer.showViewSwitcherDay': {
396
+ labelKey: 'ChronologicalFeatures.ViewSwitcherDay',
397
+ },
398
+ 'chronological.footer.showViewSwitcherWeek': {
399
+ labelKey: 'ChronologicalFeatures.ViewSwitcherWeek',
400
+ },
401
+ 'chronological.footer.showViewSwitcherMonth': {
402
+ labelKey: 'ChronologicalFeatures.ViewSwitcherMonth',
403
+ },
404
+ 'chronological.footer.showTimerButton': {
405
+ labelKey: 'ChronologicalFeatures.TimerButton',
406
+ },
407
+ 'chronological.footer.showNewEventButton': {
408
+ labelKey: 'ChronologicalFeatures.NewEventButton',
409
+ },
410
+ 'chronological.footer.showSettingsButton': {
411
+ labelKey: 'ChronologicalFeatures.SettingsButton',
412
+ },
413
+ // ── Chronological timer ─────────────────────────────────────────────────
414
+ 'chronological.timer.showNewCountdown': {
415
+ labelKey: 'TimerFeatures.ShowNewCountdown',
416
+ },
417
+ 'chronological.timer.showFromTemplate': {
418
+ labelKey: 'TimerFeatures.ShowFromTemplate',
419
+ },
420
+ 'chronological.timer.showEditTemplate': {
421
+ labelKey: 'TimerFeatures.ShowEditTemplate',
422
+ },
423
+ 'chronological.timer.showDeleteTemplate': {
424
+ labelKey: 'TimerFeatures.ShowDeleteTemplate',
425
+ },
426
+ 'chronological.timer.showAddTemplate': {
427
+ labelKey: 'TimerFeatures.ShowAddTemplate',
428
+ },
429
+ // ── Chronological menu ──────────────────────────────────────────────────
430
+ 'chronological.menu.showSettingsButton': {
431
+ labelKey: 'ChronologicalFeatures.MenuSettingsButton',
432
+ },
433
+ 'chronological.quickSettings.showTimerVolume': {
434
+ labelKey: 'ChronologicalFeatures.QuickSettingsTimerVolume',
435
+ },
436
+ 'chronological.quickSettings.showReminderVolume': {
437
+ labelKey: 'ChronologicalFeatures.QuickSettingsReminderVolume',
438
+ },
439
+ 'chronological.quickSettings.showMediaVolume': {
440
+ labelKey: 'ChronologicalFeatures.QuickSettingsMediaVolume',
441
+ },
442
+ 'chronological.quickSettings.showBrightness': {
443
+ labelKey: 'ChronologicalFeatures.QuickSettingsBrightness',
444
+ },
445
+ 'chronological.quickSettings.showLockScreen': {
446
+ labelKey: 'ChronologicalFeatures.QuickSettingsLockScreen',
447
+ },
448
+ // ── Event form (time-based) ─────────────────────────────────────────────
449
+ 'eventForm.recurrence': { labelKey: 'Calendar.LabelRecurrence' },
450
+ 'eventForm.reminders': { labelKey: 'Calendar.LabelReminders' },
451
+ 'eventForm.emailReminders': { labelKey: 'Calendar.LabelEmailReminders' },
452
+ 'eventForm.location': { labelKey: 'Common.Location' },
453
+ 'eventForm.travelTime': { labelKey: 'TravelTime.Title' },
454
+ 'eventForm.description': { labelKey: 'Common.Description' },
455
+ 'eventForm.checklist': { labelKey: 'EventChecklist.DefaultName' },
456
+ 'eventForm.images': { labelKey: 'EventImageGallery.SectionTitle' },
457
+ 'eventForm.audioClips': { labelKey: 'EventAudioGallery.SectionTitle' },
458
+ 'eventForm.notificationReceivers': { labelKey: 'EventForm.NotificationReceivers' },
459
+ 'eventForm.visibility': { labelKey: 'EventVisibility.Title' },
460
+ };
461
+ /**
462
+ * Check whether a setting key matches a group's key matchers.
463
+ */
464
+ function matchesGroup(key, group) {
465
+ return group.keys.some((matcher) => key === matcher || (matcher.endsWith('.') && key.startsWith(matcher)));
466
+ }
467
+ /**
468
+ * Group parsed setting entries into user-facing groups matching the mobile
469
+ * app's settings menu structure.
470
+ *
471
+ * Takes a flat list of parsed settings (from `parseSettingsSnapshot`) and
472
+ * buckets them into the standard groups, filtering by calendar type and
473
+ * excluded keys.
474
+ */
475
+ export function groupSettingsForDevice(allSettings, calendarType) {
476
+ // Filter excluded
477
+ const settings = allSettings.filter((s) => !EXCLUDED_DEVICE_SETTINGS.has(s.key));
478
+ // Calendar type filtering for event form keys
479
+ const isChronological = calendarType === 'chronological';
480
+ const filteredSettings = settings.filter((s) => {
481
+ if (isChronological && s.key.startsWith('eventForm.')) {
482
+ return false;
483
+ }
484
+ if (!isChronological && s.key.startsWith('chronologicalEventForm.')) {
485
+ return false;
486
+ }
487
+ return true;
488
+ });
489
+ const claimed = new Set();
490
+ const result = [];
491
+ for (const group of SETTINGS_GROUPS) {
492
+ // Skip groups not relevant for current calendar type
493
+ if (group.calendarType && group.calendarType !== calendarType) {
494
+ continue;
495
+ }
496
+ const matched = filteredSettings.filter((s) => !claimed.has(s.key) && matchesGroup(s.key, group));
497
+ if (matched.length === 0) {
498
+ continue;
499
+ }
500
+ for (const s of matched) {
501
+ claimed.add(s.key);
502
+ }
503
+ result.push({
504
+ id: group.id,
505
+ labelKey: group.labelKey,
506
+ icon: group.icon,
507
+ settings: matched,
508
+ });
509
+ }
510
+ return result;
511
+ }
98
512
  /** Default config for non-enrolled mode */
99
513
  export const DEFAULT_REGISTRY_CONFIG = {
100
514
  isEnrolled: false,
@@ -410,10 +824,13 @@ export function parseSettingsSnapshot(json, calendarType, registry = defaultRegi
410
824
  if (!groups.has(category)) {
411
825
  groups.set(category, []);
412
826
  }
827
+ const labelDef = SETTINGS_LABELS[key];
413
828
  groups.get(category).push({
414
829
  key,
415
830
  name,
416
831
  label: registry.getSettingLabel(key),
832
+ labelKey: labelDef?.labelKey,
833
+ descriptionKey: labelDef?.descriptionKey,
417
834
  value,
418
835
  });
419
836
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@focus8/settings-registry",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Shared settings registry for FocusPlanner — single source of truth for all app settings.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -178,6 +178,495 @@ export function getCategoriesForCalendarType(
178
178
  });
179
179
  }
180
180
 
181
+ // ---------------------------------------------------------------------------
182
+ // Settings groups — user-facing groups that reorganize raw categories
183
+ // ---------------------------------------------------------------------------
184
+
185
+ /**
186
+ * Settings group IDs matching the mobile app's settings menu structure.
187
+ * These provide user-friendly groupings that may pull settings from multiple
188
+ * raw registry categories.
189
+ */
190
+ export const SETTINGS_GROUP_IDS = [
191
+ 'appearance',
192
+ 'calendarType',
193
+ 'calendarView',
194
+ 'activities',
195
+ 'dateWeather',
196
+ 'soundAlerts',
197
+ 'timer',
198
+ 'lockScreen',
199
+ 'touch',
200
+ 'chronological',
201
+ 'device',
202
+ 'language',
203
+ ] as const;
204
+
205
+ export type SettingsGroupId = (typeof SETTINGS_GROUP_IDS)[number];
206
+
207
+ export type SettingsGroupDef = {
208
+ /** Unique group identifier */
209
+ id: SettingsGroupId;
210
+ /** i18n message key for the group label */
211
+ labelKey: string;
212
+ /** Lucide icon name */
213
+ icon: string;
214
+ /**
215
+ * Setting key matchers. A setting is included if its key:
216
+ * - equals a matcher exactly, OR
217
+ * - starts with a matcher that ends with '.' (prefix match)
218
+ */
219
+ keys: string[];
220
+ /** Only show for this calendar type (undefined = always) */
221
+ calendarType?: CalendarType;
222
+ };
223
+
224
+ /**
225
+ * Group definitions matching the mobile app's settings structure.
226
+ *
227
+ * ─ i18n keys use the format `Settings.GroupLabel.<Id>` and must exist
228
+ * in every consumer's i18n catalog.
229
+ */
230
+ export const SETTINGS_GROUPS: readonly SettingsGroupDef[] = [
231
+ {
232
+ id: 'appearance',
233
+ labelKey: 'Settings.Appearance',
234
+ icon: 'Palette',
235
+ keys: [
236
+ 'appearance.theme',
237
+ 'appearance.clockType',
238
+ 'appearance.enableDayColors',
239
+ ],
240
+ },
241
+ {
242
+ id: 'calendarType',
243
+ labelKey: 'Settings.CalendarType',
244
+ icon: 'ArrowLeftRight',
245
+ keys: ['calendarView.type', 'calendarView.view'],
246
+ },
247
+ {
248
+ id: 'calendarView',
249
+ labelKey: 'Settings.CalendarView',
250
+ icon: 'Eye',
251
+ keys: [
252
+ 'calendarView.showCalendarNames',
253
+ 'calendarView.splitView',
254
+ 'calendarView.calendarColumns',
255
+ 'calendarView.dayViewZoom',
256
+ 'calendarView.weekViewZoom',
257
+ ],
258
+ },
259
+ {
260
+ id: 'activities',
261
+ labelKey: 'Settings.Activities',
262
+ icon: 'CalendarPlus',
263
+ keys: ['eventForm.', 'chronologicalEventForm.'],
264
+ },
265
+ {
266
+ id: 'dateWeather',
267
+ labelKey: 'Settings.DateWeather',
268
+ icon: 'CloudSun',
269
+ keys: [
270
+ 'calendarView.showWeatherOnEvents',
271
+ 'calendarView.showWeatherOnTimeline',
272
+ 'calendarView.weatherLocation',
273
+ ],
274
+ },
275
+ {
276
+ id: 'soundAlerts',
277
+ labelKey: 'Settings.SoundAlerts',
278
+ icon: 'Volume2',
279
+ keys: [
280
+ 'sound.reminderVolume',
281
+ 'sound.mediaVolume',
282
+ 'sound.alarmSound',
283
+ 'sound.reminderAlarmSound',
284
+ 'sound.reminderAlarmTimeout',
285
+ 'sound.allowCustomReminderSounds',
286
+ 'sound.ttsEnabled',
287
+ 'sound.ttsRate',
288
+ 'notification.',
289
+ ],
290
+ },
291
+ {
292
+ id: 'timer',
293
+ labelKey: 'Settings.TimerTitle',
294
+ icon: 'Timer',
295
+ keys: [
296
+ 'sound.timerVolume',
297
+ 'sound.timerAlarmSound',
298
+ 'sound.timerAlarmTimeout',
299
+ 'timer.',
300
+ ],
301
+ },
302
+ {
303
+ id: 'lockScreen',
304
+ labelKey: 'Settings.LockScreen',
305
+ icon: 'Lock',
306
+ keys: ['lockScreen.'],
307
+ },
308
+ {
309
+ id: 'touch',
310
+ labelKey: 'Settings.FunctionsTitle',
311
+ icon: 'Hand',
312
+ keys: ['touch.'],
313
+ },
314
+ {
315
+ id: 'chronological',
316
+ labelKey: 'Settings.Chronological',
317
+ icon: 'List',
318
+ keys: ['chronological.'],
319
+ calendarType: 'chronological',
320
+ },
321
+ {
322
+ id: 'device',
323
+ labelKey: 'SettingsDevices.Title',
324
+ icon: 'Smartphone',
325
+ keys: [
326
+ 'device.',
327
+ 'calendarView.autoReturnToTodayEnabled',
328
+ 'calendarView.autoReturnToTodayTimeoutSeconds',
329
+ ],
330
+ },
331
+ {
332
+ id: 'language',
333
+ labelKey: 'Settings.Language',
334
+ icon: 'Globe',
335
+ keys: ['language.'],
336
+ },
337
+ ] as const;
338
+
339
+ /**
340
+ * Settings excluded from remote editing (web portal / profile management).
341
+ * These are device-local or internal-only settings.
342
+ */
343
+ export const EXCLUDED_DEVICE_SETTINGS: ReadonlySet<string> = new Set([
344
+ 'device.id',
345
+ 'device.devMenuEnabled',
346
+ 'device.authWarningDismissTtlDays',
347
+ 'notification.hasBeenPrompted',
348
+ ]);
349
+
350
+ // ---------------------------------------------------------------------------
351
+ // Per-setting i18n label / description keys
352
+ // ---------------------------------------------------------------------------
353
+
354
+ export type SettingLabelDef = {
355
+ /** i18n message key for the setting label */
356
+ labelKey: string;
357
+ /** Optional i18n message key for a description shown below the label */
358
+ descriptionKey?: string;
359
+ };
360
+
361
+ /**
362
+ * Maps each setting key to its i18n label and optional description key.
363
+ * These keys must exist in every consumer's i18n catalog.
364
+ *
365
+ * When a key is missing from this map, consumers should fall back to
366
+ * the auto-generated label from `SettingsRegistry.getSettingLabel()`.
367
+ */
368
+ export const SETTINGS_LABELS: Readonly<Record<string, SettingLabelDef>> = {
369
+ // ── Appearance ──────────────────────────────────────────────────────────
370
+ 'appearance.theme': { labelKey: 'Settings.SelectTheme' },
371
+ 'appearance.clockType': {
372
+ labelKey: 'Settings.ClockType',
373
+ descriptionKey: 'Settings.ClockTypeDescription',
374
+ },
375
+ 'appearance.enableDayColors': {
376
+ labelKey: 'Settings.EnableDayColors',
377
+ descriptionKey: 'Settings.EnableDayColorsDescription',
378
+ },
379
+
380
+ // ── Calendar type ───────────────────────────────────────────────────────
381
+ 'calendarView.type': {
382
+ labelKey: 'Settings.CalendarType',
383
+ descriptionKey: 'Settings.ModeDescription',
384
+ },
385
+ 'calendarView.view': { labelKey: 'Settings.Calendar' },
386
+
387
+ // ── Calendar view ───────────────────────────────────────────────────────
388
+ 'calendarView.showCalendarNames': { labelKey: 'Settings.ShowCalendarNames' },
389
+ 'calendarView.splitView': {
390
+ labelKey: 'Settings.SplitViewLabel',
391
+ descriptionKey: 'Settings.SplitViewDescription',
392
+ },
393
+ 'calendarView.calendarColumns': {
394
+ labelKey: 'Settings.SplitViewConfig',
395
+ descriptionKey: 'Settings.SplitViewConfigDescription',
396
+ },
397
+ 'calendarView.dayViewZoom': {
398
+ labelKey: 'Settings.CalendarDayViewIntervalTitle',
399
+ descriptionKey: 'Settings.CalendarDayViewIntervalDescription',
400
+ },
401
+ 'calendarView.weekViewZoom': {
402
+ labelKey: 'Settings.CalendarWeekViewIntervalTitle',
403
+ descriptionKey: 'Settings.CalendarWeekViewIntervalDescription',
404
+ },
405
+
406
+ // ── Auto return to today ────────────────────────────────────────────────
407
+ 'calendarView.autoReturnToTodayEnabled': {
408
+ labelKey: 'Settings.AutoReturnToTodayEnabled',
409
+ },
410
+ 'calendarView.autoReturnToTodayTimeoutSeconds': {
411
+ labelKey: 'Settings.AutoReturnToTodayTimeout',
412
+ },
413
+
414
+ // ── Weather ─────────────────────────────────────────────────────────────
415
+ 'calendarView.weatherLocation': { labelKey: 'Settings.WeatherLocation' },
416
+ 'calendarView.showWeatherOnEvents': {
417
+ labelKey: 'Settings.ShowWeatherOnEvents',
418
+ descriptionKey: 'Settings.ShowWeatherOnEventsDescription',
419
+ },
420
+ 'calendarView.showWeatherOnTimeline': {
421
+ labelKey: 'Settings.ShowWeatherOnTimeline',
422
+ descriptionKey: 'Settings.ShowWeatherOnTimelineDescription',
423
+ },
424
+
425
+ // ── Sound & alerts ──────────────────────────────────────────────────────
426
+ 'sound.reminderVolume': {
427
+ labelKey: 'Settings.ReminderVolume',
428
+ descriptionKey: 'Settings.ReminderVolumeDescription',
429
+ },
430
+ 'sound.timerVolume': {
431
+ labelKey: 'Settings.TimerVolume',
432
+ descriptionKey: 'Settings.TimerVolumeDescription',
433
+ },
434
+ 'sound.mediaVolume': {
435
+ labelKey: 'Settings.MediaVolume',
436
+ descriptionKey: 'Settings.MediaVolumeDescription',
437
+ },
438
+ 'sound.alarmSound': { labelKey: 'Settings.AlarmSound' },
439
+ 'sound.reminderAlarmSound': { labelKey: 'Settings.ReminderAlarmAsset' },
440
+ 'sound.reminderAlarmTimeout': { labelKey: 'Settings.ReminderAlarmTimeout' },
441
+ 'sound.timerAlarmSound': { labelKey: 'Settings.TimerAlarmSound' },
442
+ 'sound.timerAlarmTimeout': { labelKey: 'Settings.TimerAlarmTimeout' },
443
+ 'sound.allowCustomReminderSounds': {
444
+ labelKey: 'Settings.AllowCustomReminderSounds',
445
+ },
446
+ 'sound.ttsEnabled': {
447
+ labelKey: 'Settings.EnableSpeech',
448
+ descriptionKey: 'Settings.EnableSpeechDescription',
449
+ },
450
+ 'sound.ttsRate': { labelKey: 'Settings.TtsTitle' },
451
+
452
+ // ── Timer ───────────────────────────────────────────────────────────────
453
+ 'timer.showTimeRemaining': { labelKey: 'Settings.TimerShowTimeRemaining' },
454
+ 'timer.showEndTime': { labelKey: 'Settings.TimerShowEndTime' },
455
+ 'timer.showRestartButton': { labelKey: 'Settings.TimerShowRestartButton' },
456
+ 'timer.showPauseButton': { labelKey: 'Settings.TimerShowPauseButton' },
457
+
458
+ // ── Lock screen ─────────────────────────────────────────────────────────
459
+ 'lockScreen.pin': { labelKey: 'Settings.LockScreenTitlePin' },
460
+ 'lockScreen.clockDisplay': { labelKey: 'Settings.LockScreenClockTitle' },
461
+ 'lockScreen.showDate': { labelKey: 'Settings.LockScreenShowDate' },
462
+ 'lockScreen.showHourNumbers': {
463
+ labelKey: 'Settings.LockScreenShowHourNumbers',
464
+ },
465
+ 'lockScreen.imageMode': { labelKey: 'Settings.LockScreenImageModeTitle' },
466
+ 'lockScreen.backgroundImage': {
467
+ labelKey: 'Settings.LockScreenImageModeBackground',
468
+ },
469
+ 'lockScreen.photoFrameImages': {
470
+ labelKey: 'Settings.LockScreenImageModePhotoFrame',
471
+ },
472
+ 'lockScreen.photoFrameIntervalSeconds': {
473
+ labelKey: 'Settings.LockScreenPhotoFrameIntervalTitle',
474
+ },
475
+ 'lockScreen.inactivityLockEnabled': {
476
+ labelKey: 'SettingsInactivity.EnableLabel',
477
+ },
478
+ 'lockScreen.inactivityTimeoutMinutes': {
479
+ labelKey: 'SettingsInactivity.TimeoutLabel',
480
+ },
481
+
482
+ // ── Touch / gestures ───────────────────────────────────────────────────
483
+ 'touch.enableTapToCreate': {
484
+ labelKey: 'Settings.EnableTapToCreate',
485
+ descriptionKey: 'Settings.EnableTapToCreateDescription',
486
+ },
487
+ 'touch.enableDragDrop': {
488
+ labelKey: 'Settings.EnableDragDrop',
489
+ descriptionKey: 'Settings.EnableDragDropDescription',
490
+ },
491
+
492
+ // ── Device ──────────────────────────────────────────────────────────────
493
+ 'device.timePickerMode': { labelKey: 'Settings.DateTimeTitle' },
494
+
495
+ // ── Language ────────────────────────────────────────────────────────────
496
+ 'language.locale': { labelKey: 'Settings.SelectLanguage' },
497
+
498
+ // ── Notifications ───────────────────────────────────────────────────────
499
+ 'notification.enabled': { labelKey: 'Settings.NotificationsEnabled' },
500
+ 'notification.notifyAllCalendars': {
501
+ labelKey: 'Settings.NotifyAllCalendars',
502
+ },
503
+ 'notification.enabledCalendarIds': {
504
+ labelKey: 'Settings.NotificationsCalendars',
505
+ },
506
+
507
+ // ── Chronological header ────────────────────────────────────────────────
508
+ 'chronological.header.showNavigationArrows': {
509
+ labelKey: 'ChronologicalFeatures.NavigationArrows',
510
+ },
511
+ 'chronological.header.showClock': {
512
+ labelKey: 'ChronologicalFeatures.Clock',
513
+ },
514
+ 'chronological.header.showCurrentYearInDate': {
515
+ labelKey: 'ChronologicalFeatures.ShowCurrentYear',
516
+ },
517
+ 'chronological.header.showTimeOfDay': {
518
+ labelKey: 'ChronologicalFeatures.TimeOfDay',
519
+ },
520
+
521
+ // ── Chronological footer ────────────────────────────────────────────────
522
+ 'chronological.footer.showMenuButton': {
523
+ labelKey: 'ChronologicalFeatures.MenuButton',
524
+ },
525
+ 'chronological.footer.showViewSwitcherDay': {
526
+ labelKey: 'ChronologicalFeatures.ViewSwitcherDay',
527
+ },
528
+ 'chronological.footer.showViewSwitcherWeek': {
529
+ labelKey: 'ChronologicalFeatures.ViewSwitcherWeek',
530
+ },
531
+ 'chronological.footer.showViewSwitcherMonth': {
532
+ labelKey: 'ChronologicalFeatures.ViewSwitcherMonth',
533
+ },
534
+ 'chronological.footer.showTimerButton': {
535
+ labelKey: 'ChronologicalFeatures.TimerButton',
536
+ },
537
+ 'chronological.footer.showNewEventButton': {
538
+ labelKey: 'ChronologicalFeatures.NewEventButton',
539
+ },
540
+ 'chronological.footer.showSettingsButton': {
541
+ labelKey: 'ChronologicalFeatures.SettingsButton',
542
+ },
543
+
544
+ // ── Chronological timer ─────────────────────────────────────────────────
545
+ 'chronological.timer.showNewCountdown': {
546
+ labelKey: 'TimerFeatures.ShowNewCountdown',
547
+ },
548
+ 'chronological.timer.showFromTemplate': {
549
+ labelKey: 'TimerFeatures.ShowFromTemplate',
550
+ },
551
+ 'chronological.timer.showEditTemplate': {
552
+ labelKey: 'TimerFeatures.ShowEditTemplate',
553
+ },
554
+ 'chronological.timer.showDeleteTemplate': {
555
+ labelKey: 'TimerFeatures.ShowDeleteTemplate',
556
+ },
557
+ 'chronological.timer.showAddTemplate': {
558
+ labelKey: 'TimerFeatures.ShowAddTemplate',
559
+ },
560
+
561
+ // ── Chronological menu ──────────────────────────────────────────────────
562
+ 'chronological.menu.showSettingsButton': {
563
+ labelKey: 'ChronologicalFeatures.MenuSettingsButton',
564
+ },
565
+ 'chronological.quickSettings.showTimerVolume': {
566
+ labelKey: 'ChronologicalFeatures.QuickSettingsTimerVolume',
567
+ },
568
+ 'chronological.quickSettings.showReminderVolume': {
569
+ labelKey: 'ChronologicalFeatures.QuickSettingsReminderVolume',
570
+ },
571
+ 'chronological.quickSettings.showMediaVolume': {
572
+ labelKey: 'ChronologicalFeatures.QuickSettingsMediaVolume',
573
+ },
574
+ 'chronological.quickSettings.showBrightness': {
575
+ labelKey: 'ChronologicalFeatures.QuickSettingsBrightness',
576
+ },
577
+ 'chronological.quickSettings.showLockScreen': {
578
+ labelKey: 'ChronologicalFeatures.QuickSettingsLockScreen',
579
+ },
580
+
581
+ // ── Event form (time-based) ─────────────────────────────────────────────
582
+ 'eventForm.recurrence': { labelKey: 'Calendar.LabelRecurrence' },
583
+ 'eventForm.reminders': { labelKey: 'Calendar.LabelReminders' },
584
+ 'eventForm.emailReminders': { labelKey: 'Calendar.LabelEmailReminders' },
585
+ 'eventForm.location': { labelKey: 'Common.Location' },
586
+ 'eventForm.travelTime': { labelKey: 'TravelTime.Title' },
587
+ 'eventForm.description': { labelKey: 'Common.Description' },
588
+ 'eventForm.checklist': { labelKey: 'EventChecklist.DefaultName' },
589
+ 'eventForm.images': { labelKey: 'EventImageGallery.SectionTitle' },
590
+ 'eventForm.audioClips': { labelKey: 'EventAudioGallery.SectionTitle' },
591
+ 'eventForm.notificationReceivers': { labelKey: 'EventForm.NotificationReceivers' },
592
+ 'eventForm.visibility': { labelKey: 'EventVisibility.Title' },
593
+ };
594
+
595
+ /**
596
+ * Check whether a setting key matches a group's key matchers.
597
+ */
598
+ function matchesGroup(key: string, group: SettingsGroupDef): boolean {
599
+ return group.keys.some(
600
+ (matcher) =>
601
+ key === matcher || (matcher.endsWith('.') && key.startsWith(matcher)),
602
+ );
603
+ }
604
+
605
+ /**
606
+ * Group parsed setting entries into user-facing groups matching the mobile
607
+ * app's settings menu structure.
608
+ *
609
+ * Takes a flat list of parsed settings (from `parseSettingsSnapshot`) and
610
+ * buckets them into the standard groups, filtering by calendar type and
611
+ * excluded keys.
612
+ */
613
+ export function groupSettingsForDevice(
614
+ allSettings: ParsedSettingEntry[],
615
+ calendarType: CalendarType,
616
+ ): { id: SettingsGroupId; labelKey: string; icon: string; settings: ParsedSettingEntry[] }[] {
617
+ // Filter excluded
618
+ const settings = allSettings.filter(
619
+ (s) => !EXCLUDED_DEVICE_SETTINGS.has(s.key),
620
+ );
621
+
622
+ // Calendar type filtering for event form keys
623
+ const isChronological = calendarType === 'chronological';
624
+ const filteredSettings = settings.filter((s) => {
625
+ if (isChronological && s.key.startsWith('eventForm.')) {
626
+ return false;
627
+ }
628
+ if (!isChronological && s.key.startsWith('chronologicalEventForm.')) {
629
+ return false;
630
+ }
631
+ return true;
632
+ });
633
+
634
+ const claimed = new Set<string>();
635
+ const result: {
636
+ id: SettingsGroupId;
637
+ labelKey: string;
638
+ icon: string;
639
+ settings: ParsedSettingEntry[];
640
+ }[] = [];
641
+
642
+ for (const group of SETTINGS_GROUPS) {
643
+ // Skip groups not relevant for current calendar type
644
+ if (group.calendarType && group.calendarType !== calendarType) {
645
+ continue;
646
+ }
647
+
648
+ const matched = filteredSettings.filter(
649
+ (s) => !claimed.has(s.key) && matchesGroup(s.key, group),
650
+ );
651
+ if (matched.length === 0) {
652
+ continue;
653
+ }
654
+
655
+ for (const s of matched) {
656
+ claimed.add(s.key);
657
+ }
658
+
659
+ result.push({
660
+ id: group.id,
661
+ labelKey: group.labelKey,
662
+ icon: group.icon,
663
+ settings: matched,
664
+ });
665
+ }
666
+
667
+ return result;
668
+ }
669
+
181
670
  // ---------------------------------------------------------------------------
182
671
  // Data type discriminator — stored alongside each setting in the DB
183
672
  // ---------------------------------------------------------------------------
@@ -821,6 +1310,10 @@ export type ParsedSettingEntry = {
821
1310
  name: string;
822
1311
  /** Human-readable label (e.g. 'Inactivity Timeout Minutes') */
823
1312
  label: string;
1313
+ /** i18n message key for the label (from SETTINGS_LABELS) */
1314
+ labelKey?: string;
1315
+ /** i18n message key for a description (from SETTINGS_LABELS) */
1316
+ descriptionKey?: string;
824
1317
  /** The setting value */
825
1318
  value: unknown;
826
1319
  };
@@ -879,10 +1372,14 @@ export function parseSettingsSnapshot(
879
1372
  if (!groups.has(category)) {
880
1373
  groups.set(category, []);
881
1374
  }
1375
+
1376
+ const labelDef = SETTINGS_LABELS[key];
882
1377
  groups.get(category)!.push({
883
1378
  key,
884
1379
  name,
885
1380
  label: registry.getSettingLabel(key),
1381
+ labelKey: labelDef?.labelKey,
1382
+ descriptionKey: labelDef?.descriptionKey,
886
1383
  value,
887
1384
  });
888
1385
  }