From badd542bd7082b5509f9d99a7c0d1f9d4e39260e Mon Sep 17 00:00:00 2001 From: josh Date: Sat, 28 Mar 2026 14:53:20 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20timezone=20setting=20=E2=80=94=20displa?= =?UTF-8?q?y=20timestamps=20in=20selected=20local=20timezone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a Display section to the settings modal with a timezone dropdown. Selection is persisted to localStorage and applied to all timestamps via fmtDate (date-only) and fmtDateFull (date + time + TZ abbreviation, e.g. "Mar 28, 2026, 2:48 PM EDT"). Changing the timezone live-re-renders the current page. Defaults to UTC. Co-Authored-By: Claude Sonnet 4.6 --- css/app.css | 3 +++ index.html | 7 +++++++ js/ui.js | 49 +++++++++++++++++++++++++++++++++++++++++-- tests/helpers.test.js | 16 ++++++++++++-- 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/css/app.css b/css/app.css index eac9a12..c0f1a23 100644 --- a/css/app.css +++ b/css/app.css @@ -665,6 +665,9 @@ select:focus { border-color: var(--accent); } margin-bottom: 8px; } .settings-desc { font-size: 12px; color: var(--text2); margin: 0 0 14px; line-height: 1.6; } +.settings-row { display: flex; align-items: center; gap: 12px; } +.settings-label { font-size: 13px; color: var(--text2); white-space: nowrap; min-width: 80px; } +.settings-select { flex: 1; } .import-row { display: flex; gap: 10px; align-items: center; } .import-file-input { flex: 1; } diff --git a/index.html b/index.html index f15f9db..246f199 100644 --- a/index.html +++ b/index.html @@ -180,6 +180,13 @@