Add `filter channel remove <#name|psk|public>` to drop one channel instead
of clearing all. Matched by the resolved key, so any equivalent spec works.
Decode logic shared between add and remove via decodeChannelKey().
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Hashtag channels key off the first 16 bytes of SHA256("#name") (same as
MeshCore clients), so `filter channel #selftest` derives the key directly
instead of needing a pasted PSK.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
A 16/32-byte key is 32/64 hex chars while base64 PSKs are 24/44 chars, so
all-hex-and-32/64-long disambiguates cleanly. Widen the stored-PSK buffer to
fit a 64-char hex key.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Guard data[len]=0 against an over-long crafted payload (OOB store), and
match keywords against the whole folded message so a blocked word can't be
hidden in the self-declared sender name. Also drop the unguarded ctype.h.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Demote to a Configuration subsection with a "(When ... compiled in)"
heading, matching the GPS/Sensors/Bridge sections, and drop the
explicit build-flag callout.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Folds look-alike codepoints (fullwidth, math alphanumerics, circled/
squared letters, regional indicators, Cyrillic/Greek homoglyphs,
accented Latin) to plain ASCII and strips zero-width/combining marks
before matching keywords and sender names.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Extract the inline cursor-walk in handleRegionCmd into file-local
helpers (skipSpaces, rtrimSpaces, takeToken, splitNameJump,
processRegionDefSegment), grouped immediately above the consumer.
Behavior is identical; addresses PR #2540 review feedback on
readability.
Tighten the region def docs: collapse five Note callouts into three
grouped paragraphs (Behavior / Existing regions / Limits), add a
case-sensitivity caveat plus an error example, note the cursor reset
between split commands, and use generic placeholder names.
Add a new command `region bulk` for defining region hierarchies in a single line. This command allows users to create multiple regions in a single message. Updated the documentation to include usage examples and detailed parameter descriptions.