you
fb70b42425
perf: add TTL cache layer + rewrite bulk-health to single-query
...
- Add TTLCache class with hit/miss tracking
- Cache all expensive endpoints:
- analytics/* endpoints: 60s TTL
- channels: 30s TTL
- channels/:hash/messages: 15s TTL
- nodes/:pubkey: 30s TTL
- nodes/:pubkey/health: 30s TTL
- observers: 30s TTL
- bulk-health: 60s TTL
- Invalidate all caches on new packet ingestion (POST + MQTT)
- Rewrite bulk-health from N×5 queries to 1 query + JS matching
- Add cache stats (size, hits, misses, hitRate) to /api/perf
2026-03-20 02:06:23 +00:00
you
e7651549ea
feat: add frontend API response caching with TTL, in-flight dedup, and WebSocket invalidation
...
- Replace api() with caching version supporting TTL and request deduplication
- Add appropriate TTLs to all api() call sites across all frontend JS files:
- /stats: 5s TTL (was called 962 times in 3 min)
- /nodes/:pubkey: 15s, /health: 30s, /observers: 30s
- /channels: 15s, messages: 10s
- /analytics/*: 60s, /bulk-health: 60s, /network-status: 60s
- /nodes?*: 10s
- Skip caching for real-time endpoints (/packets, /resolve-hops, /perf)
- Invalidate /stats, /nodes, /channels caches on WebSocket messages
- Deduplicate in-flight requests (same path returns same promise)
- Add cache hit rate to window.apiPerf() console debugging
- Update all cache busters in index.html
2026-03-20 02:03:25 +00:00
you
6bf5beafcb
merge: performance instrumentation
2026-03-20 01:49:19 +00:00
you
36bf6eac82
feat: performance instrumentation — server timing middleware, client API tracking, /api/perf endpoint, #/perf dashboard
2026-03-20 01:34:25 +00:00
you
af94065399
release: v2.0.1 — mobile packets UX
2026-03-20 01:19:19 +00:00
you
95db662c5a
merge: mobile packets improvements (v2.0.1)
2026-03-20 01:19:19 +00:00
you
5bca618b95
mobile: hide hash column by default
2026-03-20 01:15:49 +00:00
you
8128f86d9d
mobile packets: bottom sheet detail, collapsed filters, smaller table, fewer columns
...
- Mobile (≤640px) default columns: time, hash, type, details (hide region, observer, path, rpt, size)
- Detail panel hidden on mobile; tapping row opens slide-up bottom sheet (70vh max, close button, drag handle)
- Filter bar collapses to single 'Filters' toggle button on mobile
- Table font 11px, tighter padding, no min-width forcing horizontal scroll
- Panel-right completely hidden on mobile (no split layout)
2026-03-20 01:14:32 +00:00
you
10c1dad703
readme: GIF under Live Trace Map, iOS screenshot under Mobile Ready section
2026-03-20 01:09:48 +00:00
you
59ffac3348
readme: lead with GIF, resize iOS screenshot to 400px
2026-03-20 01:05:17 +00:00
you
989d5e4f3c
add screenshots for README
2026-03-20 01:02:38 +00:00
you
b0b4d5955a
add CHANGELOG.md
2026-03-20 01:01:40 +00:00
you
bd11a9c3cd
release: v2.0.0 — analytics, live VCR, mobile, accessibility, 100+ fixes
2026-03-20 01:00:16 +00:00
you
ec16c9faea
fix: mobile VCR bar bottom padding with safe-area + 20px fallback
2026-03-20 00:34:16 +00:00
you
4e1616fb61
fix: bump feed/legend safe-area offsets to account for two-row VCR on mobile
2026-03-20 00:33:24 +00:00
you
514ee825dd
fix: VCR bar + feed/legend offset by safe-area-inset-bottom with 34px fallback for iOS
2026-03-20 00:32:57 +00:00
you
7a0eaf9727
fix: VCR bar respects iOS safe area inset (home indicator)
2026-03-20 00:22:00 +00:00
you
bd9831be9a
Revert "release: v2.0.0 — analytics, mobile redesign, accessibility, 100+ fixes"
...
This reverts commit 0c52ecfcdb .
2026-03-20 00:05:51 +00:00
you
0c52ecfcdb
release: v2.0.0 — analytics, mobile redesign, accessibility, 100+ fixes
2026-03-20 00:04:30 +00:00
you
75bf3bce51
fix: rotation — JS-driven height (window.innerHeight) on live-page+app, runs immediately + on every resize/orientation/visualViewport change
2026-03-19 23:54:18 +00:00
you
52dde28a70
mobile VCR: proper two-row layout — controls+scope+LCD row, full-width timeline row, no horizontal scroll
2026-03-19 23:49:06 +00:00
you
a13608fcef
mobile: hide feed+legend, show LCD, fix rotation with visualViewport + forced height recalc
2026-03-19 23:47:43 +00:00
you
8fb476a0d6
fix: comprehensive mobile responsive fixes for all pages
...
Live page (priority):
- Fix feed panel max-height from 180px to 40vh (was clipping content)
- Fix VCR bar: bump breakpoint from 600px to 640px, hide LCD, ensure
no wrapping, increase touch targets to 44px min
- Remove rogue ≤600px rules that hid feed/legend/toggle entirely
- Fix legend toggle: was using inverted logic (legend-mobile-hidden
toggled off instead of legend-mobile-visible toggled on)
- Header: constrain width to viewport, reduce padding/font on mobile
- Feed detail card: add max-height 50vh + overflow-y auto to prevent
clipping off screen
- Disable feed resize handle on mobile (not practical for touch)
- Ensure Leaflet zoom controls clear mobile header
Packets page:
- panel-left gets min-height 50vh + overflow-x with -webkit touch scrolling
- data-table gets min-width 500px so it scrolls horizontally instead of
collapsing columns to nothing
- panel-right removes max-height 50vh cap (was hiding detail panel)
- Filter bar buttons get 44px min touch target
- Node filter wrap goes full width
Nodes page:
- Node count pills wrap properly
- Smaller font on count pills for narrow screens
Analytics pages:
- analytics-grid goes single column on mobile
- analytics-page reduces padding
Style fixes (global):
- Filter bar gap reduced to 4px on mobile
- All cache busters updated
2026-03-19 23:44:44 +00:00
you
265283448f
mobile live: hide feed+legend, keep LCD visible
2026-03-19 23:41:42 +00:00
you
d64778326f
fix: remove stray CSS fragment corrupting live.css
2026-03-19 23:40:46 +00:00
you
61495e0caf
fix: live map tiles swap instantly on theme toggle via MutationObserver
2026-03-19 23:40:09 +00:00
you
4a19c7381e
fix: legend bottom 12px→58px to clear VCR bar
2026-03-19 23:38:33 +00:00
you
ddcb9e7f1d
fix: mobile — dvh for proper viewport height, VCR bar no-wrap, LCD hidden on small screens, orientation triple-invalidate, feed-detail-card bottom aligned
2026-03-19 23:35:09 +00:00
you
c277bb36e4
fix: VCR bar properly sized — bigger buttons, taller timeline (28px), comfortable padding
2026-03-19 23:32:52 +00:00
you
ecf1b03421
fix: VCR bar much thinner — 3px padding, 12px timeline, feed bottom 40px; removed dead CSS
2026-03-19 23:26:52 +00:00
you
61d6c7daa5
fix: VCR bar — flatten to single row, thinner timeline (16px), remove stacked layout that caused weird gray band
2026-03-19 23:19:19 +00:00
you
2539e4c098
UX: move analytics/copy URL buttons to top of node detail; live feed close/resize more visible; VCR bar labeled
2026-03-19 23:12:30 +00:00
you
5e315e615a
feat: packets view — ★ My Nodes toggle filters to only claimed/favorited node packets
2026-03-19 23:09:44 +00:00
you
56e717f1d9
fix: claimed nodes always fetched even if not in current page; auto-sync claimed→favorites
2026-03-19 23:07:49 +00:00
you
1aaf44b2af
fix: favorites dropdown transparent bg (var(--surface) didn't exist); live map uses light/dark tiles based on theme
2026-03-19 23:05:28 +00:00
you
62349af52d
feat: claimed nodes get visual distinction — blue tint, left accent border, ★ badge
2026-03-19 23:04:41 +00:00
you
9e4c282f29
fix: node analytics — compact layout, add descriptions to every stat card and chart
2026-03-19 23:01:16 +00:00
you
b9782bdd0b
fix: network status computed server-side across ALL nodes, not just top 50
2026-03-19 22:57:19 +00:00
you
75d3131dfd
fix: move bulk-health route before ALL :pubkey wildcards (not just /health)
2026-03-19 22:54:26 +00:00
you
dc62339cbf
fix: live page respects dark/light theme — replace hardcoded colors with CSS variables
2026-03-19 22:52:18 +00:00
you
8897057aa8
fix: move bulk-health route before :pubkey wildcard — Express route ordering
2026-03-19 22:49:24 +00:00
you
fcb4a80801
perf: bulk health endpoint — single API call replaces 50 individual health requests for Nodes tab
2026-03-19 22:46:24 +00:00
you
035b4beb20
fix: hash matrix — free prefixes show actual hex code (e.g. 'A7') instead of dots
2026-03-19 22:45:14 +00:00
you
2751b04436
fix: nodes tab — unwrap {nodes} from API response
2026-03-19 22:44:00 +00:00
you
b4ea97362e
fix: hash matrix color scheme — empty=subtle, 1=light green, 2+=orange→red progression
2026-03-19 22:43:21 +00:00
you
fdf5555eb6
fix: hash matrix — bigger font, remove ⚠ clutter, use · for empty cells; collision risk sorted closest-first
2026-03-19 22:41:01 +00:00
you
798f96f97d
feat: add Nodes tab to global analytics — status overview, role breakdown, claimed nodes, leaderboards (activity, signal, observers, recent)
2026-03-19 22:40:03 +00:00
you
0ee2830f59
fix: claimed (My Mesh) nodes sort to top, then favorites, then rest
2026-03-19 22:36:33 +00:00
you
341dd1fec3
fix: analytics page scroll — add overflow-y:auto to wrapper
2026-03-19 22:35:50 +00:00
you
134c6a989a
fix: favorited (claimed) nodes always sort to top of nodes list
2026-03-19 22:34:50 +00:00