502 Commits

Author SHA1 Message Date
Lloyd
dd8d3577cd Merge pull request #163 from rightup/feat/companion
Feat/companion
2026-03-27 22:38:10 +00:00
Lloyd
d83d3e07aa fix: update pymc_core dependency to point to dev branch 2026-03-27 22:35:31 +00:00
Lloyd
a92708f9d5 update UI to reflect keygen changes 2026-03-27 12:36:25 +00:00
Lloyd
59c6c772d4 feat: add JSON input handling for generate_vanity_key endpoint 2026-03-27 12:21:59 +00:00
Lloyd
50c19be498 Add gen tool for repeater prefix 2026-03-27 12:17:35 +00:00
Lloyd
fdc621f64d feat: add sanitization for bytes values to hex for JSON serialization 2026-03-27 11:24:27 +00:00
Lloyd
f5dbd83cda feat: add backup and restore and DB man 2026-03-27 11:15:53 +00:00
Lloyd
031f7b5e47 feat: add identity_key support in repeater configuration and update related logic in config handling 2026-03-27 10:16:10 +00:00
Lloyd
8babc375f2 Merge pull request #160 from agessaman/feat/companion-timeout-change
fix: update default client idle timeout to 8 hours in RepeaterDaemon …
2026-03-26 09:21:26 +00:00
agessaman
3ca9ac56d8 fix: update default client idle timeout to 8 hours in RepeaterDaemon and CompanionFrameServer for improved session management 2026-03-25 16:14:30 -07:00
Lloyd
07a47523ab feat: enhance event loop handling for thread-safe scheduling in MeshCLI 2026-03-24 14:18:12 +00:00
Lloyd
400e707c3f feat: add help command and detailed command descriptions to MeshCLI 2026-03-24 14:12:32 +00:00
Lloyd
91918e7cfc feat: add CLI command endpoint and standalone CLI client for pyMC Repeater 2026-03-24 14:02:51 +00:00
Lloyd
d82c90a04d fix: MQTT schedule the reconnect timer before calling disconnect(), so by the time _on_broker_disconnected fires, the pending reconnect is already visible. 2026-03-24 12:33:33 +00:00
Lloyd
7fcad04f49 feat: enhance graceful shutdown handling in RepeaterDaemon and improve stale dist-info cleanup with sudo support 2026-03-24 10:02:43 +00:00
Lloyd
7bcab773dd feat: add default security configuration for repeater in load_config to fix from previous versions. 2026-03-24 09:23:16 +00:00
Lloyd
c35733e8c4 Merge pull request #159 from agessaman/feat/companion-dedup
feat: implement duplicate packet recording for UI visibility in RepeaterHandler
2026-03-24 09:13:51 +00:00
agessaman
744826199e feat: implement duplicate packet recording for UI visibility in RepeaterHandler
- Added record_duplicate method to RepeaterHandler to log known duplicate packets without forwarding.
- Enhanced RepeaterDaemon to subscribe to raw packets for deduplication logging, ensuring all path variants are visible in the UI.
- Updated recent_packets management to group duplicates under their original packets for better tracking.
2026-03-23 17:02:29 -07:00
Lloyd
369b420ae3 feat: enhance RepeaterHandler with duplicate packet limit and cache cleanup, add graceful shutdown handling in RepeaterDaemon, and increase PacketRouter queue size 2026-03-23 14:30:01 +00:00
Lloyd
7d73ca0df6 show full path hop hex and normalize case for traces and add new config observer UI 2026-03-22 22:52:16 +00:00
Lloyd
d11d957318 Merge pull request #158 from agessaman/feat/companion-traces
Fix multibyte trace handling for companion/repeater and exclude trace packets from _record_for_ui
2026-03-22 22:44:10 +00:00
agessaman
c5c94fe60a feat: exclude TRACE packets from logging in RepeaterHandler and PacketRouter
- Updated record_packet_only method to skip logging for TRACE packets, as TraceHelper manages trace paths.
- Enhanced documentation to clarify the handling of TRACE packets in the web UI.
- Added tests to ensure TRACE packets are not recorded, maintaining data integrity.
2026-03-22 15:26:28 -07:00
Lloyd
55fe9feddd feat: add useSignalQuality utility for signal strength evaluation 2026-03-22 22:26:18 +00:00
agessaman
3cb27d3310 feat: enhance trace processing and path handling in RepeaterDaemon and TraceHelper
- Added local_identity parameter to RepeaterDaemon for improved trace path matching.
- Refactored trace path handling in TraceHelper to support multi-byte hashes and structured hops.
- Updated methods to ensure compatibility with new trace data formats and improved logging.
- Enhanced tests to validate new trace processing logic and path handling.
2026-03-22 14:34:04 -07:00
Lloyd
0444f01280 Merge pull request #152 from agessaman/feat/companion-namefix 2026-03-22 10:39:25 +00:00
agessaman
2e25467c5d feat: enhance companion identity management and API documentation
- Added functionality to heal companion registration names with empty values.
- Improved handling of identity keys and public key derivation for companions.
- Updated API endpoints to support companion identity lookups using name, lookup_identity_key, or public_key_prefix.
- Enhanced OpenAPI documentation to clarify requirements for identity creation, updates, and deletions, including trimming whitespace from names.
2026-03-21 17:24:14 -07:00
Lloyd
ddaa62fa9e update UI with extra modes monitor/forward/no tx 2026-03-16 10:17:07 +00:00
Lloyd
24e003b677 Merge pull request #148 from agessaman/feat/companion-modes
feat: improve repeater TX mode functionality so companion tenants can TX while in monitor mode
2026-03-16 10:06:34 +00:00
agessaman
7558c5604c feat: enhance repeater TX mode functionality so companion tenants can TX while in monitor mode
- Modify TX modes: forward, monitor, and add no_tx, allowing for flexible packet handling.
- Updated configuration and API endpoints to support the new modes.
- Adjusted logic in RepeaterHandler to manage packet processing based on the selected mode.
- Enhanced CLI commands to reflect the new mode settings.
- Added tests for each TX mode to ensure correct behavior.
2026-03-15 13:03:18 -07:00
Lloyd
e0e807f65c Merge pull request #143 from dmduran12/feat/companion-ws-proxy
feat: add /ws/companion_frame WebSocket-to-TCP proxy
2026-03-13 15:55:15 +00:00
dmduran12
4ee2977236 feat: add /ws/companion_frame WebSocket proxy
Bridges browser WebSocket connections to companion TCP frame servers.
Uses configured bind_address (not hardcoded 127.0.0.1) so the proxy
works regardless of how the frame server is bound.

- JWT auth (same pattern as PacketWebSocket)
- Resolves companion by name → (host, port) from config
- Raw byte pipe: WS ↔ TCP, no protocol parsing
- Diagnostic logging throughout for troubleshooting

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-13 08:52:08 -07:00
Lloyd
810743fbf2 fix setup race between service restart and login redirect. 2026-03-13 09:15:28 +00:00
Lloyd
b35b964dbb Merge pull request #142 from agessaman/dev-companion-v2-cleanup
Add Companion seeding from repeater advert database, add companions connection status to sessions panel
2026-03-13 09:08:29 +00:00
Lloyd
07c6f14b4b Merge branch 'feat/companion' into dev-companion-v2-cleanup 2026-03-13 09:07:34 +00:00
Lloyd
d40f39fa87 add seed ui 2026-03-13 09:06:57 +00:00
Lloyd
c8b7082d37 Merge pull request #141 from dmduran12/feat/companion-ws-proxy
feat: add /ws/companion_frame WebSocket proxy
2026-03-13 09:03:04 +00:00
agessaman
985e0c829f Add companion identity handling and statistics tracking for ACL endpoints. 2026-03-12 20:57:13 -07:00
dmduran12
2b4012eeb6 feat: add /ws/companion_frame WebSocket proxy
Dumb byte pipe between browser WebSocket and companion TCP frame server.
Allows browser clients to speak the MeshCore companion frame protocol
directly — all parsing lives client-side.

New file: repeater/web/companion_ws_proxy.py
- ws4py handler with JWT auth (same pattern as PacketWebSocket)
- Resolves companion_name → TCP port from config
- Bidirectional byte forwarding: WS ↔ TCP

http_server.py: mount at /ws/companion_frame alongside /ws/packets

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-03-12 17:50:20 -07:00
agessaman
9326868f6e Implement contact import functionality for companions
- Added `companion_import_repeater_contacts` method in `SQLiteHandler` to import repeater adverts into a companion's contact store, with options for filtering by contact types, last seen hours, and import limits.
- Introduced `_get_sqlite_handler` method in `CompanionAPIEndpoints` to ensure the SQLite handler is available for contact import operations.
- Created `import_repeater_contacts` endpoint to handle POST requests for importing contacts, validating input parameters, and returning the count of successfully imported contacts.
- Updated the frontend to reflect changes in the contact import process, ensuring a seamless user experience.
2026-03-12 15:39:04 -07:00
Lloyd
289fdb1a16 Add warning for trace responses with RSSI=0 in TraceHelper 2026-03-12 13:50:36 +00:00
Lloyd
bc19c0fd9b update UI for web updater 2026-03-11 15:54:45 +00:00
Lloyd
596c96d1f4 Extend test to: serialization/deserialization with multi-byte paths
- Functionality of Packet.apply_path_hash_mode and get_path_hashes
- Engine flood_forward and direct_forward with real multi-byte encoded packets
- PacketBuilder.create_trace payload structure and TraceHandler parsing
- Enforcement of max-hop boundaries per hash size
2026-03-11 14:23:29 +00:00
Lloyd
155575865a trace packet path handling to support multi-byte hash mode 2026-03-11 11:19:03 +00:00
Lloyd
362a477cdd exted multibyte to ping api 2026-03-11 11:00:49 +00:00
Lloyd
d701342951 add error handling for service file update and migrate service unit to fix PYTHONPATH and WorkingDirectory 2026-03-11 10:27:20 +00:00
Lloyd
e6fed7bea1 Add --ignore-installed flag to pip install commands to prevent conflicts with system-managed packages 2026-03-10 21:54:13 +00:00
Lloyd
23463b606d Fix WorkingDirectory in service files to prevent shadowing of pip-installed package 2026-03-10 16:46:13 +00:00
Lloyd
f96d64a813 Refactor version retrieval and remove legacy PYTHONPATH from service unit 2026-03-10 15:37:12 +00:00
Lloyd
6c3252e51c fix letmesh logging typo 2026-03-10 13:55:35 +00:00
Lloyd
5e7cf3f315 Refactor setuptools configuration to use package finding options 2026-03-10 13:21:29 +00:00