diff --git a/doc/contributions.txt b/doc/contributions.txt
index 68ff7a13d2fe5bf51e08783117832fc314fac4e0..4ab7284b72f7f6a93c019153d79ab125b0a0b525 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -185,6 +185,7 @@ Carjay McGinnis
 Catherine Pfeffer
 	VWR-1282
 	VWR-8624
+	VWR-10854
 Celierra Darling
 	VWR-1274
 	VWR-6975
@@ -311,6 +312,7 @@ Iskar Ariantho
 	VWR-1223
 	VWR-11759
 Jacek Antonelli
+	SNOW-388
 	VWR-165
 	VWR-188
 	VWR-427
@@ -404,6 +406,7 @@ Michelle2 Zenovka
 Mm Alder
 	VWR-197
 	VWR-3777
+	VWR-4232
 	VWR-4794
 	VWR-13578
 Mr Greggan
@@ -634,6 +637,8 @@ Teardrops Fall
 Techwolf Lupindo
 	SNOW-92
 	SNOW-649
+	SNOW-680
+	SNOW-681
 	VWR-12385
 tenebrous pau
 	VWR-247
@@ -663,6 +668,8 @@ Tue Torok
 	CT-74
 Vadim Bigbear
 	VWR-2681
+Vector Hastings
+	VWR-8726
 Vixen Heron
 	VWR-2710
 	CT-88
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 46ae879aeca2f3922c1873903cf022f66f20a4d4..6285df31c0e03ae0cce05279e3b8fb9681be7051 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2787,6 +2787,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>EffectScriptChatParticles</key>
+      <map>
+      <key>Comment</key>
+      <string>1 = normal behavior, 0 = disable display of swirling lights when scripts communicate</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>EnableRippleWater</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp
index bb851a349e4a9fe4d8e0639febe1966e0350b715..74dfede23ec4f803d03d40552ddc9c69cbdfd7c7 100644
--- a/indra/newview/llfloaterperms.cpp
+++ b/indra/newview/llfloaterperms.cpp
@@ -115,7 +115,7 @@ U32 LLFloaterPerms::getEveryonePerms(std::string prefix)
 //static 
 U32 LLFloaterPerms::getNextOwnerPerms(std::string prefix)
 {
-	U32 flags = 0;
+	U32 flags = PERM_MOVE;
 	if ( gSavedSettings.getBOOL(prefix+"NextOwnerCopy") )
 	{
 		flags |= PERM_COPY;
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index f58f704ff29a4ef213a8d79a26f553df8da3415e..278fee799adcd272008a99681e10aa41ec7a2ac3 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -35,6 +35,7 @@
 #include "llagentcamera.h"
 #include "llcallbacklist.h"
 #include "llcriticaldamp.h"
+#include "llfloaterperms.h"
 #include "llui.h"
 #include "llfocusmgr.h"
 #include "llbutton.h"
@@ -999,8 +1000,8 @@ void LLSnapshotLivePreview::saveTexture()
 				    LLFolderType::FT_SNAPSHOT_CATEGORY,
 				    LLInventoryType::IT_SNAPSHOT,
 				    PERM_ALL,  // Note: Snapshots to inventory is a special case of content upload
-				    PERM_NONE, // that ignores the user's premissions preferences and continues to
-				    PERM_NONE, // always use these fairly permissive hard-coded initial perms. - MG
+				    LLFloaterPerms::getGroupPerms(), // that is more permissive than other uploads
+				    LLFloaterPerms::getEveryonePerms(),
 				    "Snapshot : " + pos_string,
 				    callback, expected_upload_cost, userdata);
 		gViewerWindow->playSnapshotAnimAndSound();
diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp
index 078ccff2d0f54b96b520fa37595546c610d7e91a..37b7b2e75dc6abe3b0139c1ed17f7878a0b7ded9 100644
--- a/indra/newview/llhudeffectbeam.cpp
+++ b/indra/newview/llhudeffectbeam.cpp
@@ -305,6 +305,11 @@ void LLHUDEffectBeam::render()
 	}
 }
 
+void LLHUDEffectBeam::renderForTimer()
+{
+	render();
+}
+
 void LLHUDEffectBeam::setupParticle(const S32 i)
 {
 	LLVector3d start_pos_global;
diff --git a/indra/newview/llhudeffectbeam.h b/indra/newview/llhudeffectbeam.h
index a700e4e6578a132983c455810b44883b0c4dfd27..fdee5178af266059a04c808d8bddfab8c78bbb81 100644
--- a/indra/newview/llhudeffectbeam.h
+++ b/indra/newview/llhudeffectbeam.h
@@ -52,6 +52,7 @@ protected:
 	~LLHUDEffectBeam();
 
 	/*virtual*/ void render();
+	/*virtual*/ void renderForTimer();
 	/*virtual*/ void packData(LLMessageSystem *mesgsys);
 	/*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum);
 private:
diff --git a/indra/newview/llhudeffecttrail.cpp b/indra/newview/llhudeffecttrail.cpp
index 9072707974053e2e11d5f14df6acc61287bf89db..39b526c1b5a652fc4ed9e6a8b78720dda872db62 100644
--- a/indra/newview/llhudeffecttrail.cpp
+++ b/indra/newview/llhudeffecttrail.cpp
@@ -280,3 +280,8 @@ void LLHUDEffectSpiral::render()
 		return;
 	}
 }
+
+void LLHUDEffectSpiral::renderForTimer()
+{
+	render();
+}
diff --git a/indra/newview/llhudeffecttrail.h b/indra/newview/llhudeffecttrail.h
index bade3ff997f0e031c26e3a8a53c0d1b11472bdc6..6f5a328c6364e4305698518a62215dec4a1960d9 100644
--- a/indra/newview/llhudeffecttrail.h
+++ b/indra/newview/llhudeffecttrail.h
@@ -62,6 +62,7 @@ protected:
 	~LLHUDEffectSpiral();
 
 	/*virtual*/ void render();
+	/*virtual*/ void renderForTimer();
 	/*virtual*/ void packData(LLMessageSystem *mesgsys);
 	/*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum);
 private:
diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp
index 6af0ae2b6a14b804075aa74d98cf21d0ec8415d7..3e814a0773efbd06c5459cbc3ac96850c1b93db7 100644
--- a/indra/newview/llhudobject.cpp
+++ b/indra/newview/llhudobject.cpp
@@ -304,6 +304,27 @@ void LLHUDObject::renderAllForSelect()
 	}
 }
 
+// static
+void LLHUDObject::renderAllForTimer()
+{
+	LLHUDObject *hud_objp;
+	
+	hud_object_list_t::iterator object_it;
+	for (object_it = sHUDObjects.begin(); object_it != sHUDObjects.end(); )
+	{
+		hud_object_list_t::iterator cur_it = object_it++;
+		hud_objp = (*cur_it);
+		if (hud_objp->getNumRefs() == 1)
+		{
+			sHUDObjects.erase(cur_it);
+		}
+		else if (hud_objp->isVisible())
+		{
+			hud_objp->renderForTimer();
+		}
+	}
+}
+
 // static
 void LLHUDObject::sortObjects()
 {
diff --git a/indra/newview/llhudobject.h b/indra/newview/llhudobject.h
index ff70b6a52f981358baee4ba85a3a085c3abff115..97145b9a84d40d60f66cfc0e72ea1e2d749876b9 100644
--- a/indra/newview/llhudobject.h
+++ b/indra/newview/llhudobject.h
@@ -69,6 +69,7 @@ public:
 	static void updateAll();
 	static void renderAll();
 	static void renderAllForSelect();
+	static void renderAllForTimer();
 
 	static void cleanupHUDObjects();
 
@@ -100,6 +101,7 @@ protected:
 
 	virtual void render() = 0;
 	virtual void renderForSelect() {};
+	virtual void renderForTimer() {};
 	
 protected:
 	U8				mType;
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index c9b60bf7f5e213920884db082ffe355ed93393ee..fb60b1ece712631c611a52cc535c7a6afdb9e336 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -5629,6 +5629,10 @@ void LLSelectMgr::updateSelectionCenter()
 		LLVector3d select_center;
 		// keep a list of jointed objects for showing the joint HUDEffects
 
+		// Initialize the bounding box to the root prim, so the BBox orientation 
+		// matches the root prim's (affecting the orientation of the manipulators). 
+		bbox.addBBoxAgent( (mSelectedObjects->getFirstRootObject(TRUE))->getBoundingBoxAgent() ); 
+	                 
 		std::vector < LLViewerObject *> jointed_objects;
 
 		for (LLObjectSelection::iterator iter = mSelectedObjects->begin();
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 82bc084f6820f144c54fe4284062497ae1c99fd3..781e324e25dc27c616538fe600d7376800545c73 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2964,7 +2964,8 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 
 		// Make swirly things only for talking objects. (not script debug messages, though)
 		if (chat.mSourceType == CHAT_SOURCE_OBJECT 
-			&& chat.mChatType != CHAT_TYPE_DEBUG_MSG)
+			&& chat.mChatType != CHAT_TYPE_DEBUG_MSG
+			&& gSavedSettings.getBOOL("EffectScriptChatParticles") )
 		{
 			LLPointer<LLViewerPartSourceChat> psc = new LLViewerPartSourceChat(chatter->getPositionAgent());
 			psc->setSourceObject(chatter);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index e4c2ca9ae39ec5a408a5209332dfabbcc1095093..1ee3b84b5e7666ae4aeeac587710b4b410bc4252 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -3211,11 +3211,24 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 
 	LLVertexBuffer::unbind();
 	
-	if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+	if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred)
 	{
-		// Render debugging beacons.
-		gObjectList.renderObjectBeacons();
-		gObjectList.resetObjectBeacons();
+		if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
+		{
+		      // Render debugging beacons.
+		      gObjectList.renderObjectBeacons();
+		      gObjectList.resetObjectBeacons();
+		}
+		else
+		{
+			// Make sure particle effects disappear
+			LLHUDObject::renderAllForTimer();
+		}
+	}
+	else
+	{
+		// Make sure particle effects disappear
+		LLHUDObject::renderAllForTimer();
 	}
 
 	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd");