Commit graph

1031 commits

Author SHA1 Message Date
Macgyver Official
cc0afa4eb3 Clarify unsigned app installation 2026-08-09 09:49:13 -04:00
Macgyver Official
b50f6b2db0 Prepare v2.3.2 release and unsigned builds
Bumps Crosstalk to v2.3.2 and updates release docs to use version-matched tagging examples instead of a one-time first-release note. Also updates desktop distribution docs to clearly explain first-run macOS and Windows prompts for unsigned binaries, and adjusts macOS build config for unsigned packaging by disabling hardened runtime and setting identity to "-".
2026-08-09 09:39:33 -04:00
Macgyver Official
0be9c501f5 Fix GitHub release publishing 2026-08-09 09:23:32 -04:00
Macgyver Official
4ac8101398 Fix Linux AppImage artifact path naming
Update the artifact path from `x64` to `x86_64` to match the actual file naming convention used by the build process.
2026-08-09 08:52:58 -04:00
Macgyver Official
c539afcaf8 Refresh README feature highlights
Rework the Crosstalk overview to emphasize usability and visibility improvements: clearer transport/infrastructure visibility, easier interface setup, UI upgrades, and reliability fixes. Keep Iridium IMT details while repositioning them after core day-to-day benefits and updating the project tagline to match the new focus.
2026-08-09 08:47:05 -04:00
Macgyver Official
9e0e09b896 Prepare 2.3.1 release
Bump Crosstalk to 2.3.1 and update packaging metadata, artifact names, and runtime requirements. Add a draft GitHub release workflow plus release notes, and refresh container/build configs and docs for the new release process.
2026-08-09 08:40:08 -04:00
Macgyver Official
c0ec54e7ae Rewrite README for Crosstalk positioning
Reworks the README into a concise product-focused guide: updates branding/intro, highlights Crosstalk-specific capabilities (especially Iridium IMT and field operations), and streamlines install/development instructions. It also replaces long legacy walkthroughs and speculative sections with clearer links to practical setup docs and upstream compatibility context.
2026-08-09 07:51:18 -04:00
Macgyver Official
145afbc245 Add allowlisted Iridium path persistence
Introduce a durable SQLite-backed path cache for the Iridium IMT interface so configured destination paths can be captured and restored after restart without enabling Reticulum transport. Add parsing and validation for `persistent_destinations`, support `persistent_path_max_age` expiry, restore logic in the worker loop, and capture logic after inbound packet injection. Update Raspberry Pi/docs example config with the new settings and safety notes, and add unit tests for cache behavior, destination parsing, and persistent path capture/restore lifecycle.
2026-08-09 07:35:36 -04:00
Macgyver Official
2b9a017eb1 Improve Pi fallback AP and mobile chat UX
Reworks Raspberry Pi fallback networking to use hostapd + dnsmasq with strict WPA2-PSK/CCMP instead of NetworkManager AP mode, including runtime config generation, PID/process checks, NetworkManager handoff, and updated deployment docs/package requirements. Also overhauls the messaging UI for mobile: adds slide-out navigation and route-close behavior, improves responsive layout and safe-area handling, updates chat/sidebar visibility flow, and increases touch/accessibility affordances with larger controls, aria labels, and button semantics.
2026-07-30 15:05:23 -04:00
Macgyver Official
14f80e91dd Add Wi-Fi fallback hotspot for Aspen Pi
Adds a bash supervisor script and systemd service that monitor wlan0 and activate the `aspen-iridium-hotspot` AP profile when no usable station connection (NM state 100 + IPv4) is found after a configurable grace period. Includes a README documenting the priority logic and trail access details.
2026-07-30 13:13:32 -04:00
Macgyver Official
8621fb3db9 Harden satellite send policy and UI signal meter
Tightens satellite messaging behavior by rejecting outbound sends that cannot fit a single opportunistic packet (attachments, oversize payloads, or missing paths), forcing opportunistic delivery, and routing cancel requests through the satellite retry supervisor so proof waits/retries stop cleanly. Also adds a conversation-header satellite signal indicator that polls interface stats and shows 0–5 bar quality, with tests expanded for outbound validation and satellite-specific cancellation handling.
2026-07-30 11:48:10 -04:00
Macgyver Official
15e8bdaccf Add bounded Iridium LXMF retry policy
Introduces a satellite-specific retry policy that limits LXMF send attempts and spaces retries to a long proof window for enabled Iridium interfaces, while leaving non-satellite setups unchanged. It also updates Iridium transmit behavior to cap modem resubmissions per packet, adds backend validation and persistence for new retry/attempt settings, and expands the interface UI to configure and display these controls. New tests cover modem-attempt caps and satellite retry timing/termination behavior.
2026-07-30 09:07:40 -04:00
Macgyver Official
9ed52700d2 Add inbound duplicate packet suppression
Introduces RecentInboundPacketCache, a TTL+capacity-bounded cache that deduplicates exact IMT frame replays using SHA-256 digests. Replaces the boolean mt_message_ready flag with a deque of message IDs to properly track multiple queued MT messages. Duplicate frames are acknowledged but not injected into Reticulum. Adds tests for the new cache and updated receive flow.
2026-07-29 21:30:51 -04:00
Macgyver Official
53345fce8e Document Iridium setup and add receive tests
Adds comprehensive Raspberry Pi guidance for using a USB RockBLOCK 9704 with native Reticulum-over-IMT transport, updates the sample systemd service paths/user defaults for a Pi deployment, and notes Iridium support in the README. Also adds unit coverage for Iridium MT receive handling to ensure valid frames are injected and invalid frames are still acknowledged, and updates modal prompt input styling for improved dark-theme readability.
2026-07-29 12:05:08 -04:00
Macgyver Official
887221f473 Add Iridium IMT interface support
Introduce a native Reticulum `IridiumIMTInterface` for USB RockBLOCK 9704 devices, including IMT packet framing, a durable SQLite outbound queue, modem polling/retry handling, and runtime stats (signal bars and queued packets). Crosstalk now installs bundled external Reticulum interfaces into the active config directory and includes the new interface module in packaged builds.

Expose Iridium IMT configuration in the interface creation/edit UI, add Iridium-specific display/status details in interface cards, and add a new `/api/v1/announce/lxmf` route to announce only the LXMF identity on metered links. Also add example service/config docs and unit tests for codec and durable queue behavior.
2026-07-29 07:42:34 -04:00
Macgyver Official
02b79c9f11 Refresh nav labels and network map UX
Reworks frontend terminology and navigation to use clearer names (e.g., Connections → Interfaces, Tools → Diagnostics), adds an Explore sidebar section, and updates related page copy/actions for consistency. Improves dropdown reliability by teleporting menus to `body` with viewport-aware positioning, and significantly upgrades infrastructure/network visuals with deterministic infrastructure icons, richer map controls/stats, refined graph styling, and better loading/interaction behavior.
2026-07-29 07:03:08 -04:00
Macgyver Official
9a4bc7f5d8 Refresh branding and unify UI overlays
Introduces the new Crosstalk visual identity across Electron and frontend assets (logos, icons, splash screen, dock icon) and applies a broad UI refresh with updated dark-theme tokens, layout polish, and renamed “interfaces” UX language to “connections.”

Adds reusable UI primitives (Badge, BaseButton, EmptyState, HashChip), deterministic identicons, and in-app overlay infrastructure (modal/toast hosts) to replace native alert/confirm/prompt flows with consistent branded dialogs and toasts. Also updates key pages (messages, calls, nomad network, settings, tools, about, network visualiser) for improved navigation, feedback, and component consistency.
2026-07-23 08:27:34 -04:00
Macgyver Official
4d477f48f9 Add infrastructure discovery view and restart flow
Introduces signed Reticulum infrastructure discovery end-to-end: the backend now enables interface discovery, exposes `/api/v1/discovered-interfaces`, filters out LXMF contacts, and returns safe, UI-ready fields including derived discovery destination hashes. The frontend adds a new Infrastructure page/route/sidebar entry, periodic refresh/search/stats UI, and network visualiser nodes/links for discovered infrastructure.

This also makes interface/config changes reliably apply by enforcing a dedicated Reticulum instance (`share_instance=No`) and adding a standalone backend restart API. Non-Electron restart handling now polls `/api/v1/status` for a new process instance ID before reloading, and interface/transport settings flows were updated to always use this restart path. Dependency minimum for `rns` is bumped to `>=1.3.5`.
2026-07-23 06:57:32 -04:00
Macgyver Official
953ea693f4 Rename project to Crosstalk and update branding
Rename Reticulum MeshChat to Crosstalk across the codebase and packaging. Renamed meshchat.py to crosstalk.py and updated Dockerfile, docker-compose, GitHub Actions, README, docs and electron assets to use Crosstalk, new storage/reticulum config paths (~/.crosstalk/.reticulum), and GHCR tags/labels. Add logic to seed a default RMAP World TCP client interface and a config flag, shorten interface/transport responses to remove forced restart messages, and update database proxy comment. Electron: set app name, implement an internal prompt (replacing electron-prompt), expose restart-backend IPC, change backend executable naming/launching (startBackend/start/stop handling), and adjust portable storage behavior. Misc: remove donate.md, add example image and egg-info files, and apply multiple frontend/component and static asset updates to match rebrand and UX improvements.
2026-06-21 07:43:38 -04:00
Liam Cottle
b36dcddfcd
Merge pull request #155 from omgbebebe/master
check if network_id is not None
2026-04-06 01:27:13 +12:00
Sergey Bubnov
3baa5cd19a explicitly check for not None value 2026-04-05 17:15:39 +04:00
Sergey Bubnov
6b45c3239d check if network_id is not None 2026-04-05 10:42:00 +04:00
liamcottle
e49df24360 ensure network_id is converted to hex in interface stats api response 2026-03-23 12:41:50 +13:00
liamcottle
97be61e36c prevent peewee >=4.0.0 for now due to breaking changes with datetime field 2026-03-13 00:38:53 +13:00
liamcottle
946d113e69 update aiohttp to v3.13.3 2026-03-13 00:31:08 +13:00
liamcottle
42db0fdb23 update websockets to v16.0 2026-03-13 00:29:06 +13:00
liamcottle
2c6d316801 update rns to v1.1.4 2026-03-13 00:28:32 +13:00
liamcottle
4ef57593e9 update lxmf to v0.9.3 2026-03-13 00:28:07 +13:00
liamcottle
011876bec5 2.3.0 2025-11-11 23:09:01 +13:00
liamcottle
e3dae8aea9 update rns to v1.0.2 2025-11-11 22:57:46 +13:00
liamcottle
c2ee9be39a update lxmf to v0.9.2 2025-11-11 22:56:57 +13:00
liamcottle
002360399c add docs 2025-08-01 23:35:32 +12:00
liamcottle
c9f4ef64c1 update peewee to v3.18.1 2025-07-28 22:34:39 +12:00
liamcottle
ffe2cb884d update aiohttp to v3.12.14 2025-07-28 22:11:24 +12:00
liamcottle
d6847d262a add python version to about screen 2025-07-28 21:38:43 +12:00
liamcottle
65df111b87 rework async utils to always use main event loop in threadsafe manner 2025-07-28 19:01:15 +12:00
liamcottle
747236ae8b add try catch for fallback file download parsing, so client can show as unsupported 2025-07-28 17:23:03 +12:00
liamcottle
4e55006084 fix bug where downloading files from cicada forums was not working 2025-07-28 17:21:52 +12:00
liamcottle
dcaffe2594 2.2.1 2025-07-27 21:52:08 +12:00
liamcottle
094f6cb5ec added custom confirm dialog as js confirm in electron on windows causes all text fields to be disabled 2025-07-27 21:45:27 +12:00
liamcottle
0c0f059ec4 2.2.0 2025-07-27 20:18:38 +12:00
liamcottle
9031c1a3d7 add dropdown menu to nomadnetwork favourites list to rename and remove 2025-07-27 20:17:08 +12:00
liamcottle
64adad27f8 limit nomadnetwork announces list to 500 recent nodes 2025-07-25 23:22:56 +12:00
liamcottle
4734e62468 implement favourites system for nomadnetwork nodes 2025-07-25 23:02:05 +12:00
liamcottle
37cc6aa158 add button to identify self to nomad network node 2025-07-25 21:56:02 +12:00
liamcottle
f3bf0abd84 2.1.0 2025-07-18 21:45:35 +12:00
liamcottle
90445467e1 remove todos 2025-07-18 20:34:26 +12:00
liamcottle
51bdd35f01 fix downloading files from nomadnet by handling buffered reader responses 2025-07-18 20:29:10 +12:00
liamcottle
817d5b5e59 don't use await in websocket handler as it blocks all other requests 2025-07-18 19:47:47 +12:00
liamcottle
a094a741a8 don't use await in websocket handler as it blocks all other requests 2025-07-18 19:37:59 +12:00