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
you
95929258b1
Add per-node analytics page with charts, stats, and heatmap
...
- New route: #/nodes/:pubkey/analytics with Chart.js v4 visualizations
- Activity timeline (bar), SNR trend (line), packet type breakdown (doughnut)
- Observer coverage (horizontal bar), hop distribution (bar)
- Uptime heatmap (7x24 CSS grid, GitHub-style)
- Peer interactions table with links to node details
- Stat cards: availability, signal grade, packets/day, relay %, silence
- Time range selector: 24h / 7d / 30d / All
- Server: GET /api/nodes/:pubkey/analytics with full aggregation in SQLite
- Analytics button added to both sidebar and full-screen node views
2026-03-19 22:31:09 +00:00
you
55f49eebe6
fix: merge Recent Adverts + Recent Activity into single Recent Packets section
2026-03-19 22:21:54 +00:00
you
25b31117ff
feat: richer node detail — status badge, avg SNR/hops, observer breakdown table, totalPackets
2026-03-19 22:17:00 +00:00
you
a7035be2a8
fix: add QR code to full-screen node detail view, bump cache buster
2026-03-19 22:11:04 +00:00
you
2c8b9d53a5
fix: restore proper advert-entry markup, bump cache buster
2026-03-19 22:08:43 +00:00
you
40eb3b9558
fix: add cache busters to all JS and CSS files
2026-03-19 22:07:33 +00:00
you
686387649e
debug: Recent Adverts sidebar — plain HTML, no CSS classes, hardcoded colors, to find rendering issue
2026-03-19 22:07:03 +00:00
you
492204cc03
fix: Recent Adverts shows packet type + observer + explicit text color, handles missing timestamp
2026-03-19 21:57:25 +00:00
you
94c5ae0bee
fix: role-aware status thresholds — repeaters/rooms 24h/72h, companions/sensors 1h/24h
2026-03-19 21:54:02 +00:00
you
5790db4859
fix: always show QR code in node detail, add Recent Adverts section to sidebar detail
2026-03-19 21:53:22 +00:00
you
babae62f94
fix: map markers use distinct shapes (diamond/circle/square/triangle) + high-contrast colors for accessibility
2026-03-19 21:49:40 +00:00
you
1cbb5f3525
fix: remove dead Regions column from nodes table ( closes #26 )
2026-03-19 21:48:32 +00:00
you
873c457fa7
fix: column resize steals from ALL right columns proportionally, wider grab handle, 50px min
2026-03-19 21:46:02 +00:00
you
e417ca9471
fix: restore geographic prefix disambiguation for route overlay
2026-03-19 21:41:58 +00:00
you
0ac5d4d2c7
fix: don't fitBounds on initial load — respect Bay Area default center
2026-03-19 21:39:38 +00:00
you
3ffcf9f3b8
fix: VCR replay paginates — fetches next 10k when buffer exhausted instead of jumping to live
2026-03-19 21:33:55 +00:00
you
d0fa45a365
Replace hardcoded section-row background with CSS variable for dark mode
...
closes #32
2026-03-19 21:32:58 +00:00
you
9c236a27fe
Add empty/error states to data tables with aria-live for accessibility
...
closes #31
2026-03-19 21:32:54 +00:00
you
9712ae4845
Add SRI integrity hashes to Leaflet CDN scripts
...
closes #30
2026-03-19 21:32:48 +00:00
you
4a0c5cf302
Remove dead code: svgLine(), .vcr-clock, .vcr-lcd-time display:none rules
...
closes #29
2026-03-19 21:32:43 +00:00
you
38fa35f385
Remove duplicate escapeHtml and debounce functions, keep globals in app.js
...
closes #28
2026-03-19 21:32:39 +00:00
you
4d2428b144
fix: VCR scrub fetches ASC from scrub point — prevents jumping forward when >10k packets exist
2026-03-19 21:32:26 +00:00
you
10bb9b191f
fix: restore vcrReplayFromTs fetch limit to 10000 — 2000 caused rubber banding on scrub
2026-03-19 21:30:01 +00:00
you
5d086bc4f9
fix: home page accessibility and UI issues
...
closes #25 — Widen home page content from 720px to 1200px
closes #35 — Checklist accordion keyboard accessible (role=button, tabindex, aria-expanded, Enter/Space)
closes #36 — Search suggestions ARIA combobox pattern (role=combobox/listbox/option, aria-expanded, aria-activedescendant)
closes #37 — My Node cards keyboard-focusable (tabindex=0, role=button, keydown handler)
closes #38 — Remove button on node cards gets aria-label
closes #39 — Timeline items keyboard accessible (tabindex=0, role=button, keydown handler)
closes #40 — Suggest-claim button meets 44px min touch target
closes #41 — My Nodes grid min lowered to 300px to prevent overflow on 375-640px
closes #42 — Stats cards use CSS grid with minmax(140px, 200px) for wide screens
closes #43 — escapeHtml applied consistently to payloadTypeName in timeline
closes #44 — Sparkline classes namespaced to home-spark-* to avoid collision
closes #45 — Error state uses fallback color var(--status-red, #ef4444)
2026-03-19 21:12:03 +00:00
you
da5a227c71
fix: VCR timeline tooltip on touch devices
...
Add touchmove/touchend handlers to show the time tooltip during touch
scrubbing on the timeline, mirroring the existing mousemove behavior.
closes #19
closes #27
closes #54
closes #57
closes #58
closes #59
closes #60
closes #61
closes #62
closes #63
closes #64
Additional fixes in this commit:
- #27 : Add drag resize handle on feed panel right edge, persist width to localStorage
- #54 : Add aria-describedby to heat/ghost toggles with sr-only descriptions
- #57 : Refactor legend to use semantic ul/li with descriptive text, h3 headings
- #58 : Wrap scope buttons in role=radiogroup, add role=radio and aria-checked
- #59 : Add role=alertdialog to VCR prompt, auto-focus first button on show
- #60 : Add legend toggle button visible on mobile to show/hide legend overlay
- #61 : Position feed detail card as full-width bottom sheet on mobile
- #62 : Add pin button to nav bar to prevent auto-hide
- #63 : Adjust VCR.playhead when buffer is spliced to prevent stale indices
- #64 : Standardize fetch limits to 2000 for both vcrRewind and vcrReplayFromTs
2026-03-19 21:11:59 +00:00
you
3bd2bf648f
Fix 10 UI bugs in map and nodes pages
...
- Map controls panel collapsible with toggle button, default collapsed on mobile (closes #16 )
- jumpToRegion filters nodes by region observers instead of fitting all (closes #33 )
- Detail panel Leaflet maps tracked and removed on re-selection (closes #34 )
- Popup HTML uses semantic dl/dt/dd instead of table (closes #46 )
- fitBounds now tracks user interaction instead of savedView const (closes #47 )
- esc() replaced with safeEsc fallback for implicit global safety (closes #48 )
- Checkboxes in map controls have explicit for/id association (closes #49 )
- Sort columns have aria-sort attributes (closes #50 )
- Filter selects have aria-label attributes (closes #51 )
- Back button uses addEventListener instead of inline onclick (closes #52 )
- Detail panel map height increased to 280px on desktop (closes #53 )
2026-03-19 21:11:46 +00:00
you
ca2d5cedeb
fix: chat message bubble max-width constraint
...
closes #21
2026-03-19 21:11:28 +00:00
you
e8ab1b2de3
fix: packets accessibility — remove stopPropagation, add aria-live, add touch resize
...
closes #67
closes #68
closes #69
2026-03-19 21:11:15 +00:00
you
0558efafff
fix: observers table horizontal scroll wrapper on mobile
...
closes #20
2026-03-19 21:11:04 +00:00
you
4052b1e014
fix: hash matrix mobile overflow and scatter plot color-blind accessibility
...
closes #17
closes #24
2026-03-19 21:11:04 +00:00
you
c7601f1479
fix: Excel-like column resize — drag steals from neighbor, percentages persist, panel drag reflows proportionally
2026-03-19 21:04:15 +00:00
you
b1baad00e5
fix: explicitly set left panel + table width during drag for live column reflow
2026-03-19 21:01:01 +00:00