summaryrefslogtreecommitdiff
path: root/_darcs/inventories/20080922225224-84dde-625df932503bbcfc34e4eecc6aec09c5a0509315.gz
blob: da247966a3da3e6c299d52f25bf3bb39d262b902 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
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]