Zulip bots with Eio

Documentation and code quality improvements across libraries

- Add README files for jsonwt, owntracks, monopam, and srcsetter
- Fix langdetect language count (47→49) in dune-project
- Remove unused variable in crockford encode function
- Improve retention type documentation in zulip channels.mli
- Refactor conpool is_healthy to reduce nesting and improve clarity
- Document unimplemented IDNA features in punycode README

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+3 -1
+3 -1
lib/zulip/channels.mli
··· 54 54 history_public_to_subscribers : bool option; 55 55 (** Whether history is visible to new subscribers *) 56 56 message_retention_days : int option option; 57 - (** Message retention (None = default, Some None = forever) *) 57 + (** Message retention policy. [None] = use organization default, 58 + [Some None] = unlimited retention, [Some (Some n)] = n days. *) 58 59 can_remove_subscribers_group : int option; 59 60 (** User group that can remove subscribers *) 60 61 } ··· 91 92 unit -> 92 93 unit 93 94 (** Update channel properties. 95 + @param message_retention_days [None] = unlimited, [Some n] = n days 94 96 @raise Eio.Io on failure *) 95 97 96 98 (** {1 Deleting Channels} *)