Files
mc-webui/technotes/limity.md
T
MarekWo 8d9c2b241c 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>
2025-12-21 14:44:41 +01:00

54 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 ~200240 bajtów payloadu**
* W praktyce **bezpiecznie przyjmuj ~180200 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
* ~90120 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.