David Metcalfe
5cb0a6aec1
feat(desktop): searchable timezone dropdown in Settings → Chat
...
The timezone field was a free-text input with no guidance on format.
Users had to know the exact IANA identifier (e.g. America/New_York)
to configure it. Replace it with a searchable combobox built on
Popover + cmdk Command — the same stack as Shadcn's Combobox.
Backend:
- Add `_timezone_options()` to web_server.py (cached at import time,
returns sorted zoneinfo.available_timezones() — ~598 identifiers)
- Add `"timezone"` to `_SCHEMA_OVERRIDES` with `type: "select"`,
`options`, and `searchable: true`
Frontend:
- New `SearchableSelect` component (Popover + cmdk Command)
— closed-world filterable dropdown for large option lists
- `ConfigField` routes to `SearchableSelect` when
`schema.searchable === true` (explicit opt-in, no threshold)
- Add `searchable?: boolean` to `ConfigFieldSchema` type
- Add i18n keys: `searchPlaceholder`, `noResults`
The `searchable` flag is deterministic — no existing field is
affected unless explicitly opted in. Future large-list fields
can adopt the same pattern by adding `searchable: true` to their
schema override.
2026-07-28 10:49:14 -07:00
..
2026-07-24 19:43:44 -05:00
2026-07-27 21:10:51 -07:00
2026-07-22 16:51:01 -04:00
2026-07-27 21:10:51 -07:00
2026-07-20 11:35:21 -07:00
2026-07-24 15:53:38 -07:00
2026-07-26 12:54:45 -07:00
2026-07-23 18:20:24 -07:00
2026-07-28 12:11:52 -05:00
2026-07-26 17:47:07 -07:00
2026-07-26 21:13:03 -07:00
2026-07-26 17:49:03 -07:00
2026-07-17 11:37:25 +05:30
2026-07-26 21:22:40 -07:00
2026-07-11 12:28:55 +05:30
2026-07-25 21:44:43 -07:00
2026-07-24 17:10:39 -07:00
2026-06-11 10:49:47 -07:00
2026-07-18 02:49:28 -07:00
2026-07-26 17:46:55 -07:00
2026-07-24 16:01:06 -07:00
2026-07-24 11:45:57 -07:00
2026-07-28 03:54:25 -05:00
2026-07-22 08:11:09 +05:30
2026-07-26 21:13:03 -07:00
2026-07-24 11:45:57 -07:00
2026-07-21 05:27:13 -07:00
2026-07-01 23:51:54 +05:30
2026-07-26 21:13:03 -07:00
2026-07-28 08:10:58 -07:00
2026-07-22 16:51:01 -04:00
2026-07-24 17:10:39 -07:00
2026-07-22 21:17:21 -07:00
2026-07-24 11:45:57 -07:00
2026-07-19 03:02:21 -07:00
2026-07-24 15:52:13 -07:00
2026-07-25 19:27:17 -07:00
2026-07-26 21:22:40 -07:00
2026-07-05 13:42:46 -07:00
2026-06-30 17:29:23 -07:00
2026-07-07 04:09:35 -07:00
2026-07-27 14:32:05 -07:00
2026-07-28 00:15:00 +05:00
2026-07-24 16:02:08 -07:00
2026-07-26 23:41:54 -07:00
2026-07-16 07:19:36 -07:00
2026-07-26 18:10:34 -07:00
2026-07-08 16:55:32 +10:00
2026-07-26 17:50:54 -07:00
2026-07-26 08:43:24 -07:00
2026-07-20 05:38:25 -07:00
2026-06-06 18:22:38 -07:00
2026-07-27 21:10:51 -07:00
2026-07-26 17:46:29 -07:00
2026-07-15 07:39:42 -07:00
2026-07-28 03:52:33 -05:00
2026-07-01 16:25:48 -05:00
2026-07-27 21:10:51 -07:00
2026-07-15 07:39:17 -07:00
2026-07-09 16:13:59 -05:00
2026-07-15 07:39:17 -07:00
2026-07-26 13:42:33 -07:00
2026-07-27 21:10:51 -07:00
2026-07-05 13:42:46 -07:00
2026-07-27 11:33:40 -07:00
2026-06-19 07:46:33 -07:00
2026-07-26 17:20:27 -07:00
2026-07-15 04:56:25 -07:00
2026-07-28 00:53:16 -05:00
2026-07-26 14:14:03 -07:00
2026-07-26 19:29:18 -07:00
2026-07-27 21:10:51 -07:00
2026-07-23 18:11:57 -07:00
2026-07-23 21:07:18 -07:00
2026-07-15 00:10:31 -07:00
2026-07-27 19:32:12 +05:30
2026-07-26 21:22:40 -07:00
2026-07-24 21:12:53 -05:00
2026-07-27 11:53:48 -04:00
2026-07-28 10:07:18 -07:00
2026-07-21 12:20:25 +05:30
2026-07-24 11:45:57 -07:00
2026-07-26 17:46:55 -07:00
2026-07-02 05:10:31 -07:00
2026-07-27 11:33:40 -07:00
2026-07-27 21:10:51 -07:00
2026-07-05 13:42:46 -07:00
2026-07-15 07:39:17 -07:00
2026-07-24 17:10:39 -07:00
2026-07-21 10:09:31 -04:00
2026-07-26 18:06:21 -07:00
2026-07-27 11:53:48 -04:00
2026-07-24 09:49:00 -07:00
2026-05-28 02:36:09 -07:00
2026-07-07 15:15:37 -07:00
2026-07-22 11:19:37 +05:30
2026-07-27 11:53:48 -04:00
2026-06-17 01:04:26 +08:00
2026-07-24 11:45:57 -07:00
2026-05-28 22:26:25 -07:00
2026-07-27 19:19:01 +05:30
2026-07-09 19:54:02 -07:00
2026-07-07 12:36:41 -07:00
2026-07-07 13:29:58 -07:00
2026-07-26 19:30:21 -07:00
2026-07-03 13:44:00 -07:00
2026-07-17 04:53:38 -07:00
2026-07-26 23:34:29 -07:00
2026-07-26 08:43:24 -07:00
2026-07-27 21:10:51 -07:00
2026-07-09 19:57:54 -07:00
2026-07-26 19:29:56 -07:00
2026-07-21 21:00:43 -05:00
2026-07-21 21:00:43 -05:00
2026-07-23 12:01:24 -07:00
2026-07-24 16:00:03 -07:00
2026-07-25 23:05:30 -07:00
2026-07-28 12:11:52 -05:00
2026-07-05 13:42:46 -07:00
2026-07-26 12:54:45 -07:00
2026-07-26 16:01:54 -07:00
2026-07-24 17:10:39 -07:00
2026-07-11 12:28:55 +05:30
2026-07-27 21:26:23 -07:00
2026-07-24 11:45:57 -07:00
2026-07-28 10:49:14 -07:00
2026-07-24 11:45:57 -07:00
2026-07-24 11:45:57 -07:00
2026-06-09 23:21:14 -07:00
2026-07-05 23:00:34 +05:30