torlando-tech f9e959f38e Track A.9: Link members default-init to Type::NONE — pyxis runs against upstream
Fixes the StoreProhibited panics surfaced by hardware boot of fd2d3de:

  StoreProhibited @ Bytes::assign (offset 0x1c on a null _data shared_ptr)
  ← Ed25519PublicKey ctor
  ← Ed25519PrivateKey::public_key()
  ← Link::Link(Destination&) at Link.cpp:79

Vanilla upstream microReticulum @ 0.3.0 Link's all-defaults ctor goes
through load_private_key() which dereferences _prv (a shared_ptr that's
still null on a freshly-default-constructed Link). Fork's Link probably
guarded against this; upstream doesn't. The explicit
Type::NoneConstructor branch (Link.h:153) leaves _object null and is
safe for default-init of pool/pre-allocated members.

Two sites needed the same fix:
  - lib/microreticulum-shim/LXMF/LXMRouter.h DirectLinkSlot::link
    (the fork's pre-allocated DIRECT-delivery link pool)
  - lib/tdeck_ui/UI/LXMF/UIManager.h UIManager::_call_link
    (the LXST call link state)

Both: `RNS::Link link;` -> `RNS::Link link{RNS::Type::NONE};`.

🎉 First successful runtime of pyxis on top of upstream + fixes:
  - Heap 131KB free post-boot (vs ~45KB on pre-graft, then panic)
  - Min low-water 119KB — never got tight
  - Display flushing, no panic, no reboot loop
  - Reset reason: PANIC (4) on prior runs is replaced by clean run
  - microStore SPIFFSFileSystem mount works
  - Identity loads from NVS with same hash as pre-graft (b5f09f9a833f4ef8)
  - LoRa init, AutoInterface init, Transport::start() all succeed
  - MessageStore loads 4 conversations from /lxmf
  - LXMRouter constructs cleanly
  - PropagationNodeManager initializes

Caveats for runtime test (per pyxis_microReticulum_graft_spike_findings):
  - BLE + TCP + Transport mode currently disabled in user settings
    (was needed to get a stable enough OTA window during initial flash —
    can re-enable once we confirm pyxis-fixes-on-0.3.0 doesn't introduce
    a BLE/TCP-specific WDT)
  - Resource-form inbound LXMF dispatch is no-op'd
    (static_resource_concluded_callback)
  - Some UI stat fields disabled (LoRa RSSI, BLE peer count)
2026-05-05 12:51:45 -04:00
2026-02-07 11:49:21 -05:00
2026-03-04 14:12:36 -05:00

Pyxis logo

Pyxis

An LXMF and LXST client firmware for T-Deck, built on a highly modified fork of microReticulum

Very much WIP, don't expect stability :)

Features

Reticulum transport over:

  • RNode-compatible LoRa
  • AutoInterface (local wifi)
  • TCP Client
  • BLE Interface (barely working if at all)

Other features:

  • GPS-synced time
  • One really annoying beep when you get a new message (user toggle)
  • View the announce stream
  • Choose a propagation node (and sync with it) (fixed in v0.2.1)
  • Set auto announce timer
  • Light up keyboard (user toggle)
  • Will crash in about 5 minutes of normal use (sorry) I had 5d uptime on v0.2.0 with BLE disabled
  • Make LXST voice calls (codec2 only, quality sounds horrible coming out the other end in Columba, needs work)

Why "Pyxis"

Pyxis, latin for "compass," is a constellation in the southern sky depicting a mariner's compass. Small but essential, the compass ensures every message finds its destination - even when the path is uncertain.

S
Description
No description provided
Readme GPL-3.0
254 MiB
Languages
C++ 46.8%
C 41.8%
Python 9.8%
mupad 0.9%
JavaScript 0.6%