mirror of
https://github.com/MarekWo/mc-webui.git
synced 2026-08-12 03:32:56 +02:00
Feature: Add message length limit with live character counter
Implemented 200-character limit for messages due to LoRa/MeshCore constraints: - Added maxlength=200 to textarea - Added live character counter (0 / 200) - Visual warnings: orange at 75%, red at 90% - Counter updates on input, reply, and send - Backend validation with descriptive error message - Added technotes/limity.md documentation about MeshCore limits Based on MeshCore LoRa payload constraints (~180-200 bytes safe limit). This prevents message fragmentation and improves transmission reliability. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
W **MeshCore** obowiązuje **dość rygorystyczny limit długości pojedynczej wiadomości**, wynikający bezpośrednio z ograniczeń LoRa.
|
||||
|
||||
### 🔹 Limit długości wiadomości
|
||||
|
||||
* **Maksymalnie ~200–240 bajtów payloadu**
|
||||
* W praktyce **bezpiecznie przyjmuj ~180–200 bajtów**, bo część danych zajmują:
|
||||
|
||||
* nagłówki protokołu MeshCore,
|
||||
* adresowanie,
|
||||
* metadane routingu,
|
||||
* CRC / kontrola integralności.
|
||||
|
||||
To oznacza:
|
||||
|
||||
* **kilkadziesiąt znaków tekstu** (zależnie od kodowania),
|
||||
* raczej **krótkie komunikaty**, nie „SMS-y” ani tym bardziej bloki tekstu.
|
||||
|
||||
### 🔹 Co się dzieje przy dłuższej wiadomości?
|
||||
|
||||
* MeshCore **tnie ją na fragmenty (fragmentation)**,
|
||||
* fragmenty są wysyłane osobno i składane u odbiorcy,
|
||||
* **każdy fragment zwiększa czas transmisji i ryzyko utraty**, szczególnie:
|
||||
|
||||
* przy niskim SF,
|
||||
* w zatłoczonej sieci,
|
||||
* na dalekich hopach.
|
||||
|
||||
Dlatego:
|
||||
|
||||
> **zalecenie praktyczne:** traktuj MeshCore jak **pager / radio tekstowe**, a nie komunikator.
|
||||
|
||||
### 🔹 Porównanie (dla intuicji)
|
||||
|
||||
* 1 znak ASCII ≈ 1 bajt
|
||||
* 180 bajtów ≈
|
||||
|
||||
* ~180 znaków ASCII
|
||||
* ~90–120 znaków UTF-8 (polskie znaki, emoji → szybciej zjadają limit)
|
||||
|
||||
### 🔹 Dobre praktyki
|
||||
|
||||
* używaj **krótkich, rzeczowych komunikatów**,
|
||||
* unikaj emoji i znaków narodowych, jeśli zasięg/stabilność jest krytyczna,
|
||||
* jeśli musisz przesłać więcej danych:
|
||||
|
||||
* podziel treść logicznie (kilka wiadomości),
|
||||
* rozważ **out-of-band** (np. MeshCore tylko do „powiadomień”).
|
||||
|
||||
Jeśli chcesz, mogę:
|
||||
|
||||
* rozpisać **dokładną strukturę ramki MeshCore (ile bajtów na co)**,
|
||||
* porównać to z **Meshtastic** (tam limity są trochę inne),
|
||||
* albo pomóc dobrać **SF/BW/CR**, żeby fragmentacja była możliwie bezpieczna.
|
||||
Reference in New Issue
Block a user