Compare commits

..

4 Commits

Author SHA1 Message Date
b755eb4899 Merge branch 'main' into fix/issue-116-timestamp-timezone
All checks were successful
check / check (push) Successful in 8s
2026-03-01 01:21:39 +01:00
5f01d9f111 Merge pull request 'feat: speed up copy-flash timing by ~25% — follow-up to #113' (#121) from fix/issue-100-faster-copy-flash into main
All checks were successful
check / check (push) Successful in 11s
Reviewed-on: #121
2026-03-01 01:21:24 +01:00
user
d78af3ec80 feat: speed up copy-flash timing by ~25%
All checks were successful
check / check (push) Successful in 20s
Reduce active phase from 100ms to 75ms, fade transition from 300ms to
225ms, and cleanup delay from 350ms to 275ms for snappier feedback.

Refs #100
2026-02-28 16:17:07 -08:00
user
0616b62f63 fix: include timezone offset in all displayed timestamps
All checks were successful
check / check (push) Successful in 21s
All isoDate() functions now output proper ISO 8601 format with timezone
offset (e.g. 2026-02-28T15:30:00-08:00) instead of bare datetime strings.
Also uses 'T' separator per ISO 8601.

closes #116
2026-02-28 16:14:56 -08:00
5 changed files with 18 additions and 26 deletions

View File

@@ -29,6 +29,6 @@ body {
.copy-flash-fade { .copy-flash-fade {
transition: transition:
background-color 300ms ease-out, background-color 225ms ease-out,
color 300ms ease-out; color 225ms ease-out;
} }

View File

@@ -95,23 +95,23 @@ function show() {
function isoDate(timestamp) { function isoDate(timestamp) {
const d = new Date(timestamp * 1000); const d = new Date(timestamp * 1000);
const pad = (n) => String(n).padStart(2, "0"); const pad = (n) => String(n).padStart(2, "0");
const off = -d.getTimezoneOffset(); const offsetMin = -d.getTimezoneOffset();
const sign = off >= 0 ? "+" : "-"; const sign = offsetMin >= 0 ? "+" : "-";
const absOff = Math.abs(off); const absOff = Math.abs(offsetMin);
const tz = sign + pad(Math.floor(absOff / 60)) + ":" + pad(absOff % 60); const tzStr = sign + pad(Math.floor(absOff / 60)) + ":" + pad(absOff % 60);
return ( return (
d.getFullYear() + d.getFullYear() +
"-" + "-" +
pad(d.getMonth() + 1) + pad(d.getMonth() + 1) +
"-" + "-" +
pad(d.getDate()) + pad(d.getDate()) +
" " + "T" +
pad(d.getHours()) + pad(d.getHours()) +
":" + ":" +
pad(d.getMinutes()) + pad(d.getMinutes()) +
":" + ":" +
pad(d.getSeconds()) + pad(d.getSeconds()) +
tz tzStr
); );
} }

View File

@@ -48,10 +48,6 @@ function etherscanAddressLink(address) {
function isoDate(timestamp) { function isoDate(timestamp) {
const d = new Date(timestamp * 1000); const d = new Date(timestamp * 1000);
const pad = (n) => String(n).padStart(2, "0"); const pad = (n) => String(n).padStart(2, "0");
const off = -d.getTimezoneOffset();
const sign = off >= 0 ? "+" : "-";
const absOff = Math.abs(off);
const tz = sign + pad(Math.floor(absOff / 60)) + ":" + pad(absOff % 60);
return ( return (
d.getFullYear() + d.getFullYear() +
"-" + "-" +
@@ -63,8 +59,7 @@ function isoDate(timestamp) {
":" + ":" +
pad(d.getMinutes()) + pad(d.getMinutes()) +
":" + ":" +
pad(d.getSeconds()) + pad(d.getSeconds())
tz
); );
} }

View File

@@ -226,23 +226,23 @@ function formatAddressHtml(address, ensName, maxLen, title) {
function isoDate(timestamp) { function isoDate(timestamp) {
const d = new Date(timestamp * 1000); const d = new Date(timestamp * 1000);
const pad = (n) => String(n).padStart(2, "0"); const pad = (n) => String(n).padStart(2, "0");
const off = -d.getTimezoneOffset(); const offsetMin = -d.getTimezoneOffset();
const sign = off >= 0 ? "+" : "-"; const sign = offsetMin >= 0 ? "+" : "-";
const absOff = Math.abs(off); const absOff = Math.abs(offsetMin);
const tz = sign + pad(Math.floor(absOff / 60)) + ":" + pad(absOff % 60); const tzStr = sign + pad(Math.floor(absOff / 60)) + ":" + pad(absOff % 60);
return ( return (
d.getFullYear() + d.getFullYear() +
"-" + "-" +
pad(d.getMonth() + 1) + pad(d.getMonth() + 1) +
"-" + "-" +
pad(d.getDate()) + pad(d.getDate()) +
" " + "T" +
pad(d.getHours()) + pad(d.getHours()) +
":" + ":" +
pad(d.getMinutes()) + pad(d.getMinutes()) +
":" + ":" +
pad(d.getSeconds()) + pad(d.getSeconds()) +
tz tzStr
); );
} }
@@ -272,8 +272,8 @@ function flashCopyFeedback(el) {
el.classList.add("copy-flash-fade"); el.classList.add("copy-flash-fade");
setTimeout(() => { setTimeout(() => {
el.classList.remove("copy-flash-fade"); el.classList.remove("copy-flash-fade");
}, 350); }, 275);
}, 100); }, 75);
} }
module.exports = { module.exports = {

View File

@@ -487,10 +487,7 @@ function decode(data, toAddress) {
const deadlineDate = new Date(Number(deadline) * 1000); const deadlineDate = new Date(Number(deadline) * 1000);
details.push({ details.push({
label: "Deadline", label: "Deadline",
value: deadlineDate value: deadlineDate.toISOString().replace("T", " ").slice(0, 19),
.toISOString()
.replace("T", " ")
.replace(".000Z", "Z"),
}); });
return { return {