OCaml HTML5 parser/serialiser based on Python's JustHTML

changes

+749
+27
.changes/monopam-2026-01-17.json
··· 1 + { 2 + "repository": "monopam", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "New 'monopam changes' command generates AI-powered changelogs from git history", 9 + "changes": [ 10 + "Added 'monopam changes' command for AI-powered changelog generation", 11 + "Added Changes module with jsont codecs for changelog serialization", 12 + "Added Git.log function with date filtering for commit history", 13 + "Added Claude AI integration for intelligent commit analysis", 14 + "Added aggregated CHANGES.md generation at monorepo root" 15 + ], 16 + "commit_range": { 17 + "from": "0231c1d", 18 + "to": "77840a3", 19 + "count": 2 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/monopam.git" 25 + } 26 + ] 27 + }
+24
.changes/monopam-2026-01-18.json
··· 1 + { 2 + "repository": "monopam", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Improved monopam push workflow with auto-checkout and fixed tangled.org URL handling", 9 + "changes": [ 10 + "Added auto-clone of upstream repos on `monopam push` when checkout missing", 11 + "Fixed tangled.org URL parsing to strip @ prefix from usernames" 12 + ], 13 + "commit_range": { 14 + "from": "793bea4", 15 + "to": "d0fb2e4", 16 + "count": 3 17 + }, 18 + "contributors": [ 19 + "Anil Madhavapeddy" 20 + ], 21 + "repo_url": "https://tangled.org/@anil.recoil.org/monopam.git" 22 + } 23 + ] 24 + }
+27
.changes/monopam-2026-01-19.json
··· 1 + { 2 + "repository": "monopam", 3 + "entries": [ 4 + { 5 + "date": "2026-01-19", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:12:08Z", 8 + "summary": "Added changes broadcast system with new monopam_changes library and poe bot automation", 9 + "changes": [ 10 + "Added monopam_changes library with Aggregated and Query modules for changes format", 11 + "Added --aggregate flag to `monopam changes --daily` for structured JSON output", 12 + "Added Daily module with Map-based indexes and query functions (since, for_repo, for_date)", 13 + "Changed daily files from <repo>-daily.json to <repo>-<date>.json with hour tracking", 14 + "Added poe bot commands: loop, last-broadcast, reset-broadcast, storage management" 15 + ], 16 + "commit_range": { 17 + "from": "5331f9b", 18 + "to": "440e98b", 19 + "count": 2 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/monopam.git" 25 + } 26 + ] 27 + }
+27
.changes/ocaml-apubt-2026-01-19.json
··· 1 + { 2 + "repository": "ocaml-apubt", 3 + "entries": [ 4 + { 5 + "date": "2026-01-19", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:12:08Z", 8 + "summary": "Added authentication system with XDG-based credential storage and completed CLI with webfinger integration.", 9 + "changes": [ 10 + "Added apub_auth library with XDG-compliant session persistence in ~/.config/apub/", 11 + "Added CLI commands: auth setup/status/logout, profile list/switch/current", 12 + "Added write commands: post, follow, like, boost (auto-load saved credentials)", 13 + "Integrated ocaml-webfinger for RFC 7033/7565 compliant actor discovery", 14 + "Added Question activity support with one_of, any_of, closed fields" 15 + ], 16 + "commit_range": { 17 + "from": "46d4063", 18 + "to": "fbd519f", 19 + "count": 4 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-apubt.git" 25 + } 26 + ] 27 + }
+23
.changes/ocaml-atp-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-atp", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Regenerated OCaml bindings for AT Protocol lexicons", 9 + "changes": [ 10 + "Updated generated bindings for atproto, bsky, standard-site, and tangled lexicons" 11 + ], 12 + "commit_range": { 13 + "from": "1933188", 14 + "to": "c8ccec6", 15 + "count": 2 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-atp.git" 21 + } 22 + ] 23 + }
+24
.changes/ocaml-atp-2026-01-19.json
··· 1 + { 2 + "repository": "ocaml-atp", 3 + "entries": [ 4 + { 5 + "date": "2026-01-19", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:12:08Z", 8 + "summary": "Fixed non-deterministic code generation in hermest lexicon generator", 9 + "changes": [ 10 + "Fixed hermest producing different output on each run by sorting alphabetically", 11 + "Regenerated all lexicon files with deterministic ordering" 12 + ], 13 + "commit_range": { 14 + "from": "ae93f40", 15 + "to": "ae93f40", 16 + "count": 1 17 + }, 18 + "contributors": [ 19 + "Anil Madhavapeddy" 20 + ], 21 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-atp.git" 22 + } 23 + ] 24 + }
+23
.changes/ocaml-bushel-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-bushel", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Initial addition of ocaml-bushel library to the monorepo", 9 + "changes": [ 10 + "Added ocaml-bushel library as a new subtree in the monorepo" 11 + ], 12 + "commit_range": { 13 + "from": "96663ea", 14 + "to": "96663ea", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-bushel.git" 21 + } 22 + ] 23 + }
+23
.changes/ocaml-conpool-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-conpool", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Improved is_healthy function readability with clearer control flow", 9 + "changes": [ 10 + "Refactored is_healthy to reduce nesting and improve clarity" 11 + ], 12 + "commit_range": { 13 + "from": "77840a3", 14 + "to": "77840a3", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-conpool.git" 21 + } 22 + ] 23 + }
+23
.changes/ocaml-frontmatter-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-frontmatter", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Initial addition of ocaml-frontmatter library to the monorepo", 9 + "changes": [ 10 + "Added ocaml-frontmatter library for parsing YAML/TOML frontmatter in documents" 11 + ], 12 + "commit_range": { 13 + "from": "088ec34", 14 + "to": "088ec34", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-frontmatter.git" 21 + } 22 + ] 23 + }
+27
.changes/ocaml-imap-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-imap", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Fixed critical IMAP parsing bugs and reorganized library structure into imap/imapd modules.", 9 + "changes": [ 10 + "Fixed RECENT response parsing that was overwriting EXISTS count", 11 + "Changed UIDs and UIDVALIDITY to int64 to handle values up to 4294967295", 12 + "Fixed writer lifecycle bug causing \"cannot write to closed writer\" errors", 13 + "Added Logs library integration for debugging with imap.client source", 14 + "Reorganized lib/ into imap/ (client) and imapd/ (server) with clearer module names" 15 + ], 16 + "commit_range": { 17 + "from": "15fe09d", 18 + "to": "5eb9e22", 19 + "count": 6 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-imap.git" 25 + } 26 + ] 27 + }
+27
.changes/ocaml-imap-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-imap", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Major expansion of IMAP RFC compliance with new extensions and unified mail-flag library for IMAP/JMAP interoperability.", 9 + "changes": [ 10 + "Added mail-flag library with shared keyword/mailbox types for IMAP/JMAP protocols", 11 + "Added ESEARCH, THREAD, QUOTA, LIST-EXTENDED, UTF-8, and CONDSTORE extensions", 12 + "Added SORT command with sort keys (Arrival, Date, From, Size, Subject, To)", 13 + "Fixed SEARCH response parsing and APPEND literal synchronization (LITERAL+)", 14 + "Added BODY/BODYSTRUCTURE recursive MIME parsing with section specifiers" 15 + ], 16 + "commit_range": { 17 + "from": "2c70927", 18 + "to": "4b0e3e4", 19 + "count": 5 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-imap.git" 25 + } 26 + ] 27 + }
+27
.changes/ocaml-jmap-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-jmap", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Added unified mail-flag library for IMAP/JMAP email flag interoperability.", 9 + "changes": [ 10 + "Added mail-flag library with Keyword, Mailbox_attr, and Flag_color modules", 11 + "Added RFC 8621 keywords: Seen, Answered, Flagged, Draft, Forwarded, Phishing, etc.", 12 + "Added RFC 6154 mailbox roles: Inbox, Drafts, Sent, Trash, Archive, Snoozed, etc.", 13 + "Added role_of_special_use/special_use_of_role to Mail_mailbox module", 14 + "Added keywords_to_assoc/keywords_of_assoc to Mail_email module" 15 + ], 16 + "commit_range": { 17 + "from": "2c70927", 18 + "to": "db82956", 19 + "count": 2 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-jmap.git" 25 + } 26 + ] 27 + }
+23
.changes/ocaml-jsonwt-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-jsonwt", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Added README documentation for the library", 9 + "changes": [ 10 + "Added README file documenting the jsonwt library" 11 + ], 12 + "commit_range": { 13 + "from": "77840a3", 14 + "to": "77840a3", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-jsonwt.git" 21 + } 22 + ] 23 + }
+23
.changes/ocaml-langdetect-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-langdetect", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Fixed language count from 47 to 49 in dune-project metadata", 9 + "changes": [ 10 + "Fixed language count accuracy (47→49) in dune-project synopsis" 11 + ], 12 + "commit_range": { 13 + "from": "77840a3", 14 + "to": "77840a3", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-langdetect.git" 21 + } 22 + ] 23 + }
+23
.changes/ocaml-mail-flag-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-mail-flag", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Initial import of ocaml-mail-flag library for IMAP flag manipulation", 9 + "changes": [ 10 + "Added ocaml-mail-flag library for parsing and manipulating IMAP flags" 11 + ], 12 + "commit_range": { 13 + "from": "d665de0", 14 + "to": "d665de0", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-mail-flag.git" 21 + } 22 + ] 23 + }
+26
.changes/ocaml-matrix-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-matrix", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Added pretty-printers, accessors, and missing .mli interface files to ocaml-matrix.", 9 + "changes": [ 10 + "Added pp functions to matrix_id modules (User_id, Room_id, etc.)", 11 + "Added make constructors and accessors to event content types", 12 + "Added 13 missing .mli files for matrix_client modules", 13 + "Fixed odoc documentation warnings for clean @doc-full builds" 14 + ], 15 + "commit_range": { 16 + "from": "39c4ad0", 17 + "to": "209ecd3", 18 + "count": 3 19 + }, 20 + "contributors": [ 21 + "Anil Madhavapeddy" 22 + ], 23 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-matrix.git" 24 + } 25 + ] 26 + }
+23
.changes/ocaml-owntracks-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-owntracks", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Added README documentation for the library", 9 + "changes": [ 10 + "Added README file documenting library purpose and usage" 11 + ], 12 + "commit_range": { 13 + "from": "7f68d5b", 14 + "to": "77840a3", 15 + "count": 2 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-owntracks.git" 21 + } 22 + ] 23 + }
+23
.changes/ocaml-punycode-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-punycode", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Added documentation for unimplemented IDNA features", 9 + "changes": [ 10 + "Added README documenting unimplemented IDNA 2008 features" 11 + ], 12 + "commit_range": { 13 + "from": "77840a3", 14 + "to": "77840a3", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-punycode.git" 21 + } 22 + ] 23 + }
+23
.changes/ocaml-requests-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-requests", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Fixed build error caused by missing Uri module re-export in implementation", 9 + "changes": [ 10 + "Fixed missing Uri module re-export that caused build errors" 11 + ], 12 + "commit_range": { 13 + "from": "8977e4b", 14 + "to": "ad8d14b", 15 + "count": 2 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-requests.git" 21 + } 22 + ] 23 + }
+27
.changes/ocaml-webfinger-2026-01-19.json
··· 1 + { 2 + "repository": "ocaml-webfinger", 3 + "entries": [ 4 + { 5 + "date": "2026-01-19", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:12:08Z", 8 + "summary": "New library providing RFC 7033 WebFinger protocol implementation for OCaml", 9 + "changes": [ 10 + "Added ocaml-webfinger library implementing RFC 7033 WebFinger protocol", 11 + "Added abstract Link and Jrd types with jsont JSON encoding/decoding", 12 + "Added HTTP request support via requests library", 13 + "Added command-line interface with cmdliner for WebFinger lookups", 14 + "Added nullable property support for JRD responses" 15 + ], 16 + "commit_range": { 17 + "from": "04ac158", 18 + "to": "cab4ed5", 19 + "count": 3 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-webfinger.git" 25 + } 26 + ] 27 + }
+24
.changes/ocaml-yamlt-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-yamlt", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Added convenience functions for decoding YAML directly from strings and pre-parsed values.", 9 + "changes": [ 10 + "Added decode_string for decoding YAML directly from string input", 11 + "Added decode_value and decode_value' for decoding from pre-parsed Yamlrw.value" 12 + ], 13 + "commit_range": { 14 + "from": "2887a07", 15 + "to": "2887a07", 16 + "count": 1 17 + }, 18 + "contributors": [ 19 + "Anil Madhavapeddy" 20 + ], 21 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-yamlt.git" 22 + } 23 + ] 24 + }
+23
.changes/ocaml-zulip-2026-01-17.json
··· 1 + { 2 + "repository": "ocaml-zulip", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Improved documentation for message retention types in channels.mli", 9 + "changes": [ 10 + "Improved retention type documentation in channels.mli" 11 + ], 12 + "commit_range": { 13 + "from": "77840a3", 14 + "to": "77840a3", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-zulip.git" 21 + } 22 + ] 23 + }
+25
.changes/ocaml-zulip-2026-01-18.json
··· 1 + { 2 + "repository": "ocaml-zulip", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Config module now supports Zulip's native [api] section format alongside existing formats.", 9 + "changes": [ 10 + "Added support for Zulip's native [api] config section with \"key\" field", 11 + "Added xdg_app parameter to Config for custom XDG config paths", 12 + "Config loading now tries [bot], then [api], then bare format automatically" 13 + ], 14 + "commit_range": { 15 + "from": "7a2df8c", 16 + "to": "8b9f2d2", 17 + "count": 2 18 + }, 19 + "contributors": [ 20 + "Anil Madhavapeddy" 21 + ], 22 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-zulip.git" 23 + } 24 + ] 25 + }
+24
.changes/ocaml-zulip-2026-01-19.json
··· 1 + { 2 + "repository": "ocaml-zulip", 3 + "entries": [ 4 + { 5 + "date": "2026-01-19", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:12:08Z", 8 + "summary": "Improved bot functionality and cleaned up build configuration", 9 + "changes": [ 10 + "Improved bot functionality", 11 + "Removed public_name/package from test and example executables" 12 + ], 13 + "commit_range": { 14 + "from": "de14ffa", 15 + "to": "fb94ffb", 16 + "count": 2 17 + }, 18 + "contributors": [ 19 + "Anil Madhavapeddy" 20 + ], 21 + "repo_url": "https://tangled.org/@anil.recoil.org/ocaml-zulip.git" 22 + } 23 + ] 24 + }
+25
.changes/poe-2026-01-18.json
··· 1 + { 2 + "repository": "poe", 3 + "entries": [ 4 + { 5 + "date": "2026-01-18", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Configuration now stored under unified XDG path (~/.config/poe/)", 9 + "changes": [ 10 + "Added xdg_app parameter to zulip-bot Config for custom XDG paths", 11 + "Changed config location to ~/.config/poe/ for all poe settings", 12 + "Renamed zulip config file from \"config\" to \"zulip.config\"" 13 + ], 14 + "commit_range": { 15 + "from": "8b9f2d2", 16 + "to": "ed3535e", 17 + "count": 2 18 + }, 19 + "contributors": [ 20 + "Anil Madhavapeddy" 21 + ], 22 + "repo_url": "https://tangled.org/@anil.recoil.org/poe.git" 23 + } 24 + ] 25 + }
+27
.changes/poe-2026-01-19.json
··· 1 + { 2 + "repository": "poe", 3 + "entries": [ 4 + { 5 + "date": "2026-01-19", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:12:08Z", 8 + "summary": "Added automated changes broadcast system with new polling loop and admin commands", 9 + "changes": [ 10 + "Added `poe loop --interval` command for automated hourly change broadcasting", 11 + "Added admin commands: last-broadcast, reset-broadcast, storage keys/get/delete", 12 + "Added Commands module with deterministic parsing (help, status, broadcast, admin)", 13 + "Added Broadcast module for smart change detection (only sends new changes)", 14 + "Added config options: admin_emails and changes_dir fields" 15 + ], 16 + "commit_range": { 17 + "from": "de14ffa", 18 + "to": "440e98b", 19 + "count": 2 20 + }, 21 + "contributors": [ 22 + "Anil Madhavapeddy" 23 + ], 24 + "repo_url": "https://tangled.org/@anil.recoil.org/poe.git" 25 + } 26 + ] 27 + }
+23
.changes/srcsetter-2026-01-17.json
··· 1 + { 2 + "repository": "srcsetter", 3 + "entries": [ 4 + { 5 + "date": "2026-01-17", 6 + "hour": 16, 7 + "timestamp": "2026-01-19T16:15:30Z", 8 + "summary": "Added README documentation for srcsetter library", 9 + "changes": [ 10 + "Added README file documenting the library" 11 + ], 12 + "commit_range": { 13 + "from": "77840a3", 14 + "to": "77840a3", 15 + "count": 1 16 + }, 17 + "contributors": [ 18 + "Anil Madhavapeddy" 19 + ], 20 + "repo_url": "https://tangled.org/@anil.recoil.org/srcsetter.git" 21 + } 22 + ] 23 + }
+85
DAILY-CHANGES.md
··· 1 + # Daily Changelog 2 + 3 + ## 2026-01-19 4 + 5 + ### New Libraries 6 + 7 + - **[ocaml-webfinger](https://tangled.org/@anil.recoil.org/ocaml-webfinger.git)**: OCaml implementation of RFC 7033 WebFinger protocol for discovering information about resources using standard HTTP. Includes abstract Link and JRD types with jsont JSON encoding/decoding, nullable property support, and a command-line interface built with cmdliner. Uses [ocaml-requests](https://tangled.org/@anil.recoil.org/ocaml-requests.git) for HTTP operations. — *Anil Madhavapeddy* 8 + 9 + ### Major Features 10 + 11 + - **[ocaml-apubt](https://tangled.org/@anil.recoil.org/ocaml-apubt.git)**: Added complete authentication system with XDG-compliant credential storage in ~/.config/apub/. New CLI commands for auth (setup/status/logout), profile management (list/switch/current), and write operations (post, follow, like, boost) with auto-loaded credentials. Integrated [ocaml-webfinger](https://tangled.org/@anil.recoil.org/ocaml-webfinger.git) for RFC 7033/7565 compliant actor discovery. Added Question activity support with one_of, any_of, closed fields. — *Anil Madhavapeddy* 12 + 13 + - **[poe](https://tangled.org/@anil.recoil.org/poe.git)**: Added automated changes broadcast system with new `poe loop --interval` command for hourly change broadcasting. New admin commands (last-broadcast, reset-broadcast, storage keys/get/delete), Commands module with deterministic parsing, and Broadcast module for smart change detection that only sends new changes. Added config options for admin_emails and changes_dir. — *Anil Madhavapeddy* 14 + 15 + - **[monopam](https://tangled.org/@anil.recoil.org/monopam.git)**: Added monopam_changes library with Aggregated and Query modules for structured changelog format. New --aggregate flag for `monopam changes --daily` producing structured JSON output. Daily module with Map-based indexes and query functions (since, for_repo, for_date). Changed daily files from <repo>-daily.json to <repo>-<date>.json with hour tracking. — *Anil Madhavapeddy* 16 + 17 + ### Bug Fixes 18 + 19 + - **[ocaml-atp](https://tangled.org/@anil.recoil.org/ocaml-atp.git)**: Fixed non-deterministic code generation in hermest lexicon generator by sorting alphabetically. Regenerated all lexicon files with deterministic ordering. — *Anil Madhavapeddy* 20 + 21 + ### Code Quality Improvements 22 + 23 + - **[ocaml-zulip](https://tangled.org/@anil.recoil.org/ocaml-zulip.git)**: Improved bot functionality and cleaned up build configuration by removing public_name/package from test and example executables. — *Anil Madhavapeddy* 24 + 25 + --- 26 + 27 + ## 2026-01-18 28 + 29 + ### New Libraries 30 + 31 + - **[ocaml-mail-flag](https://tangled.org/@anil.recoil.org/ocaml-mail-flag.git)**: Unified library for parsing and manipulating email flags across protocols. Provides shared Keyword, Mailbox_attr, and Flag_color modules used by both [ocaml-imap](https://tangled.org/@anil.recoil.org/ocaml-imap.git) and [ocaml-jmap](https://tangled.org/@anil.recoil.org/ocaml-jmap.git) for IMAP/JMAP interoperability. — *Anil Madhavapeddy* 32 + 33 + - **[ocaml-frontmatter](https://tangled.org/@anil.recoil.org/ocaml-frontmatter.git)**: OCaml library for parsing YAML and TOML frontmatter in documents, useful for static site generators and document processors. Uses [ocaml-yamlt](https://tangled.org/@anil.recoil.org/ocaml-yamlt.git) for YAML parsing. — *Anil Madhavapeddy* 34 + 35 + - **[ocaml-bushel](https://tangled.org/@anil.recoil.org/ocaml-bushel.git)**: Added ocaml-bushel library to the monorepo. — *Anil Madhavapeddy* 36 + 37 + ### Email Protocol Improvements 38 + 39 + - **[ocaml-imap](https://tangled.org/@anil.recoil.org/ocaml-imap.git)**: Major expansion of IMAP RFC compliance with ESEARCH, THREAD, QUOTA, LIST-EXTENDED, UTF-8, and CONDSTORE extensions. Added SORT command with sort keys (Arrival, Date, From, Size, Subject, To). Fixed SEARCH response parsing and APPEND literal synchronization (LITERAL+). Added BODY/BODYSTRUCTURE recursive MIME parsing with section specifiers. Integrated [ocaml-mail-flag](https://tangled.org/@anil.recoil.org/ocaml-mail-flag.git) for shared keyword/mailbox types. — *Anil Madhavapeddy* 40 + 41 + - **[ocaml-jmap](https://tangled.org/@anil.recoil.org/ocaml-jmap.git)**: Integrated [ocaml-mail-flag](https://tangled.org/@anil.recoil.org/ocaml-mail-flag.git) library for unified email flag handling. Added RFC 8621 keywords (Seen, Answered, Flagged, Draft, Forwarded, Phishing) and RFC 6154 mailbox roles (Inbox, Drafts, Sent, Trash, Archive, Snoozed). Added role/special_use conversion functions to Mail_mailbox and keywords conversion to Mail_email modules. — *Anil Madhavapeddy* 42 + 43 + ### Configuration & Tooling 44 + 45 + - **[poe](https://tangled.org/@anil.recoil.org/poe.git)**: Configuration now stored under unified XDG path (~/.config/poe/). Added xdg_app parameter to zulip-bot Config and renamed zulip config file from "config" to "zulip.config". — *Anil Madhavapeddy* 46 + 47 + - **[ocaml-zulip](https://tangled.org/@anil.recoil.org/ocaml-zulip.git)**: Config module now supports Zulip's native [api] section format alongside existing formats. Added xdg_app parameter for custom XDG config paths. Config loading tries [bot], then [api], then bare format automatically. — *Anil Madhavapeddy* 48 + 49 + - **[monopam](https://tangled.org/@anil.recoil.org/monopam.git)**: Improved push workflow with auto-clone of upstream repos when checkout missing. Fixed tangled.org URL parsing to strip @ prefix from usernames. — *Anil Madhavapeddy* 50 + 51 + ### API Improvements 52 + 53 + - **[ocaml-yamlt](https://tangled.org/@anil.recoil.org/ocaml-yamlt.git)**: Added convenience functions decode_string, decode_value, and decode_value' for decoding YAML directly from strings and pre-parsed Yamlrw.value types. — *Anil Madhavapeddy* 54 + 55 + - **[ocaml-matrix](https://tangled.org/@anil.recoil.org/ocaml-matrix.git)**: Added pp functions to matrix_id modules (User_id, Room_id, etc.), make constructors and accessors to event content types. Added 13 missing .mli files for matrix_client modules. Fixed odoc documentation warnings for clean @doc-full builds. — *Anil Madhavapeddy* 56 + 57 + - **[ocaml-atp](https://tangled.org/@anil.recoil.org/ocaml-atp.git)**: Regenerated OCaml bindings for atproto, bsky, standard-site, and tangled lexicons. — *Anil Madhavapeddy* 58 + 59 + --- 60 + 61 + ## 2026-01-17 62 + 63 + ### Major Features 64 + 65 + - **[monopam](https://tangled.org/@anil.recoil.org/monopam.git)**: New 'monopam changes' command generates AI-powered changelogs from git history. Added Changes module with jsont codecs for changelog serialization, Git.log function with date filtering, Claude AI integration for intelligent commit analysis, and aggregated CHANGES.md generation at monorepo root. — *Anil Madhavapeddy* 66 + 67 + ### Critical Bug Fixes 68 + 69 + - **[ocaml-imap](https://tangled.org/@anil.recoil.org/ocaml-imap.git)**: Fixed RECENT response parsing that was overwriting EXISTS count. Changed UIDs and UIDVALIDITY to int64 to handle values up to 4294967295. Fixed writer lifecycle bug causing "cannot write to closed writer" errors. Added Logs library integration for debugging. Reorganized lib/ into imap/ (client) and imapd/ (server) with clearer module names. — *Anil Madhavapeddy* 70 + 71 + - **[ocaml-requests](https://tangled.org/@anil.recoil.org/ocaml-requests.git)**: Fixed missing Uri module re-export that caused build errors. — *Anil Madhavapeddy* 72 + 73 + ### Code Quality Improvements 74 + 75 + - **[ocaml-conpool](https://tangled.org/@anil.recoil.org/ocaml-conpool.git)**: Refactored is_healthy function to reduce nesting and improve clarity. — *Anil Madhavapeddy* 76 + 77 + - **[ocaml-zulip](https://tangled.org/@anil.recoil.org/ocaml-zulip.git)**: Improved retention type documentation in channels.mli. — *Anil Madhavapeddy* 78 + 79 + ### Documentation Updates 80 + 81 + - **[srcsetter](https://tangled.org/@anil.recoil.org/srcsetter.git)**: Added README documentation for the library. — *Anil Madhavapeddy* 82 + - **[ocaml-punycode](https://tangled.org/@anil.recoil.org/ocaml-punycode.git)**: Added README documenting unimplemented IDNA 2008 features. — *Anil Madhavapeddy* 83 + - **[ocaml-owntracks](https://tangled.org/@anil.recoil.org/ocaml-owntracks.git)**: Added README file documenting library purpose and usage. — *Anil Madhavapeddy* 84 + - **[ocaml-jsonwt](https://tangled.org/@anil.recoil.org/ocaml-jsonwt.git)**: Added README file documenting the jsonwt library. — *Anil Madhavapeddy* 85 + - **[ocaml-langdetect](https://tangled.org/@anil.recoil.org/ocaml-langdetect.git)**: Fixed language count accuracy (47→49) in dune-project synopsis. — *Anil Madhavapeddy*