summaryrefslogtreecommitdiff
path: root/_darcs/inventories/20080922225224-84dde-625df932503bbcfc34e4eecc6aec09c5a0509315.gz
diff options
context:
space:
mode:
Diffstat (limited to '_darcs/inventories/20080922225224-84dde-625df932503bbcfc34e4eecc6aec09c5a0509315.gz')
-rw-r--r--_darcs/inventories/20080922225224-84dde-625df932503bbcfc34e4eecc6aec09c5a0509315.gz869
1 files changed, 869 insertions, 0 deletions
diff --git a/_darcs/inventories/20080922225224-84dde-625df932503bbcfc34e4eecc6aec09c5a0509315.gz b/_darcs/inventories/20080922225224-84dde-625df932503bbcfc34e4eecc6aec09c5a0509315.gz
new file mode 100644
index 000000000..da247966a
--- /dev/null
+++ b/_darcs/inventories/20080922225224-84dde-625df932503bbcfc34e4eecc6aec09c5a0509315.gz
@@ -0,0 +1,869 @@
+Starting with tag:
+[TAG 0.5.0
+Evan Prodromou <evan@controlezvous.ca>**20080731050646]
+[add edo's tagcloud code
+Evan Prodromou <evan@prodromou.name>**20080731132302]
+[extend length of source for notices
+Evan Prodromou <evan@prodromou.name>**20080731152731]
+[added conneg for action/userbyid so that foaf can be delivered to clients that want application/rdf+xml
+ehs@pobox.com**20080801164623]
+[update .pot from source code
+Evan Prodromou <evan@prodromou.name>**20080803232102]
+[change no-such-user error to a 404 instead of a 400
+Evan Prodromou <evan@prodromou.name>**20080804132001]
+[use an outstanding unconfirmed email address for password recovery if available
+Evan Prodromou <evan@prodromou.name>**20080804130914]
+[better handling of unconfirmed email addresses
+Evan Prodromou <evan@prodromou.name>**20080804133253]
+[use noreply address as fallback if no incoming email address exists
+Evan Prodromou <evan@prodromou.name>**20080804133933]
+[add commands to turn sms notification on and off
+Evan Prodromou <evan@prodromou.name>**20080804190749]
+[ignore OTR messages over Jabber (I think)
+Evan Prodromou <evan@prodromou.name>**20080806002134]
+[make init of lang environment happen earlier, or when user language may have changed
+Evan Prodromou <evan@prodromou.name>**20080806034515]
+[Set the C locate to avoid tr_TR php bug see http://www.topolis.lt/php/#35050
+mikec@mikenz.geek.nz**20080804133727]
+[Add other languages to drop down
+Mike Cochrane <mikec@mikenz.geek.nz>**20080805020520]
+[fixup locale stuff from mikenz
+Evan Prodromou <evan@prodromou.name>**20080806040433]
+[fix config global
+Evan Prodromou <evan@prodromou.name>**20080806122119]
+[update French translation with msgmerge
+Evan Prodromou <evan@prodromou.name>**20080806161748]
+[LOG_ERROR -> LOG_ERR (again)
+Evan Prodromou <evan@prodromou.name>**20080807234227]
+[emergency fixup for bad notices in notice search
+Evan Prodromou <evan@prodromou.name>**20080811175318]
+[make tag dropoff configurable
+Evan Prodromou <evan@prodromou.name>**20080811175820]
+[Twitter-compatible API - /statuses/update.format now decodes HTML chars, such as &amp;
+zach@copley.name**20080731224911]
+[Twitter-compatible API: filled in the source attr for notices accessed via API
+zach@copley.name**20080809001240]
+[fix problem with new notices
+Evan Prodromou <evan@prodromou.name>**20080811181158]
+[correct sitemapindex output
+Evan Prodromou <evan@prodromou.name>**20080811200058]
+[fix some errors in sitemaps
+Evan Prodromou <evan@prodromou.name>**20080812011600
+
+ Only show notices that don't have a remote URL. That should include
+ only local notices.
+
+ Also, don't do an avatar sitemap; apparently nobody indexes these
+ anyways.
+
+]
+[correctly show URL for rare notice without an URI
+Evan Prodromou <evan@prodromou.name>**20080812121832]
+[get rid of dataobject.ini -- again
+Evan Prodromou <evan@prodromou.name>**20080813180239]
+[auto-load OAuthRequest
+Evan Prodromou <evan@prodromou.name>**20080813195408]
+[move user registration to a single static method
+Evan Prodromou <evan@prodromou.name>**20080814002038]
+[Twitter-compatible API: removed redundant decoding step; already taken care of by util.php's common_render_content()
+zach@copley.name**20080813193327]
+[Twitter-compatible API: support for new in_reply_to_status_id in statuses/update
+zach@copley.name**20080815185317]
+[name omb_listener param so we can refer to it in error msg
+Evan Prodromou <evan@prodromou.name>**20080816151057]
+[make settings and search menus localisable
+Evan Prodromou <evan@prodromou.name>**20080817150244]
+[move command-line scripts to their own dir
+Evan Prodromou <evan@prodromou.name>**20080813154603]
+[accept 140-character UTF-8 strings to content
+Evan Prodromou <evan@prodromou.name>**20080817151751]
+[debug for content too long
+Evan Prodromou <evan@prodromou.name>**20080817152419]
+[use UTF-8 as the internal encoding
+Evan Prodromou <evan@prodromou.name>**20080817153024]
+[remove hack to count bytes, not chars, in JS, since we now use chars
+Evan Prodromou <evan@prodromou.name>**20080817153143]
+[typo in forgotten password string
+Evan Prodromou <evan@prodromou.name>**20080817163324]
+[accept 140 chars in API, too
+Evan Prodromou <evan@prodromou.name>**20080817192710]
+[use mb_substr for xmpp daemon check
+Evan Prodromou <evan@prodromou.name>**20080818025549]
+[first step towards adding favorites to the system
+Evan Prodromou <evan@prodromou.name>**20080813142637]
+[Database uses UTF-8 by default
+Evan Prodromou <evan@prodromou.name>**20080817151728]
+[restore fave table lost when doing utf8 upgrade
+Evan Prodromou <evan@prodromou.name>**20080817152108]
+[trim whitespace in laconica.sql
+Evan Prodromou <evan@prodromou.name>**20080817152133]
+[set internal encoding in XMPP daemon
+Evan Prodromou <evan@prodromou.name>**20080818033049]
+[broadcast remote notices
+Evan Prodromou <evan@prodromou.name>**20080819182724]
+[add remote flag to broadcast of notices
+Evan Prodromou <evan@prodromou.name>**20080819182824]
+[add database tables for foreign services
+Evan Prodromou <evan@prodromou.name>**20080819221214]
+[Twitter-compatible API - running all strings through gettext() now
+zach@controlyourself.ca**20080819002903]
+[Twitter-compatible API - moved show() to the right file
+zach@controlyourself.ca**20080819003931]
+[Twitter-compatible API - /statuses/destroy method implemented
+zach@controlyourself.ca**20080819194610]
+[Twitter-compatible API - Added /statuses/followers to methods that
+zach@controlyourself.ca**20080819195431
+ require bareauth only if no nickname/id is supplied.
+]
+[Twitter-compatible API - /statuses/show - better err msg if notice doesn't exist
+zach@controlyourself.ca**20080819202318]
+[Twitter-compatible API - RESTfulness checks as per Twitter
+zach@controlyourself.ca**20080819214923]
+[add Cincinnati Bell Wireless
+Evan Prodromou <evan@prodromou.name>**20080821125306]
+[include external libs in a subdir to make install easier
+Evan Prodromou <evan@prodromou.name>**20080822131714]
+[local-only is optional on public timeline
+Evan Prodromou <evan@prodromou.name>**20080822210307]
+[add note to config.php.sample about localonly
+Evan Prodromou <evan@prodromou.name>**20080822210415]
+[fix include path bug
+Evan Prodromou <evan@prodromou.name>**20080822210654]
+[better error reporting in user authorization action
+Evan Prodromou <evan@prodromou.name>**20080822212111]
+[XMPP bounce message when too long (ticket #112)
+CiaranG <ciaran@ciarang.com>**20080818213031]
+[Fix bug in xmpp on/off (ticket #528)
+CiaranG <ciaran@ciarang.com>**20080819071321]
+[Define xmpp daemon claim timeout time
+CiaranG <ciaran@ciarang.com>**20080822185955]
+[XMPP sub/unsub and help commands
+CiaranG <ciaran@ciarang.com>**20080822191032]
+[Fixed attempt to read nonexistent match in JID regex
+CiaranG <ciaran@ciarang.com>**20080822191751]
+[Escape profile url in xmpp in case fancy urls off (Ticket #521)
+CiaranG <ciaran@ciarang.com>**20080823052534]
+[Prevent jabber.php error by checking key exists
+CiaranG <ciaran@ciarang.com>**20080823053548]
+[request token is not readonly
+Evan Prodromou <evan@prodromou.name>**20080824011706]
+[be a little more liberal for sites that accidentally put whitespace before the xml decl
+Evan Prodromou <evan@prodromou.name>**20080824013803]
+[move README to main dir
+Evan Prodromou <evan@prodromou.name>**20080824113719]
+[big scarygram warning in config.php.sample about using DB_DataObject's debug mode
+Evan Prodromou <evan@prodromou.name>**20080824171202]
+[notify user of remote subscriptions
+Evan Prodromou <evan@prodromou.name>**20080824200517]
+[use mb_strlen instead of strlen in xmpp daemon
+Evan Prodromou <evan@prodromou.name>**20080825173105]
+[use common_sql_now() instead of DB_DataObject_Cast
+Evan Prodromou <evan@prodromou.name>**20080825182338]
+[change DataObject_Cast to use sql_now
+Evan Prodromou <evan@prodromou.name>**20080825183005]
+[use better SQL date, fix security problem with OpenID logins
+Evan Prodromou <evan@prodromou.name>**20080825184104]
+[never allow blank passwords
+Evan Prodromou <evan@prodromou.name>**20080825185245]
+[optionally turn encryption on or off in the XMPP connection
+Evan Prodromou <evan@prodromou.name>**20080826131814
+
+ For identi.ca, we had some problems with the XMPP daemon getting
+ "stuck" in I/O through the encrypted (by default) XMPP socket. Turning
+ off encryption helped. So, now it's an option.
+
+]
+[only send local messages to public XMPP stream
+Evan Prodromou <evan@prodromou.name>**20080826205341]
+[use notice URI if it's not local and it's an HTTP URL
+Evan Prodromou <evan@prodromou.name>**20080826210314]
+[fix error storing uris of remote notices
+Evan Prodromou <evan@prodromou.name>**20080826211108]
+[import upstream XMPPHP with @ciarang's fix
+Evan Prodromou <evan@prodromou.name>**20080827124430]
+[fixup whitespace
+Evan Prodromou <evan@prodromou.name>**20080827131603]
+[don't show unknown (debug) errors
+Evan Prodromou <evan@prodromou.name>**20080827132346]
+[XMPP daemon that doesn't eat messages - note change to XMPPHP as well (Ticket #551)
+CiaranG <ciaran@ciarang.com>**20080826200057]
+[restoring upstream XMLStream.php after pulling ciarang's patch
+Evan Prodromou <evan@prodromou.name>**20080827133048]
+[add back in a session start handler
+Evan Prodromou <evan@prodromou.name>**20080827135422]
+[don't do too many broadcasts or confirms before checking the message queue
+Evan Prodromou <evan@prodromou.name>**20080827142336]
+[get language before setting it.
+Evan Prodromou <evan@prodromou.name>**20080828005323]
+[add session token check to password change
+Evan Prodromou <evan@prodromou.name>**20080829014515]
+[code for session token
+Evan Prodromou <evan@prodromou.name>**20080829015304]
+[fix random function name
+Evan Prodromou <evan@prodromou.name>**20080829021854]
+[return after failed token
+Evan Prodromou <evan@prodromou.name>**20080829023731]
+[add CSRF protection to avatar
+Evan Prodromou <evan@prodromou.name>**20080829023919]
+[CSRF protection in deletenotice
+Evan Prodromou <evan@prodromou.name>**20080829025127]
+[show error in delete notice
+Evan Prodromou <evan@prodromou.name>**20080829025559]
+[add a token for CSRF avoidance
+Evan Prodromou <evan@prodromou.name>**20080829034854]
+[CSRF protection for OpenID form
+Evan Prodromou <evan@prodromou.name>**20080829035934]
+[swap around some stuff to show the form correctly on a CSRF error in openidlogin
+Evan Prodromou <evan@prodromou.name>**20080829040925]
+[CSRF protection in openidsettings
+Evan Prodromou <evan@prodromou.name>**20080829042908]
+[add csrf protection to profile settings
+Evan Prodromou <evan@prodromou.name>**20080829043909]
+[CSRF protection in smssettings.php
+Zach Copley <zach@controlyourself.ca>**20080829035118]
+[CSRF protection in imsettings.php
+Zach Copley <zach@controlyourself.ca>**20080829035707]
+[CSRF protection for subscription/unsubscription
+Evan Prodromou <evan@prodromou.name>**20080829051104]
+[better client error on CSRF problem with subscribe/unsubscribe
+Evan Prodromou <evan@prodromou.name>**20080829051628]
+[csrf protection in userauthorization
+Evan Prodromou <evan@prodromou.name>**20080829052732]
+[session token in userauthorization form
+Evan Prodromou <evan@prodromou.name>**20080829052847]
+[CSRF protection in recoverpassword
+Zach Copley <zach@controlyourself.ca>**20080829052824]
+[CSRF protection in user registration
+Evan Prodromou <evan@prodromou.name>**20080829054017]
+[CSRF protection in emailsettings
+Zach Copley <zach@controlyourself.ca>**20080829053337]
+[CSRF protection in remotesubscribe
+Zach Copley <zach@controlyourself.ca>**20080829054038]
+[clean up username entered at login
+Evan Prodromou <evan@prodromou.name>**20080829225258]
+[break up monolithic xmppdaemon into multiple queue handlers
+Evan Prodromou <evan@prodromou.name>**20080827205407
+
+ Eventually, the poor xmppdaemon has become overloaded with extra
+ tasks. So, I've broken it up. Now, we have 5 background scripts, and
+ more coming:
+
+ * xmppdaemon.php - handles incoming XMPP messages only.
+ * xmppqueuehandler.php - sends notices from the queue out through XMPP.
+ * smsqueuehandler.php - sends notices from the queue out over SMS
+ * ombqueuehandler.php - sends notices from the queue out over OMB
+ * xmppconfirmhandler.php - sends confirmation requests out over XMPP.
+
+ This is in addition to maildaemon.php, which takes incoming messages.
+
+ None of these are "true" daemons -- they don't daemonize themselves
+ automatically. Use nohup or another tool to background them. monit can
+ also be useful to keep them running.
+
+ At some point, these might become fork()'ing daemons, able to handle
+ more than one notice at a time. For now, I'm just running multiple
+ instances, hoping they don't interfere.
+
+]
+[remove unimplemented methods from XmppDaemon
+Evan Prodromou <evan@prodromou.name>**20080827210429]
+[change queue_item to use a compound primary key
+Evan Prodromou <evan@prodromou.name>**20080827211239
+
+ Breaking up to use multiple queue handlers means we need multiple
+ queue items for the same notice. So, change the queue_item table to
+ have a compound pkey, (notice_id,transport).
+
+]
+[got two lines reversed
+Evan Prodromou <evan@prodromou.name>**20080827211940]
+[change return in queue function
+Evan Prodromou <evan@dev.controlezvous.ca>**20080828001414]
+[correct presence in jabber function
+Evan Prodromou <evan@prodromou.name>**20080828001936]
+[don't clear claims immediately
+Evan Prodromou <evan@prodromou.name>**20080828002610]
+[correct return values from start() in queue handlers
+Evan Prodromou <evan@prodromou.name>**20080828003013]
+[extend QueueHandler
+Evan Prodromou <evan@prodromou.name>**20080828003829]
+[XmppQueueHandler extends QueueHandler too
+Evan Prodromou <evan@prodromou.name>**20080828004224]
+[$this->log to common_log in Queue_item
+Evan Prodromou <evan@prodromou.name>**20080828004503]
+[return correct values for success in handling messages
+Evan Prodromou <evan@prodromou.name>**20080828011002]
+[misprint of omb as oms
+Evan Prodromou <evan@prodromou.name>**20080828012619]
+[return results of broadcasting by sms
+Evan Prodromou <evan@prodromou.name>**20080828012635]
+[add a bash script to start all the daemons
+Evan Prodromou <evan@prodromou.name>**20080828134856]
+[add a script to stop daemons, too
+Evan Prodromou <evan@prodromou.name>**20080828135011]
+[harmonize csrf and queues
+Evan Prodromou <evan@prodromou.name>**20080829174012]
+[split public stream to its own queue handler
+Evan Prodromou <evan@prodromou.name>**20080829181702
+
+ Add another queue handler for the public stream. Should further
+ parallelize the work of sending out messages.
+
+]
+[fix name of instantiated class
+Evan Prodromou <evan@prodromou.name>**20080829182112]
+[a little more robust confirm handler
+Evan Prodromou <evan@prodromou.name>**20080829182349]
+[many jabber queue management changes
+Evan Prodromou <evan@prodromou.name>**20080829200352
+
+ Added a method to QueueManager to let subclasses do stuff when idle.
+ Needed so that XMPP queue manager can service its message queue.
+
+ Cleaned up jabber_broadcast_message quite a bit. Use custom joins
+ instead of loop-and-query, should fix some problems with users who are
+ getting messages even after turning off notification. Only build $msg
+ and $entry once, and use the XMPPHP function for messages with a
+ payload, rather than rolling our own.
+
+]
+[lost $sent_to in jabber_public_notice
+Evan Prodromou <evan@prodromou.name>**20080829200859]
+[strip script ending from end of xmppdaemon
+Evan Prodromou <evan@prodromou.name>**20080829202613]
+[add 'raw' to payload to allow getting to the raw xml
+Evan Prodromou <evan@prodromou.name>**20080830000314]
+[forward messages from queuehandler to listener
+Evan Prodromou <evan@prodromou.name>**20080830040717
+
+ The queuehandler sends messages to the user. If the user replies, the
+ messages are typically sent directly to the queuehandler (including
+ resource), not the default bot JID.
+
+ We add a little code for the xmppqueuehandler to periodically service
+ its queue of received messages. Received messages are forwarded to the
+ listener to deal with. We use XEP 33, 'addresses', to note the
+ original sender.
+
+ The xmppdaemon checks to see if the 'from' on a message is the daemon
+ address. If so, it looks for a XEP 33 'addresses' stanza, with an
+ 'ofrom' address, which shows who it was originally is from.
+
+ This should let us send from one resource ID and still process
+ incoming messages in a different connection.
+
+]
+[strtolower jids for comparison
+Evan Prodromou <evan@prodromou.name>**20080830052143]
+[typo preventing detection of addresses
+Evan Prodromou <evan@prodromou.name>**20080830052810]
+[use common log in error handler rather than echo
+Evan Prodromou <evan@prodromou.name>**20080830053052]
+[log transport when claiming a notice
+Evan Prodromou <evan@prodromou.name>**20080830054933]
+[better logging in ombqueuehandler
+Evan Prodromou <evan@prodromou.name>**20080830055416]
+[get address from addresses
+Evan Prodromou <evan@prodromou.name>**20080830055640]
+[better debugging output for forwarded messages
+Evan Prodromou <evan@prodromou.name>**20080830055938]
+[debug xml input
+Evan Prodromou <evan@prodromou.name>**20080830060732]
+[log fetch
+Evan Prodromou <evan@prodromou.name>**20080830062246]
+[correctly use attrs array rather than nonexistent attunction
+Evan Prodromou <evan@prodromou.name>**20080830062744]
+[less sleeping, slightly
+Evan Prodromou <evan@prodromou.name>**20080830064431]
+[don't clear old claims
+Evan Prodromou <evan@prodromou.name>**20080830070135]
+[require mail for sms, not omb
+Evan Prodromou <evan@prodromou.name>**20080830070309]
+[sms handler was handling omb wrongly
+Evan Prodromou <evan@prodromou.name>**20080830071007]
+[forgot to get the profile in public queue handler
+Evan Prodromou <evan@prodromou.name>**20080830071232]
+[some fixes from on the jabber server
+evan@controlezvous.ca**20080830083502]
+[get rid of Laconica_XMPP and ignore priority
+Evan Prodromou <evan@prodromou.name>**20080830084423]
+[check for self in forwards, too
+Evan Prodromou <evan@prodromou.name>**20080830085607]
+[eliminate loops in forwarding
+Evan Prodromou <evan@prodromou.name>**20080830090148]
+[make XMPP take a priority for presence
+Evan Prodromou <evan@prodromou.name>**20080830091430]
+[use priority in connection
+Evan Prodromou <evan@prodromou.name>**20080830091522]
+[forgot to use the array for avoiding dupes
+Evan Prodromou <evan@prodromou.name>**20080830094252]
+[check the state of the queue before diving in to process it
+Evan Prodromou <evan@prodromou.name>**20080830095709]
+[better check for ready state on connection
+Evan Prodromou <evan@prodromou.name>**20080830171441]
+[public queue handler and xmpp confirm handler service their message queues
+Evan Prodromou <evan@prodromou.name>**20080830172217]
+[add initialization info to the queue handlers
+Evan Prodromou <evan@prodromou.name>**20080831020325]
+[add some sanity-check stuff for long-running daemons
+Evan Prodromou <evan@prodromou.name>**20080831023844]
+[halt sending HTML in Jabber
+Evan Prodromou <evan@prodromou.name>**20080831114642]
+[separate out presence from connection, send different presence types from queuehandlers
+Evan Prodromou <evan@prodromou.name>**20080902012604]
+[slightly more robust connection code
+Evan Prodromou <evan@prodromou.name>**20080902030331]
+[restore HTML in output, remove rump pubsub event code
+Evan Prodromou <evan@prodromou.name>**20080902030403]
+[dnd -> available, just looks bad as dns
+Evan Prodromou <evan@prodromou.name>**20080902030910]
+[switch around how XMLStream does processing
+Evan Prodromou <evan@prodromou.name>**20080831003210]
+[debug logging in __process
+Evan Prodromou <evan@prodromou.name>**20080831012136]
+[floor
+Evan Prodromou <evan@prodromou.name>**20080831013132]
+[int div games
+Evan Prodromou <evan@prodromou.name>**20080831013603]
+[slightly better int math
+Evan Prodromou <evan@prodromou.name>**20080831014404]
+[use updated xmpphp library
+Evan Prodromou <evan@prodromou.name>**20080902163718]
+[add reconnect handlers to main XMPP-handling scripts
+Evan Prodromou <evan@prodromou.name>**20080902165319]
+[better connection handling in scripts
+Evan Prodromou <evan@prodromou.name>**20080902165735]
+[set the reconnect timeout
+Evan Prodromou <evan@prodromou.name>**20080902171740]
+[variable name conflict on reconnect
+Evan Prodromou <evan@prodromou.name>**20080902172039]
+[reconnect timeout
+Evan Prodromou <evan@prodromou.name>**20080902172256]
+[license block on util.js
+Evan Prodromou <evan@prodromou.name>**20080827013835]
+[try to make the reply button do the right thing if there's no notification box.
+Evan Prodromou <evan@prodromou.name>**20080827015010]
+[move broadcast in OMB postnotice for bad case
+Evan Prodromou <evan@prodromou.name>**20080828221420]
+[Tags_without_fancy
+Garret Buell <terragb@gmail.com>**20080831233401
+ Change common_tag_link to format the tag link based on the setting of $config['site']['fancy']
+]
+[Allow_multicase_tags
+Garret Buell <terragb@gmail.com>**20080901001241
+ Make "#test", "#Test", and "#tEsT" all preserve appearance but link to the same tag
+]
+[Elide_Tags
+Garret Buell <terragb@gmail.com>**20080901025932
+ Make "#sanfrancisco", "#SanFrancisco", "#san_francisco", "#San.Francisco", and "#SAN-FRANCISCO" all link to http://identi.ca/tag/sanfrancisco but preserve appearance
+]
+[RequirePassword
+Garret Buell <terragb@gmail.com>**20080830195036
+ Require a password with at least 6 characters when registering.
+]
+[Resolve remote subscribe and omb problems with quotes (Tickets #604 and #567)
+CiaranG <ciaran@ciarang.com>**20080904065504]
+[Fix typo in presence message (x3)
+CiaranG <ciaran@ciarang.com>**20080904081542]
+[Some Notice::saveNew cleanups.
+Ori Avtalion <ori@avtalion.name>**20080902173804
+ * No need to check $source's value before inserting
+ * No need to update the notice if the $uri was known in advance
+]
+[fix bad args in postnotice for new notices
+Evan Prodromou <evan@prodromou.name>**20080904195720]
+[Fix typo in finishremotesubscribe
+CiaranG <ciaran@ciarang.com>**20080904201921]
+[scripts daemonize themselves
+Evan Prodromou <evan@prodromou.name>**20080904184031]
+[add .pid to pidfile names
+Evan Prodromou <evan@prodromou.name>**20080904190254]
+[more robust code for setting daemon uid/gid
+Evan Prodromou <evan@prodromou.name>**20080904191031]
+[add newline at the end of pidfile
+Evan Prodromou <evan@prodromou.name>**20080904191517]
+[new format for startdaemons; not sure how to do stopdaemons so punting
+Evan Prodromou <evan@prodromou.name>**20080904192220]
+[better feedback when starting daemons
+Evan Prodromou <evan@prodromou.name>**20080904192851]
+[make confirmhandler a subclass of queuehandler
+Evan Prodromou <evan@prodromou.name>**20080904193118]
+[abstract XMPP-related queue handling to a common superclass
+Evan Prodromou <evan@prodromou.name>**20080904194035]
+[change xmppqueuedaemon to jabberqueuedaemon in startdaemons
+Evan Prodromou <evan@prodromou.name>**20080904194346]
+[require xmppqueuehandler in jabberqueuehandler
+Evan Prodromou <evan@prodromou.name>**20080904194456]
+[better logging for confirm handler update
+Evan Prodromou <evan@prodromou.name>**20080904203502]
+[add some processTime() to the send loops to avoid filling the buffer
+Evan Prodromou <evan@prodromou.name>**20080904213257]
+[better @ links
+Evan Prodromou <evan@prodromou.name>**20080904224129]
+[use a join for omb broadcast
+Evan Prodromou <evan@prodromou.name>**20080905004701]
+[change sms broadcast to use a join
+Evan Prodromou <evan@prodromou.name>**20080905022019]
+[return in the status textarea will submit the form
+Evan Prodromou <evan@prodromou.name>**20080905045415]
+[do submit on keydown
+Evan Prodromou <evan@prodromou.name>**20080905045736]
+[stop default handling of return in browser
+Evan Prodromou <evan@prodromou.name>**20080905050356]
+[set focus to status text area
+Evan Prodromou <evan@prodromou.name>**20080905050824]
+[free and unset DB_DataObjects after we're done with them
+Evan Prodromou <evan@prodromou.name>**20080906015501]
+[free memory in SMS daemon, too
+Evan Prodromou <evan@prodromou.name>**20080906015621]
+[debugging for omb
+Evan Prodromou <evan@prodromou.name>**20080907193402]
+[lots of debugging code in OMB send
+Evan Prodromou <evan@prodromou.name>**20080907195242]
+[remove some debugging code from omb.php
+Evan Prodromou <evan@prodromou.name>**20080907200344]
+[error checking in subscriptions
+Evan Prodromou <evan@prodromou.name>**20080908201020]
+[Disallow 'tag' and 'tags' as usernames. Fixes ticket #584
+Ori Avtalion <ori@avtalion.name>**20080905114534]
+[Fix for reply arrow in profile page
+Michael Landers <ez4u2sai@gmail.com>**20080905090848]
+[Fix confusing comment in config.sample.php (Ticket #616)
+CiaranG <ciaran@ciarang.com>**20080905162732]
+[add a sample RewriteBase
+Evan Prodromou <evan@prodromou.name>**20080910180050]
+[add a line for mail domain
+Evan Prodromou <evan@prodromou.name>**20080910154632]
+[update information about queues
+Evan Prodromou <evan@prodromou.name>**20080910154754]
+[reverse order of queries for galleries
+Evan Prodromou <evan@prodromou.name>**20080911144742]
+[LOG_ERROR -> LOG_ERR
+Evan Prodromou <evan@prodromou.name>**20080913161107]
+[duplicate confirmation to avoid where clause
+Evan Prodromou <evan@prodromou.name>**20080913164333]
+[only use MyISAM for tables with fulltext indices
+Evan Prodromou <evan@prodromou.name>**20080915053955]
+[cache noticesWithFriends in memcached
+Evan Prodromou <evan@prodromou.name>**20080915065616
+
+ noticesWithFriends is turning out to be one of our most expensive
+ queries. The join is costly, and this method is hit over and over and
+ over by desktop clients and other API users.
+
+ So, I've added a first pass at caching the results. I store a "window"
+ of notices -- equal to the first 3 pages of notices, plus one for
+ pagination -- in the memcached cache. If with-friends notices are
+ requests, I fetch the whole window out of the cache and grab the slice
+ requested. If the requested notices are outside the window, we just do
+ the query. If there's nothing in the cache, we request the window and
+ store it, then return a slice.
+
+ I had to add a NoticeWrapper class that works like DB_DataObject
+ (well, just the fetch() part...) but just holds an array of notices
+ instead of a DB cursor.
+
+ Finally, saving a new notice blows away the caches for subscribed users.
+
+]
+[$INSTALLDIR -> INSTALLDIR
+Evan Prodromou <evan@prodromou.name>**20080915070413]
+[array_count -> count
+Evan Prodromou <evan@prodromou.name>**20080915070951]
+[subscriptions clear user with-friends cache, too
+Evan Prodromou <evan@prodromou.name>**20080915071500]
+[compress window-getting to one function
+Evan Prodromou <evan@prodromou.name>**20080915071835]
+[misused instance attribute in noticewrapper
+Evan Prodromou <evan@prodromou.name>**20080915072553]
+[another attribute error
+Evan Prodromou <evan@prodromou.name>**20080915072738]
+[make NoticeWrapper extend Notice so methods work
+Evan Prodromou <evan@prodromou.name>**20080915073006]
+[fix cache deletion code
+Evan Prodromou <evan@prodromou.name>**20080915073215]
+[fixup SQL code
+Evan Prodromou <evan@prodromou.name>**20080915073412]
+[can actually take all the data in the window
+Evan Prodromou <evan@prodromou.name>**20080920174700]
+[blow subscriptions cache when the user deletes a notice
+Evan Prodromou <evan@prodromou.name>**20080920175339]
+[use common-config instead of $config in common_language
+Evan Prodromou <evan@prodromou.name>**20080922172631]
+[data classes for invitations
+Evan Prodromou <evan@prodromou.name>**20080823191015]
+[start the invite form
+Evan Prodromou <evan@prodromou.name>**20080825192946]
+[add invite to htaccess.sample
+Evan Prodromou <evan@prodromou.name>**20080825193149]
+[add invite to the nav menu
+Evan Prodromou <evan@prodromou.name>**20080825193235]
+[invite fancy url
+Evan Prodromou <evan@prodromou.name>**20080825193333]
+[fix the invite url
+Evan Prodromou <evan@prodromou.name>**20080825193450]
+[fix instructions
+Evan Prodromou <evan@prodromou.name>**20080825193738]
+[skip preview, just send the darn thing
+Evan Prodromou <evan@prodromou.name>**20080826021227]
+[added a created timestamp to invitations
+Evan Prodromou <evan@prodromou.name>**20080826023116]
+[clean up some whitespace in DB script
+Evan Prodromou <evan@prodromou.name>**20080826024015]
+[helper functions that take a user object
+Evan Prodromou <evan@prodromou.name>**20080827001348]
+[updates for invitations
+Evan Prodromou <evan@prodromou.name>**20080827001927
+
+ Add the code to registration to handle invitation codes.
+
+ Some edge cases on invitations: is the user already subbed to this
+ person? Tell them. Is the person already on the system? Sub the user
+ to them, then, and tell the user.
+
+ Add some code to User to auto-sub invitees whenever the email address
+ changes. Call it from a new registration with an invite code, and also
+ from confirmaddress.
+
+ Some whitespace cleanup in the files touched.
+
+]
+[correct output on invitations
+Evan Prodromou <evan@prodromou.name>**20080827003529]
+[save invitation code and improve format of outgoing mail
+Evan Prodromou <evan@prodromou.name>**20080827004410]
+[fix format for subject
+Evan Prodromou <evan@prodromou.name>**20080827004755]
+[fix runon string in invites format
+Evan Prodromou <evan@prodromou.name>**20080827004854]
+[send personal message through to send_invitation function
+Evan Prodromou <evan@prodromou.name>**20080827005155]
+[lost the names when making a new function send_invitation
+Evan Prodromou <evan@prodromou.name>**20080827005418]
+[fix format string, again again
+Evan Prodromou <evan@prodromou.name>**20080827010138]
+[Invite -> Invitation
+Evan Prodromou <evan@prodromou.name>**20080827010515]
+[removed the preview, so use "Send" for the button
+Evan Prodromou <evan@prodromou.name>**20080827011921]
+[add a foreign_link table with prefs for the link
+Evan Prodromou <evan@prodromou.name>**20080827032423]
+[update to translation
+Evan Prodromou <evan@prodromou.name>**20080827185817]
+[Bounce oversized XMPP messages back to user (Ticket #112)
+CiaranG <ciaran@ciarang.com>**20080814083856]
+[XMPP daemon updates including help, sub and subsub commands, plus subscribe/unsubcribe logic broken out into standalone module for sharing
+CiaranG <ciaran@ciarang.com>**20080816083422]
+[Added missing subs.php
+CiaranG <ciaran@ciarang.com>**20080816153917]
+[remove custom xmppdaemon error handler
+Evan Prodromou <evan@prodromou.name>**20080830162128]
+[merge in changes for CSRF, too
+Evan Prodromou <evan@prodromou.name>**20080830162223]
+[initial non-Ajax version of favorites
+Evan Prodromou <evan@prodromou.name>**20080908181624]
+[change input buttons to submit buttons
+Evan Prodromou <evan@prodromou.name>**20080908182353]
+[fix requires in dis/favor and correct url in form
+Evan Prodromou <evan@prodromou.name>**20080908182559]
+[correct action for showfavorites in disfavor
+Evan Prodromou <evan@prodromou.name>**20080908182716]
+[better styling for favor/disfavor buttons
+Evan Prodromou <evan@prodromou.name>**20080908183515]
+[styling on the favor/disfavor forms to show inline
+Evan Prodromou <evan@prodromou.name>**20080908201751]
+[write our own submit so there's no <p>
+Evan Prodromou <evan@prodromou.name>**20080908202226]
+[move fave form, float right
+Evan Prodromou <evan@prodromou.name>**20080908202717]
+[make favorites form use Ajax
+Evan Prodromou <evan@prodromou.name>**20080908211610]
+[missed a closing curly
+Evan Prodromou <evan@prodromou.name>**20080908211656]
+[enjitqueuehandler added
+Evan Prodromou <evan@prodromou.name>**20080916174105]
+[rationalize with repository version
+Evan Prodromou <evan@prodromou.name>**20080916174400]
+[change some more tables to InnoDB
+Evan Prodromou <evan@prodromou.name>**20080916174515]
+[Database and classes for direct messages
+Evan Prodromou <evan@prodromou.name>**20080916185126]
+[inbox and outbox for direct messages
+Evan Prodromou <evan@prodromou.name>**20080916195346
+
+ Added an inbox and outbox for direct messages.
+
+ Factored common code to mailbox.php. Factored common code with
+ stream.php to personal.php.
+
+]
+[fixup CSS for messages
+Evan Prodromou <evan@prodromou.name>**20080916195620]
+[correctly show top
+Evan Prodromou <evan@prodromou.name>**20080916200445]
+[instructions for inbox and outbox
+Evan Prodromou <evan@prodromou.name>**20080916200703]
+[correct title on inbox and outbox
+Evan Prodromou <evan@prodromou.name>**20080916200942]
+[Twitter integration - SQL ref data for Twitter
+zach@controlyourself.ca**20080822034054]
+[Twitter integration - Oh look, a Twitter settings tab.
+zach@controlyourself.ca**20080822034157]
+[Twitter-integration - Twitter settings tab now saves Twitter credentials
+zach@controlyourself.ca**20080826225615]
+[Twitter integration - Add and remove Twitter accnt now working
+Zach Copley <zach@controlyourself.ca>**20080827000327]
+[Twitter integration - Foreign_user::getForeignUser() to retrieve
+Zach Copley <zach@controlyourself.ca>**20080827005444
+ Foreign_user by multi-part key: user_id + service
+]
+[Twitter integration - decided to change Twitter to service ID #1
+Zach Copley <zach@controlyourself.ca>**20080827021635]
+[fork daemon
+Evan Prodromou <evan@prodromou.name>**20080626224011]
+[fork daemon
+Evan Prodromou <evan@prodromou.name>*-20080626224011]
+[translation updates
+Evan Prodromou <evan@prodromou.name>**20080817160451]
+[Twitter integration - support for new foreign_link table and prefs now save/update
+Zach Copley <zach@controlyourself.ca>**20080828072205]
+[Twitter integration - Notices now broadcast (directly) to Twitter from linked accts.
+Zach Copley <zach@controlyourself.ca>**20080828192509]
+[CSRF protection for invites.php
+Zach Copley <zach@controlyourself.ca>**20080829045441]
+[CSRF protection in twittersettings.php
+Zach Copley <zach@controlyourself.ca>**20080829045724]
+[Conflated Avatar and Profile settings + removed a bunch of unnecessary whitespace
+Zach Copley <zach@controlyourself.ca>**20080905194732]
+[Moved avatar upload down below timezone on profile settings
+Zach Copley <zach@controlyourself.ca>**20080906070651]
+[Fold password form into profile settings
+Zach Copley <zach@controlyourself.ca>**20080907053604]
+[Twitter integration - added $config option for source attribute when posting to Twitter
+Zach Copley <zach@controlyourself.ca>**20080907062118]
+[Twitter integration - wording change
+Zach Copley <zach@controlyourself.ca>**20080907063339]
+[Disallow 'api' nickname
+Zach Copley <zach@controlyourself.ca>**20080909000650]
+[Twitter-compatible API - JSONP callbacks for all methods emitting JSON
+Zach Copley <zach@controlyourself.ca>**20080910025013]
+[integrate local changes with Zach's
+Evan Prodromou <evan@prodromou.name>**20080916210813]
+[Initial support for PostgreSQL
+CiaranG <ciaran@ciarang.com>**20080909072224]
+[Fix remote sub when redirected via login (Ticket #618)
+CiaranG <ciaran@ciarang.com>**20080909202259]
+[PostgreSQL - reply.modified needs a default
+CiaranG <ciaran@ciarang.com>**20080910073741]
+[Fix unquoted array key, causes b0rkage on some php setups (via @bopuc)
+CiaranG <ciaran@ciarang.com>**20080911163558]
+[PostgreSQL: Make tag cloud query work - also fixes what is surely an ignored error in the mysql query
+CiaranG <ciaran@ciarang.com>**20080911192348]
+[PostgreSQL: support for full text searching (notice and people)
+CiaranG <ciaran@ciarang.com>**20080914201744]
+[PostgreSQL: Quote table name in manually formed query - fixes profile settings update
+CiaranG <ciaran@ciarang.com>**20080915070256]
+[Further updates to sample config
+CiaranG <ciaran@ciarang.com>**20080915081246]
+[Fix missing nickname in rss replies to title
+CiaranG <ciaran@ciarang.com>**20080915190953]
+[Get correct configured language when all else fails
+CiaranG <ciaran@ciarang.com>**20080916172706]
+[rationalize with ciarang's pgsql changes
+Evan Prodromou <evan@prodromou.name>**20080916214134]
+[add in ciarang's changes to config.php.sample
+Evan Prodromou <evan@prodromou.name>**20080916214206]
+[use common_local_url() in tagging, add canonicalization function
+Evan Prodromou <evan@prodromou.name>**20080917112234]
+[move rendering stuff that doesn't depend on notice to a separate function
+Evan Prodromou <evan@prodromou.name>**20080917112730]
+[newmessage and showmessage
+Evan Prodromou <evan@controlyourself.ca>**20080917174741]
+[add new message link to showstream
+Evan Prodromou <evan@controlyourself.ca>**20080917175356]
+[don't show message link on your own page
+Evan Prodromou <evan@controlyourself.ca>**20080917175512]
+[fancy urls for show message, new message
+Evan Prodromou <evan@controlyourself.ca>**20080917180244]
+[to parameter is an ID not a nickname
+Evan Prodromou <evan@controlyourself.ca>**20080917185142]
+[not a nickname so don't canonicalize
+Evan Prodromou <evan@controlyourself.ca>**20080917185723]
+[correct urls from fancy url for show-message
+Evan Prodromou <evan@controlyourself.ca>**20080917185950]
+[fix missing variable in save-new-message
+Evan Prodromou <evan@controlyourself.ca>**20080917190306]
+[skip over Mailbox::handle to Action::handle
+Evan Prodromou <evan@controlyourself.ca>**20080917190445]
+[fix titles in showmessage
+Evan Prodromou <evan@controlyourself.ca>**20080917190745]
+[save created date
+Evan Prodromou <evan@controlyourself.ca>**20080917191652]
+[some minor fixes for new messages
+Evan Prodromou <evan@controlyourself.ca>**20080917192121]
+[style for message form
+Evan Prodromou <evan@controlyourself.ca>**20080918021421]
+[rearrange paragraphs in message form
+Evan Prodromou <evan@controlyourself.ca>**20080918021727]
+[change id of message textarea
+Evan Prodromou <evan@controlyourself.ca>**20080918021926]
+[no instructions for 'to' dropdown
+Evan Prodromou <evan@controlyourself.ca>**20080918022410]
+[set message form label to display inline
+Evan Prodromou <evan@controlyourself.ca>**20080918022558]
+[try to move the message box up a bit
+Evan Prodromou <evan@controlyourself.ca>**20080918022756]
+[scootch it down a bit again
+Evan Prodromou <evan@controlyourself.ca>**20080918022841]
+[return correct data structure for messages in showmessage
+Evan Prodromou <evan@controlyourself.ca>**20080918023032]
+[fetch -> find
+Evan Prodromou <evan@controlyourself.ca>**20080918025232]
+[fix htaccess so pass message param correctly
+Evan Prodromou <evan@controlyourself.ca>**20080918025428]
+[more id -> message shenanigans
+Evan Prodromou <evan@controlyourself.ca>**20080918025543]
+[remove tabs from showmessage
+Evan Prodromou <evan@controlyourself.ca>**20080918025713]
+[split favor forms code
+Evan Prodromou <evan@controlyourself.ca>**20080918032048]
+[big changes to the README, part 1
+Evan Prodromou <evan@controlyourself.ca>**20080918135502]
+[if favor/disfavor submitted through ajax, return micro-html of form
+Evan Prodromou <evan@controlyourself.ca>**20080918135608]
+[Gee, maybe I shouldn't try to write DOM code from memory
+Evan Prodromou <evan@controlyourself.ca>**20080918140533]
+[ah, turns out each() stuff is called as a method
+Evan Prodromou <evan@controlyourself.ca>**20080918140756]
+[get the zeroth form in the returned array
+Evan Prodromou <evan@controlyourself.ca>**20080918145545]
+[replace -> replaceWith
+Evan Prodromou <evan@controlyourself.ca>**20080918150120]
+[ajaxForm on returned forms
+Evan Prodromou <evan@controlyourself.ca>**20080918150438]
+[have to add the ajaxHidden thing, too
+Evan Prodromou <evan@controlyourself.ca>**20080918150753]
+[dis -> fav
+Evan Prodromou <evan@controlyourself.ca>**20080918151642]
+[correct background of dis/favor form on hover
+Evan Prodromou <evan@controlyourself.ca>**20080918151907]
+[input changes
+Evan Prodromou <evan@controlyourself.ca>**20080918152124]
+[add favor/disfavor to profile
+Evan Prodromou <evan@controlyourself.ca>**20080918152612]
+[don't notify you favor your own notice
+Evan Prodromou <evan@controlyourself.ca>**20080918152823]
+[correct a couple of bugs
+Evan Prodromou <evan@controlyourself.ca>**20080922190937]
+[clear and rebuild db scripts
+Evan Prodromou <evan@controlyourself.ca>**20080922195824]
+[add additional licenses into extlib subdir
+Evan Prodromou <evan@controlyourself.ca>**20080922212120]
+[hide IM settings if xmpp disabled
+Evan Prodromou <evan@controlyourself.ca>**20080922214003]
+[finish the README file
+Evan Prodromou <evan@controlyourself.ca>**20080922223239]
+[A working stopdaemons.sh, and no parameter needed for startdaemons.sh
+CiaranG <ciaran@ciarang.com>**20080906202242]
+[merge CiaranG's changes for subs
+Evan Prodromou <evan@prodromou.name>**20080922225031] \ No newline at end of file