Releases: sopel-irc/sopel
Releases · sopel-irc/sopel
8.0.4
8.0.3
8.0.2
Changes between 8.0.1 and 8.0.2
Plugin changes
- safety:
- Gracefully handle invalid URLs containing square brackets [#2646]
- url:
- Fix permission check in
.urlbanand related commands [#2650]
- Fix permission check in
Core changes
- Removed microseconds from
{time_left}and{time_left_sec}values in rate
limitmessageoutput; round up to next second instead [#2653]
Housekeeping changes
8.0.1
Changes between 8.0.0 and 8.0.1
Plugin changes
Core changes
- Use distribution name to query version of entry-point plugins [#2594]
- Added plugin version number in
sopel-plugins showoutput [#2638] - Fixed loading folder-style plugins with relative imports [#2633]
- Fixed rate-limiting behavior for rules without a rate limit [#2629]
config.types.ChoiceAttributelogs invalid values for debugging [#2624]- Also remove null (
\x00) inirc.utils.safe()function [#2620]
Housekeeping changes
- Document advanced tip about arbitrarily scheduling code [#2617]
- Include
versionaddednotes for more methods inirc.AbstractBot[#2642] - Start moving from
typing.Optionalto the| Noneconvention [#2642] - Minor updates to keep up with type-checking ecosystem [#2614, #2628]
- Start checking for incomplete type annotations [#2616]
- Added tests to
findplugin [#2589] - Fixed slowdown in
@plugin.exampletests withrepeatenabled [#2630]
8.0.0
Re-published due to broken automation. Do not adjust your television set; there is no cause for alarm.
Changes between 7.1.9 and 8.0.0
Highlights
Detailed coverage of the major changes can be found in the dedicated
[Sopel 8 upgrade guide][sopel-8-migration].
For users:
- Python 3.8+ is now required
- IRC connections are made with TLS on port 6697 if not configured
- SASL EXTERNAL authentication is now supported
- Plugins in
~/.sopel/modulesare no longer loaded by default- Use the
core.extrasetting to add this directory back if needed
- Use the
- Database options can be configured all at once in new
db_urlsetting (useful
for managed cloud hosting such as Heroku) .blockscommand accepts "nick" and "host" types now, and no longer lies
about supporting "hostmasks" (further improvements to come)- Sopel no longer supports loading (very!) old Phenny/Jenni plugins
- Several built-in plugins have been converted to external packages, to simplify
maintenance and release-management going forward
For developers:
Identifierwas moved tosopel.tools.identifiersand now supports dynamic
casemapping; an optionalcasemappingoridentifier_factorykwarg has been
added to many object types to help manage this at runtime- You can usually just pass
bot.make_identifieras the factory function and
things will Just Work™ - Feel free to use
bot.make_identifier()yourself to get anIdentifier
representing any nick or channel name you get, e.g. as input to a command
- You can usually just pass
- The
core.nicksetting value is now returned as astr, not anIdentifier - Capability negotiation is a first-class plugin API feature (see
plugin.capabilityand the [related documentation chapter][cap-mgmt-8]) trigger.senderattribute as passed to plugin callables is nowNonein
cases where its value is meaningless (events with no channel/query context)- Numerous deprecated API features were removed:
bot.privileges(usebot.channels)bot.msg()(usebot.say())sopel.websubmodule (usesopel.tools.web)
- Messages from other bots are ignored by default on supported networks, but
plugins can opt back in with the@plugin.allow_botsdecorator STATUSMSGprefix is removed fromtrigger.senderif present and stored in a
separatetrigger.status_prefixattribute- See documentation for
bot.SopelWrapper.default_destination
- See documentation for
bot.connection_registeredis now the way to check whether the bot is
connected to IRC, registered with the network, and ready for your plugin to
send commands
Plugin changes
- admin:
- Added
.rawcommand to make Sopel send a raw IRC line [[#2104][]]
- Added
- adminchannel:
- bugzilla:
- Extracted to [its own package][sopel-bugzilla] [[#2481][]]
- calc:
- clock:
- Added
unsetcommands for user & channel time zone/format [[#2181][]]
- Added
- coretasks:
- currency:
- dice:
- Refactoring, bugfixes, and improved test coverage [[#2532][]]
- emoticons:
- find:
- help:
- Now updatable independently from [its own package][sopel-help], but still
installs with Sopel as a dependency [[#2332][]]
- Now updatable independently from [its own package][sopel-help], but still
- ip:
- meetbot:
- Extracted to [its own package][sopel-meetbot] [[#2477][]]
- pronouns:
- Accept abbreviated pronoun sets [[#2070][]]
- Added
.clearpronounscommand [[#2154][]] - Fetch pronoun list dynamically at startup [[#2130][]]
- Support configurable pronoun backend [[#2437][], [#2438][]]
- The old backend at
pronoun.iswent down and never came back, so now you
can use [our replacement][pronoun-ours] or [host your own][pronoun-base]
- The old backend at
- py:
- reddit:
- reload:
- remind:
- safety:
- search:
- seen:
- tell:
- Fixed edge cases in cleanup of tellee argument [[#2584][]]
- translate:
- Improved help output [[#2453][]]
- unicode_info:
- url:
- Improved interaction between
.titlecommand and link handlers [[#2282][]] - Removed traceback from debug log when URL fetch fails [[#2280][]]
- Made channel-privilege-based access to
.urlexcludecommand and friends
configurable [[#2352][]] - Cleaned up code [[#2304][], [#2307][], [#2433][]]
- Added better error handling for DNS lookups [[#2428][]]
- Ignore invalid hostnames [[#2472][]]
- Improved interaction between
- version:
- Support retrieving plugin versions with
.version pluginname[[#2133][]]
- Support retrieving plugin versions with
- wikipedia:
- Commands are now
.wp,.wikipedia; old commands (.w,.wik, &.wiki)
were removed [[#1966][]] - Remove deprecated
lang_per_channelsetting [[#2142][]] - Work around excessive whitespace in math formulas [[#2286][]]
- Don't ping the user who posted a URL that fails to load [[#2315][]]
- Output image description if URL has an image viewer fragment [[#2388][]]
- Handle query strings in article links [[#2414][]]
- Fail gracefully on
Special:namespace links [[#2575][]]
- Commands are now
- xkcd:
Core changes
- Removed support for EOL Python versions (2.7, 3.3, 3.4, 3.5, 3.6, & 3.7),
added testing on newer Python versions (up to 3.12), and modernized coding
standards [[#2062][], [#2073][], [#2123][], [#2124][], [#2134][], [#2136][],
[#2138][], [#2205][], [#2213][], [#2227][], [#2298][], [#2326][], [#2327][],
[#2342][], [#2384][], [#2464][], [#2500][], [#2516][]] - Modified default settings:
- IRC backend refactored to use
asyncio[[#2256][]]- Just in time, too: The
asynchatmodule was removed in Python 3.12
- Just in time, too: The
- Improved IRC connection error handling [[#2430][], [#2431][]]
SopelDBadapted to SQLAlchemy 2.x style [[#2243][]]- Database can be configured all at once with a new
db_urlsetting [[#2087][]] - Replaced
pkg_resourceswithimportlib.metadata[[#2261][], [#2268][]] - Added support for several new IRC features and IRCv3 specifications:
- SASL EXTERNAL client certificate authentication [[#2100][], [#2561][]]
- Sopel uses [the Bot Mode specification][bot-mode-spec] to mark itself as a
bot and track other users that are flagged as bots [[#2088][], [#2448][]] userhost-in-namescapability and the legacyUHNAMESfeature [[#2102][]]chghostcapability [[#2116][]]
- Improved SASL handling when auth fails [[#2187][], [#2191][]]
- Added automatic
CASEMAPPINGhandling based onRPL_ISUPPORT[[#2231][]] - Plugins in
~/.sopel/modulesare no longer loaded by default [[#2119][]] - Removed support for Phenny/Jenni plugin style [[#2126][]]
- Ignore
bot-tagged messages by default [[#2089][], [#2272][]] - Privilege tracking (MODE event handling) refactored [[#2131][]]
- Maintain ordering of
ISupport.PREFIXproperty [[#2200][]] - Added
__slots__toChannelandUserobjects [[#2233][]] - Improved handling of the bot's nick getting changed [[#2240][]]
- Improved tracking and enforcement of rate limits [[#2297][]]
- Prevent infinite loop on connection failure [[#2306][]]
- Added
ssl_ciphersandssl_minimum_versionsettings [[#2246][], [#2306][]] - Added
antiloop_repeat_text,antiloop_silent_after,antiloop_threshold,
andantiloop_windowsettings to control command-loop prevention [[#2320][]] - Using
,inListAttributevalues logs a warning [[#2252][]]- Write lists with newlines instead; Sopel 9 will remove splitting on
,
- Write lists with newlines instead; Sopel 9 will remove splitting on
- IRC connections use TLS on port 6697 by default [[#2277][]]
- Potentially a breaking change, but the configuration wizard has long
written these settings to the final config file even if they were left at
the default values
- Potentially a breaking change, but the configuration wizard has long
- Fixed
UHNAMESrace condition caused by joining channels too soon [[#2321][]] - Removed hunting for CA root store [[#2278][], [#2303][]]
...
7.1.9
7.1.8
Changes between 7.1.7 and 7.1.8
Plugin changes
- isup: ensure compatibility with newer
requestsversions [#2235] - reddit: handle image preview links [#2245]
- search: per tests of both back-ends, warn more consistently about multiple
site:operators [#2254] - translate: fix accepting language hints for Chinese [#2242]
- url:
- wikipedia: refine handling of sections with "hatnote" templates [#2225]
- xkcd: improve reliability of comic search [#2247]
Core changes
- Formatting tweaks in IRC logging output [#2250]
- Requirement tweaks to make sure installing on Python 3.4 still works
(but if you're still using that, please update your Python)
API changes
- Fix/improve more documentation [#2251]
7.1.7
Changes between 7.1.6 and 7.1.7
Plugin changes
- adminchannel: fix a very old bug in NUH (hostmask) handling [#2221]
- reddit:
- wiktionary: correctly handle multi-paragraph etymologies [#2214]
Core changes
- Added an alert if the IRC server registers the bot as a client using a
different nickname than what's set incore.nick[#2215]
7.1.6
Changes between 7.1.5 and 7.1.6
Plugin changes
- reddit: fix regression in shortlink (
redd.it/<postID>) handling [#2201] - url: fix tripping on HTML character entities like
'if running on
Python 3.4+ [#2204] - wikipedia: add mobile links to URL handling [#2201]
Core changes
- Detect UTF-8 locale on Windows [#2174]
API changes
7.1.5
Changes between 7.1.4 and 7.1.5
Since 7.1.4 was released, an expiring TLS root certificate caused us some problems in the old CI system we're still using for Sopel 7.1.x to run tests against EOL versions of Python. Our workaround in #2192 (basically "Workaround 1" from this OpenSSL blog post) might be of use to anyone still running Sopel on an old system.