mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-09-06 14:39:10 +00:00
* feat: choose a schedule's timezone A schedule's timezone was whatever zone the browser reported when it was created, and nothing in the dialog could change it afterwards. That is wrong for anyone who travels, for a shared account, and for a team schedule that should follow an office rather than whoever happened to open the dialog. The zone becomes a picker over every IANA zone the runtime knows, with the user's own zone and UTC pinned first. `Intl.supportedValuesOf` is unavailable on older engines, so that pinned pair doubles as the fallback list: a user who cannot browse zones can still keep the one their schedule already uses. Each option carries its current offset, since a name alone does not tell two similar zones apart. A zone change on its own is a timing edit, so it is submitted like one. The server recomputes the next run whenever the timezone changes and measures the interval floor against the effective pair, which is what makes `0 0,12 * * *` a 12-hour gap in UTC and an 11-hour one in America/New_York on the day it springs forward. The dialog now mirrors that: the cron field validates against the selected zone and the floor is measured in it, so a cadence cannot be accepted here and refused by the API. * fix: keep zone-only edits out of the cadence and the zone list findable A timezone-only edit rode the cadence dirty flag, so the PATCH carried a cadence rebuilt from the form and could overwrite stored fields the pickers cannot represent, an API-created hourly's nonzero hour for one. The floor still validates a zone change as the timing edit it is, but only touched cadence controls put a cadence on the wire, and the spec now pins that down instead of only checking the zone. The picker list also gains the modern IANA names supportedValuesOf omits (it reports CLDR's legacy canonical forms, Asia/Calcutta for Asia/Kolkata), each probed against the engine before inclusion, and the per-zone offset labels are cached per locale so reopening the dialog stops rebuilding ~400 Intl.DateTimeFormat instances. * fix: carry the full tzdb rename set into the zone picker Five names covered the famous renames but Node still accepts and omits fourteen more modern canonical identifiers (the Argentina provinces, Indiana and Kentucky city moves, Kathmandu, Asmara, Faroe, Chuuk, Pohnpei, Kanton, Atikokan). The set is now the tzdb rename list, still probed per engine and deduped; deprecated links like US/Eastern and the sign-inverted Etc/GMT forms stay out deliberately, since they duplicate zones already listed under their canonical names. |
||
|---|---|---|
| .. | ||
| public | ||
| scripts | ||
| src | ||
| sw | ||
| test | ||
| babel.config.cjs | ||
| check_updates.sh | ||
| index.html | ||
| jest.config.cjs | ||
| jest.resolver.cjs | ||
| nginx.conf | ||
| package.json | ||
| postcss.config.cjs | ||
| tailwind.config.cjs | ||
| tsconfig.json | ||
| vite.config.ts | ||