Commit Graph

526 Commits

Author SHA1 Message Date
nate 98965ca2f3 test: improve checkout select 2026-03-25 23:43:58 +04:00
nate 56bd48b0cc fix: button placement 2026-03-25 23:17:36 +04:00
nate 54c839e82e fix: inconsistencies 2026-03-25 23:16:27 +04:00
nate 123ae4c251 test: change styling 2026-03-25 23:13:19 +04:00
nate cfd7e8173a fix: 2 2026-03-25 23:09:08 +04:00
nate d636bcb3e7 fix: countdown 2026-03-25 23:08:10 +04:00
nate 3a3499cd8b feat: count down in realtime 2026-03-25 23:05:12 +04:00
nate ad798d0bbf fix: double prefix for bch and xec 2026-03-25 22:58:31 +04:00
nate 343248c79f fix: typo 2026-03-25 22:50:31 +04:00
nate b6bc7e8a52 update: checkout button text 2026-03-25 22:50:08 +04:00
nate d01d435565 test: add open in wallet button 2026-03-25 22:44:01 +04:00
nate 430e7f1dbe test: improve checkout UX 2026-03-25 22:42:26 +04:00
nate b80a8ee240 fix: upgrade info block on qr page 2026-03-25 22:40:01 +04:00
nate 42812678ea fix: open in wallet link too wide 2026-03-25 22:36:58 +04:00
nate d620f700b5 fix: update upgrade text 2026-03-24 22:25:41 +04:00
nate f06ced17fc fix: upgrade text placement 2026-03-24 22:23:47 +04:00
nate 878fbcc181 update: upgrade text 2026-03-24 22:22:20 +04:00
nate 8d82aeb005 feat: add upgrade explainer 2026-03-24 22:21:19 +04:00
nate bea1a91eb9 feat: disallow double lifetime buys 2026-03-24 22:01:05 +04:00
nate 1a00d49be2 fix: pay 2026-03-24 21:54:41 +04:00
nate 0b1ffa8b3b fix: broken settings page 2026-03-24 21:49:17 +04:00
nate b987024f9d feat: add plan stacking 2026-03-24 21:47:25 +04:00
nate 7b8f693710 feat: improve payments 2026-03-24 21:17:50 +04:00
nate 371eeffd38 update: plan text 2026-03-24 20:40:02 +04:00
nate 3b096df682 improve: html highlighting 2026-03-24 18:04:45 +04:00
nate bdbefad18b improve: html highlighting 2026-03-24 18:01:41 +04:00
nate 5e10723021 feat: ping body syntax highlighting 2026-03-24 17:59:06 +04:00
nate 79b7f21591 feat: move response body 2026-03-24 17:18:35 +04:00
nate bb05dae926 feat: increase response body limit 2026-03-24 17:08:40 +04:00
nate ecb876c964 fix: ping modal too small 2026-03-24 17:04:35 +04:00
nate 59c3c4b724 add ping detail modal 2026-03-24 17:02:09 +04:00
nate 9a9f872fa6 reduce time update delay 2026-03-24 16:42:43 +04:00
nate 01bdc711fe feat: add in-dev warning 2026-03-24 16:29:09 +04:00
nate fc3159ff9d fix: time 2026-03-24 16:21:30 +04:00
nate c0e27bc43b fix: start counting at 1s 2026-03-24 16:18:27 +04:00
nate 85b078fce3 fix: client-server time desync 2026-03-24 16:09:30 +04:00
nate 7f6f79f028 fix: undo "just now" 2026-03-24 15:58:03 +04:00
nate 313c9973cd fix: server time different than client 2026-03-24 15:55:47 +04:00
nate 2561558c50 fix: limits is not defined 2026-03-24 15:48:21 +04:00
nate db90c74560 test: plans 2026-03-22 18:58:01 +04:00
nate 72290a9841 test: plans 2026-03-22 18:57:20 +04:00
nate b06a2f7ad2 test: plans 2026-03-22 18:56:16 +04:00
nate e334f31bd5 test: plans 2026-03-22 18:53:53 +04:00
nate 4e62b239a7 test: plans 2026-03-22 18:51:17 +04:00
nate 8971e256dc test: plans 2026-03-22 18:50:27 +04:00
nate fd755b39db test: plans 2026-03-22 18:49:37 +04:00
nate 71fd258b59 test: plans 2026-03-22 18:48:26 +04:00
nate 06b00f2c8c update: lifetime discount 2026-03-22 06:46:36 +04:00
nate d0b364460f update pro plan interval limit 2026-03-22 06:40:36 +04:00
nate 6a7639e94d update: landing 2026-03-22 06:32:35 +04:00
nate aad3c50500 update: landing 2026-03-22 06:30:49 +04:00
nate a3fdec9436 improve: lifetime text 2026-03-22 06:28:07 +04:00
nate fc96e0d613 update: default interval - plan limit 2026-03-22 06:23:46 +04:00
nate 1a0b6bb0fe update: remove em dashes, plans 2026-03-22 06:18:23 +04:00
nate a1d37c6215 update: lifetime discounts based on spent 2026-03-22 06:11:49 +04:00
nate b014cbf98a update: plans 2026-03-22 06:04:06 +04:00
nate d5510aae14 update 2026-03-22 06:01:05 +04:00
nate fd592a5a2e test: update plans 2026-03-22 05:55:48 +04:00
nate d159d1b17a update: plans 2026-03-22 05:46:41 +04:00
nate 2d0f1ce302 update: plans 2026-03-22 05:39:52 +04:00
nate 827757804b update: plans 2026-03-22 05:37:38 +04:00
nate 1049677f19 add: 4x pro plan 2026-03-22 05:33:39 +04:00
nate 014976027b update: plans 2026-03-22 05:29:20 +04:00
nate 80ca78f901 update: plans 2026-03-22 05:28:39 +04:00
nate 40c4d3341c feat: free tier region limits 2026-03-22 05:24:01 +04:00
nate 42b6aae54e fix: update docs to reflect code 2026-03-22 05:01:14 +04:00
nate 859a55d66b update: increase pro plan limit 2026-03-21 22:43:04 +04:00
nate 8be0632ea8 update: decrease max monitors for pro 2026-03-21 22:30:19 +04:00
nate 862b9f284f update receipt 2026-03-19 18:41:37 +04:00
nate 6e7887a92c fix: add favicon to receipt header 2026-03-19 18:27:57 +04:00
nate c096044e32 update: padding 2026-03-19 18:17:45 +04:00
nate f86ed2746d update: padding 2026-03-19 18:15:30 +04:00
nate 540ddd0c50 update: padding 2026-03-19 18:14:29 +04:00
nate ca24fec9e5 update: received payment screen 2026-03-19 18:10:55 +04:00
nate 551108adc0 update: padding on spinner 2026-03-19 18:08:43 +04:00
nate aa2733f93c update: launch deal indicator checkout page 2026-03-19 18:05:34 +04:00
nate 823b382add update: launch deal indicator 2026-03-19 18:03:09 +04:00
nate ed79fe4f12 test: launch deal indication for lifetime 2026-03-19 18:01:07 +04:00
nate d6aa4d878f update: free plan monitors 2026-03-19 17:57:10 +04:00
nate d5c62267ce fix: remove double footer docs page 2026-03-19 17:43:21 +04:00
nate 92029e97c0 fix: privacy and tos inconsistencies 2026-03-19 17:40:25 +04:00
nate c08d1a10ac test: increase surrouding font size docs 2026-03-19 17:38:38 +04:00
nate 2ae3fc64f9 test: decrease mono font size 2026-03-19 17:36:26 +04:00
nate e9cfe8fc5a test: remove mono font from docs 2026-03-19 17:34:56 +04:00
nate 950d82e5b2 fix: docs styling bleeds over 2026-03-19 17:32:40 +04:00
nate 2234a1a068 update 2026-03-19 17:29:58 +04:00
nate c566881cc2 add favicon 2026-03-19 17:23:49 +04:00
nate f37d3e7f48 fix: a href remains clickable when active 2026-03-19 16:21:23 +04:00
nate 30468e378d fix: default content type 2026-03-19 16:13:05 +04:00
nate 63b83e77dc update: remove flags 2026-03-19 16:06:05 +04:00
nate d89f5f45ee fix: last commit 2026-03-19 15:34:50 +04:00
nate 2462f1e8ee fix: make status toolbar update in real time 2026-03-19 15:32:50 +04:00
nate 4cec734d63 fix: pause button not working 2026-03-19 15:28:39 +04:00
nate f9c835f591 fix: bad syntax 2026-03-19 15:25:04 +04:00
nate 723708cf8b fix: bad syntax 2026-03-19 15:24:13 +04:00
nate 4149a4753e feat: add tooltip to status history blips 2026-03-19 15:22:33 +04:00
nate 6f0499d34b feat: combine status blips by run id 2026-03-19 15:18:16 +04:00
nate eae2b3869d attempt: minify invoice html 2026-03-19 14:01:31 +04:00
nate dad663b5e3 fix: receipt location 2026-03-19 13:59:02 +04:00
nate 9881d4f681 feat: auto-generate receipts 2026-03-19 13:56:14 +04:00
nate 113c1101c4 feat: add receipts to the payment service 2026-03-19 13:40:17 +04:00
nate a7f56c69d3 update: payment link 2026-03-19 12:55:20 +04:00
nate 9cf70ab8dd fix: confirming state, hide amt, addr 2026-03-19 12:50:55 +04:00
nate 7ba11614e7 fix: qr base64 > qr uri 2026-03-19 12:46:03 +04:00
nate ae9c18b771 improve: checkout 2026-03-19 12:40:03 +04:00
nate 31c349e6f1 update 2026-03-19 12:35:11 +04:00
Nate 9937272ba3 style: remove gradient buttons, use flat blue
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 12:32:10 +04:00
Nate 096bd186ea style: bolder visual refresh — lighter card surfaces, visible borders, blue glow accents
Cards now #141418 on #0a0a0a bg for actual contrast. Borders #232329 instead
of near-invisible rgba. Pricing cards have real tier hierarchy with Pro glow
and "Popular" badge. Buttons get blue gradient glow. Status dots glow visibly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 12:21:43 +04:00
nate c1392a7dd9 test: improve css 2026-03-19 12:08:06 +04:00
nate 437b493567 fix: can't edit monitors 2026-03-19 11:43:23 +04:00
nate 63cd0c7af5 update: lower pricing 2026-03-19 11:35:11 +04:00
nate e19e723d49 update: lower pricing to $12 2026-03-19 11:32:34 +04:00
nate d52026f787 bump max runs 2026-03-19 11:20:45 +04:00
nate b1dce432a5 test: ssr graphs 2026-03-19 11:17:05 +04:00
nate d62f776f7b test: ssr graphs 2026-03-19 11:14:30 +04:00
nate 164b7f65f8 remove js 2026-03-19 10:23:22 +04:00
nate 57bf994926 fix: more nojs 2026-03-19 10:18:31 +04:00
nate b6fa544d5e fix: uncentered box 2026-03-19 10:13:34 +04:00
nate 96a58233fd fix: flashbang 2026-03-19 10:08:20 +04:00
nate d8d1952304 fix: elysia issues 2 2026-03-19 10:06:14 +04:00
nate 03fe13e707 fix: elysia issues 2026-03-19 10:00:30 +04:00
nate 61560ae521 feat: no-JS support for all core UI — registration, settings, monitor CRUD, logout 2026-03-19 09:55:08 +04:00
nate 632f006988 refactor: simplify payment gateway, single evaluatePayment function, clean landing page pricing 2026-03-19 09:42:03 +04:00
nate df638c94f1 update: ........... 2026-03-19 01:14:17 +04:00
nate e62b60e0fd update: ....... 2026-03-19 01:07:49 +04:00
nate 955b26f942 update: .... 2026-03-19 01:02:52 +04:00
nate 1e6739b42a update: hopefully...... 2026-03-19 00:53:20 +04:00
nate 8a24b30b2a update: hopefully.... 2026-03-19 00:49:32 +04:00
nate 7e55b2ad95 fix: hopefully.. 2026-03-19 00:43:26 +04:00
nate 2554321183 fix: single raw SSE connection with no query filter, always on from boot 2026-03-19 00:36:43 +04:00
nate 2dbf85652b fix: backend SSE uses fetch streaming (EventSource not available in Bun), bulk lookup fallback 2026-03-19 00:29:42 +04:00
nate 0854914411 fix: use native EventSource for SSE instead of fetch with manual parsing 2026-03-19 00:24:16 +04:00
nate c3103f06ce feat: invoices section on settings page, show paid and active payments 2026-03-19 00:16:33 +04:00
nate 81f1e1585e fix: use raw SSE with local matching, bulk polling, block-based confirmations, and multi-tx support 2026-03-19 00:04:46 +04:00
M1 d02b27bc16 fix: frontend SSE also uses 'crypto' not 'chain' 2026-03-18 23:50:13 +04:00
M1 b46c3c618e feat: update URL to /checkout/:id after creation, auto-load existing invoice on load 2026-03-18 23:43:03 +04:00
M1 63c7d7c1d7 fix: SSE filter uses 'crypto' not 'chain' per Freedom.st API docs 2026-03-18 23:41:21 +04:00
M1 36a7d309fa feat: /dashboard/checkout/:id route so invoices survive refresh 2026-03-18 23:37:20 +04:00
M1 1cbbd65adb fix: compare floats to floats in checkPending — was comparing sats vs floats, always false 2026-03-18 23:33:47 +04:00
M1 4cdd4b5343 fix: derive LTC as P2WPKH (native segwit ltc1q) not legacy P2PKH 2026-03-18 23:24:17 +04:00
M1 8b2dcf0d56 fix: convert zpub to xpub version bytes — bitcore-lib-ltc only understands standard xpub 2026-03-18 23:22:37 +04:00
M1 2bd6adc090 fix: use static bs58check import, not dynamic await import 2026-03-18 23:19:48 +04:00
M1 91c24b20f7 fix: convert zpub to Ltub before LTC HD derivation 2026-03-18 23:18:49 +04:00
M1 bc0f7715da fix: pin @sinclair/typebox ^0.34 in pay app to match elysia requirements 2026-03-18 23:16:43 +04:00
nate 7d1a350f86 feat: instant payment detection via Freedom.st SSE on backend and frontend 2026-03-18 23:06:57 +04:00
nate c9130243e8 feat: crypto payment system with HD wallets, Freedom.st integration, and checkout UI 2026-03-18 23:04:17 +04:00
nate bead49b870 fix: replace error() with set.status across all API routes (fixes undefined error helper) 2026-03-18 22:46:57 +04:00
nate c89b63bd97 feat: implement free/pro plan system with monitor and interval limits 2026-03-18 22:40:45 +04:00
nate 11e6c593ad chore: limit pro plan to 500 monitors on landing page 2026-03-18 22:33:43 +04:00
nate a829c4507c update: footer text 2026-03-18 21:23:00 +04:00
nate 3e6e758648 chore: replace footer credit with standard copyright 2026-03-18 21:19:22 +04:00
nate fad343c85a fix: default to all regions enabled for new monitors 2026-03-18 21:12:30 +04:00
nate 56114a3852 fix: enable pgcrypto extension for gen_random_bytes in monitor IDs 2026-03-18 21:08:19 +04:00
nate 2075de164d update: use short 16-char hex IDs for new monitors instead of UUIDs 2026-03-18 21:05:01 +04:00
nate e4895afe8e update: default ping interval to 30s, update free tier limit to match 2026-03-18 21:01:41 +04:00
nate fd821acec2 update: default ping interval to 10s 2026-03-18 20:59:50 +04:00
nate 5295fcfe79 chore: move TOS to /terms, remove from header, remove pricing from footer 2026-03-18 20:59:23 +04:00
nate 3b79e8d589 fix: typo in terms 2026-03-18 20:55:00 +04:00
nate c74e2d3b58 chore: add more timeout options, default to 10s 2026-03-18 20:50:16 +04:00
nate 0d059a0112 chore: set 2s minimum interval, update marketing and docs to match 2026-03-18 20:47:11 +04:00
nate 86d36a87fc fix: refresh chart tooltip on live updates while hovering 2026-03-18 20:40:07 +04:00
nate dae1d5f77a fix: poll coordinator every 500ms to reduce jitter on 1s intervals 2026-03-18 20:33:36 +04:00
nate f9826fbbe4 update 2026-03-18 20:29:35 +04:00
nate 13beacbc5a chore: remove us-east and ap-southeast regions from UI 2026-03-18 20:20:25 +04:00
nate 2d46491dee chore: remove us-east region from UI, charts, and region selectors 2026-03-18 20:13:11 +04:00
nate cbb1a26582 fix: trim chart runs in place and reduce to 25 to match SSR density 2026-03-18 20:06:23 +04:00
nate f2fcf1a0b9 fix: evenly space chart runs at fixed width and trim initial data to match 2026-03-18 20:02:48 +04:00
nate 766d1094ad fix: evict oldest chart runs as a group instead of individual pings 2026-03-18 20:00:11 +04:00
nate 993e6bb1df fix: show full run_id instead of truncating to 8 chars 2026-03-18 19:57:41 +04:00
nate e9ca90324b fix: align chart points by run_id avg time so regions stack vertically 2026-03-18 19:55:48 +04:00
nate 1706e83a3f fix: reduce chart spline tension to prevent jittery overshoot 2026-03-18 19:52:46 +04:00
nate 59861651bd feat: interactive canvas latency chart with hover tooltips and smooth curves 2026-03-18 19:49:44 +04:00
nate df22029755 fix: no region text 2026-03-18 19:43:28 +04:00
nate f013890c40 refactor: extract monitor form into shared partial for create and edit 2026-03-18 19:41:31 +04:00
nate 5b7a211c21 fix: show latest latency from fastest region instead of average on home 2026-03-18 19:36:24 +04:00
nate 688245b0c2 fix: match client-side sparkline behavior to SSR region-aware rendering 2026-03-18 19:31:41 +04:00
nate 6beb7f8039 update: tos 2026-03-18 19:27:10 +04:00
nate 5be1f85365 fix: run cert expiry check concurrently to avoid delaying results 2026-03-18 19:04:30 +04:00
nate 42024a9fc3 fix: use monitor-side checked_at timestamp instead of coordinator arrival time 2026-03-18 18:50:16 +04:00
nate 425bfbfc39 perf: optimize monitor runner, fix SSE leak, deduplicate shared utils 2026-03-18 18:44:08 +04:00
M1 980261632e fix: deserialize scheduled_at_ms as string or number (postgres bigint serializes as string) 2026-03-18 17:17:29 +04:00
M1 c5eb514990 feat: lookahead scheduling — API returns scheduled_at_ms, nodes sleep-until for tight coordination 2026-03-18 17:14:28 +04:00
M1 7b98ae78e5 fix: run_id = hash(monitor_id, interval_bucket) — unique per window, consistent across regions 2026-03-18 17:03:17 +04:00
M1 b6a66ddb21 fix: run_id derived from scheduled_at bucket so all regions share same ID per window 2026-03-18 16:46:30 +04:00
M1 77534a037c feat: show run_id (first 8 chars) in recent pings table 2026-03-18 16:42:50 +04:00
M1 f7ab3b96b2 feat: per-region due scheduling + run_id to group pings across regions 2026-03-18 16:36:35 +04:00
M1 e057a65535 fix: avgLatency NaN — extract .latency_ms from ping objects 2026-03-18 16:31:08 +04:00
M1 07648672ad feat: per-region chart lines and lowest-avg sparkline 2026-03-18 16:25:47 +04:00
M1 e1bb39431d fix: use URL.searchParams to parse region query param in /internal/due 2026-03-18 16:21:24 +04:00
M1 8c39fb45c1 feat: add region selector to monitor edit form 2026-03-18 16:15:19 +04:00
M1 93db31db3b feat: multi-region monitor support — region selector in UI, region flag on pings 2026-03-18 16:08:39 +04:00
M1 52f7f8102b feat: update user-agent to Mozilla-compatible string 2026-03-18 14:43:33 +04:00
M1 957674fca4 fix: clear in-flight after post_result to prevent double-pings, revert poll to 50ms 2026-03-18 14:29:37 +04:00
M1 d3ee0ef9d5 fix: revert grace period, increase poll interval to 500ms to prevent doubles without adding jitter 2026-03-18 14:27:38 +04:00
M1 5836c44228 fix: add 200ms grace period to due query to prevent double-pings 2026-03-18 14:21:21 +04:00
M1 6882162d7f fix: use system CA store for ureq TLS to verify Cloudflare-issued certs 2026-03-18 14:10:28 +04:00
M1 1b8cbc6e23 fix: force ureq to use ring crypto provider to match main.rs init 2026-03-18 14:05:04 +04:00
M1 f17bfbfd4b fix: switch ureq from native-tls to rustls (bundled roots) 2026-03-18 13:54:39 +04:00
M1 3fa624eff8 fix: replace curl subprocess with ureq blocking client in std::thread 2026-03-18 13:40:28 +04:00
M1 6b8e1fc9d9 cleanup: remove debug warn logs from monitor runner 2026-03-18 13:30:19 +04:00