c3f9ab43ab
feat(map): generate mathematically accurate 100x50 world dot matrix and align country pinpoint coordinates
ssbg042026-10-18 22:12:40 +08:00
eb09f43454
fix(map): add mobile pinch-to-zoom, counter-scale tooltips when zoomed in, and responsive mobile pinpoint card
ssbg042026-10-18 21:32:22 +08:00
fe5c4be198
feat(map): match world map fullscreen expand with photo gallery lightbox modal
ssbg042026-10-18 21:16:17 +08:00
05ccd4d81f
feat(live-chat): enable instant 1-2s Telegram direct sync to eliminate 60s KV delay
ssbg042026-10-18 20:55:48 +08:00
316708130f
chore(config): add wrangler.jsonc with explicit GEO_KV, SESSION, and IMAGES bindings
ssbg042026-10-18 20:42:40 +08:00
1bbff1c85c
fix: declare GEO_KV binding in wrangler.json, fix service worker caching of API routes, and eliminate TypeError on blocked analytics
ssbg042026-10-18 20:40:00 +08:00
f1ff5e7073
fix(live-chat): enable KV persistence for live chat and auto-register Telegram webhook for instant two-way replies
ssbg042026-10-18 20:30:55 +08:00
63fe7eb717
fix(geo): import env from cloudflare:workers for KV binding and add storage telemetry indicator
ssbg042026-10-18 20:24:13 +08:00
75617ae49b
fix: merge incoming live chat replies using map deduplication and reduce polling interval to 2.5s
ssbg042026-10-18 13:31:18 +08:00
7d270a63e3
fix: resolve 500 error by removing Astro.locals.runtime.env and switch to robust HTML parsing for telegram dispatch
ssbg042026-10-18 13:22:47 +08:00
21058cc9b2
fix: support cloudflare locals.runtime.env bindings and add telegram error telemetry in live-chat
ssbg042026-10-18 13:20:01 +08:00
a73c2aa8e5
feat: add telegram webhook handler to receive phone replies and push to visitor chat
ssbg042026-10-18 13:16:49 +08:00
1941064933
feat: add interactive visitor world map and telegram live chat on contact page
ssbg042026-10-18 13:05:06 +08:00
a1102a2e4d
feat: harmonize mobile drawer active tab design with tech indicator dot and badge
ssbg042026-10-18 12:49:19 +08:00
ac2b366fd5
fix: lock background scroll and isolate touch gestures when certification modal is active
ssbg042026-10-18 12:47:49 +08:00
e164d80f75
fix: relocate certification modal close button to dedicated header bar to prevent overlap with image preview on mobile
ssbg042026-10-18 12:46:20 +08:00
17af7449ec
feat: update desktop sidebar active tab with tech indicator dot and replace duplicate contact button with CV CTA
ssbg042026-10-18 12:42:45 +08:00
242864bd66
fix: improve light mode scrollbar visibility and hide custom cursor on text inputs
ssbg042026-10-18 12:39:17 +08:00
f9863e156a
fix: sync emnapi dependencies in package.json and lockfile for cloudflare npm ci
ssbg042026-10-18 12:24:53 +08:00
81d58814f7
fix(deps): sync @emnapi/runtime dependency in package-lock for Cloudflare Pages npm ci
ssbg042026-10-18 12:17:05 +08:00
c1edea07ce
feat(deploy): migrate to Cloudflare Pages, integrate Resend email API, and optimize contact form
ssbg042026-10-18 12:10:16 +08:00
c3ad31f28b
perf(core): self-host fonts, eliminate Google Fonts CDN, defer API fetches, and convert utility islands to zero-JS
ssbg042026-10-18 11:15:58 +08:00
19b4f11fc9
refactor(links,tech-stack): pure fontawesome svg icons and streamline links directory
ssbg042026-10-18 10:48:32 +08:00