commits
- Implement Email.t type with proper keyword support
- Create Keywords module with explicit variants for system and custom flags
- Add operations for manipulating email flags
- Add conversion utilities for JMAP/IMAP interoperability
- Update email-related types to use the module style with abstract types
- Convert record types to modules with accessors and constructors
The keyword implementation uses a variant type to make the different
flags more explicit and type-safe, while still supporting custom keywords
via a Custom constructor. Implementation follows RFC 8621 section 4.1.1.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change all record types to use a consistent module style where records are
defined in a submodule containing a type t, accessors, and constructors
- Add proper encapsulation with abstract types
- Make field access go through accessor functions
- Fix dependencies between modules
- Maintain consistent typing across the codebase
This change improves encapsulation and avoids prefixing field names with the type name.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement Email.t type with proper keyword support
- Create Keywords module with explicit variants for system and custom flags
- Add operations for manipulating email flags
- Add conversion utilities for JMAP/IMAP interoperability
- Update email-related types to use the module style with abstract types
- Convert record types to modules with accessors and constructors
The keyword implementation uses a variant type to make the different
flags more explicit and type-safe, while still supporting custom keywords
via a Custom constructor. Implementation follows RFC 8621 section 4.1.1.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change all record types to use a consistent module style where records are
defined in a submodule containing a type t, accessors, and constructors
- Add proper encapsulation with abstract types
- Make field access go through accessor functions
- Fix dependencies between modules
- Maintain consistent typing across the codebase
This change improves encapsulation and avoids prefixing field names with the type name.
馃 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>