Releases: sopel-irc/sopel
6.6.1
Changes between 6.6.0 and 6.6.1
Module changes:
- spellcheck's pyenchant dependency is no longer required for py3.7+
- This should alleviate a lot of installation problems due to pyenchant being
unmaintained. If use of the spellcheck module is desired, the necessary
libraries may be installed manually.
- This should alleviate a lot of installation problems due to pyenchant being
6.6.0
Changes between 6.5.3 and 6.6.0
Sopel 6.6.0 has been a long time coming, but it contains a metric ton of fixes
and enhancements. The big stuff is yet to come in Sopel 7, though; stay tuned!
(You can get some hints by browsing the GitHub milestones.)
View and contribute toward Sopel's budgetary needs by visiting the project's
new Open Collective page: https://opencollective.com/sopel
Now that Sopel 6.6.0 is released, the focus will shift from preparing the new
release to migrating the website and documentation off of Embolalia's personal
infrastructure. Once this migration is complete, Sopel's documentation will be
updated to reflect the changes/additions listed below. Questions about the new
(and old) API methods are welcome in #sopel on Freenode, of course, as always.
Thank you for bearing with this transitional period!
Importantly, a couple of broken modules have been removed in this release. For
easy reference, they and their functional replacements (available on PyPI) are
listed near the top of the "Module changes" section.
Because this is the last release planned before Sopel 7, it's important to note
some upcoming changes. They're mostly for module developers, or for bot owners
who run unmaintained third-party modules (which might need manual updating).
But first, a user-facing change.
Sopel is drifting toward a more streamlined release model, which will see most
of the core module library split out into separate packages. Moving modules to
their own packages will enable faster fixes when APIs change, and easier module
adoption by members of the community.
Further process details will appear in future changelogs as modules are moved
out of core, but the plan is to have Sopel "require" modules it used to include
for a release or two after their removal. Existing installations should thereby
have a smooth transition, as long as they get updated reasonably often.
To discuss this plan, visit: #1291
And now, for the developer stuff.
There will be some attention given to how Identifier objects work in Sopel 7. In
particular, the way lowercase works appears to have been wrong for some time.
Subscribe to #1389 for updates, or to
join the discussion on the best plan for addressing this.
Also in Sopel 7, the following deprecated functions in sopel.web will be removed:
get(), head(), post(), get_urllib_object()
Module authors should replace these with equivalent code using requests. If you
don't know what that is, you're in for a treat: https://pypi.org/project/requests/
Remaining sopel.web functions might also move in a future major release. See
#1318 and comment your opinion if you
are a module developer. There is still plenty of time to give feedback; nothing
will happen before Sopel 8 at the earliest.
Support for multiple help examples on each module command is planned for Sopel 7
and will allow for clearer command and argument documentation. The current help
system uses a deterministic but unintuitive method to choose a single example to
output. The current plan is to make the new multi-example behavior opt-in, so
only help for modules that are explicitly updated to support it will change.
Follow this initiative at #1200
Bot owners and admins might appreciate the new ignore system proposal, which
would (among other things) make "hostmask" blocks actually block hostmasks!
See #1355 to participate in the design
process; this change is tentatively planned for Sopel 7 but may be pushed back.
And finally, for users who hate SQLite with a passion: Work on bringing back
alternate DB support has begun! It's unclear how soon this will be ready, but
users who want to switch off SQLite to another database engine might be able to
do so as early as Sopel 7. Follow the ups and downs of this long-awaited
journey at #1446 for the time being.
Module changes:
- Added emoticons module: includes .shrug, .tableflip, .lenny, and other common kaomoji
- Added instagram module: displays information about Instagram links in chat
- Removed movie: The OMDb API went private some time ago (Q2 2017)
- See sopel-modules.imdb on PyPI for a functional replacement
- Removed weather: Yahoo deprecated its weather service, the last known keyless weather API
- See sopel-modules.weather on PyPI for a functional replacement that also adds the forecast
command originally planned to launch with Sopel 6.6.0.
- See sopel-modules.weather on PyPI for a functional replacement that also adds the forecast
- admin module's .set command handles spaces properly now
- bugzilla no longer spits out an error on shutdown if its domain list is empty
- dice module's .roll/.dice/.d command gives friendlier errors, and its .choice/.choose/.ch command
has cleaner output (will be further improved in a later release) - etymology module updated to work with etymonline.com's changes
- ip module can now look up nicknames (user's hostname) & IPv6 addresses
- ip module switched from deprecated GeoIP database to GeoIP2
- isup module can be forced to ignore untrusted/broken HTTPS with a new command alias, .isupinsecure
- lmgtfy module gained improved output URLs (HTTPS, encoded query) and help examples
- reddit module now picks up links under all commonly used subdomains
- reload's habit of duplicating packaged modules' command output has been significantly curtailed
- There are still some edge cases (like reloading a module with a removed function) that might
still cause problems, but the majority of module updates should be OK now. - This feature will continue to improve over the next few releases.
- There are still some edge cases (like reloading a module with a removed function) that might
- search module should behave better when encountering Unicode in URLs on Python 2
- search now warns .ddg/.g users of a bug affecting multiple "site:" operators in a single query
- This is a bug in DuckDuckGo's plain-HTML SERP, and they have ignored all attempts to report it.
Sopel's DuckDuckGo code might be rewritten to use an unaffected interface in the future.
- This is a bug in DuckDuckGo's plain-HTML SERP, and they have ignored all attempts to report it.
- tld module gracefully handles missing arguments now
- translate now handles API failures gracefully
- url module can now create a short URL for convenience when fetching title
- only URLs longer than configured minimum length
- off by default
- url module will say an error if .title command fails
- url module's URL finder will ignore suspicious trailing punctuation, making the auto-title feature
more reliable when links are included in sentences - version module no longer prints "wat" to the console/log when answering CTCP VERSION requests
- wiktionary module now decodes HTML entities in its output before sending, and it should also now
give correct results for affixes & definitions containing reference tags - xkcd fetching by comic title should work again (switched back-end search provider)
- Many modules updated to use HTTPS in both API calls and output
Core changes:
- Added userserv option for auth_method
- Added default value of 'UTC' to default_timezone
- Added alias_nicks option
- Lets Sopel respond to (a) nickname(s) other than the name it uses for its IRC nick
- Made handling CNAME'd TLS hostnames more forgiving
- Raw logging is no longer enabled by default
- Comparisons between Identifiers and other types were improved
- Sopel no longer sends the sticky modifier for capabilities
- Database tables are now created using "IF NOT EXISTS" to reduce error potential
- Deprecated sopel.web calls in various modules updated to use requests instead
- Intents/CTCP handling fixed
- Fixed more cases where module shutdown routines weren't running
API changes:
- New formatting methods: italic, strikethrough, monospace, hex_color, reverse (inverted video)
- With the exception of italics, these are all "niche" formatting codes that
have relatively limited client support, but they are included for completeness.
- With the exception of italics, these are all "niche" formatting codes that
- sopel.db.get_uri() was returning an incorrectly formatted result, now fixed
- Fixed populating bot.channels privileges dicts on connect
- Fixed updating User objects when receiving NICK events from the server
- Documentation added/corrected in several places
- Command prefix in examples is now assumed to match the default regex pattern (currently '\.')
- This fixes some issues with incorrect help output, but might cause new problems in modules that
use non-standard prefixes in their command examples. - Sopel's maintenance team regrets not providing advance warning of this change, but the potential
impact is limited to perhaps a few misplaced characters in help output, at most -- same as the
bug itself, but likely with a much lower incidence.
- This fixes some issues with incorrect help output, but might cause new problems in modules that
6.5.3
Changes between 6.5.2 and 6.5.3
Module changes:
- tell module takes nicknames up to 30 characters long now (previously 20)
- reddit module (and Sopel, by extension) once again accepts any installed version of PRAW
Core changes:
- Specified which IPython versions pip should give Sopel depending on Python version in use
- Fixed trying to use pytest stuff in production
- Various testing tweaks
6.5.2
Changes between 6.5.1 and 6.5.2
Larger than the usual "patch" release because it's been so long since the last version and a number of bugs crept in. New maintainer (dgw) says hi.
To reduce the "dependency hell" of installing things that Sopel doesn't need unless specific modules are used, the spellcheck and ipython modules will likely be removed from core and published separately in a future release (tentatively, Sopel 7).
Module changes:
- Added (restored) .bing command to search module, and fixed Bing results
- Updated DDG ad filtering, and converted query URLs in search module to HTTPS
- Fixed search module .suggest command using Google suggestions API
- Fixed reddit and updated PRAW version requirement
- reload module no longer tries to reload nonexistent modules when passed the name of a system package (e.g. "time" or "re")
- remind module will now give the reminder time in the correct timezone when using .at
- wikipedia module ignores File: namespace links, and output from other Sopel bots' wikipedia modules
- Fixed retrieving xkcd comics by number
- Fixed currency module (updated API URLs)
- Tweaked url module's title finder to reduce garbage from Gawker/Kinja sites
- help module now filters out duplicate commands from its command list
- Fixed wikipedia module's handling of special characters like &
- Prevent wikipedia module spewing an error if someone posts a link to an article that doesn't exist
- help module now sends the command list to ptpb.pw, as GitHub removed the anonymous Gist API
- Switched calc module to use new backend service for .py command, to reduce outages
- Added physical temperature limit to units module
- Tweaked argument handling in pronouns module
Core changes:
- Logger bug squashed
- Shutdown method handling fixed
- Added documentation in a few places
- Made finding the system SSL/TLS certificate trust store more robust
- Modules with example tests no longer need to hack around pytest running their setup() routines
- Corrected IPython dependency for ipython module (now installs with Sopel automatically)
- Widened acceptable requests version range
API changes:
- Module shutdown() methods should fire correctly now
- ListAttribute config values now return [] (empty list) when blank instead of [""] (empty string in list)
- Updated documentation for (still deprecated) sopel.web - the documentation for post() included a nonexistent kwarg 'headers'
6.5.1
6.5.0
Changes between 6.4.0 and 6.5.0
Module changes:
- xkcd module can now recognize xkcd.com urls
- SSL is verified for HTTP requests when not turned off in the config
- The command list is placed in a gist, to prevent flooding
- Title finding uses a custom user agent, to prevent issues with some sites
Core changes:
- Intent handling is improved
API changes:
- A @url decorator is added to simplify URL handling
6.4.0
Changes between 6.3.1 and 6.4.0
Module changes:
- For some subreddits where NSFW is used to mark spoilers, an appropriate tag is shown.
- .ddg avoids giving ad results.
- .wa is fully removed; a replacement can be found on PyPI as sopel-modules.wolfram
Core changes:
- Support for authenticating with Quakenet's Q is added.
- Errors from empty PID files are fixed.
- Issues with errors not being logged to the logging channel are fixed.
- Topic tracking is improved.
- extended-join is supported properly
- Error messages being reported to the triggering channel/user can be disabled.
API changes:
- Channel priliveges are no longer checked in private messages.
- Rate limiting can now be done by channel and globally, not just per user.
6.3.1
Changes between 6.3.0 and 6.3.1
Module changes:
- The xkcd module is working again
- Fix an issue causing unicode errors to show for some URLs when using Python 2 (but you should really switch to 3!)
Core Changes:
- Fix a bug in QUIT message parsing which caused certain users to be flooded with PMs if their nick matched the first word of a user's QUIT message (such as "disconnected" or "ping")
- Fix a rare python 3 incompatibility bug when quitting due to too many core errors.
- We no longer show a warning when detecting a non-unicode system locale if you're still using Python 2
6.3.0
Changes between 6.2.0 and 6.3.0
Module changes:
- Many modules ported to use requests package for stability and security.
- Weather location lookup is fixed.
- Confusing and unnecessary commands like .op were removed.
- Splitting of options in .choice is now more intuitive.
- Some edge cases in reddit post information were fixed.
Core changes:
- A check is added to warn about an obscure environment issue that can cause strange errors.
- Regex characters in the bot's nick no longer cause issues when a rule has the nickname added.
- Rate limiting is tweaked slightly, which should reduce the severity of the .commands flood bug until a proper solution is found.
API changes:
- The current topic of a channel is now available as the Channel object's topic attribute.
- sopel.web has been reworked as a wrapper around requests; it remains deprecated.
6.2.1
Changes between 6.1.1 and 6.2.0
Module changes:
- An error in excluding URLs from title display is fixed
- Case sensitivity issues in currency and dice commands are fixed
- Guards to require channel or private message are added to a number of commands, to avoid confusing errors
- A calculation bug in the countdown command is fixed.
- Misc minor bugfixes and improvements
Core changes:
- An occasional error with SSL connections on Python 3 is fixed
- On servers which support IRCv3 account extensions, the services account name can be used to authenticate the owner
- Numerous additional IRCv3 features are supported
API changes:
- bot.privileges is now deprecated in favor of bot.channels
- bot.channels contains more information about the channels the bot is in
- bot.users is now available with information about the users Sopel is aware of
- sopel.web is now deprecated in favor of the third-party
requests
library - trigger.time is added with the current time, or server-time if the server supports it
- sopel.tools.events is now available as an enum of IRC numeric replies