Blame call for the name. Read the FAQ ↓

Mattbox is a native Mac OS X client for the E2 chatterbox and private messages. It has developed from a basic and unstable chat client that I started to write in order to learn Objective-C and Cocoa, into a stable, full-featured client for all of your E2 communication needs.

Current Version: 0.9b.20081120

Requires Mac OS X 10.4 (Tiger) or newer.

Written as a Cocoa application, it looks pretty and has an easy to use interface. It shows which other users are online and you can store lists of friends so you can message them easily and see when they were last online. The client also keeps track of which usergroups you recieve messages from and keeps them in a list so you can message them when you need to. Private messages are archived to disk and are fully searchable. I have nearly 8000 messages stored in mine, and even with that number it is still fast.

Unlike the old Java chatterbox, you can leave the Mattbox running without worrying that you'll show as online. This is because when you're not sending messages or retrieving private messages all contact with the server is done as Guest User. No more irate noders wondering why you're not replying to their messages.

The client is multithreaded, meaning that you can send messages as fast as you can type them, without needing to wait for lag.

A tour of the Mattbox

Getting started

When you first open the Mattbox, you will be presented with the welcome screen. This is where you enter your E2 account details. Remember: unlike on E2, both your username and password are case sensitive. You can also choose which domain you want to use. Choose from the list, or type something different (e.g. As well as being the domain which is used to contact E2, it will also be the one used in any links in messages, so you should choose the one which you are normally logged-in to E2 with. Also choose how often you'd like the chatterbox to refresh.

Once you've entered these details, the Mattbox will try to log in. If your details are wrong you will be prompted to check and enter them again. You did make sure you're connected to the internet? Hopefully all will be well and you'll be now looking at the Message Centre window.

The Chatterbox

Your first view will be of the chatterbox: the window will be titled "Message Centre - Chatterbox". The topic at the top of the screen can be hidden by clicking the ×. Below this it will say "Talking to Chatterbox" and there is the text field that you use to enter messages.

To send a message, just type it into the message field and press enter. There will be an indicator showing the number of characters you have left available in your message. If you press enter without typing a message, it will just refresh the messages in the chatterbox.

If, when sending a message, there is an error such as a dropped network connection or timeout, you will be given a chance to resend your message. Bear in mind that the message may already have got through before the connection died, so don't automatically hit "resend".

On the toolbar above the chatterbox, there are buttons to check for private messages, clear the screen, and show the Users drawer. If you have any unread messages, the status bar will show how many, and you can click this display to be shown them. There is a box for searching the text of private messages in the top right hand corner.

Private Messages

The tabbed view allows you to switch between chatterbox and private message views. You can also use the keyboard shortcut Cmd-, (Apple-comma).

When you first use this, the Mattbox will need to download all of your messages from E2. this may take some time if you have a lot of messages or a slow connection. Be patient, as once they've downloaded checking for new messages is much quicker.

All of the newly-downloaded messages that aren't archived on E2 will be marked as unread and shown with a blue dot next to them in the message list. In order that you can keep track of new messages you should mark these messages as read. This will also archive them on E2, meaning they don't show up in the chatterbox nodelet (though you can always access them using the message inbox). To do this, select all of the messages by clicking on any of them and pressing Command-A. Then choose "Archive Messages" from the Message menu.

To view any message, just select it in the message list. This will display it in the viewing window below.

To send private messages, there are several ways to choose who you are talking to. This will always be shown by the display above the reply field, which will say "Talking to (name)". Firstly, if you are viewing a message, then you can reply to the sender of that message. In the case of a message from a usergroup, replies will go the the group and not the individual sender. Double clicking on a username in the Other Users or Friends list, or a group name in the Groups list will show messages from that user or group and allow you to reply to them.

You can select messages from the list and either delete them by pressing the red Delete button or you can archive them and mark them as read by choosing the option from the message menu (or pressing shift-command-R). These changes are not synchronised with E2 immediately for performance reasons, so in certain cases messages may show up on E2 that have already been deleted or archived on the client. This will usually be fixed shortly, but can be forced by checking for new messages.

You may print the selected message, but be careful if printing the chatterbox when it's been running for a while: you could end up with a very large print job.

The Users Drawer

By clicking on the User Lists button (which looks like the silhouette of a person), you can show or hide the Users Drawer. You can also use the menu item to do the same.

This drawer is separated into three tabbed panes. The first pane is the Other Users list. This shows a list similar to the Other Users nodelet, with noders who have been seen in the past five minutes. The list is sorted by XP, and also displays symbols showing user powers. These are the same as those in the nodelet, and are as follows:

  • @ - user is a member of the gods group, indicating a site administrator.
  • $ - user is a member of the content editors group.
  • Ø - user is borged, and cannot speak right now.
  • % - user is a member of edev and has access to site code.

This list automatically updates every five minutes, but you can make it update earlier by pressing the "refresh" button.

If you select a user from the Other Users list and press "Add Friend", that users will be added to your friends list.

The Friends List is found under the second tab. It works like a buddy list, giving easy access to users who you talk to frequently. As with the Other Users list, double clicking a name shows messages from that user and lets you talk to them. Also, if you click the "Last Seen" button it will update a display next to each name showing the last time they were seen on E2. This display doesn't update automatically.

To add friends to your list, choose "Add Friends..." from the message menu, or press shift-command-F. This will display a sheet with a field where you can enter the names of users to be added. Enter as many names as you want here, separating them with commas.

The third pane lists usergroups from which you have received messages. This list is updated when you display the message from the group, or you can click "Rebuild List" to scan all messages and add any usergroups found.


There are a small number of preferences you can set on the Mattbox. To access these, choose Preferences from the Mattbox menu.

Firstly, you can set your account details which are used to access E2. Don't change the username here if you already have messages from another user stored: this will cause unexpected results! As well as selecting servers from the supplied list, you may edit the entries as required: e.g adding "www" beforehand. This will be used in any links in messages, so make it the domain which you usually log into E2 with.

Under Network Settings, you can choose how often the chatterbox display is updated: 30, 45 or 60 seconds. You can also choose whether viewed messages are archived on E2 and marked as read. It is recommended that you leave this checked.

Under Appearance, you can just set the font family and size used to display messages. There is currently (v 0.9.3) a bug that mean that when you first opne the application, the chatterbox is not displayed in your chosen font. Click the clear button and it will be updated.

When you've finished setting your preferences, click "OK" to save your changes or "Revert" to go back to your old settings. You can only save changes if you have a network connection, as the client needs to connect to the server to verify your user details.


What's with the name?

Blame call. He gave it the name. It's (obviously) a play on catbox and my real name. It's short. It's snappy. It's egotistical.

Will it run on Windows/OS 9/GNUStep/etc..

No. Mac OS X only, and you must have at least version 10.3 (Panther) and Safari 1.3 (because it uses Javascript calls to an embedded WebView). It won't run on classic Mac OS because it's written in Cocoa. I've been thinking of porting it to GNUStep once it's at 1.0, so that it will run on Linux, BSD and any other X11-based system. This is now unlikely, because of the fact it uses WebKit. No, khtml isn't the same.

It crashed! What should I do?

Sorry! It's generally pretty stable now, so I'd certainly be interested to hear of your crashes. If you send me the crash log which is found in ~/Library/Logs/CrashReporter/Catbox.crash.log and let me know what you were doing at the time, it would be a great help. Send them to mattbox{at} Thanks to all of you who have done this so far, particularly SharQ and call for their many helpful logs sent.

Will you be releasing source?

Maybe, if I get around to tidying it up and packaging it.

Will you add feature X? Why doesn't it do Y?

Email me at the address above and we'll see. Requests looked upon favourably if they're interesting, feasible, accompanied by bribes/offers of sexual favours.

I hate this crap! How do I get rid of it?

Drag the application to the trash. Files such as the message and user databases are stored in ~/Library/Application Support/E2/.



  • Handle new /whisper and /sing commands
  • Remove some debugging code
  • Add a beer fund button

  • Update to handle XML tickers which now return utf-8
  • Use new URL scheme for links
  • Use character entities when sending messages so that unicode works properly

  • Universal binary: woo-hoo for my MacBook!
  • No longer bundles libxml2, as it's been a part of OS X for a while now.
  • Long messages don't break the chatterbox window (word-wrap: break-word in CSS)
  • New (colour) icon! Totally new splash screen!
  • Private messages and chatter are now different textboxes (albeit in the same place), so you can switch between them without losing messages.
  • Non-edevites don't see edev membership.
  • New template for chat window.
  • Rebuilding group list is now threaded
  • Some bugs squashed, some added (the keychain is being a little odd)


  • Works in Tiger GM. (Thanks to jrn for helping test that it still works in 10.3.x)
  • All views switched to use WebKit. This mean the display is very different. They are based on static HTML pages, with new messages added using javascript DOM manipulation from within Obj-C. If you're feeling brave you can open the app bundle and edit the HTML and CSS, but be sure to keep the element ids or it will break.
  • Printing now works. You can print the chatterbox (be careful about large print runs) or individual private messages.
  • A few bugs involving message loading have been fixed.


  • Fix to support change to timestamp format in the E2 message ticker.
  • Fix to clearing of user and group searches.


  • Support for Mac OS X 10.4 (Tiger), requirement for 10.3 (Panther). It was already having problems with older versions, and I wanted to use some stuff that's only available in Panther.
  • Passwords finally stored in Keychain. This was not as easy as it should be, and seems to have problems in Tiger.
  • Proper search field based on NSSearchField
  • We now always use our own HTTP handling. No convenience methods which would send a cookie if there was one in Safari, leading us to appear logged in.
  • Fixed a few display and network bugs.
  • 0.9

    • New HTTP handler, based on NSURLConnection. This means that the Mattbox requires at least 10.2 with Safari installed, or 10.2.7 without. This fi xes the bug which caused the Mattbox to never close certain threads and eventually crash. It should also fix crashes on server errors.
    • "Connections" window. Following on from the previous item, there's now a panel which lets you see (very basic) information about what is currently being loaded from the server. It doesn't say much now, and the interface is poor, but this is a start.
    • Improved tab layout. No little toggle switch. I expect this will look poor in 10.2.x, as it's based on Panther's new tab design.


    • Works with the new e2 server
    • Tested to work on Panther. I still compile it against Jaguar libraries though, so it should work in any version which is at least 10.2.7.
    • URLs in the catbox link to the site, not to an e2 search. They must be linked and begin with http:// for this to work.
    • A few other bugfixes which I've forgotten in the past year.


    • Proxy support (thanks SharQ for testing)
    • The tricky MutateError that's dogged us since version 1 is fixed! This fixes *loads* of problems, and makes the release of the ScratchPad more likely.
    • Number of users shown in Other Users
    • Button to rebuild groups list and delete groups from list.
    • If you "Show All" when you have a message selected, that message will still be selected. Likewise if you get new messages: the original message will stay selected.


    • Usergroups. Last biggish featured that I'd got planned. There is now another tab alongside Other Users and Friends for all of the user groups from which you have recieved messages. When you first load it, it will scan your old messages and add all of them, and when you view any new messages from new groups they will be added too. Currently no way of sorting them or deleting them, nor adding to them manually though. Double click on a usergroup and it will display messages from that group and you can talk to that group.
    • Last seen times. Know if you should expect an answer to your message. The list of friends can now show a indicator of when they were last seen. This is not updated automatically: we've got enough pageloads already, so just press the button when you want to check.
    • Fixed one of the most annoying bugs. This was the one that sometimes caused crashes when sending private messages or switching panes. Now virtually Crash Free™!


    • Fonts! You can now make your display look as ghastly as you want by making messages appear in any font and any size. Or you can stick with the new, sensible default: Helvetica 12. Currently this messes up italics for /me messages, but that'll be fixed RSN. Just go to Preferences to make your choice.
    • Talking of preferences, these are now expanded to multiple tabs, with a couple of new things that you can set. Main one, as requested by call: automatic message archiving can be disabled. If you choose this option, messages won't be automatically archived and marked as read when you view them. You'll need to choose "Archive" from the Message menu to do it manually. However, auto-archiving is made more useful by the next new feature...
    • Unread message count. There's now a display on the top status bar showing the number of messages that are currently unread. Click on it and you'll be switched to the private message view. Simple, but I've found it very useful indeed in the few days I've been using it.
    • A raft of minor bugfixes. Thanks to everyone who has been filing bug/crash reports. They are very useful. See above for how to send the most useful crash logs.


    • Single window design. Instead of having private messages and the chatterbox in separate windows, they are now in one and you switch between the two with a toggle switch, menu item or keyboard shortcut.
    • Mouseovers work! This was really hard to get working, but was easily the number one feature request so I put some effort in and got it working. I'm pretty please with it. You can see what a link is before you click it, and the cursor changes to a hand. Yay!
    • Overhauled HTTP back end. The Cocoa HTTP fucntions weren't flexible enough for my needs, so I extended them by poking around into the guts of the CoreFoundation networking. Most things are done using POST now, with cookies handled properly too. This was done to enable...
    • Message archiving. I am now using the message archiving functions to show read or unread messages. When you view a message, it marks it to be archived. This means that it won't show up in your chatterbox nodelet on E2 any more, but is still available in message inbox. If you want to archive all your old messages at once (recommended), then just select all and choose "Archive Messages" from the Message menu. Don't worry if you've laods of messages. I've tested it with archiving 7500 messages at once and it didn't blink.
    • Similarly, you can delete more than one message at once. To avoid accidents, a conformation sheet will pop up.
    • To avoid having to talk to the server every time you want to archive or delete a message, these are kept in a queue, so they may not always be in sync with E2. This should sort itself out within a few minutes. To force it to sync, just click the Get New button.
    • Add anyone to your friends list. You don't need to have to select someone in other users in order to add them as a friend now. Just choose "Add Friends..." from the message menu and type a comma-separated list of usernames that you want to add.
    • Brushed metal is so 2002. We're back with the old-skool Aqua. I reckon the new window design looks better like that. It'll be a prefernece soon, so you can have it to your own taste.
    • Loads more bugfixes, loads more bugs. Known issues: occasionally, when you open the private message box, the username of the first message's sender will come up as (null) or garbage. This occasionally will cause a crash too. Looking into it... Incoming special characters are still screwy. Outgoing should be better, as we're using CoreFoundation and not libCurl to escape them, which seems to work better.


    • An icon! (of which I'm inordinately proud) I know it's not a cat. This isn't going to remain as just a chatterbox client.
    • Complete re-write of the threading system. There were loads of problems with the old system, caused by the fact that the Cocoa AppKit is not thread safe. Chatterbox and Private Message loading are now using the new system and all GUI stuff is back in the main thread. Things like message deletion (not threaded at all) and the Other Users list need work.
    • A spiffy splash screen that fades in. I shamelessly nicked the class for this from Chimera, and the image itself needs work, but I like it and it gives me somewhere to put the status messages that come when it's loading.
    • A sign-up screen for new users. If you haven't got any stored user settings, you'll get this screen, which lets you enter them in a way that's a little less hostile than the prefs box.
    • Removed the "Refresh" button from the chatterbox. It would've needed a bit of fiddling to make it work with the new thread system, and it's pointless really, as you can just hit enter to get the same effect.


    • Gah! Silly bugfixes: private messages should now work. (It was failing for those who didn't have any messages stored already. i.e. all of you. Sorry. Thanks to SharQ for pointing this out.
    • Private message send/recieve is now threaded. Stops it glueing up, but does introduce a few problems. If you get it freezing on you: known issue. Sorry.
    • Archived/unarchived messages now shown. No interface to change them yet, but eventually it will form the basis of how unread messages are identified.
    • Better exception handling throughout. Still a couple of freeze-up bugs, but they're getting fewer.


    • Improved stability. A very annoying crasher bug is sort-of fixed. Or caught at least. The freeze ups are fixed.
    • Much faster message archiving. They're now stored as XML .plists. This is loads quicker to save, if a little larger. They're stored in ~/Library/ now.
    • Other Users and Friends list. In a nifty little drawer. You can add users to your friends list. Double clicking on any name shows messages from them and lets you reply.
    • Several interface improvements. Easier to use. Prettier.


    • Private messages. This is the biggie. You can now retrieve, store, delete and reply to private messages. This is at a very early stage and is quite cranky.
    • Message search. Similar to, you type in the search box and it shows only the messages that match that string.
    • Private message reply. Display any private message and there will be a reply box at the bottom.
    • Message length counter. In the chatterbox, there is a counter that shows how many more characters you can type before you're cut off.


    First release

  • Log in or register to write something here or to contact authors.