154 Commits

Author SHA1 Message Date
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
91918e7cfc feat: add CLI command endpoint and standalone CLI client for pyMC Repeater 2026-03-24 14:02:51 +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
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
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
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
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
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
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
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
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
6c3252e51c fix letmesh logging typo 2026-03-10 13:55:35 +00:00
Lloyd
e5e2006bbe update ui to include Github ratelimit warn 2026-03-10 12:50:51 +00:00
Lloyd
da3dd470ae Add rate limit handling for GitHub API requests 2026-03-10 12:49:57 +00:00
Lloyd
c53e8034e6 update UI update process to attend restart 2026-03-10 12:33:30 +00:00
Lloyd
95e86b5150 Enhance pymc-do-upgrade script to accept an optional pretend-version argument and update version retrieval logic to strip PEP 440 local identifiers from version strings. 2026-03-10 12:08:55 +00:00
Lloyd
bf3b4b5b1b Enhance version retrieval logic and add fallback mechanisms in _get_installed_version function 2026-03-10 11:33:49 +00:00
Lloyd
cd1c88e9c6 Refactor update version retrieval and cleanup stale dist-info directories 2026-03-10 11:11:01 +00:00
Lloyd
664f061bb9 update type check on web version state 2026-03-09 15:02:11 +00:00
Lloyd
bf04439357 update UI with web installer 2026-03-09 14:57:58 +00:00
Lloyd
6bf252f58b Improve version retrieval by bypassing importlib.metadata cache 2026-03-09 12:10:19 +00:00
Lloyd
c0e625fdeb Add changelog endpoint to fetch new commits since installed version 2026-03-09 12:04:14 +00:00
Lloyd
dc2c785f89 Enhance version comparison and fetching logic for updates by integrating packaging.version and reading from pyproject.toml 2026-03-09 11:39:48 +00:00
Lloyd
1fdb7edc49 Allow bypassing cache in update check endpoint with optional force parameter 2026-03-09 11:09:30 +00:00
Lloyd
0ed78a2eed Update pip install command format for hardware dependencies in management scripts 2026-03-09 11:03:49 +00:00
Lloyd
ce8cdfd48d Refactor version handling in update endpoints to use importlib.metadata for installed version retrieval 2026-03-09 10:47:52 +00:00
Lloyd
437d526085 Add OTA update functionality with new API endpoints and upgrade script 2026-03-09 10:31:36 +00:00
Lloyd
884de123b9 Merge branch 'pr-128' into feat/companion
# Conflicts:
#	repeater/engine.py
#	repeater/web/api_endpoints.py
2026-03-08 07:09:06 +00:00
agessaman
062dabc46e Enhance TCP timeout configuration for companions
- Added `tcp_timeout` setting to `config.yaml.example` for companion configurations, allowing customization of TCP connection timeouts.
- Updated `RepeaterDaemon` to retrieve and apply the `tcp_timeout` setting, with a default value of 120 seconds.
- Modified `CompanionFrameServer` to accept `client_idle_timeout_sec` parameter, ensuring proper handling of idle timeouts.
- Enhanced API endpoints to include `tcp_timeout` in companion settings, improving configuration visibility and management.
2026-03-07 20:39:37 -08:00
agessaman
3725d6eb21 Add path hash mode configuration and management
- Introduced `path_hash_mode` setting in `config.yaml.example` to specify the hash size for flood packets.
- Updated `ConfigManager` to re-apply the path hash mode when the mesh section changes, with validation for acceptable values (0, 1, 2).
- Enhanced `RepeaterDaemon` to set the default path hash mode during initialization, ensuring consistent handling of flood packets.
2026-03-07 13:57:46 -08:00
Lloyd
d74c8bda5c Add support for enabling pin configuration in hardware settings 2026-03-06 21:53:03 +00:00
Lloyd
e5c91f382a Add mesh configuration for loop detection and update API endpoint handling 2026-03-06 21:21:30 +00:00
agessaman
5b0359b74b Enhance configuration management and companion node handling
- Added backup functionality for config.yaml during save operations.
- Improved YAML saving to support Unicode characters and increased line width.
- Introduced a mechanism to sync companion node names to the configuration upon updates.
- Updated API endpoints to validate companion node names and persist changes to the configuration.
- Enhanced the RepeaterCompanionBridge to load and save preferences, ensuring consistent state management.
2026-03-05 20:04:17 -08:00
agessaman
0217a49ed2 Refactor RepeaterHandler path management and enhance packet validation
- Removed redundant call to mark_seen() for duplicate packets.
- Added validation to ensure hop count does not exceed the maximum limit before appending to the packet path.
- Updated logic to check for path size constraints when appending hash bytes, improving packet processing efficiency.
2026-03-05 16:52:43 -08:00
agessaman
c150b9a9bf Merge upstream/feat/newRadios into dev-companion-v2-cleanup
- Keep our Vite-built assets and index.html script (index-DyUIpN7m.js)
- Remove upstream-only asset chunks and RoomServers-BxQ-0q-x.js
- README: keep two-backend intro, add upstream CAUTION/compatibility table
- manage.sh: keep dialog/gauge UX and .[hardware]; add CH341 udev, sudoers, libusb, polkit, silent upgrade
- sqlite_handler: add crc_errors table, index, and cleanup from upstream
- engine: add validate_packet and mark_seen in direct_forward; keep our path hash_size/hop_count logic
- advert: keep comment, use current_time = now
- api_endpoints: use restart_service() from service_utils
- config merge: strip user config comments before yq merge (upstream)

Made-with: Cursor
2026-03-05 16:43:14 -08:00