Releases: ruby/net-imap
Releases · ruby/net-imap
v0.4.6
What's Changed
Changed
- 🩹 Workaround servers that don't send required
SP
whenresp-text
is empty by @nevans in #230 - ⚡️ Simplify and speed up
envelope
andaddress
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
Miscellaneous
Full Changelog: v0.4.5...v0.4.6
v0.4.5
What's Changed
✨ Added
IMAP extension support
- ✨ Add fetch support for
BINARY
andBINARY.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 #226MAILBOXID
ResponseCodeMAILBOXID
attribute forNet::IMAP#status
EMAILID
andTHREADID
message attributes toNet::IMAP#fetch
/#uid_fetch
andFetchData#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
📚 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
v0.4.3
What's Changed
Fixes
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
andcontinue-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
- @debasishbsws made their first contribution in #210
Full Changelog: v0.4.2...v0.4.3
v0.4.2
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
toauthcid
orauthzid
—or in the other direction, fromauthcid
orauthzd
tousername
. OAuthBearerAuthenticator
may now receive two arguments, to match the commonauthenticate(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 (likeusername
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
andCRAM-MD5
mechanisms. This is for consistency and compatibility with other projects. These mechanisms are obsolete and should be avoided.
- ✨ Add
secret
alias (forpassword
,oauth2_token
, etc) to relevant SASL mechanisms by @nevans in #195
Full Changelog: v0.4.1...v0.4.2
v0.4.1
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 byNet::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
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 affectlist
,xlist
,getquota
,lsub
,expunge
,uid_expunge
,fetch
,uid_fetch
,store
, anduid_store
. - 💥 The
#extension
attribute on BODYSTRUCTURE structs no longer starts withlocation
. The location is now parsed directly and available from theBodyStructure#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
andIMAP4rev2
by @nevans in #111 - ✨🔒 Add
SASL-IR
support by @nevans in #90
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
- ✨ 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
andport
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
andssl_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
andBodyTypeExtension
structs @nevans in #113 - 🗑️ Deprecate backward compatible parameters to
new
andstarttls
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
- Adds Ruby 3.2 to the CI matrix. by @petergoldstein in #99
- Bump ruby/setup-ruby from 1.143.0 to 1.144.0 by @dependabot in #138
- ✅ Add RFC3454 data, to support offline testing by @nevans in #137
- ⬆️ Bump actions/deploy-pages from 1 to 2 by @dependabot in #140
- ⬆️ Bump ruby/setup-ruby from 1.144.0 to 1.144.1 by @dependabot in #139
- ⬆️ Bump ruby/setup-ruby from 1.144.1 to 1.144.2 by @dependabot in #141
- Bump ruby/setup-ruby from 1.144.2 to 1.145.0 by @dependabot in #142
- Bump ruby/setup-ruby from 1.145.0 to 1.146.0 by @dependabot in #143
- Bump ruby/setup-ruby from 1.146.0 to 1.148.0 by @dependabot in #148
- Bump ruby/setup-ruby from 1.148.0 to 1.149.0 by @dependabot in #149
- Use test-unit-ruby-core from vendored code by @hsbt in #151
- Bump ruby/setup-ruby from 1.149.0 to 1.150.0 by @dependabot in #150
- Bump ruby/setup-ruby from 1.150.0 to 1.151.0 by @dependabot in #153
- ⬆️ Bump ruby/setup-ruby from 1.151.0 to 1.152.0 by @dependabot in #155
- Bump actions/upload-pages-artifact from 1 to 2 by @dependabot in #158
- Bump actions/checkout from 3 to 4 by @dependabot in #173
New Contributors
- @petergoldstein made their first contribution in #99
- @arnt made their first contribution in #114
Full Changelog: v0.3.7...v0.4.0
v0.3.7
v0.3.6
- 🐛 Fixes file permissions regression in v0.3.5 release, reported by @aaronjensen in #154
v0.3.5
Full Changelog: v0.3.4...v0.3.5
- 📚 Fix #response documentation error, by @nevans in 87ba74e
- ✅ Add RFC3454 data, to support offline testing, by @nevans in #137
- Adds Ruby 3.2 to the CI matrix, by @petergoldstein in #99
- Use reusing workflow, by @hsbt in #151
- Decode UTF-7 more strictly, by @nobu in #152
- ⬇️ Continue testing 0.3.x branch against ruby 2.6, by @nevans in 115d190
- ✅ Fix decode utf-7 test for ruby 2.6, by @nevans in 7a60c8f
- 🐛 Fix XOAUTH2 authenticator for ruby 2.6, by @nevans in bd4faa0