Skip to content

Releases: ruby/net-imap

v0.4.6

21 Nov 23:55
v0.4.6
Compare
Choose a tag to compare

What's Changed

Changed

  • 🩹 Workaround servers that don't send required SP when resp-text is empty by @nevans in #230
  • ⚡️ Simplify and speed up envelope and address parsing by @nevans in #232
  • ⚡️ Simplify and speed up mailbox-list parsing by @nevans in #233
  • ⚡ Simplify and speed up thread-data response parsing by @nevans in #234

Documentation

  • 📚 Update #status docs for DELETED (IMAP4rev2) by @nevans in #227

Miscellaneous

  • 📈 Fix benchmark string encoding by @nevans in #231

Full Changelog: v0.4.5...v0.4.6

v0.4.5

13 Nov 16:15
v0.4.5
Compare
Choose a tag to compare

What's Changed

✨ Added

IMAP extension support

  • ✨ Add fetch support for BINARY and BINARY.SIZE by @nevans in #207
  • ✨ Add fetch support for Gmail's X-GM-EXT-1 extensions by @nevans in #209
  • ✨ Add support for OBJECTID extension (RFC8474) by @nevans in #226
    • MAILBOXID ResponseCode
    • MAILBOXID attribute for Net::IMAP#status
    • EMAILID and THREADID message attributes to Net::IMAP#fetch/#uid_fetch and FetchData#emailid/#threadid

Other API improvements

  • ✨ Allow decode_datetime to work without dquotes by @nevans in #218
  • ✨ Add FetchData msg-att methods and update rdoc by @nevans in #220

♻️ Changed

  • ⚡ Better Faster Cleaner STATUS parsing by @nevans in #225

📚 Documentation

  • 📚 Add :nodoc: to internal parser utils by @nevans in #221
  • 💄 Fix styles.css customization for RDoc 6.6 by @nevans in #222
  • ✨ Add FetchData msg-att methods and update rdoc by @nevans in #220
  • 📚 Improve STATUS attribute documentation by @nevans in #225

Miscellaneous

  • 🔎 Simplify parser test debugging by @nevans in #223
  • 📈 Update parser benchmark comparison by @nevans in #224

Full Changelog: v0.4.4...v0.4.5

v0.4.4

03 Nov 18:25
v0.4.4
Compare
Choose a tag to compare

What's Changed

Performance

  • ⚡ Parse expected chars using String#getbyte by @nevans in #215
  • ⚡ Simplify header-fld-name parser (backward compatible) by @nevans in #217

Error handling

  • 🥅 Return empty array for missing server response by @nevans in #214

Full Changelog: v0.4.3...v0.4.4

v0.4.3

30 Oct 14:06
v0.4.3
Compare
Choose a tag to compare

What's Changed

Fixes

  • 🐛 Fix unbalanced parens in body-fld-lang parsing by @nevans in #204

Error handling

  • 🥅 Validate response-tagged in the parser by @nevans in #198
  • 🥅 Return UnparsedData for unhandled response-data by @nevans in #200
  • 🥅 Update parsing of unknown numeric response types by @nevans in #213

Performance

  • ⚡ Simpler, faster response-data parser by @nevans in #201
  • ⚡ Simpler, faster msg-att parser (for fetch responses) by @nevans in #205
  • ⚡ Simpler, faster resp-text-code parser (for response codes) by @nevans in #211
  • ⚡ Update flag parsing: FLAGS, LIST, PERMANENTFLAGS by @nevans in #212

Changes

  • ✨ Update response-data parser w/stubs for all extensions by @nevans in #202
  • ♻️ Update response and continue-req to new parser style by @nevans in #199
  • ♻️ Refactor response-data methods to match ABNF by @nevans in #203

Documentation

  • 📚 Fix XOAuth2Authenticator rdoc typo by @nevans in #196
  • 📚 Fixing and formatting docs by @nevans in #197

Miscellaneous

  • 📈 Add benchmark rake task to compare gem versions by @nevans in #208
  • Set utf-8 encoding when looking for VERSION in the file. by @debasishbsws in #210

New Contributors

Full Changelog: v0.4.2...v0.4.3

v0.4.2

20 Oct 13:59
v0.4.2
Compare
Choose a tag to compare

What's Changed

  • 🔒 SASL: Clarify usage of username vs authcid vs authzid by @nevans in #187
    • Improved SASL authenticator parameter documentation.
    • Aliases have been added from username to authcid or authzid—or in the other direction, from authcid or authzd to username.
    • OAuthBearerAuthenticator may now receive two arguments, to match the common authenticate(username, secret) style. authzid (i.e. username) is still optional for the mechanism (although in practice many servers do require it).
    • Instead of raising an exception, conflicting arguments are silently ignored. This allows more specific arguments (like authcid or a keyword argument) to override more generic terms (like username or a positional argument). This improves compatibility with other projects, and can also simplify dynamic mechanism negotiation.
    • Keyword argument support has been added to the deprecated LOGIN and CRAM-MD5 mechanisms. This is for consistency and compatibility with other projects. These mechanisms are obsolete and should be avoided.
  • ✨ Add secret alias (for password, oauth2_token, etc) to relevant SASL mechanisms by @nevans in #195

Full Changelog: v0.4.1...v0.4.2

v0.4.1

09 Oct 21:13
Compare
Choose a tag to compare

What's Changed

  • 📚 Fix a few documentation mistakes by @nevans in #193
  • 🔒⚗️ Add experimental SASL::ClientAdapter by @nevans in #183
    This code is not yet used by Net::IMAP#authenticate (see #194). It is released in experimental form in order to simplify using it from other projects, to facilitate collaborating and iterating on a broadly useful API.

Full Changelog: v0.4.0...v0.4.1

v0.4.0

04 Oct 13:56
Compare
Choose a tag to compare

What's Changed

Most notably, support has been added for the SASL-IR, ENABLE, and UTF-8=ACCEPT extensions, and for many SASL mechanisms: EXTERNAL, ANONYMOUS, OAUTHBEARER, SCRAM-SHA-1, and SCRAM-SHA-256.

💥 Breaking changes

  • 💥 ⬆️ Drop v2.6 support; Require v2.7.3; Use "..." arg by @nevans in #89
    The test suite passes under ruby 2.7, although it does print some warnings for experimental pattern matching.
  • 💥 Return an empty array (rather than nil) when the server doesn't send any responses, by @nevans in #192
    This can affect list, xlist, getquota, lsub, expunge, uid_expunge, fetch, uid_fetch, store, and uid_store.
  • 💥 The #extension attribute on BODYSTRUCTURE structs no longer starts with location. The location is now parsed directly and available from the BodyStructure#location attribute. by @nevans in #113

✨ Added

Improved IMAP4rev1 protocol and extension support

  • ✨ Add missing "location" BODYSTRUCTURE extension data by @nevans in #113
  • ✨ Cache server capabilities and add #capable?(name) by @nevans in #156
  • ✨ Add support for ENABLE (RFC 5161) by @arnt in #98
  • ✨ Parse UTF-8 encoded strings, for UTF8=ACCEPT and IMAP4rev2 by @nevans in #111
    • Minor bits for UTF8=ACCEPT by @arnt in #114
  • ✨🔒 Add SASL-IR support by @nevans in #90
    • 🐛 Fix empty SASL-IR to send "=" by @nevans in #180

Improved SASL support

  • 🔒 Add SASL OAUTHBEARER mechanism by @nevans in #171
  • 🔒 Add SASL ANONYMOUS mechanism by @nevans in #169
  • 🔒 Add SASL EXTERNAL mechanism by @nevans in #170
  • ✨ Make SASL.authenticator case insensitive by @nevans in #167
    • 🐛 Fix authenticate using Symbol mechanism name by @nevans in #186
  • ✨ Add attr_readers to SASL mechanisms by @nevans in #176
  • ✨ Allow keyword args on all SASL authenticators by @nevans in #177
  • 🔒 Verify SASL authentication has completed by @nevans in #179
  • 🔒 Add SASL SCRAM-SHA-* mechanisms by @nevans in #172
  • 🔒 SASL PLAIN: Raise ArgumentError for conflicts by @nevans in #181
  • ✨ Minor updates to SASL::Authenticators API by @nevans in #184

Improved Net::IMAP client API

  • ✨ Add attr_readers for host and port by @nevans in #92
  • 🧵 New thread-safe API for #responses and add #clear_responses by @nevans in #93
  • ✨ Add greeting code data to #responses by @nevans in #94
  • ✨ Add #capable?(name), #auth_capable?(name), #auth_mechanisms, #capabilities, etc by @nevans in #156
  • 🔒 Add #tls_verified? by @nevans in #91
  • 🔒 Add ssl_ctx and ssl_ctx_params attr readers by @nevans in #174
  • ✨ Add #logout! to combine logout and disconnect by @nevans in #178

StringPrep profiles

  • ✨ Add generic stringprep algorithm and the "trace" profile by @nevans in #101
  • ✨ Add Nameprep stringprep profile by @nevans in #83

🗑️ Deprecated

  • 🗑️ Deprecated #client_thread by @nevans in #93
  • 🗑️🧵 Soft-deprecation of current #responses API by @nevans in #93
    The current API is not thread-safe. It is documented as deprecated, but no warning message is logged yet.
  • 🗑️ Deprecated BodyTypeAttachment and BodyTypeExtension structs @nevans in #113
  • 🗑️ Deprecate backward compatible parameters to new and starttls by @nevans in #175
    Net::IMAP.new uses keyword parameters for its options now.
    Sending a port or an options hash as the second argument is documented as obsolete, but doesn't print warnings yet.
    Any other positional parameters are deprecated and will print warnings.

🐛 Fixed

  • 🐛 Fix NAMESPACE parsing (and other ♻️ refactoring) by @nevans in #112
  • 🐛 Fix BODYSTRUCTURE parser bugs by @nevans in #113
    • More strict about where NIL is not allowed, e.g: number, envelope, and body. Ignoring these uncommon bugs made it difficult to workaround much more common server bugs elsewhere.
    • BodyTypeAttachment and BodyTypeExtension won't be returned any more.
    • Better workaround for multipart parts with... zero parts.
    • 🐛 Fix typo in uncommon BODYSTRUCTURE parsing code by @nevans in #185
  • 🧵 Synchronize @responses update in thread_internal by @nevans in #116
  • 🐛 Add missing lookahead_case_insensitive_string by @nevans in #144
  • Decode UTF-7 more strictly by @nobu in #152
  • Fix for Digest MD5 bad challenges by @nobu in #160
  • 🥅 Work around missing server responses by @nevans in #192

♻️ Changed

  • 🔎 Improve parse error debugging by @nevans in #105
  • 🚚 Move the StringPrep module out of SASL by @nevans in #100
  • ✅ 📈 Move most parser tests to yaml, add more tests, and add parser benchmarks by @nevans in #103
  • 🧪 Add Regexp.linear_time? tests; ⚡✅ Update BEG_REGEXP to pass by @nevans in #145
  • ⚡✅ Update more regexps to run in linear time by @nevans in #147
  • 🧪 Add experimental new FakeServer for tests by @nevans in #157
  • ⏱️ Add Timeout to several existing SSL tests by @nevans in #163
  • ♻️ Use Net::IMAP::FakeServer::TestHelper by @nevans in #164
  • 🚚 Move and rename SASL authenticators by @nevans in #165
  • ♻️ Simplify lazy-loaded SASL::{Name}Authenticator registration by @nevans in #168

📚 Documentation

  • 📚 Add "rake ghpages" for publishing rdoc by @nevans in #102
  • 📚 Auto-deploy GitHub Pages from an action by @nevans in #135
  • 📚 More rdoc updates, all related to capabilities by @nevans in #159
  • SASL doc updates by @nevans in #166
  • 📚 Update SASL docs and add attr_readers by @nevans in #176
  • 📚 Update examples with modern SASL mechanisms by @nevans in #182

Miscellaneous

New Contributors

Full Changelog: v0.3.7...v0.4.0

v0.3.7

26 Jul 16:18
v0.3.7
Compare
Choose a tag to compare

What's Changed

  • 🔒️ Backport: Fix for Digest MD5 bad challenges by @nobu in #160
    • PR for backport is #161

Full Changelog: v0.3.6...v0.3.7

v0.3.6

12 Jun 19:31
Compare
Choose a tag to compare

v0.3.5

12 Jun 17:30
v0.3.5
Compare
Choose a tag to compare

Full Changelog: v0.3.4...v0.3.5