0.3.0 - Interacting in Functional Ways

I’ll be glad to let this one out the door, it’s been a hell of a ride.
This is a big update that is likely to introduce many bugs, break most
modules, and completely destroy any custom front ends you have built.
First off the bat is the new way to register your modules with Paul:
You no longer need to create some off lambda to handle sentences, then
log some random but necessary statement. It is now handled with the
register function. Simply pass your module name, and your process
function.
Also new is the way that front-ends interact with the back-end. This
has always been a tricky subject, and this update goes a small way to
correcting some of the major flaws associated with the old way. Now, to
register your front-end, you need to set_IO functions using the
brain.set_IO function. You MUST supply an output function, and an input
function. An execution function is optional, which provides a way for
code to be executed off the server / on the client. All the built-in
interaction methods have been updated to support the new IO
requirements, although some such as GUI are a bit clunky, and Server
and Client are still plagued with bugs. I haven’t had time to test them
extensively before this release.
brain has learned another new trick as well - idioms. These are
statements that, when taken literally, are a bit strange, but actually
mean something very ordinary. So far, there are only two, but this will
likely expand.
Serveral new API functions have appeared, or disappeared. New:
register, get_it, get_version, Sentence.has_one_of. Gone:
get_client_data.
user_info has been restructured a wee bit, so that does mean any
functions directly accessing any part of it may be in a bit of trouble
if their data has moved. Some new functions have been introduced such
as get_it and get_version to extract this data, so then it is my
problem as to where it goes. More of these functions are likely to
appear as I remember to add them.
settings can now apply updates without the need for a restart, which is
very convenient. This means that if you want him talking NOW, Paul can
talk NOW, not just after a restart.
personality has been given a bit of a boost, as now Paul can tell you
how he is feeling. Just ask! There is also the beginings of a section
asking him who he is, but this is a slightly harder idiom problem.
There is a new module called controls, which is capable of dealing with
volume, brightness, screensavers and locking the Mac.
Finally, the main README has been updated, along with a new README
inside the PAUL directory, to help explain all the API functions in
more detail. And I think that is it.