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