···66(** Smart broadcast logic for Poe bot.
7788 This module implements intelligent change broadcasting that generates
99- narrative changelogs using Claude, with @mentions for channel members. *)
99+ narrative changelogs using Claude, with mentions for channel members. *)
10101111val run :
1212 sw:Eio.Switch.t ->
···2323 Logic:
2424 1. Get last git HEAD from storage
2525 2. Get commits since that HEAD (or last 10 if first run)
2626- 3. Get channel members for @mention matching
2626+ 3. Get channel members for mention matching
2727 4. Generate narrative changelog with Claude
2828 5. Send as stream message to configured channel/topic
2929 6. Update last broadcast time and git HEAD in storage
+5-5
lib/changelog.mli
···33 SPDX-License-Identifier: ISC
44 ---------------------------------------------------------------------------*)
5566-(** Claude-powered narrative changelog generation with @mentions.
66+(** Claude-powered narrative changelog generation with Zulip mentions.
7788 This module generates human-readable changelog narratives from git commits,
99- using Claude to summarize changes and automatically @mention channel members
99+ using Claude to summarize changes and automatically mention channel members
1010 who authored commits. *)
11111212(** {1 Types} *)
···2525 full_name: string;
2626 email: string;
2727}
2828-(** A Zulip channel member for @mention matching. *)
2828+(** A Zulip channel member for mention matching. *)
29293030(** {1 Git Operations} *)
3131···5151 channel:string ->
5252 channel_member list
5353(** [get_channel_members ~client ~channel] returns the members of [channel]
5454- for @mention matching. *)
5454+ for mention matching. *)
55555656(** {1 Changelog Generation} *)
5757···7373 from the opam metadata's dev-repo field if [opamrepo_path] is provided),
7474 a description of the change, and the change type in italics.
7575 The output includes a header with the date of the most recent commit.
7676- Zulip @-mentions are used for authors matching channel members. *)
7676+ Zulip mentions are used for authors matching channel members. *)
+1-1
lib/loop.mli
···3030 2. Check if git HEAD has changed (compare with stored last_git_head)
3131 3. If changed:
3232 - Get commits since last HEAD via git log
3333- - Fetch channel members for @mention matching
3333+ - Fetch channel members for mention matching
3434 - Generate narrative changelog using Claude
3535 - Send to Zulip channel
3636 - Update last_broadcast_time and last_git_head in storage