Commit Graph
100 Commits
Author SHA1 Message Date
l5y 608d1e0396 bump version to 0.2.1 (#134) 2025-09-20 20:59:21 +02:00
l5y 63787454ca Fix dark mode tile styling on new map tiles (#132)
* Ensure dark mode styling applied to new map tiles

* Ensure dark mode filters apply to new map tiles

* Improve map tile filter handling
2025-09-20 18:13:18 +02:00
l5y 55c1384f80 Switch map tiles to OSM HOT and add theme filters (#130)
* Switch map tiles to OSM HOT and add theme filters

* Ensure OSM tiles are filtered for theme modes

* Ensure tile filters update when toggling dark mode

* run rufo
2025-09-19 23:02:55 +02:00
l5y 6750d7bc12 Add footer version display (#128)
* Add footer version display

* Ensure footer version text matches spec
2025-09-19 11:22:28 +02:00
l5y d33fcaf5db Add responsive controls for map legend (#129) 2025-09-19 11:21:00 +02:00
l5y 7974fd9597 update changelog (#119) 2025-09-17 16:57:32 +02:00
l5y dcb512636c update readme for 0.2 (#118)
* update readme for 0.2

* update readme for 0.2

* update readme for 0.2

* update readme for 0.2
2025-09-17 10:23:36 +02:00
l5y 7c6bf801e9 Add PotatoMesh logo to header and favicon (#117)
* Add PotatoMesh logo to header and favicon

* Ensure header logo remains visible

* update svg
2025-09-17 10:12:35 +02:00
l5y 71e9f89aae Harden API auth and request limits (#116)
* Harden API auth and request limits

* run rufo
2025-09-17 08:00:25 +02:00
l5y 0936c6087b Add sortable node table columns (#114) 2025-09-17 07:06:13 +02:00
l5y 95e3e8723a Add short name overlay for node details (#111)
* Add node details overlay for short names

* Simplify short info overlay layout
2025-09-16 23:22:41 +02:00
l5y 671a910936 Adjust python ingestor interval to 60 seconds (#112) 2025-09-16 21:07:53 +02:00
l5y 3b64e829a8 Hide location columns on medium screens (#109) 2025-09-16 19:43:31 +02:00
l5y 84ed739a61 Handle message updates based on sender info (#108)
* Handle message updates based on sender info

* run rufo
2025-09-16 19:41:56 +02:00
l5y cffdb7dca6 Prioritize node posts in queued API updates (#107)
* Prioritize node posts in queued API updates

* run black
2025-09-16 19:30:38 +02:00
l5y 4182a9f83c Add auto-refresh toggle (#105) 2025-09-16 19:21:54 +02:00
l5y 9873f6105d Adjust Leaflet popup styling for dark mode (#104)
* Adjust Leaflet popup styling for dark mode

* some css fixing
2025-09-16 17:14:36 +00:00
l5y 8d3829cc4e feat: add site info overlay (#103) 2025-09-16 19:00:31 +02:00
l5y e424485761 Add long name tooltip to short name badge (#102) 2025-09-16 18:58:29 +02:00
l5y baf7f5d137 Ensure node numeric aliases are derived from canonical IDs (#101)
* Derive node numeric aliases when missing

* Preserve raw message senders when storing payloads

* Normalize packet message sender ids when available

* run rufo
2025-09-16 18:41:49 +02:00
l5y 3edf60c625 chore: clean up repository (#96)
* chore: clean up repository

* Fix message spec node lookup for numeric IDs (#98)

* Fix message spec node lookup for numeric IDs

* run rufo

* Fix message node fallback lookup (#99)
2025-09-16 15:25:12 +02:00
l5y 1beb343501 Handle SQLite busy errors when upserting nodes (#100) 2025-09-16 15:24:01 +02:00
l5y 0c0f877b13 Configure Sinatra logging level from DEBUG flag (#97)
* Configure Sinatra logging level

* Fix logger level helper invocation

* Fix Sinatra logger helper definition syntax
2025-09-16 14:46:50 +02:00
l5y f7a1b5c5ad Add penetration tests for authentication and SQL injection (#95) 2025-09-16 13:13:57 +02:00
l5y 051d09dcaf Document Python and Ruby source modules (#94) 2025-09-16 13:13:12 +02:00
l5y eb900aecb6 Add tests covering mesh helper edge cases (#93)
* test: expand coverage for mesh helpers

* run black
2025-09-16 12:48:01 +02:00
l5y f16393eafd fix py code cov (#92) 2025-09-16 12:10:17 +02:00
l5y 49dcfebfb3 Add Codecov coverage and test analytics for Python CI (#91) 2025-09-16 12:04:46 +02:00
l5y 1c13b99f3b Skip null fields when choosing packet identifiers (#88) 2025-09-16 11:56:02 +02:00
l5y 54a1eb5b42 create python yml ga (#90)
* Create python.yml

* ci: add black

* run an actual formatter

* also add rufo

* fix pytest

* run black
2025-09-16 11:50:33 +02:00
l5y 2818c6d2b8 Add unit tests for mesh ingestor script (#89) 2025-09-16 11:44:28 +02:00
l5y f4aa5d3873 Add coverage for debug logging on messages without sender (#86)
* Add debug logging spec for messages without sender

* Route debug logging through Kernel.warn

* Relax debug log matchers
2025-09-16 11:33:03 +02:00
l5y 542f4dd0e2 Handle concurrent node snapshot updates (#85) 2025-09-16 11:10:11 +02:00
l5y 4a72cdda75 Fix extraction of packet sender ids (#84) 2025-09-16 10:35:11 +02:00
l5y 4b9d581448 Add coverage for API authentication and payload edge cases (#83) 2025-09-16 10:18:10 +02:00
l5y 1d3b3f11e9 Add Codecov test analytics to Ruby workflow (#82) 2025-09-16 10:12:25 +02:00
l5y e97824fd0b Configure SimpleCov for Codecov coverage (#81) 2025-09-16 09:58:44 +02:00
l5y 1cd9058685 update codecov job (#80)
* update codecov job

* add codecov condif
2025-09-16 09:55:53 +02:00
l5y 47e23ea14c fix readme badges (#79)
* fix readme badges

* fix readme badges
2025-09-16 09:46:44 +02:00
l5y afd18794c7 Add Codecov upload step to Ruby workflow (#78) 2025-09-16 09:43:09 +02:00
l5y 203bd623bd Add Apache license headers to source files (#77)
* Add Apache license headers to source files

* fix formatting
2025-09-16 09:39:28 +02:00
l5y 2b6b44a31d Add integration specs for node and message APIs (#76) 2025-09-16 09:29:31 +02:00
l5y 0059a6aab3 docs: update for 0.2.0 release (#75)
* docs: update for 0.2.0 release

* docs: add scrot 0.2
2025-09-16 09:23:11 +02:00
l5y fc30a080ff create ruby workflow (#74)
* create ruby workflow

* add step for dependencies

* bump ruby version

* Set up Ruby action in web directory
2025-09-16 08:52:33 +02:00
l5y 7399c02be9 Add RSpec tests for app boot and database setup (#73) 2025-09-16 08:25:13 +02:00
l5y 02e985d2a8 Align refresh controls with status text (#72)
* Align refresh controls with status text

* Improve mobile alignment for refresh controls
2025-09-16 08:21:15 +02:00
l5y 954352809f spec: update testdata 2025-09-16 08:11:11 +02:00
l5y 7eb36a5a3d remove duplication 2025-09-15 21:35:59 +02:00
l5y 0768b4d91a Improve mobile layout (#68)
* Improve mobile layout

* styling tweaks
2025-09-15 21:32:56 +02:00
l5y be1306c9c0 Normalize message sender IDs using node numbers (#67) 2025-09-15 21:04:29 +02:00
l5y 7904717597 style: simplify node table (#65) 2025-09-15 18:16:36 +02:00
l5y e2c19e1611 Add debug logging for missing from_id (#64) 2025-09-15 18:15:46 +02:00
l5y b230e79ab0 Handle nested dataclasses in node snapshots (#63) 2025-09-15 14:59:23 +02:00
l5y 31727e35bb add placeholder for default frequency 2025-09-15 14:48:12 +02:00
l5y 22127bbfb4 ignore log files 2025-09-15 14:44:32 +02:00
l5y 413278544a Log node object on snapshot update failure (#62) 2025-09-15 14:34:56 +02:00
l5y 580a588df7 Run schema initialization only when database or tables are missing (#61) 2025-09-15 14:05:01 +02:00
l5y b39b83fb51 Send mesh data to Potatomesh API (#60)
* feat: post mesh data to API

* Serialize node objects before posting

* don't put raw json in api/db
2025-09-15 14:00:48 +02:00
l5y 6d948603c9 Convert boolean flags to integers for SQLite (#59) 2025-09-15 13:37:30 +02:00
l5y 648bcc9b92 Use packet id as message primary key (#58)
* Use packet id as message primary key

* fix query

* fix query
2025-09-15 13:34:59 +02:00
l5y 4dc1227be7 Add POST /api/messages and enforce API token (#56) 2025-09-15 13:13:47 +02:00
l5y 3b097feaae Update README.md 2025-09-15 12:17:45 +02:00
l5y da2e5fbde1 feat: parameterize community info (#55)
* feat: parameterize community info

* chore: restore test data and document env defaults

* also make default channel configurable
2025-09-15 12:15:51 +02:00
l5y 003db7c36a feat: add dark mode toggle (#54)
* feat: add dark mode toggle

* fix chat colors in dark mode
2025-09-15 11:53:49 +02:00
l5y 9aa640338d Update README.md 2025-09-15 11:44:44 +02:00
l5y 3c24b71f16 ignore copies 2025-09-15 11:42:27 +02:00
l5y eee6738a9c add changelog 2025-09-15 08:49:12 +02:00
l5y 47a162be3e add test database 2025-09-15 08:41:18 +02:00
l5y de6dcad9b4 add messages test data 2025-09-15 08:39:13 +02:00
l5y 57816908c8 update readme 2025-09-15 08:32:55 +02:00
l5y 46a1105f29 update readme 2025-09-15 08:28:55 +02:00
l5y 29dba74038 run linter 2025-09-15 08:04:07 +02:00
l5y e3999e2b3b Create dependabot.yml 2025-09-15 08:03:28 +02:00
l5y aa6a53a1a4 remove monthly stats 2025-09-15 07:45:34 +02:00
l5y a3e625565e Show daily node count in title and header (#49) 2025-09-15 07:03:54 +02:00
l5y 96a7b936f1 Add daily date separators to chat log (#47)
* Add daily divider to chat log

* improve date and time stamps
2025-09-14 23:59:30 +02:00
l5y 737d2016e6 feat: make frontend responsive for mobile (#46) 2025-09-14 23:50:42 +02:00
l5y 547518a105 Harden mesh utilities (#45) 2025-09-14 22:02:06 +02:00
l5y 7773bfc331 minor style tweaks 2025-09-14 21:30:11 +02:00
l5y 9dbca51118 filter map nodes beyond Berlin radius (#43) 2025-09-14 21:24:25 +02:00
l5y 6c454e860e Show active node counts in refresh info (#44) 2025-09-14 21:23:36 +02:00
l5y 27d4ed39db Limit chat log and highlight short names by role (#42)
* Limit chat log size and style short names

* Escape short names in HTML rendering
2025-09-14 21:22:19 +02:00
l5y 7008804ae2 Cast SQLite timestamps to integers (#40) 2025-09-14 21:07:17 +02:00
l5y b9c5d88cb9 Escape chat message and node entries (#39) 2025-09-14 20:23:38 +02:00
l5y 66c0d74776 Sort chat entries by timestamp (#38)
* Sort chat entries by timestamp

* Add nodes only when rendered to avoid skipping on message fetch errors
2025-09-14 20:23:21 +02:00
l5y 3d8c1582bd feat: append messages to chat log (#36)
* feat: append messages to chat

* append some chat styling
2025-09-14 19:54:19 +02:00
l5y 6c6e040e21 Validate future times for nodes (#35) 2025-09-14 19:38:52 +02:00
l5y 334e21d674 Optimize web frontend and Ruby app (#32)
* Optimize web app and cleanup

* Refine node rendering and front-end timing
2025-09-14 19:31:28 +02:00
l5y a1cabec150 Add messages API endpoint with node details (#33)
* Add messages API endpoint with node details

* Preserve message SNR when joining nodes
2025-09-14 19:29:44 +02:00
l5y 6094609a86 Ensure last_heard never precedes position time (#31) 2025-09-14 17:53:37 +02:00
l5y 2ca87eb847 refactor: replace deprecated utcfromtimestamp (#30) 2025-09-14 17:52:54 +02:00
l5y 63e8891d97 Add optional debug logging for node and message operations (#29) 2025-09-14 13:43:37 +02:00
l5y c52b917f84 switch to pubsub for message parsing 2025-09-14 13:35:58 +02:00
l5y 72a0150006 data: enable serial collection of messages on channel 0 (#25)
* data: enable serial collection of messages on channel 0

* remove tests
2025-09-14 11:37:56 +02:00
l5y a22b103a28 add backups to gitignore 2025-09-14 11:18:02 +02:00
l5y bcaa9dc1a9 sort chat nodes by first seen field in database 2025-09-14 09:20:38 +02:00
l5y b4600a26af run db migratoin 2025-09-14 09:17:01 +02:00
l5y a09197b398 update map info 2025-09-14 09:16:14 +02:00
l5y 62b096c601 Add first_heard timestamp (#23) 2025-09-14 09:12:57 +02:00
l5y c67b18c657 web: extend the table view to display more records 2025-09-14 09:00:14 +02:00