v0.11.0 (2020-08-08)
Changes:
- Drop support for Node 6
Misc:
- Update dependencies (fixing
npm audit
vulnerabilities):- irc-colors to ^1.5.0
- chardet to ^1.2.1
- iconv-lite to ^0.6.2
- plus a lot of devDependencies
- Reduce use of .hasOwnProperty called on objects
- Remove Greenkeeper
- Move from Travis CI to GitHub Actions
v0.10.0 (2018-06-14)
Fixed bugs:
- Fix character set detection by using node-chardet instead of jschardet – fixes #59
Misc:
- Test on Node 10, and no longer on Node 4
- Use Greenkeeper for keeping dependency versions up to date
- Add tests to ensure the character set conversion code works (with dependencies) on various test data, instead of just checking it uses stubbed dependencies
- Fix deprecation warnings on Node 10 around using the
Buffer()
constructor - Update sinon to ^6.0.0
- Update nyc to ^12.0.1
v0.9.0 (2018-03-29)
New features:
- Use iconv-lite and jschardet instead of iconv and node-icu-charset-detector to detect and convert encodings, to reduce errors when trying to install previous optional dependencies – fixes #53
- Allow
/
and?
to appear in non-strict-parsed usernames – fixes #55 and implements #56 - Add 379 RPL_WHOISMODES, 335 RPL_WHOISBOT, 307, and 671 RPL_WHOISSECURE to recognized list of codes – fixes #47, #48, #49 and #50
Misc:
- Test on Node 9, and no longer on Node 5 and 7
- Update mocha to ^5.0.0
- Update proxyquire to ^2.0.0
- Fix deprecation warning for sinon's
.reset()
v0.8.1 (2017-11-02)
Fixed bugs:
- Fix
.join
with channel keys (passwords) – this broke as a result of the previous change to accept comma-separated lists of channels - Make the automatic joining of
opt.channels
channels use the internal.join
method, so channel keys can again be handled properly - Fix matching channels when adding to or removing from
opt.channels
automatically (on.join
or.part
), especially around channels with channel keys or different casing
Misc:
- Tests: Upgrade
mocha
dependency to^4.0.0
- Tests: Fix never-ending tests by manually disabling the flood protection interval when the client is used up
v0.8.0 (2017-09-29)
Breaking changes:
- The
unhandled
event must not be used to catch specific events – useraw
for that instead. It should be used to handle explicitly events the bot does not do anything with, such as by notifying the user that such an event has occurred - Errors in the
raw
event no longer throw, but are caught and passed to theerror
event. As in the documentation, this may still throw if no handler is bound to this event - The
.join
and.part
methods no longer accept space-separated lists of channels; this caused the bot to send invalid commands to the server. Instead, use comma-separated channel lists, and then the callback will be called for each channel as in the documentation EventEmitter
is now used directly from the require (i.e.var EventEmitter = require('events')
, whereas previouslyvar EventEmitter = require('events').EventEmitter
). This fixes a bug with an atom project using the unforked node-irc version (relevant pull request) but may break compatibility with old versions of node (0.x versions, as those are no longer tested against)
New features:
- Add
irc.canConvertEncoding()
(aliased toclient.canConvertEncoding()
) to test if the library can convert different encodings with the libraries it's located - Add support for
JOIN 0
(which, in the IRC spec, parts from all channels) - Handle SASL better: use the IRCv3 spec, and if the server does not support SASL, emit on the
error
event – fixes part of #38
Fixed bugs:
- Ensure the
debug
config option causes the client not to output when disabled – fixes #34 - Stop renicking properly when
renickCount
is hit. Previously it would renick to a second nickname and then continue the renicking process – fixes #41 - Handle code
378
on join – fixes part of #38 - Ensure
client.action
splits long messages properly (that is, it still wraps long lines in the CTCP action markers) - Ensure the bot disconnects immediately after programmatically calling
activateFloodProtection
now disconnects immediately like ifopt.floodProtection
is used - Store the data from
rpl_isupport
in a way that represents its structure better (objects instead of arrays for key-value pairs, and consistently parse values as integers where applicable) - Emit the lowercase version of the
names#channel
event when#channel
is mixed-case - Clean up the automatic reconnection to the server when manually calling
client.disconnect()
- Trigger the callback to
join
andpart
even if the server channel differs in case from the one passed toclient.join
orclient.part
Misc:
- Add copyright notice to
lib/irc.js
per fork - Update various dependencies (
coveralls
,nyc
) - Docs: Move the 'character set detection' instructions to their own section of the README
- Docs: Mention the Gitter chat under the 'Further Support' section of the README
- Docs: Add test coverage badge to README
- Docs: Reorder config options and add descriptions for missing items – fixes #33
- Docs: Improve presentation by marking things in inline code tags, instead of italics
- Docs: Clarify that
client.activateFloodProtection
should only be called once per instance, not once per connection - Docs: Fix typos especially around new inline code blocks
- Tests: Overhaul the whole testing system from
tape
tomocha
- Tests: Improve the
test.js
irc client REPL - Tests: Add tests for a lot more of the code – this takes our coverage up from 62.614% to 94.334%! (#29)
v0.7.0 (2017-08-06)
New features:
- Add auto-renick functionality, to renick to config nickname if the bot receives an
err_nicknameinuse
event and theautoRenick
config option is enabled (relatedly: add acancelAutoRenick
method) – fixes #15 - Disallow
connect()
when already connected (output to stderr and ignore) - Likewise disallow
disconnect()
when already disconnected - Add new
unhandled
event for when a message is received that isn't handled internally (not handled otherwise, not recognized as an error) - Debug when line received from server
- Debug on ping timer start and stop
Fixed bugs:
- Flag code 477 as an error (
ERR_NOCHANMODES
orERR_NEEDREGGEDNICK
, not given a human-readable name due to ambiguity) – fixes #19 - Only autorejoin when the client itself is kicked; add tests for autorejoin
- Emit the
error
event after the output more consistently - Add test for strict parsing mode
- Add test for CyclingPingTimer
- Reduce chance of random failure in tests (by not initializing a server when we disconnect the client without any server interaction)
- Debug CyclingPingTimer to stdout instead of stderr
- Run linting in
posttest
phase
Misc:
- Add code coverage using
nyc
andcoveralls
- Rename
test-433-before-001
totest-nickinuse-before-welcome
; move some fixtures into the test itself - Reword some tests, add skeleton for more tests (hopefully these will be implemented soon)
- Docs: Update CONTRIBUTING.md to reflect fork
- Docs: Reorder events and methods in documentation to hopefully be more relevantly grouped
- Docs: Update
whois
example - Docs: Clean up some comments in the code
- Docs: Add
netError
event (emitted when the socket connection to the server emits an error event – see net.Socket for more details) - Docs: Fix some typos
- Docs: Reorder config options to have the order match between the object and the later paragraphs
v0.6.2 (2017-07-16)
Fixed bugs:
- Fix reconnection by destroying the connection only when properly closed (and add a test for this)
- Guard an error from showing when
showErrors
is false; relatedly use an 'out' object for error and debug messages to be less repetitive with guarding based on config values - Latest changelog version links now point to the right repository
- Docs: fix formatting of a RFC2812 link
- Remove unused jscs devDependency
Misc:
- Make the 'non-latest' message (hopefully) less confusing, only show in debug mode
- Update tape to ^4.7.0
- Update eslint to ^4.2.0
- Docs: clarify example message is an example
- Docs: be consistent with phrasing around boolean config values
- Add Node 8 to Travis builds
v0.6.1 (2017-07-01)
Fixed bugs:
- Fix crash on
-mode
event when mode not set (e.g. unbanning a user when the user is not banned) - README now represents updated version of program, represents name change of npm package to
irc-upd
v0.6.0 (2017-07-01)
This is the first version of a fork to the project. It attempts to address some of the more major issues with the original version. It is also the first version to stop testing against node.js 0.10 and 0.12.
Implemented enhancements:
- Upgrade dependency tape
- Switch to eslint instead of jscs for linting, now jscs is no longer maintained
- Support Japanese and Korean characters in nicknames, and add a corresponding option,
enableStrictMode
, to switch back to the more RFC2812-compliant parsing mode - Improve documentation; fix up some typographical errors, ensure code blocks parse correctly, improve some descriptions and add the
password
option to the options object
Fixed bugs:
- Keep track of users in each channel better, so the quit, kill and nick events are only passed the relevant channels.
- Split lines by byte instead of character, so line splitting with higher Unicode codepoints (e.g. CJK characters) works
- Prevent tests from hanging by properly disconnecting the client (and stopping the ping timer) when the 'close' event is received
- Related to the above, do not respawn a connection when receiving the 'close' event if the connection is not the current connection (as it has presumably been abandoned)
- Only send messages when the bot's connection is available, to prevent a crash when messages are queued and the connection ends
v0.5.2 (2016-11-25)
Merged pull requests:
v0.5.1 (2016-11-17)
Implemented enhancements:
- Detect ping timeout #76
Fixed bugs:
- Call stack size exceeded #337
- Many servers do not send a meaningful hostname in 001 #288
- disconnect does not appear to send the reason to the server #89
Closed issues:
- Creating a whitelist against the nickname #484
- Deployed on Heroku, app is running, no IRC connection #481
- Install does not work on Debian stable. #475
- Non private reply with highlighted nick #474
- retryDelay not mentioned in the docs #446
- 'names' event returns only 10 nicks #414
- can't get chat messages #384
- parse message TypeError: Cannot read property '1' of null #331
- TypeError: No method channel #254
- Unable to connect to OFTC network over SSL #247
- Specific mode sequences can crash the bot #233
- Event listener ctcp-privmsg's "message" is empty #207
- Mass channel MODE with -lk throws error #177
Merged pull requests:
- Respect opt.messageSplit when calculating message length #385 (LinuxMercedes)
v0.5.0 (2016-03-26)
Implemented enhancements:
Fixed bugs:
Closed issues:
- How to get current server. #453
- Library never connects to server #451
- Ping timeout causes double reconnect #449
- Changelog for v4.0? #435
- How to multiple server connections at the same time #434
- Add connected flag #430
- Add link to docs on github wiki page #422
- maxLineLength is not set by default and can crash the bot #419
- PING/PONG Error! #415
- quit event provides wrong channel information #398
- Detect client timeout ? #375
- User MODE changes are not being received in +MODE/-MODE handlers #374
- Error client.say(nick, "record\w3xp\random\wins"); #369
- SASL over SSL never happens #250
- Message Events Ignored #242
- Bot crashes on mode +q-o #221
- Cannot pass MODE command with multiple arguments #147
- Certain MODE messages could access on undefined #144
- mode emit event #136
- QUIT, KILL removes users from user list before processing event hooks #73
Merged pull requests:
- fix(ping timeouts): When a ping timeout is detected properly destroy … #452 (jirwin)
- Added link to install instructions for ICU #450 (spalger)
- User status isn't updated on MODE if he's not VOICE or OP #448 (Zoddo)
- Add a Gitter chat badge to README.md #444 (gitter-badger)
- Detect and recover from ping timeouts #418 (philip-peterson)
- Adding support for command rpl_whoreply (352) #413 (lan17)
- Update .gitignore #373 (Phalanxia)
- Update license attribute #372 (pdehaan)
v0.4.1 (2016-01-27)
Implemented enhancements:
Fixed bugs:
Closed issues:
- Can't use it sadly #433
- how do I auto reconnect if the server goes down?� #431
- WebIRC Support #427
- Error Handling Improvements (all errors should gracefully fail) #421
- client.send() always include : in first text #420
- node-irc with express/socket.io #417
- Not enough parameters' #416
- Help with error #393
- Microsoft Visual Studio needed to install this in windoze #390
- oper command #234
Merged pull requests:
- Remove #blah from the example #440 (ben-rabid)
- Move dependency 'ansi-color' to devDependencies #407 (ho-ho-ho)
v0.4.0 (2015-09-30)
Fixed bugs:
Closed issues:
- Error: Cannot enqueue Handshake after already enqueuing a Handshake. #404
- How to get current Config? #401
- Error Installing #400
- maxLineLength undefined when splitting long lines #395
- Package 'ansi-color' not found #389
- speak function bug, can't compile #388
- Error undefined nick #371
- Send CustomCommand to server #367
- The framework constantly crashes - "Cannot call method 'replace' of undefined" #364
- Trying to make a bot and can't figure out how to kick and do other op tasks #363
- Update Client.chans on change MODE #361
- Can node-irc determine who is a mod? #340
- Config with Password? #336
- Update node-icu-charset-detector version for nodejs 0.12 compatibility #332
- [Question] Timestamps or how much time a user has been connected? #321
Merged pull requests:
- Bug fix: 'pm' event wouldnt always be trigged #397 (ravenstar)
- Call updateMaxLineLength on connection #396 (secretrobotron)
- Fix typo. #383 (schmich)
- SyntaxError: Octal literals are not allowed in strict mode. #368 (tom--)
- Fix channel user modes on Twitch IRC (closes #364) #366 (sim642)
v0.3.12 (2015-04-25)
Closed issues:
Merged pull requests:
- Cosmetics: fix minor spelling mistakes [ci skip] #356 (vBm)
- Travis: Sort supported node versions #355 (vBm)
- Readme: Add badges for npm version, dependency status and license #354 (vBm)
- Fix for unrealircd auditorium #352 (PNWebster)
- Add information about action events in the docs #350 (ekmartin)
- Fix charset conversion for invalid charsets #347 (aivot-on)
- fix(travis): Add node 0.12 and iojs to travis. #333 (jirwin)
v0.3.11 (2015-04-06)
v0.3.10 (2015-04-02)
Closed issues:
- Error with node-icu-charset-detector #327
- Cannot call method 'match' of undefined #326
- TypeError: Cannot read property '1' of null #325
- Crashes if channel is undefined on say command #314
- Issue installing on OS X Mavericks #308
Merged pull requests:
- Fixed case sensitivity bug in client.whois() #338 (itsrachelfish)
- fix(deps): Upgrade node-icu to 0.1.0 for v0.12 support. #334 (jirwin)
- Update API documentation with missing event and internal variable #330 (RyanMorrison04)
- Documentation improvements #323 (TimothyGu)
- fix blank lines being passed to parse message #318 (helderroem)
- Rember to add path.resolve while requiring things! #316 (Palid)
- Fix option handling when passing a secure object #311 (masochist)
- Added a bit more information about Client.chans #310 (itsrachelfish)
v0.3.9 (2015-01-16)
Implemented enhancements:
Fixed bugs:
Closed issues:
- Please add feature for IRCv3 message tags! #298
- Switch to irc-color #297
- SSL Broken as of v0.3.8 #296
- Version 0.3.8 failed while using hubot-irc #289
- Loading self signed certs #262
- 0.3.x : 'nicknameinuse' event missing #258
- Is there an autoConnect callback? #239
Merged pull requests:
- Log net connection errors. Thanks Trinitas. #307 (jirwin)
- Bring in irc-colors for stripping colors #306 (masochist)
- do not autorejoin on kicks. bad bot! no cookie! #303 (masochist)
- fix(style): Clean up various style issues in irc.js #299 (jirwin)
- Write a test for setting the hostmask when nick is in use #294 (masochist)
- fix(parseMessage): Factor parseMessage to another file for decoupling. #293 (jirwin)
- Set self.hostMask to the empty string to elegantly solve #286 #292 (masochist)
- First draft of contributing doc #287 (masochist)
- Fix data split delimiter #280 (ota42y)
v0.3.8 (2015-01-09)
Fixed bugs:
- Client.whois on nick not in use crashes bot running with v.0.3.3 #267
Closed issues:
- Documentation on RTD gone? #264
- Allow passworded IRC connections #263
- Parse RPL_CREATIONTIME #260
- News from 0.3.x? #259
- The master branch is not up to date with npm #257
- Browserify support? #253
- self.chan and self.chandata events #243
Merged pull requests:
- fix(webirc): Set sane defaults for WEBIRC options. #283 (jirwin)
- WIP: fix(tests): A first attempt at a sane pattern to begin testing the handling of the protocol. #282 (jirwin)
- fix(irc.js): Use the proper EventEmitter class. #281 (jirwin)
- Update colors.js #279 (bcome)
- Optional encoding option #278 (tarlepp)
- WEBIRC support #276 (Trinitas)
- fix(style): Remove folding hints from codes and irc. #275 (jirwin)
- fix(tests): Ditch mocha and should for tape! #274 (jirwin)
- Add travis with lint and tests #271 (jirwin)
- Add proper long line wrapping. #268 (masochist)
- update README regarding npm and the 0.3.x branch #256 (mbouchenoire)
- Updated API information #240 (Hydrothermal)
- Add option to specify bind address when connecting #146 (revmischa)
v0.3.7 (2014-05-29)
Closed issues:
- Sending nick out of sequence can cause exceptions #235
- Events need a different approach #231
- Check if an user is a voice, half-operator, operator,... #230
- my script throws error "You have not registered" #229
- Cannot call method 'indexOf' of undefined #227
- I need SPEED ! #223
- With stripColors: true set, a post only containing control characters, such as color or bold crashes the library #218
- Bot Disconnects Every 10 Minutes #215
- State of project #213
- add the 'action' event to the documentation #212
- line ending problem: module does not support UNIX Line Ending #208
- identify command? #205
- looking for a maintainer? #197
- pm only works with mirc clients? #196
- message time #195
- Ping Pong idea #194
- examples not working #193
- Code reuse and license compliance #192
- Pull requests building up in backlog #189
- Bold text #185
- Support for server-time extension #184
- client.removeListener #180
- Adding callback to say() method of Node IRC client #179
- Getting "Assertion failed" error with secure:true flag #178
- PRIVMSG that starts with : causes crash #173
- MODE change resulting in constant crash #171
- client.addListener("message#Channel" bug #169
- Reconnection fails because of nick modification #168
- When sending NICK command, the channel returned is lowercase #167
- Crash when using NAMES command #163
- Incompatible with Node 0.10.x with
secure
istrue
#160 - Handling ISO-8859-1 characters #157
- Cannot login to twitch irc #156
- Problem with connecting to Inspircd server #154
- Method for specifying the user's hostname #153
- Limit output #152
- Change nick at runtime? #149
- how to connect with a server password for twitchtv/justintv? #148
- please delete it #141
- Ensure QUIT message is processed correctly when using flood protection #138
- add connection parameters to include userName and realName #135
- Add an 'action' event #134
- chat server connection errors #127
- CTCP event should provide message object (similar to message# event) #126
- new npm release? #124
- MODE messages don't appear to work correctly with JustinTV/TwitchTV chat. #123
- Colons in user messages cause issues #122
- rpl_channelmodeis messages are not parsed correctly #120
- Issue with Non-ASCII Nick #104
Merged pull requests:
- Fixes #235 type error where channel does not exist #236 (qq99)
- support for use_strict #228 (tedgoddard)
- Fixed irc not connecting to selfsigned servers #201 (antonva)
- added 'err_erroneusnickname' message case' #191 (redshark1802)
- fix(package.json): Add ansi-color to the package dependencies. #188 (jirwin)
- fix(lib/irc): Use protected loops when iterating channels to remove users #187 (jirwin)
- Fix the color wrap function #186 (cattode)
- Hide 'Sending irc NICK/User' debug msg #183 (porjo)
- Added bold/underline "colors" #170 (BenjaminRH)
- Fix Cient.join: when user specify a password #166 (macpie)
- Fix a crash bug when a zero length message is received #165 (shiwano)
- Change to be a non-existing server/channel #162 (chilts)
- Add support for client certificates in connection handling #161 (squeeks)
- fixed a small typo for util.log() on MODE change #158 (JohnMaguire)
- Fix: codes variable is leaked to global scope #155 (garyc40)
- Added user message support for PART #140 (qsheets)
- Fix for receiving messages with colons #137 (qsheets)
- add names for five numerics; fix handling of 002 and 003 #131 (rwg)
- provide message object to ctcp events #130 (damianb)
- add names#channel event #129 (ydnax)
- Added SASL support #125 (gsf)
v0.3.5 (2013-01-01)
Closed issues:
- How to handle disconnects? #117
- opping and kicking on freenode.net #110
- 'LOAD' event issue? #108
- TOPIC command doesn't play nicely with send function #98
- Add support for more channel types #97
- Passing a large array of channels causes flood kick #96
- Issuing NICK during session breaks JOIN #93
- Make Client writable/readable stream? #92
- whois + host with IPv6 leads to info.host = '0' #90
- Sending PASS to password protected irc server prepends : #87
- 'invite' not emitted #86
- uncaught error on data listener #83
- Disable stdout for server events without specific listeners #78
- Handle server connection failures gracefully #74
- Emit mode change events #70
- Emit channels for "kill" like for "quit" #69
- Handle errors when parsing message #64
- Event on successful pm #56
- [Feature request] Automatic flood protection #36
- refactor node-irc to emit only one 'event' object #18
Merged pull requests:
- Added library support for the RPL_ISUPPORT server reply #114 (qsheets)
- Fixed the message splitting on Client.say #112 (Pumpuli)
- Fixed the message object being modified on MODE command. #111 (Pumpuli)
- Add option to split long messages into multiple PRIVMSG calls #106 (PherricOxide)
- Restore Fix for: Handle unverifiable self-signed certificates. #102 (4poc)
- If needed, update self.nick when NICK is received #94 (toolness)
- This fixes the IPv6-Issue #90 for me. #91 (ccoenen)
- Make flood protection timeout setting configurable. #84 (lewinski)
- Event emiter for bad connection #77 (akavlie)
- Include channels user was in when 'kill' is emitted #72 (alexwhitman)
- Emit +mode and -mode on mode changes #71 (alexwhitman)
- Fix problem with 'QUIT' command #68 (tapichu)
- Emit 'message#' for a channel message #67 (alexwhitman)
- Include message object with emits #66 (alexwhitman)
- add some simple CTCP support #58 (thejh)
- Updating the certExpired option #53 (jonrohan)
v0.3.3 (2011-11-16)
Closed issues:
- Race condition, mode+- before mode= seems to cause crash #65
- SSL Failed to connect #60
- "kill" emits no event #59
- NAMES command crashes client on InspIRCd-2.0 servers #55
- Traceback after joining network in 0.3.1 #50
- Handle erroneous commands gracefully #48
- Automatic NickServ /IDENTIFYcation? #47
Merged pull requests:
- Handle errors in rpl_namreply. #62 (schwuk)
- Handle unverifiable self-signed certificates. #61 (schwuk)
- Password support #51 (wraithan)
v0.3.2 (2011-10-30)
v0.3.1 (2011-10-29)
v0.3.0 (2011-10-28)
Closed issues:
- Add command for listing channels #42
- Parse /version instead of hardcoded symbols in MODE #40
- Channel letter-case crashes client #39
- Cannot read property 'users' of undefined #38
Merged pull requests:
- Update package.json #45 (chilts)
- Added optional callbacks to connect and disconnect #44 (fent)
- stripColors option #43 (Excedrin)
- Fixed missing nick in TOPIC socketio event #41 (alexmingoia)
- Document internal functions and variables, activateFloodProtection #37 (Hello71)
- first pass at sphinx docs #35 (wraithan)
- adding colors #33 (wraithan)
- split out irc codes from client code. #31 (wraithan)
v0.2.1 (2011-10-01)
Closed issues:
- [Path #22
- Should sending messages also emit a 'message' signal? #17
- provide a way to access the current nick #12
Merged pull requests:
- Self signed SSL certificates #27 (stigi)
- Adds 'selfMessage' event #25 (AvianFlu)
- Added support for flood protection #23 (epeli)
- Fixed bug when sending empty strings or several lines to say #21 (eirikb)
- append notice method to Client.prototype. #20 (futoase)
- Parsing out ~ & and % in the channel user list #15 (pusherman)
- Reconnect all rooms upon server reconnect. #14 (lloyd)
- listen for the socket 'close' event rather than 'end'. 'end' is triggere #13 (lloyd)
- Bug fix in join/part/kick events #11 (luscoma)
v0.2.0 (2011-04-29)
Merged pull requests:
- Add an event for
/invite
#10 (jsocol) - Documented the Client.Disconnect method #9 (mdwrigh2)
- Updated ssl support to work with tsl #8 (indiefan)
- QUIT and NICK events #7 (Mortal)
- autoConnect Client option #6 (Oshuma)
- added a "notice" event #5 (thejh)
- Properly handle changing user mode #4 (justinabrahms)
- fix unwritable stream error after disconnected #3 (sublee)
v0.1.2 (2010-05-19)
v0.1.1 (2010-05-15)
v0.1.0 (2010-05-14)
* Some of this Change Log was automatically generated by github_changelog_generator