Commit Graph
482 Commits
Author SHA1 Message Date
you 6f8cd2eac0 Matrix: reworked map visibility + dimmer markers
- Replaced sepia+hue-rotate chain with grayscale+brightness+contrast
- Green tint via ::before (multiply) + ::after (screen) overlays
- Much brighter base map — roads/coastlines/land clearly visible
- Markers dimmed to #005f15 at 40% opacity
- DivIcon markers at 35% brightness
2026-03-22 07:20:06 +00:00
you 13d781fcd9 Matrix: significantly brighter map tiles (0.35->0.55, contrast 1.5) 2026-03-22 07:18:39 +00:00
you 0f8e886984 Matrix mode disables heat map (incompatible combo)
Unchecks and greys out Heat toggle when Matrix is on. Restores on off.
2026-03-22 07:17:27 +00:00
you 9cfd452910 Matrix: higher contrast for land/ocean distinction 2026-03-22 07:16:51 +00:00
you 95ce48543c Matrix: green-tinted map tiles via sepia+hue-rotate filter chain
Roads, coastlines, terrain features now have faint green outlines
instead of just being dimmed to grey.
2026-03-22 07:16:32 +00:00
you d93ff1a1e7 Matrix: dim node markers to let hex bytes stand out
Markers #00aa2a (darker green), DivIcon filter brightness 0.6
2026-03-22 07:15:54 +00:00
you 3102d15e45 Matrix theme: brighten map tiles (0.15 -> 0.3), slight saturation 2026-03-22 07:15:07 +00:00
you 556359e9db Matrix theme: full map visual overhaul when Matrix mode enabled
- Map tiles desaturated + darkened to near-black with green tint
- CRT scanline overlay with subtle flicker animation
- All node markers re-tinted to Matrix green (#00ff41)
- Feed panel: dark green background, monospace font, green text
- Controls/VCR bar: green-on-black theme
- Node detail panel: green themed
- Zoom controls, attribution: themed
- Node labels glow green
- Markers get hue-rotate filter (except matrix hex chars)
- Restores all original colors when toggled off
2026-03-22 07:13:30 +00:00
you c47e8947c6 Fix Matrix mode null element errors
getElement() returns null when DivIcon not yet rendered to DOM.
Null-guard all element access in drawMatrixLine interval and fadeout.
2026-03-22 07:10:40 +00:00
you e76e63b80d Add Matrix visualization mode for live map
New toggle in live map controls: 'Matrix' - animates packet hex bytes
flowing along paths in green Matrix-style rain effect.

- Hex bytes from actual packet raw_hex data flow along each hop
- Green (#00ff41) monospace characters with neon glow/text-shadow
- Trail of 8 characters with progressive fade
- Dim green trail line underneath
- Falls back to random hex if no raw data available
- Persists toggle state to localStorage
- Works alongside existing Realistic mode
2026-03-22 07:07:21 +00:00
you cf3a8fe2f4 fix: null-guard all animation entry points (pulseNode, animatePath, drawAnimatedLine)
All animation functions now bail early if animLayer/pathsLayer are null,
preventing cascading errors from setInterval callbacks after navigation.
2026-03-22 05:08:06 +00:00
you 620458be8b docs: update v2.4.1 notes with pause fix 2026-03-22 05:01:38 +00:00
you 1050aa52d9 fix: pause button delegation on document instead of app element v2.4.1 2026-03-22 04:59:45 +00:00
you e8d9aa6839 v2.4.1 — hotfix for ingestion, WS, and animation regressions 2026-03-22 04:57:29 +00:00
you daa84fdd73 fix: null-guard animLayer/pathsLayer in animation cleanup
setInterval callbacks fire after navigating away from live map,
when layers are already destroyed.
2026-03-22 04:52:45 +00:00
you 01df3c70d8 fix: null-guard multi-select menu close handler
observerFilterWrap/typeFilterWrap don't exist when document click
fires before renderLeft completes.
2026-03-22 04:49:51 +00:00
you 368fef8713 Remove debug console.log from packets WS handler 2026-03-22 04:47:10 +00:00
you 657653dd3b fix: pause button crash killed WS handler registration
getElementById('pktPauseBtn') was null because button is rendered by
loadPackets() which runs async. Crash at line 218 prevented wsHandler
from being registered at line 260. Moved to data-action event delegation
which works regardless of render timing.
2026-03-22 04:45:04 +00:00
you 11828a321a debug: add WS handler logging to packets page 2026-03-22 04:42:41 +00:00
you f09e338dfa fix: WS broadcast had null packet when observation was deduped
getById() returns null for deduped observations (not stored in byId).
Client filters on m.data.packet being truthy, so all deduped packets
were silently dropped from WS. Fallback to transmission or raw pktData.
2026-03-22 04:38:07 +00:00
you 87672797f9 docs: add ingestion regression to v2.4.0 changelog 2026-03-22 01:23:36 +00:00
you b337da6461 fix: packet-store insert() returned undefined after insertPacket removal
Was returning undeclared 'id' variable. Now returns observationId or
transmissionId. This broke all MQTT packet ingestion on prod.
2026-03-22 01:22:21 +00:00
you bd32aa9565 docs: tone down v2.4.0 description 2026-03-22 01:13:47 +00:00
you 60219ae02a v2.4.0 — The Observatory
Multi-select filters, time window selector, pause button, hex paths toggle,
legacy DB migration, pure client-side filtering, distance analytics,
observation drill-down, and 20+ bug fixes.

Full changelog: CHANGELOG.md
v2.4.0
2026-03-22 01:12:20 +00:00
you 5e28fb15c9 Fix time window: remove label, self-descriptive options, restore saved value before first load 2026-03-22 01:10:32 +00:00
you 98f958641a Add pause/resume button to packets page for live WS updates 2026-03-22 01:08:19 +00:00
you 3a8d92e39b Replace packet count limit with time window selector
- Add time window dropdown (15min default, up to 24h or All)
- Use 'since' param instead of fixed limit=10000
- Persist selection to localStorage
- Keep limit=50000 as safety net
2026-03-22 01:06:46 +00:00
you 0f8d63636b Increase default packet limit from 100 to 10,000
Filtering is client-side now, so load everything upfront.
2026-03-22 01:01:21 +00:00
you 132ab60e06 Fix header row observer display when filtering by observer 2026-03-22 00:57:55 +00:00
you c123ee731d Fix multi-select filters: client-side filtering, no unnecessary API calls
- Remove type/observer params from /api/packets calls (server ignores them)
- Add client-side type/observer filtering in renderTableRows()
- Change filter handlers to re-render instead of re-fetch
- Update displayed count to reflect filtered results
2026-03-22 00:57:11 +00:00
you 0fb586730b docs: update v2.4.0 release notes — multi-select filters, hex paths toggle, DB migration 2026-03-22 00:56:48 +00:00
you 7e304e60d5 fix: hex toggle calls renderTableRows (was undefined renderTable), rename to 'Hex Paths' with descriptive tooltip 2026-03-22 00:46:21 +00:00
you 9171eecc69 Drop legacy packets + paths tables on startup, remove dead code
Migration runs automatically on next startup — drops paths first (FK to
packets), then packets. Removes insertPacket(), insertPath(), all
prepared statements and references to both tables. Server-side type/
observer filtering also removed (client does it in-memory).

Saves ~2M rows (paths) + full packets table worth of disk.
2026-03-22 00:45:27 +00:00
you 552ba2f970 Add hex hash toggle to packets page filter bar 2026-03-22 00:34:46 +00:00
you 3ff29519b4 Fix multi-select filters (AND→OR) and add localStorage persistence
- Server: support comma-separated type filter values (OR logic)
- Server: add observer_id filtering to /api/packets endpoint
- Client: fix type and observer filters to use OR logic for multi-select
- Client: persist observer and type filter selections to localStorage
- Keys: meshcore-observer-filter, meshcore-type-filter
2026-03-22 00:34:38 +00:00
you 39c1782881 docs: tone down v2.4.0 release notes 2026-03-22 00:24:46 +00:00
you cbd13c00d6 docs: v2.4.0 release notes — The Observatory 2026-03-22 00:22:32 +00:00
you 4b1c1c3f22 Convert Observer and Type filters to multi-select checkbox dropdowns
- Replace single-select dropdowns with multi-select checkbox menus
- Add .multi-select-* CSS classes (reusable, styled like region filter)
- Observer: comma-separated IDs, shows count/name/All Observers
- Type: comma-separated values, shows count/name/All Types
- Bug fix: filter group children by selected observer(s) when expanded
- Close dropdowns on outside click
2026-03-22 00:21:41 +00:00
you 0d3b12d40a fix: sort help tooltip renders below icon instead of above (behind navbar) 2026-03-22 00:20:02 +00:00
you e000db438c fix: sort help tooltip uses real DOM element instead of CSS attr()
CSS content:attr() doesn't support newlines in any browser. Replaced
with a real <span> child element with white-space:pre-line, shown on
hover via .sort-help:hover .sort-help-tip { display: block }.
2026-03-22 00:17:04 +00:00
you 09f6f106ba fix: sort help uses CSS tooltip instead of title attribute
Native title tooltips are unreliable (delayed, sometimes not shown).
Replaced with CSS ::after pseudo-element tooltip using data-tip attr.
Shows immediately on hover with proper formatting.
2026-03-22 00:15:33 +00:00
you a299798b31 fix: sort help tooltip — set title via JS so newlines render
HTML entities like &#10; don't work inside JS template literals
(inserted as literal text). Setting .title via JS with actual \n
newlines works correctly in browser tooltips.
2026-03-22 00:13:03 +00:00
you 181fddf196 fix: ungrouped mode flattens observations into individual rows
When Group by Hash is off, fetches all observations for multi-obs
packets and flattens them into individual rows showing each observer's
view. Previously just showed grouped transmissions without expand arrows.
2026-03-22 00:12:16 +00:00
you 2ae467bc72 fix: region box alignment, column checkboxes, sort help, dark mode active btn
- Region filter container: remove margin-bottom, use inline-flex align
- Column dropdown checkboxes: 14x14px to match region dropdown
- Sort help ⓘ: use &#10; for newlines in title (\n doesn't render)
- Dark mode: .filter-bar .btn.active now retains accent background
  (dark theme override was clobbering the active state)
2026-03-22 00:08:00 +00:00
you a11ace77ac Polish filter bar: consistent sizing, logical grouping with separators, tooltips
- All filter-bar controls now exactly 34px tall with line-height:1 and border-radius:6px
- col-toggle-btn matched to same height/font-size as other controls
- Controls grouped into 4 logical sections (Filters, Display, Sort, Columns) with vertical separators
- Added title attributes with helpful descriptions to all controls
- Added sort help icon (ⓘ) with detailed tooltip explaining each sort mode
- Mobile responsive: separators hidden on small screens
2026-03-22 00:00:02 +00:00
you b1c2e817fa fix: shrink region dropdown checkboxes to 14px 2026-03-21 23:55:18 +00:00
you 3d31afd0ec fix: resolve hops after sort changes header paths
When sort updates header row path_json, new hop hashes may not be in
hopNameCache. Now resolves unknown hops before re-rendering.
2026-03-21 23:54:49 +00:00
you 28ac094d83 fix: normalize filter bar heights + widen region dropdown
All filter bar controls now share: height 34px, font-size 13px,
border-radius 6px, same padding. Region dropdown trigger matches
other controls, menu widened to 220px with white-space:nowrap to
prevent text wrapping.
2026-03-21 23:53:36 +00:00
you 8c4b3f029f fix: sort change fetches observations for all visible groups
When switching to a non-Observer sort, batch-fetches observations for
all visible multi-observation groups that haven't been expanded yet.
Header rows update immediately without needing manual expand.
2026-03-21 23:52:20 +00:00
you 3b1e16a1d6 feat: sort header reflects first sorted child + asc/desc for path & time
- Header row (observer, path) updates to match the first child after sort
- Path sort: ascending (shortest first) and descending (longest first)
- Chronological: ascending (earliest first) and descending (latest first)
- Observer mode unchanged
2026-03-21 23:49:01 +00:00