adium 2544:4703302ec97b: Backed out changeset 8b455a7d180d - rev...

commits at adium.im commits at adium.im
Mon Jul 27 20:51:50 UTC 2009


details:	http://hg.adium.im/adium/rev/4703302ec97b
revision:	2544:4703302ec97b
author:		Evan Schoenberg
date:		Mon Jul 27 15:41:10 2009 -0500

Backed out changeset 8b455a7d180d - revert NSSound caching. Refs #12098
Subject: adium 2545:cbe5abf57ea4: Nonsound change from [2165]

details:	http://hg.adium.im/adium/rev/cbe5abf57ea4
revision:	2545:cbe5abf57ea4
author:		Evan Schoenberg
date:		Mon Jul 27 15:45:29 2009 -0500

Nonsound change from [2165]
Subject: adium 2546:46fb7fe30119: Backed out changeset 8b455a7d180d

details:	http://hg.adium.im/adium/rev/46fb7fe30119
revision:	2546:46fb7fe30119
author:		Evan Schoenberg
date:		Mon Jul 27 15:46:43 2009 -0500

Backed out changeset 8b455a7d180d
Subject: adium 2547:f52a640d250c: Beginning backout of NSSound; Refs #12098

details:	http://hg.adium.im/adium/rev/f52a640d250c
revision:	2547:f52a640d250c
author:		Evan Schoenberg
date:		Mon Jul 27 15:47:29 2009 -0500

Beginning backout of NSSound; Refs #12098
Subject: adium 2548:18fcfa64e4c2: Backed out changeset e72c1ec0419a

details:	http://hg.adium.im/adium/rev/18fcfa64e4c2
revision:	2548:18fcfa64e4c2
author:		Evan Schoenberg
date:		Mon Jul 27 15:47:38 2009 -0500

Backed out changeset e72c1ec0419a
Subject: adium 2549:0e3b32a50a26: Continuing backout of NSSound; Refs #12098

details:	http://hg.adium.im/adium/rev/0e3b32a50a26
revision:	2549:0e3b32a50a26
author:		Evan Schoenberg
date:		Mon Jul 27 15:47:55 2009 -0500

Continuing backout of NSSound; Refs #12098
Subject: adium 2550:da728b3a34e5: Backed out changeset 3063c2f304a0. Closes #12098. This may be revisited when Adium requires Mac OS X 10.6; NSSound is not usable in Mac OS X 10.5.7.

details:	http://hg.adium.im/adium/rev/da728b3a34e5
revision:	2550:da728b3a34e5
author:		Evan Schoenberg
date:		Mon Jul 27 15:48:51 2009 -0500

Backed out changeset 3063c2f304a0. Closes #12098. This may be revisited when Adium requires Mac OS X 10.6; NSSound is not usable in Mac OS X 10.5.7.
Subject: adium 2551:c795048b788e: Completed NSSound backout

details:	http://hg.adium.im/adium/rev/c795048b788e
revision:	2551:c795048b788e
author:		Evan Schoenberg
date:		Mon Jul 27 15:49:05 2009 -0500

Completed NSSound backout
Subject: adium 2552:028328d74309: Merge?

details:	http://hg.adium.im/adium/rev/028328d74309
revision:	2552:028328d74309
author:		Evan Schoenberg
date:		Mon Jul 27 15:52:40 2009 -0500

Merge?
Subject: adium 2553:0841e816d2a8: I'm sorry about this long merge; I'm not sure how else to resolve so I can push

details:	http://hg.adium.im/adium/rev/0841e816d2a8
revision:	2553:0841e816d2a8
author:		Evan Schoenberg
date:		Mon Jul 27 15:53:58 2009 -0500

I'm sorry about this long merge; I'm not sure how else to resolve so I can push

diffs (truncated from 161455 to 1000 lines):

diff -r 8b455a7d180d -r 0841e816d2a8 .hgignore
--- a/.hgignore	Sun May 10 15:45:25 2009 -0700
+++ b/.hgignore	Mon Jul 27 15:53:58 2009 -0500
@@ -1,4 +1,5 @@
 syntax: glob
+.DS_Store
 *.mode*
 *.pbxuser
 *.perspectivev3
diff -r 8b455a7d180d -r 0841e816d2a8 Adium.xcodeproj/project.pbxproj
--- a/Adium.xcodeproj/project.pbxproj	Sun May 10 15:45:25 2009 -0700
+++ b/Adium.xcodeproj/project.pbxproj	Mon Jul 27 15:53:58 2009 -0500
@@ -95,7 +95,9 @@
 		111E89020F93FE3900A5F18B /* AIUserHostTooltip.m in Sources */ = {isa = PBXBuildFile; fileRef = 111E89000F93FE3900A5F18B /* AIUserHostTooltip.m */; };
 		1121B29A0F896A720047EC66 /* AIContactVisibilityControlPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 1121B2990F896A720047EC66 /* AIContactVisibilityControlPlugin.m */; };
 		112523190F5F7F86003FC58A /* AITwitterURLHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 112523180F5F7F86003FC58A /* AITwitterURLHandler.m */; };
-		112527740F5F9E63003FC58A /* AITwitterAccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 112527730F5F9E63003FC58A /* AITwitterAccountView.nib */; };
+		1125DD3C0FF5A5D600544B92 /* PurpleFacebookAccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 1125DD3B0FF5A5D600544B92 /* PurpleFacebookAccountView.nib */; };
+		112939020FD5AC1B00FA8F53 /* AIConfirmationsAdvancedPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 112939010FD5AC1B00FA8F53 /* AIConfirmationsAdvancedPreferences.nib */; };
+		112939100FD5AE1400FA8F53 /* AIConfirmationsAdvancedPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 1129390F0FD5AE1400FA8F53 /* AIConfirmationsAdvancedPreferences.m */; };
 		112B47240F82DC2300690E84 /* AIGroupChatStatusIcons.h in Headers */ = {isa = PBXBuildFile; fileRef = 112B47220F82DC2300690E84 /* AIGroupChatStatusIcons.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		112B47250F82DC2300690E84 /* AIGroupChatStatusIcons.m in Sources */ = {isa = PBXBuildFile; fileRef = 112B47230F82DC2300690E84 /* AIGroupChatStatusIcons.m */; };
 		112B47670F82E0FC00690E84 /* AIXtraInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 112B47650F82E0FC00690E84 /* AIXtraInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -104,6 +106,7 @@
 		112B490A0F82FB1700690E84 /* AIGroupChatStatusTooltipPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 112B49090F82FB1700690E84 /* AIGroupChatStatusTooltipPlugin.m */; };
 		112B4A250F83194700690E84 /* AIMentionAdvancedPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 112B4A240F83194700690E84 /* AIMentionAdvancedPreferences.m */; };
 		112B4A3E0F831A4400690E84 /* AIMentionAdvancedPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 112B4A3D0F831A4400690E84 /* AIMentionAdvancedPreferences.nib */; };
+		112E7FA60FC86BB400657119 /* AITwitterActionsHTMLFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 112E7FA50FC86BB400657119 /* AITwitterActionsHTMLFilter.m */; };
 		113891830F6B6AFF00A7D7DC /* AILaconicaService.m in Sources */ = {isa = PBXBuildFile; fileRef = 113891820F6B6AFF00A7D7DC /* AILaconicaService.m */; };
 		1138918A0F6B6B2800A7D7DC /* AILaconicaAccount.m in Sources */ = {isa = PBXBuildFile; fileRef = 113891890F6B6B2800A7D7DC /* AILaconicaAccount.m */; };
 		1138918D0F6B6B3F00A7D7DC /* AILaconicaPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 1138918C0F6B6B3F00A7D7DC /* AILaconicaPlugin.m */; };
@@ -118,6 +121,7 @@
 		114849B90F7841C600EA5264 /* AIAuthorizationRequestsWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 114849B70F7841C600EA5264 /* AIAuthorizationRequestsWindowController.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		114849BA0F7841C600EA5264 /* AIAuthorizationRequestsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 114849B80F7841C600EA5264 /* AIAuthorizationRequestsWindowController.m */; };
 		114849BC0F78420300EA5264 /* AIAuthorizationRequestsWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 114849BB0F78420300EA5264 /* AIAuthorizationRequestsWindow.nib */; };
+		1150A9960FBE48D600E0BD31 /* ESIRCAccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 1150A9950FBE48D600E0BD31 /* ESIRCAccountView.nib */; };
 		1163F0EC0F6C7A8300F12F5D /* AIURLShortenerPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 1163F0EB0F6C7A8300F12F5D /* AIURLShortenerPlugin.m */; };
 		1164A90D0F7AD4AB00110AE4 /* AIContentTopic.h in Headers */ = {isa = PBXBuildFile; fileRef = 1164A90B0F7AD4AB00110AE4 /* AIContentTopic.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		1164A9270F7AD70700110AE4 /* AIContentTopic.m in Sources */ = {isa = PBXBuildFile; fileRef = 1164A90C0F7AD4AB00110AE4 /* AIContentTopic.m */; };
@@ -141,18 +145,35 @@
 		11879C0B0F6FF4C400CACFB1 /* AITwitterAccountOAuthSetup.m in Sources */ = {isa = PBXBuildFile; fileRef = 11879C0A0F6FF4C400CACFB1 /* AITwitterAccountOAuthSetup.m */; };
 		11879DF80F6FFC0B00CACFB1 /* OAuthConsumer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11879DF70F6FFC0B00CACFB1 /* OAuthConsumer.framework */; };
 		11879E0A0F6FFC1000CACFB1 /* OAuthConsumer.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 11879DF70F6FFC0B00CACFB1 /* OAuthConsumer.framework */; };
+		118A44500FEEA828008153C0 /* libjson-glib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 118A444F0FEEA828008153C0 /* libjson-glib.framework */; };
+		118A44510FEEA828008153C0 /* libjson-glib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 118A444F0FEEA828008153C0 /* libjson-glib.framework */; };
+		118A44540FEEA82E008153C0 /* libjson-glib.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 118A444F0FEEA828008153C0 /* libjson-glib.framework */; };
+		1192E6D90FD3056F003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 1192E6B10FD30307003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.h */; };
+		1192E6DA0FD30578003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 1192E6B20FD30307003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.m */; };
 		11945F400F7935A2002A54B3 /* Ignore.png in Resources */ = {isa = PBXBuildFile; fileRef = 11945F3F0F7935A2002A54B3 /* Ignore.png */; };
+		1197F6710FCF8D180032F19B /* AITwitterStatusFollowup.m in Sources */ = {isa = PBXBuildFile; fileRef = 1197F6700FCF8D180032F19B /* AITwitterStatusFollowup.m */; };
+		11A2F10A0FC8FC1A00C3F05C /* AIMessageAlertsAdvancedPreferences.nib in Resources */ = {isa = PBXBuildFile; fileRef = 11A2F1090FC8FC1A00C3F05C /* AIMessageAlertsAdvancedPreferences.nib */; };
+		11A2F1220FC8FC9D00C3F05C /* AIMessageAlertsAdvancedPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A2F1210FC8FC9D00C3F05C /* AIMessageAlertsAdvancedPreferences.m */; };
+		11AA10130FCE0969003908B6 /* AIProgressDataUploader.h in Headers */ = {isa = PBXBuildFile; fileRef = 11AA10110FCE0969003908B6 /* AIProgressDataUploader.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		11AA10140FCE0969003908B6 /* AIProgressDataUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 11AA10120FCE0969003908B6 /* AIProgressDataUploader.m */; };
 		11AA1EFA0BCAE9C3003DDA66 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11AA1EF90BCAE9C3003DDA66 /* Quartz.framework */; };
 		11AE53610F68CE3300BE8077 /* AIPurpleOscarAccountViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 11AE52000F68CA5000BE8077 /* AIPurpleOscarAccountViewController.h */; };
 		11AE53620F68CE3300BE8077 /* AIPurpleOscarAccountViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11AE52010F68CA5000BE8077 /* AIPurpleOscarAccountViewController.m */; };
 		11BD73AE0F5A53EA007D438A /* facebook.png in Resources */ = {isa = PBXBuildFile; fileRef = 345D68950F1FD563002F2D01 /* facebook.png */; };
 		11BD73D30F5A54BB007D438A /* twitter-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 11BD73D10F5A54BB007D438A /* twitter-small.png */; };
 		11BD73D40F5A54BB007D438A /* twitter.png in Resources */ = {isa = PBXBuildFile; fileRef = 11BD73D20F5A54BB007D438A /* twitter.png */; };
+		11BE289A0FCC7C13000E6A10 /* AIPicImImageUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 11BE28990FCC7C13000E6A10 /* AIPicImImageUploader.m */; };
+		11BE28DF0FCC7D2B000E6A10 /* AIImageUploaderPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 11BE28DE0FCC7D2B000E6A10 /* AIImageUploaderPlugin.m */; };
+		11BE29640FCCA8DA000E6A10 /* ImageUploaderProgress.nib in Resources */ = {isa = PBXBuildFile; fileRef = 11BE29630FCCA8DA000E6A10 /* ImageUploaderProgress.nib */; };
+		11BE29680FCCA9E3000E6A10 /* AIImageUploaderWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 11BE29670FCCA9E3000E6A10 /* AIImageUploaderWindowController.m */; };
 		11C7CAF30BB58F4100296D7F /* AINudgeBuzzHandlerPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 11C7CAF10BB58F4100296D7F /* AINudgeBuzzHandlerPlugin.m */; };
 		11C97DFD0F7D26C200E8DD37 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 11C97DFC0F7D26C200E8DD37 /* dsa_pub.pem */; };
 		11CA00100C35EC5100A6BB8D /* SS_PreferencePaneProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 344836910BC8510B0083723B /* SS_PreferencePaneProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		11CA00110C35EC5200A6BB8D /* SS_PrefsController.h in Headers */ = {isa = PBXBuildFile; fileRef = 344836920BC8510B0083723B /* SS_PrefsController.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		11CA00120C35EC5200A6BB8D /* SS_PrefsController.m in Sources */ = {isa = PBXBuildFile; fileRef = 344836900BC8510B0083723B /* SS_PrefsController.m */; };
+		11D135D90FBE4C65000B0A5E /* AITwitterAccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 11D135D80FBE4C65000B0A5E /* AITwitterAccountView.nib */; };
+		11D9156F0FFC0FEB00B39713 /* AIImageShackImageUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D915580FFC0E9C00B39713 /* AIImageShackImageUploader.m */; };
+		11D915720FFC100700B39713 /* AIGenericMultipartImageUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D915710FFC100700B39713 /* AIGenericMultipartImageUploader.m */; };
 		11E786810F8860210014612E /* AIJumpControlPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 11E7867F0F8860210014612E /* AIJumpControlPlugin.m */; };
 		11EE1B4D0CDCFAF40097F246 /* oscar-adium.c in Sources */ = {isa = PBXBuildFile; fileRef = 11EE1B490CDCFAF40097F246 /* oscar-adium.c */; };
 		11EE1B4E0CDCFAF40097F246 /* oscar-adium.h in Headers */ = {isa = PBXBuildFile; fileRef = 11EE1B4A0CDCFAF40097F246 /* oscar-adium.h */; };
@@ -503,7 +524,6 @@
 		3485DB8909EBCE7400232CC4 /* ESPurpleMSNAccountViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 344159B4059F97800019246B /* ESPurpleMSNAccountViewController.m */; };
 		3485DB8A09EBCE7400232CC4 /* ESPurpleMSNAccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 343EB40508086D9000E27095 /* ESPurpleMSNAccountView.nib */; };
 		3485DB8B09EBCE7400232CC4 /* PurpleDefaultsMSN.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4B7644DD07A05E7E0021CCD7 /* PurpleDefaultsMSN.plist */; };
-		3485DB8E09EBCE7400232CC4 /* MSNServicePrefs.nib in Resources */ = {isa = PBXBuildFile; fileRef = 4B388E4C0719C445004DE713 /* MSNServicePrefs.nib */; };
 		3485DB8F09EBCE7400232CC4 /* ESNovellService.h in Headers */ = {isa = PBXBuildFile; fileRef = 34C2EA180634DB5E0018E5D2 /* ESNovellService.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		3485DB9009EBCE7400232CC4 /* ESNovellService.m in Sources */ = {isa = PBXBuildFile; fileRef = 34C2EA190634DB5E0018E5D2 /* ESNovellService.m */; };
 		3485DB9109EBCE7400232CC4 /* ESPurpleNovellAccount.h in Headers */ = {isa = PBXBuildFile; fileRef = 34C2E66F0634CF5F0018E5D2 /* ESPurpleNovellAccount.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -978,7 +998,6 @@
 		34E4CD5B0E68277D00D1B0DC /* ESIRCJoinChatView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 34E4CD510E68277D00D1B0DC /* ESIRCJoinChatView.nib */; };
 		34E4CD5C0E68277D00D1B0DC /* ESIRCAccountViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34E4CD520E68277D00D1B0DC /* ESIRCAccountViewController.m */; };
 		34E4CD5D0E68277D00D1B0DC /* ESIRCAccountViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 34E4CD530E68277D00D1B0DC /* ESIRCAccountViewController.h */; };
-		34E4CD5E0E68277D00D1B0DC /* ESIRCAccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 34E4CD540E68277D00D1B0DC /* ESIRCAccountView.nib */; };
 		34E4CD5F0E68277D00D1B0DC /* ESIRCAccount.m in Sources */ = {isa = PBXBuildFile; fileRef = 34E4CD550E68277D00D1B0DC /* ESIRCAccount.m */; };
 		34E4CD600E68277D00D1B0DC /* ESIRCAccount.h in Headers */ = {isa = PBXBuildFile; fileRef = 34E4CD560E68277D00D1B0DC /* ESIRCAccount.h */; };
 		34E4CD610E68277D00D1B0DC /* ESIRCService.m in Sources */ = {isa = PBXBuildFile; fileRef = 34E4CD570E68277D00D1B0DC /* ESIRCService.m */; };
@@ -1239,14 +1258,6 @@
 		633400640F9C14C2003C77A9 /* AIScaledImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334FF910F9C14C0003C77A9 /* AIScaledImageCell.m */; };
 		633400650F9C14C2003C77A9 /* AIVerticallyCenteredTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 6334FF930F9C14C0003C77A9 /* AIVerticallyCenteredTextCell.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		633400660F9C14C2003C77A9 /* AIVerticallyCenteredTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334FF940F9C14C0003C77A9 /* AIVerticallyCenteredTextCell.m */; };
-		633400670F9C14C2003C77A9 /* RAOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334FF970F9C14C0003C77A9 /* RAOperationQueue.m */; };
-		633400680F9C14C2003C77A9 /* RAOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 6334FF980F9C14C0003C77A9 /* RAOperationQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		633400690F9C14C2003C77A9 /* RAOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334FF990F9C14C0003C77A9 /* RAOperation.m */; };
-		6334006A0F9C14C2003C77A9 /* RAOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6334FF9A0F9C14C0003C77A9 /* RAOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		6334006B0F9C14C2003C77A9 /* RALatchTrigger.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334FF9B0F9C14C0003C77A9 /* RALatchTrigger.m */; };
-		6334006C0F9C14C2003C77A9 /* RALatchTrigger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6334FF9C0F9C14C0003C77A9 /* RALatchTrigger.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		6334006D0F9C14C2003C77A9 /* RAAtomicList.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334FF9D0F9C14C0003C77A9 /* RAAtomicList.m */; };
-		6334006E0F9C14C2003C77A9 /* RAAtomicList.h in Headers */ = {isa = PBXBuildFile; fileRef = 6334FF9E0F9C14C0003C77A9 /* RAAtomicList.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		633400710F9C14C2003C77A9 /* AISendingTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6334FFA30F9C14C0003C77A9 /* AISendingTextView.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		633400720F9C14C2003C77A9 /* AISendingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6334FFA40F9C14C0003C77A9 /* AISendingTextView.m */; };
 		633400730F9C14C2003C77A9 /* AIAutoScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6334FFA70F9C14C0003C77A9 /* AIAutoScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -1383,6 +1394,7 @@
 		636D94090E4EAB9D00E5F558 /* AIContactObserverManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 34555C5F0DB6BCE500649CD4 /* AIContactObserverManager.m */; };
 		637864550F9BE1AB0040DEDA /* AutoHyperlinks.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 3496A8EA07CE6CA30055BBAB /* AutoHyperlinks.framework */; };
 		638392F809D4D67A0067B9B7 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638392F609D4D67A0067B9B7 /* Sparkle.framework */; };
+		638BC1FC0FC932E000CE7600 /* AIObjectDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 638BC1FB0FC932E000CE7600 /* AIObjectDebug.m */; };
 		639484590EB13DFE008CB6DE /* AIContactHidingController.m in Sources */ = {isa = PBXBuildFile; fileRef = 661561640D84AEEC004B7946 /* AIContactHidingController.m */; };
 		6394845B0EB13E04008CB6DE /* AIContactHidingController.h in Headers */ = {isa = PBXBuildFile; fileRef = 661561630D84AEEC004B7946 /* AIContactHidingController.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		639DF7710F97E61D003C9A32 /* CBPurpleServicePlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B7F278A05440C8D00CDFC90 /* CBPurpleServicePlugin.m */; };
@@ -1673,6 +1685,7 @@
 			dstPath = "";
 			dstSubfolderSpec = 10;
 			files = (
+				118A44540FEEA82E008153C0 /* libjson-glib.framework in Copy Frameworks */,
 				633404710F9C18EF003C77A9 /* AIUtilities.framework in Copy Frameworks */,
 				639DF9D80F97E678003C9A32 /* AdiumLibpurple.framework in Copy Frameworks */,
 				11879E0A0F6FFC1000CACFB1 /* OAuthConsumer.framework in Copy Frameworks */,
@@ -1794,7 +1807,35 @@
 		1121B2990F896A720047EC66 /* AIContactVisibilityControlPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIContactVisibilityControlPlugin.m; path = Source/AIContactVisibilityControlPlugin.m; sourceTree = "<group>"; };
 		112523170F5F7F86003FC58A /* AITwitterURLHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AITwitterURLHandler.h; path = "Plugins/Twitter Plugin/AITwitterURLHandler.h"; sourceTree = "<group>"; };
 		112523180F5F7F86003FC58A /* AITwitterURLHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AITwitterURLHandler.m; path = "Plugins/Twitter Plugin/AITwitterURLHandler.m"; sourceTree = "<group>"; };
-		112527730F5F9E63003FC58A /* AITwitterAccountView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = AITwitterAccountView.nib; path = "Plugins/Twitter Plugin/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		1125DD380FF5A58F00544B92 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = "Plugins/Purple Service/English.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD3D0FF5A5DB00544B92 /* ca */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ca; path = "Plugins/Purple Service/ca.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD3E0FF5A5DD00544B92 /* cs */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cs; path = "Plugins/Purple Service/cs.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD3F0FF5A5DF00544B92 /* da */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = da; path = "Plugins/Purple Service/da.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD400FF5A5E100544B92 /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = de; path = "Plugins/Purple Service/de.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD410FF5A5E300544B92 /* el_GR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = el_GR; path = "Plugins/Purple Service/el_GR.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD420FF5A5E500544B92 /* en_GB */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en_GB; path = "Plugins/Purple Service/en_GB.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD430FF5A5E700544B92 /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = es; path = "Plugins/Purple Service/es.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD440FF5A5E900544B92 /* fi */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fi; path = "Plugins/Purple Service/fi.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD450FF5A5EC00544B92 /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr; path = "Plugins/Purple Service/fr.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD460FF5A5EE00544B92 /* fr_CA */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr_CA; path = "Plugins/Purple Service/fr_CA.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD470FF5A5F000544B92 /* hu */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = hu; path = "Plugins/Purple Service/hu.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD480FF5A5F200544B92 /* is */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = is; path = "Plugins/Purple Service/is.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD490FF5A5F400544B92 /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = "Plugins/Purple Service/it.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD4A0FF5A5F600544B92 /* ja */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ja; path = "Plugins/Purple Service/ja.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD4B0FF5A5F800544B92 /* nb */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nb; path = "Plugins/Purple Service/nb.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD4C0FF5A5FA00544B92 /* nl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nl; path = "Plugins/Purple Service/nl.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD4D0FF5A5FB00544B92 /* pl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pl; path = "Plugins/Purple Service/pl.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD4E0FF5A5FD00544B92 /* pt */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt; path = "Plugins/Purple Service/pt.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD4F0FF5A5FF00544B92 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt_BR; path = "Plugins/Purple Service/pt_BR.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD500FF5A60100544B92 /* ru */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ru; path = "Plugins/Purple Service/ru.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD510FF5A60300544B92 /* sl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sl; path = "Plugins/Purple Service/sl.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD520FF5A60500544B92 /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = "Plugins/Purple Service/sv.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD530FF5A60700544B92 /* tr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = tr; path = "Plugins/Purple Service/tr.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD540FF5A60900544B92 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_CN; path = "Plugins/Purple Service/zh_CN.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		1125DD550FF5A60B00544B92 /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_TW; path = "Plugins/Purple Service/zh_TW.lproj/PurpleFacebookAccountView.nib"; sourceTree = "<group>"; };
+		112939010FD5AC1B00FA8F53 /* AIConfirmationsAdvancedPreferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = AIConfirmationsAdvancedPreferences.nib; path = Resources/AIConfirmationsAdvancedPreferences.nib; sourceTree = "<group>"; };
+		1129390E0FD5AE1400FA8F53 /* AIConfirmationsAdvancedPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIConfirmationsAdvancedPreferences.h; path = Source/AIConfirmationsAdvancedPreferences.h; sourceTree = "<group>"; };
+		1129390F0FD5AE1400FA8F53 /* AIConfirmationsAdvancedPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIConfirmationsAdvancedPreferences.m; path = Source/AIConfirmationsAdvancedPreferences.m; sourceTree = "<group>"; };
 		112B47220F82DC2300690E84 /* AIGroupChatStatusIcons.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIGroupChatStatusIcons.h; path = "Frameworks/Adium Framework/Source/AIGroupChatStatusIcons.h"; sourceTree = "<group>"; };
 		112B47230F82DC2300690E84 /* AIGroupChatStatusIcons.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIGroupChatStatusIcons.m; path = "Frameworks/Adium Framework/Source/AIGroupChatStatusIcons.m"; sourceTree = "<group>"; };
 		112B47650F82E0FC00690E84 /* AIXtraInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIXtraInfo.h; path = "Frameworks/Adium Framework/Source/AIXtraInfo.h"; sourceTree = "<group>"; };
@@ -1805,6 +1846,8 @@
 		112B4A230F83194700690E84 /* AIMentionAdvancedPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIMentionAdvancedPreferences.h; path = Source/AIMentionAdvancedPreferences.h; sourceTree = "<group>"; };
 		112B4A240F83194700690E84 /* AIMentionAdvancedPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIMentionAdvancedPreferences.m; path = Source/AIMentionAdvancedPreferences.m; sourceTree = "<group>"; };
 		112B4A3D0F831A4400690E84 /* AIMentionAdvancedPreferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = AIMentionAdvancedPreferences.nib; path = Resources/AIMentionAdvancedPreferences.nib; sourceTree = "<group>"; };
+		112E7FA40FC86BB400657119 /* AITwitterActionsHTMLFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AITwitterActionsHTMLFilter.h; path = "Plugins/Twitter Plugin/AITwitterActionsHTMLFilter.h"; sourceTree = "<group>"; };
+		112E7FA50FC86BB400657119 /* AITwitterActionsHTMLFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AITwitterActionsHTMLFilter.m; path = "Plugins/Twitter Plugin/AITwitterActionsHTMLFilter.m"; sourceTree = "<group>"; };
 		113891810F6B6AFF00A7D7DC /* AILaconicaService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AILaconicaService.h; path = "Plugins/Twitter Plugin/AILaconicaService.h"; sourceTree = "<group>"; };
 		113891820F6B6AFF00A7D7DC /* AILaconicaService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AILaconicaService.m; path = "Plugins/Twitter Plugin/AILaconicaService.m"; sourceTree = "<group>"; };
 		113891880F6B6B2800A7D7DC /* AILaconicaAccount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AILaconicaAccount.h; path = "Plugins/Twitter Plugin/AILaconicaAccount.h"; sourceTree = "<group>"; };
@@ -1827,6 +1870,32 @@
 		114849B70F7841C600EA5264 /* AIAuthorizationRequestsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIAuthorizationRequestsWindowController.h; path = "Frameworks/Adium Framework/Source/AIAuthorizationRequestsWindowController.h"; sourceTree = "<group>"; };
 		114849B80F7841C600EA5264 /* AIAuthorizationRequestsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIAuthorizationRequestsWindowController.m; path = "Frameworks/Adium Framework/Source/AIAuthorizationRequestsWindowController.m"; sourceTree = "<group>"; };
 		114849BB0F78420300EA5264 /* AIAuthorizationRequestsWindow.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = AIAuthorizationRequestsWindow.nib; path = "Frameworks/Adium Framework/Resources/AIAuthorizationRequestsWindow.nib"; sourceTree = "<group>"; };
+		1150A9970FBE48DE00E0BD31 /* ca */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ca; path = "Plugins/Purple Service/ca.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9980FBE48E000E0BD31 /* cs */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cs; path = "Plugins/Purple Service/cs.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9990FBE48E500E0BD31 /* da */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = da; path = "Plugins/Purple Service/da.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A99A0FBE48E700E0BD31 /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = de; path = "Plugins/Purple Service/de.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A99B0FBE48E900E0BD31 /* el_GR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = el_GR; path = "Plugins/Purple Service/el_GR.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A99C0FBE48EC00E0BD31 /* en_GB */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en_GB; path = "Plugins/Purple Service/en_GB.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A99D0FBE48EE00E0BD31 /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = "Plugins/Purple Service/en.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A99E0FBE48F200E0BD31 /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = es; path = "Plugins/Purple Service/es.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A99F0FBE48F400E0BD31 /* fi */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fi; path = "Plugins/Purple Service/fi.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A00FBE48F600E0BD31 /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr; path = "Plugins/Purple Service/fr.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A10FBE48F800E0BD31 /* fr_CA */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr_CA; path = "Plugins/Purple Service/fr_CA.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A20FBE48FB00E0BD31 /* hu */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = hu; path = "Plugins/Purple Service/hu.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A30FBE48FD00E0BD31 /* is */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = is; path = "Plugins/Purple Service/is.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A40FBE48FF00E0BD31 /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = "Plugins/Purple Service/it.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A50FBE490100E0BD31 /* ja */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ja; path = "Plugins/Purple Service/ja.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A60FBE490300E0BD31 /* nb */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nb; path = "Plugins/Purple Service/nb.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A70FBE490500E0BD31 /* nl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nl; path = "Plugins/Purple Service/nl.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A80FBE490700E0BD31 /* pl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pl; path = "Plugins/Purple Service/pl.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9A90FBE490900E0BD31 /* pt */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt; path = "Plugins/Purple Service/pt.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9AA0FBE490B00E0BD31 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt_BR; path = "Plugins/Purple Service/pt_BR.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9AB0FBE490D00E0BD31 /* ru */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ru; path = "Plugins/Purple Service/ru.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9AC0FBE490F00E0BD31 /* sl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sl; path = "Plugins/Purple Service/sl.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9AD0FBE491100E0BD31 /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = "Plugins/Purple Service/sv.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9AE0FBE491300E0BD31 /* tr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = tr; path = "Plugins/Purple Service/tr.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9AF0FBE491500E0BD31 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_CN; path = "Plugins/Purple Service/zh_CN.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
+		1150A9B00FBE491700E0BD31 /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_TW; path = "Plugins/Purple Service/zh_TW.lproj/ESIRCAccountView.nib"; sourceTree = "<group>"; };
 		1163F0EA0F6C7A8300F12F5D /* AIURLShortenerPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIURLShortenerPlugin.h; path = ../../Source/AIURLShortenerPlugin.h; sourceTree = "<group>"; };
 		1163F0EB0F6C7A8300F12F5D /* AIURLShortenerPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIURLShortenerPlugin.m; path = ../../Source/AIURLShortenerPlugin.m; sourceTree = "<group>"; };
 		1164A90B0F7AD4AB00110AE4 /* AIContentTopic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIContentTopic.h; path = "Frameworks/Adium Framework/Source/AIContentTopic.h"; sourceTree = "<group>"; };
@@ -1853,17 +1922,64 @@
 		11879C090F6FF4C400CACFB1 /* AITwitterAccountOAuthSetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AITwitterAccountOAuthSetup.h; path = "Plugins/Twitter Plugin/AITwitterAccountOAuthSetup.h"; sourceTree = "<group>"; };
 		11879C0A0F6FF4C400CACFB1 /* AITwitterAccountOAuthSetup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AITwitterAccountOAuthSetup.m; path = "Plugins/Twitter Plugin/AITwitterAccountOAuthSetup.m"; sourceTree = "<group>"; };
 		11879DF70F6FFC0B00CACFB1 /* OAuthConsumer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OAuthConsumer.framework; path = Frameworks/OAuthConsumer.framework; sourceTree = "<group>"; };
+		118A444F0FEEA828008153C0 /* libjson-glib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "libjson-glib.framework"; path = "Frameworks/libjson-glib.framework"; sourceTree = "<group>"; };
+		1192E6B10FD30307003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIAnnoyingIRCMessagesHiderPlugin.h; path = "Plugins/Purple Service/AIAnnoyingIRCMessagesHiderPlugin.h"; sourceTree = "<group>"; };
+		1192E6B20FD30307003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIAnnoyingIRCMessagesHiderPlugin.m; path = "Plugins/Purple Service/AIAnnoyingIRCMessagesHiderPlugin.m"; sourceTree = "<group>"; };
 		11945F3F0F7935A2002A54B3 /* Ignore.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Ignore.png; path = "Frameworks/Adium Framework/Resources/Ignore.png"; sourceTree = "<group>"; };
+		1197F66F0FCF8D180032F19B /* AITwitterStatusFollowup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AITwitterStatusFollowup.h; path = "Plugins/Twitter Plugin/AITwitterStatusFollowup.h"; sourceTree = "<group>"; };
+		1197F6700FCF8D180032F19B /* AITwitterStatusFollowup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AITwitterStatusFollowup.m; path = "Plugins/Twitter Plugin/AITwitterStatusFollowup.m"; sourceTree = "<group>"; };
+		11A2F1090FC8FC1A00C3F05C /* AIMessageAlertsAdvancedPreferences.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = AIMessageAlertsAdvancedPreferences.nib; path = Resources/AIMessageAlertsAdvancedPreferences.nib; sourceTree = "<group>"; };
+		11A2F1200FC8FC9D00C3F05C /* AIMessageAlertsAdvancedPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIMessageAlertsAdvancedPreferences.h; path = Source/AIMessageAlertsAdvancedPreferences.h; sourceTree = "<group>"; };
+		11A2F1210FC8FC9D00C3F05C /* AIMessageAlertsAdvancedPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIMessageAlertsAdvancedPreferences.m; path = Source/AIMessageAlertsAdvancedPreferences.m; sourceTree = "<group>"; };
+		11AA10110FCE0969003908B6 /* AIProgressDataUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIProgressDataUploader.h; path = "Frameworks/AIUtilities Framework/Source/AIProgressDataUploader.h"; sourceTree = "<group>"; };
+		11AA10120FCE0969003908B6 /* AIProgressDataUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIProgressDataUploader.m; path = "Frameworks/AIUtilities Framework/Source/AIProgressDataUploader.m"; sourceTree = "<group>"; };
 		11AA1EF90BCAE9C3003DDA66 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = /System/Library/Frameworks/Quartz.framework; sourceTree = "<absolute>"; };
 		11AE52000F68CA5000BE8077 /* AIPurpleOscarAccountViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIPurpleOscarAccountViewController.h; path = "Plugins/Purple Service/AIPurpleOscarAccountViewController.h"; sourceTree = "<group>"; };
 		11AE52010F68CA5000BE8077 /* AIPurpleOscarAccountViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIPurpleOscarAccountViewController.m; path = "Plugins/Purple Service/AIPurpleOscarAccountViewController.m"; sourceTree = "<group>"; };
 		11BD73D10F5A54BB007D438A /* twitter-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "twitter-small.png"; path = "Plugins/Twitter Plugin/twitter-small.png"; sourceTree = "<group>"; };
 		11BD73D20F5A54BB007D438A /* twitter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = twitter.png; path = "Plugins/Twitter Plugin/twitter.png"; sourceTree = "<group>"; };
+		11BE28980FCC7C13000E6A10 /* AIPicImImageUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIPicImImageUploader.h; path = "Plugins/Image Uploading Plugin/AIPicImImageUploader.h"; sourceTree = "<group>"; };
+		11BE28990FCC7C13000E6A10 /* AIPicImImageUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIPicImImageUploader.m; path = "Plugins/Image Uploading Plugin/AIPicImImageUploader.m"; sourceTree = "<group>"; };
+		11BE28DD0FCC7D2B000E6A10 /* AIImageUploaderPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIImageUploaderPlugin.h; path = "Plugins/Image Uploading Plugin/AIImageUploaderPlugin.h"; sourceTree = "<group>"; };
+		11BE28DE0FCC7D2B000E6A10 /* AIImageUploaderPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIImageUploaderPlugin.m; path = "Plugins/Image Uploading Plugin/AIImageUploaderPlugin.m"; sourceTree = "<group>"; };
+		11BE29630FCCA8DA000E6A10 /* ImageUploaderProgress.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ImageUploaderProgress.nib; path = "Plugins/Image Uploading Plugin/ImageUploaderProgress.nib"; sourceTree = "<group>"; };
+		11BE29660FCCA9E3000E6A10 /* AIImageUploaderWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIImageUploaderWindowController.h; path = "Plugins/Image Uploading Plugin/AIImageUploaderWindowController.h"; sourceTree = "<group>"; };
+		11BE29670FCCA9E3000E6A10 /* AIImageUploaderWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIImageUploaderWindowController.m; path = "Plugins/Image Uploading Plugin/AIImageUploaderWindowController.m"; sourceTree = "<group>"; };
 		11C157D804A88E04008E0C76 /* AIEmoticonController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AIEmoticonController.h; path = Source/AIEmoticonController.h; sourceTree = "<group>"; };
 		11C157D904A88E04008E0C76 /* AIEmoticonController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AIEmoticonController.m; path = Source/AIEmoticonController.m; sourceTree = "<group>"; };
 		11C7CAF00BB58F4100296D7F /* AINudgeBuzzHandlerPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AINudgeBuzzHandlerPlugin.h; sourceTree = "<group>"; };
 		11C7CAF10BB58F4100296D7F /* AINudgeBuzzHandlerPlugin.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = AINudgeBuzzHandlerPlugin.m; sourceTree = "<group>"; };
 		11C97DFC0F7D26C200E8DD37 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = dsa_pub.pem; path = Resources/dsa_pub.pem; sourceTree = "<group>"; };
+		11D135DA0FBE4C69000B0A5E /* ca */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ca; path = "Plugins/Twitter Plugin/ca.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135DB0FBE4C6C000B0A5E /* cs */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cs; path = "Plugins/Twitter Plugin/cs.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135DC0FBE4C6E000B0A5E /* da */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = da; path = "Plugins/Twitter Plugin/da.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135DD0FBE4C70000B0A5E /* de */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = de; path = "Plugins/Twitter Plugin/de.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135DE0FBE4C73000B0A5E /* el_GR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = el_GR; path = "Plugins/Twitter Plugin/el_GR.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135DF0FBE4C76000B0A5E /* en_GB */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en_GB; path = "Plugins/Twitter Plugin/en_GB.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E00FBE4C82000B0A5E /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = es; path = "Plugins/Twitter Plugin/es.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E10FBE4C84000B0A5E /* fi */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fi; path = "Plugins/Twitter Plugin/fi.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E20FBE4C86000B0A5E /* fr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr; path = "Plugins/Twitter Plugin/fr.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E30FBE4C88000B0A5E /* fr_CA */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = fr_CA; path = "Plugins/Twitter Plugin/fr_CA.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E40FBE4C8A000B0A5E /* hu */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = hu; path = "Plugins/Twitter Plugin/hu.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E50FBE4C8D000B0A5E /* is */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = is; path = "Plugins/Twitter Plugin/is.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E60FBE4C8F000B0A5E /* it */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = it; path = "Plugins/Twitter Plugin/it.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E70FBE4C91000B0A5E /* ja */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ja; path = "Plugins/Twitter Plugin/ja.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E80FBE4C93000B0A5E /* nb */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nb; path = "Plugins/Twitter Plugin/nb.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135E90FBE4C95000B0A5E /* nl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = nl; path = "Plugins/Twitter Plugin/nl.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135EA0FBE4C98000B0A5E /* pl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pl; path = "Plugins/Twitter Plugin/pl.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135EB0FBE4C9A000B0A5E /* pt */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt; path = "Plugins/Twitter Plugin/pt.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135EC0FBE4C9C000B0A5E /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt_BR; path = "Plugins/Twitter Plugin/pt_BR.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135ED0FBE4C9E000B0A5E /* ru */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ru; path = "Plugins/Twitter Plugin/ru.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135EE0FBE4CA1000B0A5E /* sl */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sl; path = "Plugins/Twitter Plugin/sl.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135EF0FBE4CA2000B0A5E /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = "Plugins/Twitter Plugin/sv.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135F00FBE4CA4000B0A5E /* tr */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = tr; path = "Plugins/Twitter Plugin/tr.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135F10FBE4CA6000B0A5E /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_CN; path = "Plugins/Twitter Plugin/zh_CN.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135F20FBE4CA9000B0A5E /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = zh_TW; path = "Plugins/Twitter Plugin/zh_TW.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D135F30FBE4CB6000B0A5E /* en */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = en; path = "Plugins/Twitter Plugin/en.lproj/AITwitterAccountView.nib"; sourceTree = "<group>"; };
+		11D915570FFC0E9C00B39713 /* AIImageShackImageUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIImageShackImageUploader.h; path = "Plugins/Image Uploading Plugin/AIImageShackImageUploader.h"; sourceTree = "<group>"; };
+		11D915580FFC0E9C00B39713 /* AIImageShackImageUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIImageShackImageUploader.m; path = "Plugins/Image Uploading Plugin/AIImageShackImageUploader.m"; sourceTree = "<group>"; };
+		11D915700FFC100700B39713 /* AIGenericMultipartImageUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIGenericMultipartImageUploader.h; path = "Plugins/Image Uploading Plugin/AIGenericMultipartImageUploader.h"; sourceTree = "<group>"; };
+		11D915710FFC100700B39713 /* AIGenericMultipartImageUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIGenericMultipartImageUploader.m; path = "Plugins/Image Uploading Plugin/AIGenericMultipartImageUploader.m"; sourceTree = "<group>"; };
 		11E7867F0F8860210014612E /* AIJumpControlPlugin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIJumpControlPlugin.m; path = "Plugins/Dual Window Interface/AIJumpControlPlugin.m"; sourceTree = "<group>"; };
 		11E786800F8860210014612E /* AIJumpControlPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIJumpControlPlugin.h; path = "Plugins/Dual Window Interface/AIJumpControlPlugin.h"; sourceTree = "<group>"; };
 		11EE1B490CDCFAF40097F246 /* oscar-adium.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "oscar-adium.c"; sourceTree = "<group>"; };
@@ -3671,7 +3787,6 @@
 		34E4CD510E68277D00D1B0DC /* ESIRCJoinChatView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ESIRCJoinChatView.nib; path = "Plugins/Purple Service/ESIRCJoinChatView.nib"; sourceTree = "<group>"; };
 		34E4CD520E68277D00D1B0DC /* ESIRCAccountViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ESIRCAccountViewController.m; path = "Plugins/Purple Service/ESIRCAccountViewController.m"; sourceTree = "<group>"; };
 		34E4CD530E68277D00D1B0DC /* ESIRCAccountViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ESIRCAccountViewController.h; path = "Plugins/Purple Service/ESIRCAccountViewController.h"; sourceTree = "<group>"; };
-		34E4CD540E68277D00D1B0DC /* ESIRCAccountView.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = ESIRCAccountView.nib; path = "Plugins/Purple Service/ESIRCAccountView.nib"; sourceTree = "<group>"; };
 		34E4CD550E68277D00D1B0DC /* ESIRCAccount.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ESIRCAccount.m; path = "Plugins/Purple Service/ESIRCAccount.m"; sourceTree = "<group>"; };
 		34E4CD560E68277D00D1B0DC /* ESIRCAccount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ESIRCAccount.h; path = "Plugins/Purple Service/ESIRCAccount.h"; sourceTree = "<group>"; };
 		34E4CD570E68277D00D1B0DC /* ESIRCService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ESIRCService.m; path = "Plugins/Purple Service/ESIRCService.m"; sourceTree = "<group>"; };
@@ -3865,7 +3980,6 @@
 		4B31E8C404C46A9100A8010A /* ContactStatusColoringDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; name = ContactStatusColoringDefaults.plist; path = Resources/ContactStatusColoringDefaults.plist; sourceTree = "<group>"; };
 		4B387EB707199FE5004DE713 /* ESPurpleDotMacAccountViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ESPurpleDotMacAccountViewController.h; path = "Plugins/Purple Service/ESPurpleDotMacAccountViewController.h"; sourceTree = "<group>"; };
 		4B387EB807199FE5004DE713 /* ESPurpleDotMacAccountViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ESPurpleDotMacAccountViewController.m; path = "Plugins/Purple Service/ESPurpleDotMacAccountViewController.m"; sourceTree = "<group>"; };
-		4B388E4C0719C445004DE713 /* MSNServicePrefs.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = MSNServicePrefs.nib; path = "Plugins/Purple Service/MSNServicePrefs.nib"; sourceTree = "<group>"; };
 		4B422C0905ACB248005E720B /* AISortController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AISortController.h; path = "Frameworks/Adium Framework/Source/AISortController.h"; sourceTree = "<group>"; };
 		4B422C0A05ACB248005E720B /* AISortController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AISortController.m; path = "Frameworks/Adium Framework/Source/AISortController.m"; sourceTree = "<group>"; };
 		4B539C4B05EFD6CD00E5921A /* AIWebKitMessageViewPlugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIWebKitMessageViewPlugin.h; path = "Plugins/WebKit Message View/AIWebKitMessageViewPlugin.h"; sourceTree = "<group>"; };
@@ -4198,14 +4312,6 @@
 		6334FF910F9C14C0003C77A9 /* AIScaledImageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIScaledImageCell.m; path = "Frameworks/AIUtilities Framework/Source/AIScaledImageCell.m"; sourceTree = "<group>"; };
 		6334FF930F9C14C0003C77A9 /* AIVerticallyCenteredTextCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIVerticallyCenteredTextCell.h; path = "Frameworks/AIUtilities Framework/Source/AIVerticallyCenteredTextCell.h"; sourceTree = "<group>"; };
 		6334FF940F9C14C0003C77A9 /* AIVerticallyCenteredTextCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIVerticallyCenteredTextCell.m; path = "Frameworks/AIUtilities Framework/Source/AIVerticallyCenteredTextCell.m"; sourceTree = "<group>"; };
-		6334FF970F9C14C0003C77A9 /* RAOperationQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOperationQueue.m; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RAOperationQueue.m"; sourceTree = "<group>"; };
-		6334FF980F9C14C0003C77A9 /* RAOperationQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOperationQueue.h; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RAOperationQueue.h"; sourceTree = "<group>"; };
-		6334FF990F9C14C0003C77A9 /* RAOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOperation.m; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RAOperation.m"; sourceTree = "<group>"; };
-		6334FF9A0F9C14C0003C77A9 /* RAOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOperation.h; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RAOperation.h"; sourceTree = "<group>"; };
-		6334FF9B0F9C14C0003C77A9 /* RALatchTrigger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RALatchTrigger.m; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RALatchTrigger.m"; sourceTree = "<group>"; };
-		6334FF9C0F9C14C0003C77A9 /* RALatchTrigger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RALatchTrigger.h; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RALatchTrigger.h"; sourceTree = "<group>"; };
-		6334FF9D0F9C14C0003C77A9 /* RAAtomicList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAAtomicList.m; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RAAtomicList.m"; sourceTree = "<group>"; };
-		6334FF9E0F9C14C0003C77A9 /* RAAtomicList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAAtomicList.h; path = "Frameworks/AIUtilities Framework/Source/RAOperationQueue/RAAtomicList.h"; sourceTree = "<group>"; };
 		6334FFA30F9C14C0003C77A9 /* AISendingTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AISendingTextView.h; path = "Frameworks/AIUtilities Framework/Source/AISendingTextView.h"; sourceTree = "<group>"; };
 		6334FFA40F9C14C0003C77A9 /* AISendingTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AISendingTextView.m; path = "Frameworks/AIUtilities Framework/Source/AISendingTextView.m"; sourceTree = "<group>"; };
 		6334FFA70F9C14C0003C77A9 /* AIAutoScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIAutoScrollView.h; path = "Frameworks/AIUtilities Framework/Source/AIAutoScrollView.h"; sourceTree = "<group>"; };
@@ -4365,6 +4471,8 @@
 		636D936A0E4E9FD300E5F558 /* AdiumAddressBookAction_ICQ.scpt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.scpt; name = AdiumAddressBookAction_ICQ.scpt; path = "Frameworks/Adium Framework/Resources/AdiumAddressBookAction_ICQ.scpt"; sourceTree = "<group>"; };
 		636D936B0E4E9FD300E5F558 /* AdiumAddressBookAction_AIM.scpt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.scpt; name = AdiumAddressBookAction_AIM.scpt; path = "Frameworks/Adium Framework/Resources/AdiumAddressBookAction_AIM.scpt"; sourceTree = "<group>"; };
 		638392F609D4D67A0067B9B7 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = Frameworks/Sparkle.framework; sourceTree = "<group>"; };
+		638BC1FA0FC932E000CE7600 /* AIObjectDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIObjectDebug.h; path = Source/AIObjectDebug.h; sourceTree = "<group>"; };
+		638BC1FB0FC932E000CE7600 /* AIObjectDebug.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AIObjectDebug.m; path = Source/AIObjectDebug.m; sourceTree = "<group>"; };
 		639DFB440F981C7C003C9A32 /* NSCalendarDate+ISO8601Parsing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSCalendarDate+ISO8601Parsing.h"; path = "Frameworks/AIUtilities Framework/Source/NSCalendarDate+ISO8601Parsing.h"; sourceTree = "<group>"; };
 		63A3A9670F9C35D3006C9CB0 /* AIUtilities_Framework.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AIUtilities_Framework.plist; sourceTree = "<group>"; };
 		63A3A9690F9C35D3006C9CB0 /* ca */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -4672,6 +4780,7 @@
 				811035180CDE783800EC6038 /* SecurityInterface.framework in Frameworks */,
 				633405990F9C2C00003C77A9 /* AIUtilities.framework in Frameworks */,
 				3485D8EB09EB446900232CC4 /* Adium.framework in Frameworks */,
+				118A44500FEEA828008153C0 /* libjson-glib.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -4718,6 +4827,7 @@
 				340C1ABF0BD58FAB00D09235 /* Security.framework in Frameworks */,
 				31E0CD810C5EEF5200271DB1 /* CoreAudio.framework in Frameworks */,
 				11879DF80F6FFC0B00CACFB1 /* OAuthConsumer.framework in Frameworks */,
+				118A44510FEEA828008153C0 /* libjson-glib.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -4812,6 +4922,7 @@
 		1172FCA10CDAA8DE00B8E233 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				118A444F0FEEA828008153C0 /* libjson-glib.framework */,
 				1172FBC30CDAA8D400B8E233 /* libglib.framework */,
 				1172FBC40CDAA8D400B8E233 /* libgmodule.framework */,
 				1172FBC50CDAA8D400B8E233 /* libgobject.framework */,
@@ -4823,6 +4934,33 @@
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
+		11763B9A0FCEF7F000701353 /* Uploader which updates its progress */ = {
+			isa = PBXGroup;
+			children = (
+				11AA10110FCE0969003908B6 /* AIProgressDataUploader.h */,
+				11AA10120FCE0969003908B6 /* AIProgressDataUploader.m */,
+			);
+			name = "Uploader which updates its progress";
+			sourceTree = "<group>";
+		};
+		11BE28E30FCC7DA8000E6A10 /* Image Uploading */ = {
+			isa = PBXGroup;
+			children = (
+				11BE29630FCCA8DA000E6A10 /* ImageUploaderProgress.nib */,
+				11BE29660FCCA9E3000E6A10 /* AIImageUploaderWindowController.h */,
+				11BE29670FCCA9E3000E6A10 /* AIImageUploaderWindowController.m */,
+				11BE28DD0FCC7D2B000E6A10 /* AIImageUploaderPlugin.h */,
+				11BE28DE0FCC7D2B000E6A10 /* AIImageUploaderPlugin.m */,
+				11BE28980FCC7C13000E6A10 /* AIPicImImageUploader.h */,
+				11BE28990FCC7C13000E6A10 /* AIPicImImageUploader.m */,
+				11D915570FFC0E9C00B39713 /* AIImageShackImageUploader.h */,
+				11D915580FFC0E9C00B39713 /* AIImageShackImageUploader.m */,
+				11D915700FFC100700B39713 /* AIGenericMultipartImageUploader.h */,
+				11D915710FFC100700B39713 /* AIGenericMultipartImageUploader.m */,
+			);
+			name = "Image Uploading";
+			sourceTree = "<group>";
+		};
 		11C157D504A88DE0008E0C76 /* Emoticons */ = {
 			isa = PBXGroup;
 			children = (
@@ -4861,13 +4999,15 @@
 			children = (
 				11F739590F58D4DC00B3285B /* MGTwitterEngine */,
 				113891850F6B6B0300A7D7DC /* Laconica */,
+				1197F66F0FCF8D180032F19B /* AITwitterStatusFollowup.h */,
+				1197F6700FCF8D180032F19B /* AITwitterStatusFollowup.m */,
 				1109634B0F61C1D00064CA0E /* AITwitterReplyWindow.nib */,
 				110966180F61D3E70064CA0E /* AITwitterReplyWindowController.h */,
 				110966190F61D3E70064CA0E /* AITwitterReplyWindowController.m */,
-				112527730F5F9E63003FC58A /* AITwitterAccountView.nib */,
 				11F739000F58D1C300B3285B /* AITwitterAccountViewController.h */,
 				11F739010F58D1C400B3285B /* AITwitterAccountViewController.m */,
 				11879C090F6FF4C400CACFB1 /* AITwitterAccountOAuthSetup.h */,
+				11D135D80FBE4C65000B0A5E /* AITwitterAccountView.nib */,
 				11879C0A0F6FF4C400CACFB1 /* AITwitterAccountOAuthSetup.m */,
 				11BD73D10F5A54BB007D438A /* twitter-small.png */,
 				11BD73D20F5A54BB007D438A /* twitter.png */,
@@ -4883,6 +5023,8 @@
 				11F738F80F58D18700B3285B /* AITwitterService.m */,
 				11F738F00F58D12200B3285B /* AITwitterAccount.h */,
 				11F738F10F58D12200B3285B /* AITwitterAccount.m */,
+				112E7FA40FC86BB400657119 /* AITwitterActionsHTMLFilter.h */,
+				112E7FA50FC86BB400657119 /* AITwitterActionsHTMLFilter.m */,
 			);
 			name = Twitter;
 			sourceTree = "<group>";
@@ -5087,6 +5229,12 @@
 		3428328307D263F0004F01C9 /* Status Preferences */ = {
 			isa = PBXGroup;
 			children = (
+				112939010FD5AC1B00FA8F53 /* AIConfirmationsAdvancedPreferences.nib */,
+				1129390E0FD5AE1400FA8F53 /* AIConfirmationsAdvancedPreferences.h */,
+				1129390F0FD5AE1400FA8F53 /* AIConfirmationsAdvancedPreferences.m */,
+				11A2F1200FC8FC9D00C3F05C /* AIMessageAlertsAdvancedPreferences.h */,
+				11A2F1210FC8FC9D00C3F05C /* AIMessageAlertsAdvancedPreferences.m */,
+				11A2F1090FC8FC1A00C3F05C /* AIMessageAlertsAdvancedPreferences.nib */,
 				3428328407D2643E004F01C9 /* ESStatusPreferencesPlugin.h */,
 				3428328707D2643F004F01C9 /* ESStatusPreferencesPlugin.m */,
 				3428328607D2643F004F01C9 /* ESStatusPreferences.h */,
@@ -5371,6 +5519,8 @@
 				9ECB03E309F2A9D800996F44 /* AIDictionaryDebug.m */,
 				34A1B2C10DFDBA1200AC78CF /* AIStringDebug.h */,
 				34A1B2C20DFDBA1200AC78CF /* AIStringDebug.m */,
+				638BC1FA0FC932E000CE7600 /* AIObjectDebug.h */,
+				638BC1FB0FC932E000CE7600 /* AIObjectDebug.m */,
 				34BC8F780ACA3AAC00562745 /* AIScannerDebug.h */,
 				34BC8F790ACA3AAC00562745 /* AIScannerDebug.m */,
 				34575E3607CBA874004A4FFF /* DebugWindow.nib */,
@@ -5473,6 +5623,7 @@
 		345D689D0F1FD575002F2D01 /* Facebook */ = {
 			isa = PBXGroup;
 			children = (
+				1125DD3B0FF5A5D600544B92 /* PurpleFacebookAccountView.nib */,
 				345D68A60F1FD5AA002F2D01 /* PurpleFacebookAccount.h */,
 				345D68A70F1FD5AA002F2D01 /* PurpleFacebookAccount.m */,
 				34064D0E0F21B34200AA6FE3 /* PurpleFacebookAccountViewController.m */,
@@ -5879,6 +6030,9 @@
 		34B3241D09B9FF6900029361 /* IRC */ = {
 			isa = PBXGroup;
 			children = (
+				1192E6B10FD30307003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.h */,
+				1192E6B20FD30307003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.m */,
+				1150A9950FBE48D600E0BD31 /* ESIRCAccountView.nib */,
 				1139FFA80F85260E0081A418 /* AIIRCChannelLinker.h */,
 				1139FFA90F85260E0081A418 /* AIIRCChannelLinker.m */,
 				117009A00F7E7D3A0078D6AB /* AIIRCServicesPasswordPlugin.h */,
@@ -5887,7 +6041,6 @@
 				34E4CD570E68277D00D1B0DC /* ESIRCService.m */,
 				34E4CD560E68277D00D1B0DC /* ESIRCAccount.h */,
 				34E4CD550E68277D00D1B0DC /* ESIRCAccount.m */,
-				34E4CD540E68277D00D1B0DC /* ESIRCAccountView.nib */,
 				34E4CD530E68277D00D1B0DC /* ESIRCAccountViewController.h */,
 				34E4CD520E68277D00D1B0DC /* ESIRCAccountViewController.m */,
 				34E4CD510E68277D00D1B0DC /* ESIRCJoinChatView.nib */,
@@ -6607,7 +6760,6 @@
 		4B388E080719C351004DE713 /* MSN Service Preferences */ = {
 			isa = PBXGroup;
 			children = (
-				4B388E4C0719C445004DE713 /* MSNServicePrefs.nib */,
 			);
 			name = "MSN Service Preferences";
 			sourceTree = "<group>";
@@ -6965,6 +7117,7 @@
 		4BCAC53407B59F9C006641B9 /* Other */ = {
 			isa = PBXGroup;
 			children = (
+				11BE28E30FCC7DA8000E6A10 /* Image Uploading */,
 				34FDD6E305632BFD00F5B30F /* ESFileTransferController.h */,
 				34FDD6E405632BFD00F5B30F /* ESFileTransferController.m */,
 				F57938FB033E745F01A8010A /* AILoginController.h */,
@@ -7332,6 +7485,7 @@
 				6334FF0C0F9C14BF003C77A9 /* Creating toolbar items */,
 				6334FF090F9C14BF003C77A9 /* Array that associates values with owners */,
 				6334FF060F9C14BF003C77A9 /* Scroller which adds arbitrary lines */,
+				11763B9A0FCEF7F000701353 /* Uploader which updates its progress */,
 			);
 			name = "Fun New Classes";
 			sourceTree = "<group>";
@@ -7754,26 +7908,10 @@
 			isa = PBXGroup;
 			children = (
 				6334FFA20F9C14C0003C77A9 /* Text view observing return & enter */,
-				6334FF960F9C14C0003C77A9 /* Operation queue that doesn't crash so much */,
 			);
 			name = "Working Around System Bugs";
 			sourceTree = "<group>";
 		};
-		6334FF960F9C14C0003C77A9 /* Operation queue that doesn't crash so much */ = {
-			isa = PBXGroup;
-			children = (
-				6334FF970F9C14C0003C77A9 /* RAOperationQueue.m */,
-				6334FF980F9C14C0003C77A9 /* RAOperationQueue.h */,
-				6334FF990F9C14C0003C77A9 /* RAOperation.m */,
-				6334FF9A0F9C14C0003C77A9 /* RAOperation.h */,
-				6334FF9B0F9C14C0003C77A9 /* RALatchTrigger.m */,
-				6334FF9C0F9C14C0003C77A9 /* RALatchTrigger.h */,
-				6334FF9D0F9C14C0003C77A9 /* RAAtomicList.m */,
-				6334FF9E0F9C14C0003C77A9 /* RAAtomicList.h */,
-			);
-			name = "Operation queue that doesn't crash so much";
-			sourceTree = "<group>";
-		};
 		6334FFA20F9C14C0003C77A9 /* Text view observing return & enter */ = {
 			isa = PBXGroup;
 			children = (
@@ -8763,6 +8901,7 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				1192E6D90FD3056F003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.h in Headers */,
 				6332879B0A769BF3004D0F2B /* AIPurpleLiveJournalAccount.h in Headers */,
 				6332879C0A769BF3004D0F2B /* AILiveJournalService.h in Headers */,
 				3485DB1809EBCE6500232CC4 /* SLPurpleCocoaAdapter.h in Headers */,
@@ -9060,10 +9199,6 @@
 				633400610F9C14C2003C77A9 /* AIImageTextCell.h in Headers */,
 				633400630F9C14C2003C77A9 /* AIScaledImageCell.h in Headers */,
 				633400650F9C14C2003C77A9 /* AIVerticallyCenteredTextCell.h in Headers */,
-				633400680F9C14C2003C77A9 /* RAOperationQueue.h in Headers */,
-				6334006A0F9C14C2003C77A9 /* RAOperation.h in Headers */,
-				6334006C0F9C14C2003C77A9 /* RALatchTrigger.h in Headers */,
-				6334006E0F9C14C2003C77A9 /* RAAtomicList.h in Headers */,
 				633400710F9C14C2003C77A9 /* AISendingTextView.h in Headers */,
 				633400730F9C14C2003C77A9 /* AIAutoScrollView.h in Headers */,
 				633400770F9C14C2003C77A9 /* AIApplicationAdditions.h in Headers */,
@@ -9110,6 +9245,7 @@
 				633400D00F9C14E0003C77A9 /* AIUtilities.framework_Prefix.pch in Headers */,
 				634DC5570F9C3B2F007B6479 /* AIStringUtilities.h in Headers */,
 				63BB1CB90F9EDD2B00424B80 /* AISharedWriterQueue.h in Headers */,
+				11AA10130FCE0969003908B6 /* AIProgressDataUploader.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -9441,7 +9577,6 @@
 				3485DB8709EBCE7400232CC4 /* DCPurpleMSNJoinChatView.nib in Resources */,
 				3485DB8A09EBCE7400232CC4 /* ESPurpleMSNAccountView.nib in Resources */,
 				3485DB8B09EBCE7400232CC4 /* PurpleDefaultsMSN.plist in Resources */,
-				3485DB8E09EBCE7400232CC4 /* MSNServicePrefs.nib in Resources */,
 				3485DB9509EBCE7400232CC4 /* DCPurpleNovellJoinChatView.nib in Resources */,
 				3485DB9809EBCE7400232CC4 /* ESPurpleNovellAccountView.nib in Resources */,
 				3485DB9909EBCE7400232CC4 /* PurpleDefaultsGroupWise.plist in Resources */,
@@ -9479,11 +9614,12 @@
 				34EF9A320E2EB637003E5DC7 /* MobileMe-large.png in Resources */,
 				34EF9A330E2EB637003E5DC7 /* MobileMe-small.png in Resources */,
 				34E4CD5B0E68277D00D1B0DC /* ESIRCJoinChatView.nib in Resources */,
-				34E4CD5E0E68277D00D1B0DC /* ESIRCAccountView.nib in Resources */,
 				34E4CD660E68279C00D1B0DC /* irc.png in Resources */,
 				34E4CD670E68279C00D1B0DC /* PurpleDefaultsIRC.plist in Resources */,
 				345D68990F1FD56B002F2D01 /* facebook.png in Resources */,
 				345D689A0F1FD56B002F2D01 /* facebook-small.png in Resources */,
+				1150A9960FBE48D600E0BD31 /* ESIRCAccountView.nib in Resources */,
+				1125DD3C0FF5A5D600544B92 /* PurpleFacebookAccountView.nib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -9730,7 +9866,6 @@
 				11BD73AE0F5A53EA007D438A /* facebook.png in Resources */,
 				11BD73D30F5A54BB007D438A /* twitter-small.png in Resources */,
 				11BD73D40F5A54BB007D438A /* twitter.png in Resources */,
-				112527740F5F9E63003FC58A /* AITwitterAccountView.nib in Resources */,
 				1109634C0F61C1D00064CA0E /* AITwitterReplyWindow.nib in Resources */,
 				113892270F6B70CA00A7D7DC /* laconica-small.png in Resources */,
 				113892280F6B70CA00A7D7DC /* laconica.png in Resources */,
@@ -9740,6 +9875,10 @@
 				112B4A3E0F831A4400690E84 /* AIMentionAdvancedPreferences.nib in Resources */,
 				1111B2300F8478500068CE51 /* Filter Bar.nib in Resources */,
 				113900B10F85BEF60081A418 /* AIURLHandlerPreferences.nib in Resources */,
+				11D135D90FBE4C65000B0A5E /* AITwitterAccountView.nib in Resources */,
+				11A2F10A0FC8FC1A00C3F05C /* AIMessageAlertsAdvancedPreferences.nib in Resources */,
+				11BE29640FCCA8DA000E6A10 /* ImageUploaderProgress.nib in Resources */,
+				112939020FD5AC1B00FA8F53 /* AIConfirmationsAdvancedPreferences.nib in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -9929,6 +10068,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				1192E6DA0FD30578003CAEF5 /* AIAnnoyingIRCMessagesHiderPlugin.m in Sources */,
 				117009A70F7E7D720078D6AB /* AIIRCServicesPasswordPlugin.m in Sources */,
 				3485DB1909EBCE6500232CC4 /* SLPurpleCocoaAdapter.m in Sources */,
 				3485DB1B09EBCE6500232CC4 /* adiumPurpleBlist.m in Sources */,
@@ -10055,6 +10195,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				11D9156F0FFC0FEB00B39713 /* AIImageShackImageUploader.m in Sources */,
 				111E89010F93FE3900A5F18B /* AIRealNameTooltip.m in Sources */,
 				111E89020F93FE3900A5F18B /* AIUserHostTooltip.m in Sources */,
 				111256070F8DA2BF00E76177 /* AWEzv.m in Sources */,
@@ -10392,6 +10533,15 @@
 				1139011C0F85C9450081A418 /* AIURLHandlerPlugin.m in Sources */,
 				11E786810F8860210014612E /* AIJumpControlPlugin.m in Sources */,
 				1121B29A0F896A720047EC66 /* AIContactVisibilityControlPlugin.m in Sources */,
+				112E7FA60FC86BB400657119 /* AITwitterActionsHTMLFilter.m in Sources */,
+				11A2F1220FC8FC9D00C3F05C /* AIMessageAlertsAdvancedPreferences.m in Sources */,
+				638BC1FC0FC932E000CE7600 /* AIObjectDebug.m in Sources */,
+				11BE289A0FCC7C13000E6A10 /* AIPicImImageUploader.m in Sources */,
+				11BE28DF0FCC7D2B000E6A10 /* AIImageUploaderPlugin.m in Sources */,
+				11BE29680FCCA9E3000E6A10 /* AIImageUploaderWindowController.m in Sources */,
+				1197F6710FCF8D180032F19B /* AITwitterStatusFollowup.m in Sources */,
+				112939100FD5AE1400FA8F53 /* AIConfirmationsAdvancedPreferences.m in Sources */,
+				11D915720FFC100700B39713 /* AIGenericMultipartImageUploader.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -10557,10 +10707,6 @@
 				633400620F9C14C2003C77A9 /* AIImageTextCell.m in Sources */,
 				633400640F9C14C2003C77A9 /* AIScaledImageCell.m in Sources */,
 				633400660F9C14C2003C77A9 /* AIVerticallyCenteredTextCell.m in Sources */,
-				633400670F9C14C2003C77A9 /* RAOperationQueue.m in Sources */,
-				633400690F9C14C2003C77A9 /* RAOperation.m in Sources */,
-				6334006B0F9C14C2003C77A9 /* RALatchTrigger.m in Sources */,
-				6334006D0F9C14C2003C77A9 /* RAAtomicList.m in Sources */,
 				633400720F9C14C2003C77A9 /* AISendingTextView.m in Sources */,
 				633400740F9C14C2003C77A9 /* AIAutoScrollView.m in Sources */,
 				633400780F9C14C2003C77A9 /* AIApplicationAdditions.m in Sources */,
@@ -10604,6 +10750,7 @@
 				633400C60F9C14C2003C77A9 /* AIWindowControllerAdditions.m in Sources */,
 				633400C80F9C14C2003C77A9 /* AIPasteboardAdditions.m in Sources */,
 				63BB1CC90F9EDDB600424B80 /* AISharedWriterQueue.m in Sources */,
+				11AA10140FCE0969003908B6 /* AIProgressDataUploader.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -10720,6 +10867,105 @@
 			name = "Shared Dock Icon Images";
 			sourceTree = "<group>";
 		};
+		1125DD3B0FF5A5D600544B92 /* PurpleFacebookAccountView.nib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				1125DD380FF5A58F00544B92 /* English */,
+				1125DD3D0FF5A5DB00544B92 /* ca */,
+				1125DD3E0FF5A5DD00544B92 /* cs */,
+				1125DD3F0FF5A5DF00544B92 /* da */,
+				1125DD400FF5A5E100544B92 /* de */,
+				1125DD410FF5A5E300544B92 /* el_GR */,
+				1125DD420FF5A5E500544B92 /* en_GB */,
+				1125DD430FF5A5E700544B92 /* es */,
+				1125DD440FF5A5E900544B92 /* fi */,
+				1125DD450FF5A5EC00544B92 /* fr */,
+				1125DD460FF5A5EE00544B92 /* fr_CA */,
+				1125DD470FF5A5F000544B92 /* hu */,
+				1125DD480FF5A5F200544B92 /* is */,
+				1125DD490FF5A5F400544B92 /* it */,
+				1125DD4A0FF5A5F600544B92 /* ja */,
+				1125DD4B0FF5A5F800544B92 /* nb */,
+				1125DD4C0FF5A5FA00544B92 /* nl */,
+				1125DD4D0FF5A5FB00544B92 /* pl */,
+				1125DD4E0FF5A5FD00544B92 /* pt */,
+				1125DD4F0FF5A5FF00544B92 /* pt_BR */,
+				1125DD500FF5A60100544B92 /* ru */,
+				1125DD510FF5A60300544B92 /* sl */,
+				1125DD520FF5A60500544B92 /* sv */,
+				1125DD530FF5A60700544B92 /* tr */,
+				1125DD540FF5A60900544B92 /* zh_CN */,
+				1125DD550FF5A60B00544B92 /* zh_TW */,
+			);
+			name = PurpleFacebookAccountView.nib;
+			sourceTree = "<group>";
+		};
+		1150A9950FBE48D600E0BD31 /* ESIRCAccountView.nib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				1150A9970FBE48DE00E0BD31 /* ca */,
+				1150A9980FBE48E000E0BD31 /* cs */,
+				1150A9990FBE48E500E0BD31 /* da */,
+				1150A99A0FBE48E700E0BD31 /* de */,
+				1150A99B0FBE48E900E0BD31 /* el_GR */,
+				1150A99C0FBE48EC00E0BD31 /* en_GB */,
+				1150A99D0FBE48EE00E0BD31 /* en */,
+				1150A99E0FBE48F200E0BD31 /* es */,
+				1150A99F0FBE48F400E0BD31 /* fi */,
+				1150A9A00FBE48F600E0BD31 /* fr */,
+				1150A9A10FBE48F800E0BD31 /* fr_CA */,
+				1150A9A20FBE48FB00E0BD31 /* hu */,
+				1150A9A30FBE48FD00E0BD31 /* is */,
+				1150A9A40FBE48FF00E0BD31 /* it */,
+				1150A9A50FBE490100E0BD31 /* ja */,
+				1150A9A60FBE490300E0BD31 /* nb */,
+				1150A9A70FBE490500E0BD31 /* nl */,
+				1150A9A80FBE490700E0BD31 /* pl */,
+				1150A9A90FBE490900E0BD31 /* pt */,
+				1150A9AA0FBE490B00E0BD31 /* pt_BR */,
+				1150A9AB0FBE490D00E0BD31 /* ru */,
+				1150A9AC0FBE490F00E0BD31 /* sl */,
+				1150A9AD0FBE491100E0BD31 /* sv */,
+				1150A9AE0FBE491300E0BD31 /* tr */,
+				1150A9AF0FBE491500E0BD31 /* zh_CN */,
+				1150A9B00FBE491700E0BD31 /* zh_TW */,
+			);
+			name = ESIRCAccountView.nib;
+			sourceTree = "<group>";
+		};
+		11D135D80FBE4C65000B0A5E /* AITwitterAccountView.nib */ = {
+			isa = PBXVariantGroup;
+			children = (
+				11D135DA0FBE4C69000B0A5E /* ca */,
+				11D135DB0FBE4C6C000B0A5E /* cs */,
+				11D135DC0FBE4C6E000B0A5E /* da */,
+				11D135DD0FBE4C70000B0A5E /* de */,
+				11D135DE0FBE4C73000B0A5E /* el_GR */,
+				11D135DF0FBE4C76000B0A5E /* en_GB */,
+				11D135E00FBE4C82000B0A5E /* es */,
+				11D135E10FBE4C84000B0A5E /* fi */,
+				11D135E20FBE4C86000B0A5E /* fr */,
+				11D135E30FBE4C88000B0A5E /* fr_CA */,
+				11D135E40FBE4C8A000B0A5E /* hu */,
+				11D135E50FBE4C8D000B0A5E /* is */,
+				11D135E60FBE4C8F000B0A5E /* it */,
+				11D135E70FBE4C91000B0A5E /* ja */,
+				11D135E80FBE4C93000B0A5E /* nb */,
+				11D135E90FBE4C95000B0A5E /* nl */,
+				11D135EA0FBE4C98000B0A5E /* pl */,
+				11D135EB0FBE4C9A000B0A5E /* pt */,
+				11D135EC0FBE4C9C000B0A5E /* pt_BR */,
+				11D135ED0FBE4C9E000B0A5E /* ru */,
+				11D135EE0FBE4CA1000B0A5E /* sl */,
+				11D135EF0FBE4CA2000B0A5E /* sv */,
+				11D135F00FBE4CA4000B0A5E /* tr */,
+				11D135F10FBE4CA6000B0A5E /* zh_CN */,
+				11D135F20FBE4CA9000B0A5E /* zh_TW */,
+				11D135F30FBE4CB6000B0A5E /* en */,
+			);
+			name = AITwitterAccountView.nib;
+			sourceTree = "<group>";
+		};
 		3402E01A07CB0CEC0044F818 /* ESFileTransferProgressView.nib */ = {
 			isa = PBXVariantGroup;
 			children = (
@@ -12169,6 +12415,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2060FAFAA4700B310AC /* AdiumLibpurple.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = Debug;
 		};
@@ -12176,6 +12426,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2060FAFAA4700B310AC /* AdiumLibpurple.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = Release;
 		};
@@ -12183,6 +12437,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2060FAFAA4700B310AC /* AdiumLibpurple.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = "Release-Debug";
 		};
@@ -12295,6 +12553,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2040FAFAA4700B310AC /* Adium.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = Debug;
 		};
@@ -12302,6 +12564,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2040FAFAA4700B310AC /* Adium.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = Release;
 		};
@@ -12309,6 +12575,10 @@
 			isa = XCBuildConfiguration;
 			baseConfigurationReference = 63C7E2040FAFAA4700B310AC /* Adium.xcconfig */;
 			buildSettings = {
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"$(SRCROOT)/Frameworks\"",
+				);
 			};
 			name = "Release-Debug";
 		};
diff -r 8b455a7d180d -r 0841e816d2a8 ChangeLogs/Changes Between Betas.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ChangeLogs/Changes Between Betas.txt	Mon Jul 27 15:53:58 2009 -0500
@@ -0,0 +1,7 @@
+Adium 1.4b7
+ * Added an optional confirmation when closing a window which has multiple tabs, either always or when at least one has unviewed messages. (#12006)
+ * Added another ignored phrase for IRC server connection processes.
+ * Fixed the growl notification queue from making messages seem to arrive slightly later than they did, when only a handful are to be displayed. (#12327)
+ * Fixed improperly setting the Jabber connect server when registering a new account.
+ * Fixed logging of context loaded from persistent jabber chats. (#12349)
+ * Moved Quit Confirmations to a new Confirmations advanced preference.
\ No newline at end of file
diff -r 8b455a7d180d -r 0841e816d2a8 ChangeLogs/Changes.txt
--- a/ChangeLogs/Changes.txt	Sun May 10 15:45:25 2009 -0700
+++ b/ChangeLogs/Changes.txt	Mon Jul 27 15:53:58 2009 -0500
@@ -1,158 +1,189 @@
 				Adium Version History
 				-----------------------
 Version 1.4 (X/X/XXX)
-* Requires Mac OS X 10.5 or later
-* Added Twitter
-* Added IRC
-* Greatly improved group chats and group chat bookmarks
+ * Requires Mac OS X 10.5 or later
+ * Added Twitter
+ * Added IRC
+ * Greatly improved group chats and group chat bookmarks
+ * Updated to libpurple 2.6.0
+ 
+ Twitter 
+  * Timeline messages appear in a group chat, direct messages as a one-on-one chat with a contact.
+  * Adding and removing contact list buddies follows and unfollows them, respectively.
+  * Can customize profile settings (name, location, etc.) from the account edit window.
+  * Settings to customize: Update interval, Adium status updating, retweet links, and contact display in the contact list.
+  * Getting info on a Twitter contact displays all of their information and their latest 20 tweets.
+  * "Reply to a Tweet" window allows for pasting twitter.com URLs to easily respond to a tweet.
+ 
+  * Also includes support for Laconi.ca servers, such as Identi.ca
+  
+ IRC
+  * Execute commands on connect.
+  * Display of operator status in chats, as well as user's /away status.
+  * Mass-modify attributes of user list members from the group chat's action widget below the user list.
+ 
+ Group Chats
+  * When you are mentioned in a group chat, the color of the tab's message count changes to red.
+  * Set a shortcut of ⌘⌥/ for the "Toggle User List" menu item.
+  * Added a "Swap User List Side" menu item, defaulting to the user list being on the right.	(#8689)
+  * Double-clicking a contact in the group chat user list opens a chat with them.
+  * When double-clicking the resize widget in the user list, don't show a few pixels of it on the left of the chat.
+  * Respect the "show recent messages" preference for group chats.
+  * Prevent a duplicate separator item in group chat context menus. (#11674)
+  * Add context menus for group chats, including "Add Bookmark", "Get Info on Bookmark", "Toggle User List", and "View Chat Transcripts".
+  * Support opening chat transcripts for the group chats like a normal chat.
+  * Add a menu item for group chat user lists to add as a contact.
+  * The group chat user list is now sorted by, and displays, operator status in the channels.
+  * The user list remembers its open or closed status per room.
+  * Messages which mention you are no longer grouped with messages from the same user which do not.
+  * Add support for chat topics. Note that message styles must support the feature for them to show up.
+  * Group chats now display online or offline based on their account's status.
+  * Growl notifications for group chats are now prefixed by the chat's name.
+  * Added an Advanced Status preference to "Only count number of unread mentions for group chats" (for the Status Menu Item and Dock icon)
+  * Added an option for group chats to hide their join and leave messages.
+  * Joining large group chats is much faster.
+ 
+ Group Chat Bookmarks
+  * Bookmarks no longer trigger events when their account comes online.
+  * Message windows' tabs and titles now display the alias of the bookmark which represents the chat. (#11756)
+  * Bookmarks are only shown in the list when their accounts are online.
+  * Group chat events such as "You are mentioned", "Message received" and join/leave events will use the events set on their bookmark.
+  * Set appropriate icons and coloring for bookmarks based on their associated chat information, such as the unviewed content background or flashing.
+  * Fixed bookmarks appearing in groups when groups are disabled, or disappearing.
+  * Bookmarks can now be removed.
+  * Add an option to the Get Info window to auto-join a group chat bookmark when its account connects.
+  * When opening the "Add Contact" window, don't fill in the username with the name of a bookmark if it selected.
+  * Stops the "retrieving information" spinner from going off for bookmarks.
+  * A group bookmark's status message now reflects how many unread mentions or messages are in the chat.
+  * Correctly sorted the groups list in the "Add Bookmark" window.
+  * Fixed bookmarking group chats whose names vary in case.
+ 
+ Contacts
+  * Added support for contacts in multiple groups (#500)
+    * Hold option when dragging to add a contact to a secondary group.
+    * Contact info inspector is now more focused on groups per contact than before.
+  * Created a new Authorization Requests window
+    * Authorization requests no longer create one alert panel per request
+    * The authorization requests window has add, ignore, and deny toolbar and context menu items.
+  * Fixed deleting a group not removing its contents.
+  * Corrected adding contacts to multiple accounts. The "Add Contact" window was only adding to the existing account.
+  * Add account-specific menu items (such as "Initiate Multi-User Chat" or "Initiate Direct IM") to the main menu's Contact menu.
+  * Corrected a bug where a combined contact would be "always visible" and toggling the preference would not unset it.
+  * Reduced complexity when determining what account is preferred for messaging a given contact. (#10547)
+  * The tune tooltip is now displayed for any contact in a meta contact which supports it.
+ 
+ Logging
+  * You can now replace Logs folder with an alias to another folder (on, say, an encrypted disk image). (#992)
+  * Search terms in the Transcript Viewer now match any part of text unless a wildcard is used. (#6364)
+  * Sped up writing log files in certain situations.
+  * Corrected some situations where the log viewer lacked icons for group chats.
+  * Events such as Direct IM status, joins and parts, and other information are now logged and displayed in the log viewer.
+  * Increased the maximum amount of recent messages you can display for chats from 100 to 400.
+  * Added an Import option to reindex the logs folder in case you manually add logs. (#9554)
+ 
+ Contact List
+  * Contact list filtering is now present on all window styles: regular, borderless, etc. (#10489)
+  * Corrected a few bugs where contacts were hidden as offline when online, or placed in the offline group incorrectly.
+  * Combined contacts now show the information in the contact list for the first available user. (#11007)
+  * Improved speed of searching in contact list for larger lists.
+  * Fix a small white line at the top of the contact list when "size to fit vertically" is set. (#11119)
+  * Add "Sort Groups Alphabetically" option to the status sort.
+  * Add "Hide Away Contacts" and "Hide Contacts for Account" to the view options.
+  * Fixed a bug where the view menu would show incorrect settings.
+  * Status message is no longer searched when searching the contact list.
+  * Fixed a lot of drag and drop bugs, such as being able to drag a group into another group.
+  * Tooltips now display for collapsed groups. (#11951)
+  * The group count is no longer always displayed for collapsed contacts.
+  * "Show Group Visible Count" has been returned to "Show Group Online Count", and counts only online, visible contacts. (#11362)
+  * Status icons packs can now specify "Idle and Away" icons for contacts. (#872)
+ 
+ Message Styles
+  * You can now specify a different style for group chats, and customize all of the preferences independently of a regular chat. (#87)
+  * Messages containing unordered lists are now displayed using bullets.
+  * Styles now fall backs to root level files for Status.html and Content.html. (#10868)
+  * Corrected sorting of message styles in their popup (#9498)
+  * %message% is now replaced in a loop as we do other keywords. (#9672)
+  * %service% is now replaced in all templates, not just messages. (#11872)
+  * %senderPrefix% now contains a textual representation (., @, %, +, or an empty string) of the user's status in a group chat. (#11882)
+  * %userIconPath% is now a valid replacement keyword in Status.html (#7508)
+  * Added "action" to the %messageClasses% of /me messages. (#11894)
+ 
+ Messaging
+  * Messages from blocked contacts are now never displayed, even if the protocol allows them to send the message.
+  * Added marking to the scroll bar like in [http://colloquy.info Colloquy]:
+   * When your name (or what you decide to highlight) is mentioned in a chat, a grey line is added.
+   * When the window or tab loses focus, a red line is added and you can "Jump to Focus Mark" to easily go to it.
+   * You can access the "Jump to Previous Mark", "Jump to Next Mark" and "Jump to Focus Mark" by right-clicking the scroll bar, or from the new Display menu.
+  * Added "Clear Display" to the new Display menu.
+  * You can now customize the text which causes the "You are mentioned" event to fire from the advanced preferences.
+  * Fixed a bug where emoticons would be displayed improperly. (#6440)
+  * Added a confirmation dialog when clicking the block/unblock icon in the toolbar. (#10960)
+  * Added a URL shortener.  Select the URL, then either choose “Replace with Shortened URL” from the Edit menu, right-click the URL and choose it from that menu, right-click a link and choose it from that menu, or press ⇧⌘K. Supports TinyURL, is.gd, tr.im, and Metamark (xrl.us).
+  * Added an image uploader.  Select the image, then either choose “Replace with Uploaded Image” from the Edit menu, right-click the image and choose it from that menu, right-click a link and choose it from that menu, or press ⌥⌘K.
+  * Nudge and buzz messages now appear as events in the window instead of messages from the contact.
+  * Added an option to only count mentions for group chats when badging the dock or status menu item. (#11850)
+  * Fixed clicking service links with message text when the link appears in the window it would open.
+  * When a new file transfer arrives which requires confirmation, the chat's unviewed content count is increased.
+  * A new message no longer unminimizes the chat window. (#52)
+  * Fixed logging in St. John's Newfoundland's time zone. (#9557)
+ 
+ Accounts 
+  * Fixed setting a global user icon. Previously, if you didn't have an account icon set but did set a global one, you would have no icon.
+  * Changed behavior for account options: a lot were only changing when reconnecting, now all that are able to (i.e., non-connect options) take affect immediately.
 
-Twitter 
- * details go here
+ Bonjour
+  * Bonjour accounts now disconnect if we receive an error message.
  
-IRC
- * details go here
+ XMPP (Jabber, Google Talk, etc.)
+  * Updated XMPP server list when registering
+  * History from persistent group chats is now displayed as such and does not trigger events. (#6787)
+  * Group chats which are not anonymous now display the actual contact in the user list. (#11841)
+  * Fixed receiving colors and fonts from iChat. (#1323)
+  * Enabled support for custom emoticons as an account option defaulting to on.
+  * Fixed joining a group chat from an xmpp URL. (#11785)
+  * "Not Authorized" is now displayed as a status message for contacts for whom you need to request authoriation.
+  * Contacts are no longer told when you close their chat ("…has left the conversation"). (#8082)
+  * Added a preference for file transfer proxies, defaulting to "proxy.eu.jabber.org."
+ 
+ MSN
+  * Possibly fixed a crash on connect. (#11508)
+  * Fixes setting account-specific display names (only the global display name would be set).
+  * Enabled server-side storing of contact aliases. (#11802)
+  * Fixed displaying what message was unable to be sent when an error occurs. (#11796)
+  * Moved the "display custom emoticons" to an account preference from the advanced preferences window.
+ 
+ AIM, ICQ, and MobileMe
+  * Added a preference to always use the AOL proxy server for file transfers and direct IM. (#11413)
+  * Added a preference to use SSL for connections. (#9553) You can get information on the certificate by right-clicking the account in the Accounts preferences.
+  
+ MySpace IM
+  * Added support for msim links. (#8036)
+ 
+ Miscellaneous
+  * You can now define which applications should be the default for different services in the Advanced preferences. (#158)
+  * Updated the look of the file transfer window. Added a keyboard shortcut of CMD+. to stop the selected transfer.
+  * The about box credits are now scrollable. (#9967)
+  * The unread count is now cleared when clearing the display. (#10605)
+  * Error and information display windows no longer exceed their maximum height, and take focus when opening. (#11793).
+  * Fixed support for a proxy auto-config (PAC) file. (#224, #11364)
+  * Disabled the "Show # recent messages in new chats" option when "Log messages" is off. (#11359)
+  * Menu items such as “Show Offline Contacts” now always use the “Show” verb, with a checkbox indicating that they're currently shown. Previous versions indicated that by changing the verb to “Hide”. #4740.
+  * Add "Contact went mobile" and "Contact returns from mobile" events. (#3248)
+  * Fixed AppleScript erroring when creating a new status object. (#8863)
+  * Greatly reduced memory usage when receiving lots of messages while Adium is not being interacted with
+  * Idle contacts now resort immediately
+  * The Downloads stack now bounces when a file transfer completes.
+  * Moved dock icon and status menu item controls to a new "Message Alerts" advanced preferences.
+  * Updated to Sparkle 1.5
 
-Group Chats and Group Chat Bookmarks
- * When you are mentioned in a group chat, the color of the tab's message count changes to red.
- * Bookmarks no longer trigger events when their account comes online.
- * Message windows' tabs and titles now display the alias of the bookmark which represents the chat. (#11756)
- * Bookmarks are only shown in the list when their accounts are online.
- * Set a shortcut of ⌘⌥/ for the "Toggle User List" menu item.
- * Added a "Swap User List Side" menu item, defaulting to the user list being on the right.	(#8689)
- * Double-clicking a contact in the group chat user list opens a chat with them.
- * When double-clicking the resize widget in the user list, don't show a few pixels of it on the left of the chat.
- * Respect the "show recent messages" preference for group chats.
- * Prevent a duplicate separator item in group chat context menus. (#11674)
- * Add context menus for group chats, including "Add Bookmark", "Get Info on Bookmark", "Toggle User List", and "View Chat Transcripts".
- * Support opening chat transcripts for the group chats like a normal chat.
- * Set appropriate icons and coloring for bookmarks based on their associated chat information, such as the unviewed content background or flashing.
- * Group chat events such as "You are mentioned", "Message received" and join/leave events will use the events set on their bookmark.
- * Add a menu item for group chat user lists to add as a contact.
- * The group chat user list is now sorted by, and displays, operator status in the channels.
- * The user list remembers its open or closed status per room.


More information about the commits mailing list