v0.5.0
What's Changed
✨ Implemented enhancements
- Add idempotency to both whatsapp functions by @kzu in #13
- Throw on failed HTTP requests to WhatsApp by @kzu in #17
- Fetch all WhatsApp numbers from a contact by @kzu in #23
- Add support for optional address, name and url of location by @kzu in #24
- Fix typo in SendAsync, add ReplyAsync and message-based overloads by @kzu in #25
- Add first-class support for unsupported messages by @kzu in #29
- Add reaction message support, improve type safety by @kzu in #35
- Allow registering the WhatsApp handler separately by @kzu in #45
- Add overloads of Reply and Send with interactive buttons by @kzu in #47
- Normalize user's numbers automatically on every payload by @kzu in #48
- Add media content resolving to a media reference by @kzu in #55
- A document attachment should be considered media by @kzu in #56
- Return message identifier from send/reply by @kzu in #57
- Introduce pipeline of handlers by @kzu in #60
- Make handlers receive multiple messages instead of one by @kzu in #62
- Make JSON serialization context public for persistence scenarios by @kzu in #64
- Refactor UseWhatsApp > AddWhatsApp for IServiceCollection by @kzu in #65
- Add OpenTelemetry support by @kzu in #66
- Add an AsBuilder extension method for improved discoverability by @kzu in #72
- Merge use storage feature/capability into main by @kzu in #90
- Make usability extension methods public by @kzu in #103
- Generalize the former reengage as a general solution by @kzu in #101
- Rename Text to Reply as a message extension by @kzu in #104
- Add CancellationToken parameter consistently to all WhatsAppClientExtensions by @kzu in #102
- Rename To/From to Service/User by @kzu in #105
- When logging errors, also log payload by @kzu in #131
- Improve feature filter naming to avoid potential collisions by @kzu in #133
- Add WhatsApp CLI by @kzu in #145
- Add missing MessageType.Response by @kzu in #147
- Move MarkRead to just before invoking the pipeline by @kzu in #150
- Add missing Caption property to image and video content by @kzu in #155
- Allow pipeline handlers to send messages too by @kzu in #157
- Make sure we don't lose config in CLI by @kzu in #160
- Remove all loggers from the default host by @kzu in #161
- Improve rendering of person heads by @kzu in #162
- Wrap agent text at 80 chars for easier reading by @kzu in #163
- Add CLI options to avoid interactive prompts by @kzu in #164
- Allow message and content extensibility via AdditionalProperties by @kzu in #165
- Simplify by reusing M.E.AI AdditionalProperties by @kzu in #166
- Allow server-side to send formatted responses to console by @kzu in #171
- Allow configuring progress reactions in key built-in stages by @kzu in #172
- Allow flexible mark as read behavior for content messages by @kzu in #173
- Add support for pluggable async message processing strategies by @kzu in #176
- Add typing indicator support during webhook or process by @kzu in #179
- Typing indicators imply marking message read by @kzu in #180
- Add public API for typing indicators by @kzu in #181
- Render typing status in console too by @kzu in #182
- Allow updating messages in storage by @kzu in #183
- Make conversation window configurable via options by @kzu in #184
- Add a way to skip a handler in the pipeline by @kzu in #185
- Provide seamless continuity between CLI and WhatsApp by @kzu in #186
- Rename handlers Empty > Stop, Skip > Continue by @kzu in #187
- Allow clearing the CLI without restarting the app by @kzu in #190
- Don't reset typing status indicator on reactions by @kzu in #191
- Allow setting emoji column for render via message text by @kzu in #192
- Attempt to infer code blocks in more cases by @kzu in #193
- Allow alternative text for console consumption and console-only messages by @kzu in #194
- Set methods for setting console-only text and processing by @kzu in #195
- Improve CLI rendering of head, remove paddings, etc. by @kzu in #196
- Switch to CTS-based typing progress, align with WhatsApp indicator by @kzu in #197
🐛 Fixed bugs
- JQ dependency should exclude contentFiles by @kzu in #38
- Switch to IActionResult to fix callback registration by @kzu in #52
- Fix NRE when marking message read by @kzu in #58
- Add JQ to top-level app too by @kzu in #67
- Fix hang on main handler registration, cleanup sample handler by @kzu in #115
- Rename all records Service/User properties by @kzu in #139
- Massive timeout increase to aid local debugging by @kzu in #167
📝 Documentation updates
- Clarify license in readme for commercial use by @kzu in #12
- Add documentation and improve sample by @kzu in #19
- Document queue/table usage by @kzu in #20
- Add missing readme from package by @kzu in #21
- +Mᐁ includes by @kzu in #22
- +Mᐁ includes by @kzu in #26
- Allow sponsorships to imply commercial licensing by @kzu in #30
- Add screenshot showcase for impact by @kzu in #31
- Minor doc comment fix on options format for numbers by @kzu in #53
- Fix CLI image which is now in main branch by @kzu in #146
- Update readme with latest API changes by @kzu in #149
- Add concrete example of an ignoring messages pipeline by @kzu in #151
🔨 Other
- Minor tweaks to logging and test message by @kzu in #14
- Order enums alphabetically by @kzu in #18
- Logging fixes for local runs by @kzu in #36
- Bump tracing for functions by @kzu in #37
- Cleanup unnecessary usings by @kzu in #46
- Shorten name of extensions class by @kzu in #61
- Add full WhatsAppSuffix for clarity by @kzu in #63
- The sample is being deployed to a windows host by @kzu in #68
- Use func azure deploy by @kzu in #69
- Add missing local settings file by @kzu in #70
- Not using the distributed table storage package at all by @kzu in #71
- Make empty handler public by @kzu in #75
- Remove unnecessary ServiceDefaults project by @kzu in #82
- Place the fill attribute on the root node by @kzu in #83
- Converted WhatsApp.sln into the new .slnx format by @adalon in #84
- Refactored handlers to return async enum responses by @adalon in #74
- Added UseConversation feature/capability by @adalon in #91
- Minor renames and doc fixes by @kzu in #93
- Add dogfooding section to readme by @kzu in #99
- Improved the conversation handling to fully filter data in the backend by @adalon in #98
- Keep delegating if storage or conversation were not used by @adalon in #116
- Misc changes for improving the conversation support by @adalon in #124
- Disable inherntly flaky media resolving test by @kzu in #138
- Added the ability of receiving/sending messages from the a debug console by @adalon in #143
- Add end to end integration test for feature flags and storage by @kzu in #144
- Fix naming of parameters to match uniform usage in the API by @kzu in #148
- Revamp and simplify conversation management by @kzu in #153
- Improved interactive console renderings by @kzu in #158
- Update readme.md with CLI from main command by @kzu in #168
- Don't warn on hosting issues (like missing docker) by @kzu in #169
- Flag messages coming from the console for pipeline by @kzu in #170
- Detect and render code blocks within text output in CLI by @kzu in #188
Full Changelog: v1.0.0-alpha...v0.5.0