diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index aa7c8c789aa4a300215d33753af1a8c500e76a5e..0fc5ca1ad6e79575c157b9f7e59db634423a0f21 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -168,8 +168,8 @@ U8* LLImageBase::allocateData(S32 size)
 		}
 		else
 		{
-		llerrs << "LLImageBase::allocateData: bad size: " << size << llendl;
-	}
+			llerrs << "LLImageBase::allocateData: bad size: " << size << llendl;
+		}
 	}
 	if (!mData || size != mDataSize)
 	{
@@ -267,10 +267,6 @@ LLImageRaw::LLImageRaw(U16 width, U16 height, S8 components)
 {
 	mMemType = LLMemType::MTYPE_IMAGERAW;
 	//llassert( S32(width) * S32(height) * S32(components) <= MAX_IMAGE_DATA_SIZE );
-	if(S32(width) * S32(height) * S32(components) > MAX_IMAGE_DATA_SIZE)
-	{
-		llwarns << "over size: width: " << (S32)width << " height: " << (S32)height << " components: " << (S32)components << llendl ;
-	}
 	allocateDataSize(width, height, components);
 	++sRawImageCount;
 }
diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 3a1e9f19faf7d82541e6c6a819254e51ae4b19af..237d42090ff97904dcd60aa5d053c163777cc832 100644
--- a/indra/llui/llaccordionctrl.cpp
+++ b/indra/llui/llaccordionctrl.cpp
@@ -68,8 +68,9 @@ LLAccordionCtrl::LLAccordionCtrl(const Params& params):LLPanel(params)
  , mSelectedTab( NULL )
  , mTabComparator( NULL )
  , mNoVisibleTabsHelpText(NULL)
+ , mNoVisibleTabsOrigString(params.no_visible_tabs_text.initial_value().asString())
 {
-	initNoTabsWidget(params.empty_accordion_text);
+	initNoTabsWidget(params.no_matched_tabs_text);
 
 	mSingleExpansion = params.single_expansion;
 	if(mFitParent && !mSingleExpansion)
@@ -379,7 +380,7 @@ void	LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params)
 {
 	LLTextBox::Params tp = tb_params;
 	tp.rect(getLocalRect());
-	mNoVisibleTabsOrigString = tp.initial_value().asString();
+	mNoMatchedTabsOrigString = tp.initial_value().asString();
 	mNoVisibleTabsHelpText = LLUICtrlFactory::create<LLTextBox>(tp, this);
 }
 
@@ -820,7 +821,7 @@ void	LLAccordionCtrl::setFilterSubString(const std::string& filter_string)
 {
 	LLStringUtil::format_map_t args;
 	args["[SEARCH_TERM]"] = LLURI::escape(filter_string);
-	std::string text = filter_string.empty() ? LLStringUtil::null : mNoVisibleTabsOrigString;
+	std::string text = filter_string.empty() ? mNoVisibleTabsOrigString : mNoMatchedTabsOrigString;
 	LLStringUtil::format(text, args);
 
 	mNoVisibleTabsHelpText->setValue(text);
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
index 677b598a3221f80bd62b9d33da63b9cf82850587..3ad52740855790a03aa1845d84a5f944e6f5e92a 100644
--- a/indra/llui/llaccordionctrl.h
+++ b/indra/llui/llaccordionctrl.h
@@ -78,12 +78,14 @@ class LLAccordionCtrl: public LLPanel
 								accordion tabs are responsible for scrolling their content.
 								*NOTE fit_parent works best when combined with single_expansion.
 								Accordion view should implement getRequiredRect() and provide valid height*/
-		Optional<LLTextBox::Params>	empty_accordion_text;
+		Optional<LLTextBox::Params>	no_matched_tabs_text;
+		Optional<LLTextBox::Params>	no_visible_tabs_text;
 
 		Params()
 			: single_expansion("single_expansion",false)
 			, fit_parent("fit_parent", false)
-			, empty_accordion_text("empty_accordion_text")
+			, no_matched_tabs_text("no_matched_tabs_text")
+			, no_visible_tabs_text("no_visible_tabs_text")
 		{};
 	};
 
@@ -180,6 +182,8 @@ class LLAccordionCtrl: public LLPanel
 	bool			mAutoScrolling;
 	F32				mAutoScrollRate;
 	LLTextBox*		mNoVisibleTabsHelpText;
+
+	std::string		mNoMatchedTabsOrigString;
 	std::string		mNoVisibleTabsOrigString;
 
 	LLAccordionCtrlTab*		mSelectedTab;
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 5b70e4bcb06b098ee2fa678f0847de0b9764cad2..fe6bd8eef0aad6c628df63e0a36388ec00ff4588 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -6609,7 +6609,7 @@
       <key>Type</key>
       <string>S32</string>
       <key>Value</key>
-      <integer>35</integer>
+      <integer>12</integer>
     </map>
     <key>RenderAvatarVP</key>
     <map>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index de4d787d658819ffbcf95a9af1ffe0288bef71af..e8591ca0867a4e3a6b93fc5bfb184496bf33e09f 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -26,7 +26,7 @@ list all
 RenderAnisotropic			1	0
 RenderAvatarCloth			1	1
 RenderAvatarLODFactor		1	1.0
-RenderAvatarMaxVisible      1   35
+RenderAvatarMaxVisible      1   12
 RenderAvatarVP				1	1
 RenderCubeMap				1	1
 RenderDelayVBUpdate			1	0
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index adda7cec4dd435392605cfd83d9fb635e013f4c3..779490c9f76adc898cd2e910ae0dc05037348b12 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -26,7 +26,7 @@ list all
 RenderAnisotropic			1	0
 RenderAvatarCloth			1	1
 RenderAvatarLODFactor		1	1.0
-RenderAvatarMaxVisible      1   35
+RenderAvatarMaxVisible      1   12
 RenderAvatarVP				1	1
 RenderCubeMap				1	1
 RenderDelayVBUpdate			1	0
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 82886d7e2cb115579f6431709ffecc0dcbf48be9..47033efc47046fa3f107b4367bd19c83784fac16 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -26,7 +26,7 @@ list all
 RenderAnisotropic				1	0
 RenderAvatarCloth				0	0
 RenderAvatarLODFactor			1	1.0
-RenderAvatarMaxVisible          1   35
+RenderAvatarMaxVisible          1   12
 RenderAvatarVP					1	0
 RenderCubeMap					1	1
 RenderDelayVBUpdate				1	0
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index e19a1294c8bde6537069ae79505a939bd34ed5e8..52a5587a1622e21373b363fba9eb9fa462ec6978 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -654,7 +654,15 @@ bool LLWearableHoldingPattern::pollMissingWearables()
 	if (done)
 	{
 		gAgentAvatarp->debugWearablesLoaded();
-		clearCOFLinksForMissingWearables();
+
+		// BAP - if we don't call clearCOFLinksForMissingWearables()
+		// here, we won't have to add the link back in later if the
+		// wearable arrives late.  This is to avoid corruption of
+		// wearable ordering info.  Also has the effect of making
+		// unworn item links visible in the COF under some
+		// circumstances.
+
+		//clearCOFLinksForMissingWearables();
 		onAllComplete();
 	}
 	return done;
@@ -700,8 +708,13 @@ void LLWearableHoldingPattern::handleLateArrivals()
 				data.mWearable = wearable;
 
 				replaced_types.insert(data.mWearableType);
-				
-				LLAppearanceMgr::instance().addCOFItemLink(data.mItemID,false);
+
+				// BAP - if we didn't call
+				// clearCOFLinksForMissingWearables() earlier, we
+				// don't need to restore the link here.  Fixes
+				// wearable ordering problems.
+
+				// LLAppearanceMgr::instance().addCOFItemLink(data.mItemID,false);
 
 				// BAP failing this means inventory or asset server
 				// are corrupted in a way we don't handle.
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index f4004d5664c7d83da641d203d4a3d4d52d8e3610..7be69ba04d014aef4af00944d7dac7b161a70caf 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -412,7 +412,7 @@ static void settings_to_globals()
 	LLVolumeImplFlexible::sUpdateFactor = gSavedSettings.getF32("RenderFlexTimeFactor");
 	LLVOTree::sTreeFactor				= gSavedSettings.getF32("RenderTreeLODFactor");
 	LLVOAvatar::sLODFactor				= gSavedSettings.getF32("RenderAvatarLODFactor");
-	LLVOAvatar::sMaxVisible				= gSavedSettings.getS32("RenderAvatarMaxVisible");
+	LLVOAvatar::sMaxVisible				= (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
 	LLVOAvatar::sVisibleInFirstPerson	= gSavedSettings.getBOOL("FirstPersonAvatarVisible");
 	// clamp auto-open time to some minimum usable value
 	LLFolderView::sAutoOpenTime			= llmax(0.25f, gSavedSettings.getF32("FolderAutoOpenDelay"));
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
index 87b8d807c4e8f78f46abc4d6d0ff372273ab6727..abb79b53a7548d1c5c3bd0e2a71e6223b2b60f32 100644
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -244,7 +244,10 @@ void LLAvatarIconCtrl::setValue(const LLSD& value)
 		LLIconCtrl::setValue(value);
 	}
 
-	gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4));
+	if  (gCacheName)
+	{
+		gCacheName->get(mAvatarId, FALSE, boost::bind(&LLAvatarIconCtrl::nameUpdatedCallback, this, _1, _2, _3, _4));
+	}
 }
 
 bool LLAvatarIconCtrl::updateFromCache()
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 880d79222bc101a1bea2d1adbb597fa5839e81a2..46d2e0a5db6fab967e0cf9b88a6bbaa8763bfe5c 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -576,7 +576,9 @@ void LLCOFWearables::clear()
 
 LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
 {
-	static std::map<std::string, LLAssetType::EType> type_map;
+	typedef std::map<std::string, LLAssetType::EType> type_map_t;
+
+	static type_map_t type_map;
 	static LLAccordionCtrl* accordion_ctrl = getChild<LLAccordionCtrl>("cof_wearables_accordion");
 
 	if (type_map.empty())
@@ -587,14 +589,16 @@ LLAssetType::EType LLCOFWearables::getExpandedAccordionAssetType()
 	}
 
 	const LLAccordionCtrlTab* tab = accordion_ctrl->getExpandedTab();
+	LLAssetType::EType result = LLAssetType::AT_NONE;
 
-	if (!tab)
+	if (tab)
 	{
-		llwarns << "No accordion is expanded" << llendl;
-		return LLAssetType::AT_NONE;
+		type_map_t::iterator i = type_map.find(tab->getName());
+		llassert(i != type_map.end());
+		result = i->second;
 	}
 
-	return type_map[tab->getName()];
+	return result;
 }
 
 void LLCOFWearables::onListRightClick(LLUICtrl* ctrl, S32 x, S32 y, LLListContextMenu* menu)
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 56bc4a79338189cc65223267209f33ba5786d3ae..4bd3151f2edf3c9ff83468508c1ace3668797345 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -135,10 +135,10 @@ BOOL LLFloaterAbout::postBuild()
 
 	// Render the LLSD from getInfo() as a format_map_t
 	LLStringUtil::format_map_t args;
-	// For reasons I don't yet understand, [ReleaseNotes] is not part of the
-	// default substitution strings whereas [APP_NAME] is. But it works to
-	// simply copy it into these specific args.
+
+	// allow the "Release Notes" URL label to be localized
 	args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
+
 	for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
 		 ii != iend; ++ii)
 	{
@@ -293,14 +293,14 @@ LLSD LLFloaterAbout::getInfo()
 
 static std::string get_viewer_release_notes_url()
 {
-	LLSD query;
-	query["channel"] = gSavedSettings.getString("VersionChannelName");
-	query["version"] = LLVersionInfo::getVersion();
-
-	std::ostringstream url;
-	url << LLTrans::getString("RELEASE_NOTES_BASE_URL") << LLURI::mapToQueryString(query);
-
-	return LLWeb::escapeURL(url.str());
+	// return a URL to the release notes for this viewer, such as:
+	// http://wiki.secondlife.com/wiki/Release_Notes/Second Life Beta Viewer/2.1.0
+	std::string url = LLTrans::getString("RELEASE_NOTES_BASE_URL");
+	if (! LLStringUtil::endsWith(url, "/"))
+		url += "/";
+	url += gSavedSettings.getString("VersionChannelName") + "/";
+	url += LLVersionInfo::getShortVersion();
+	return LLWeb::escapeURL(url);
 }
 
 class LLFloaterAboutListener: public LLEventAPI
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 68fc86467c9305fb3e0ed49e0b6f8ae0c2a17619..de24bd92d0c0b06ecd9497cac2003d27034d44c3 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -335,24 +335,34 @@ void show_item_profile(const LLUUID& item_uuid)
 
 void show_item_original(const LLUUID& item_uuid)
 {
+	//sidetray inventory panel
+	LLSidepanelInventory *sidepanel_inventory =
+		dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+
 	bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory");
 
 	LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel();
-	if (!active_panel) return;
+	if (!active_panel) 
+	{
+		//this may happen when there is no floatera and other panel is active in inventory tab
+
+		if	(sidepanel_inventory)
+		{
+			sidepanel_inventory->showInventoryPanel();
+		}
+	}
+	
+	active_panel = LLInventoryPanel::getActiveInventoryPanel();
+	if (!active_panel) 
+	{
+		return;
+	}
 	active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_NO);
 	
 	if(reset_inventory_filter)
 	{
-		LLSidepanelInventory *sidepanel_inventory =
-			dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-		if(sidepanel_inventory)
-		{
-			LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
-
-			main_inventory->onFilterEdit("");
-		}
-
-		//now for inventory floater
+		//inventory floater
+		bool floater_inventory_visible = false;
 
 		LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
 		for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
@@ -364,8 +374,19 @@ void show_item_original(const LLUUID& item_uuid)
 
 				main_inventory->onFilterEdit("");
 			}
+
+			if(floater_inventory->getVisible())
+			{
+				floater_inventory_visible = true;
+			}
+
 		}
+		if(sidepanel_inventory && !floater_inventory_visible)
+		{
+			LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
 
+			main_inventory->onFilterEdit("");
+		}
 	}
 }
 
diff --git a/indra/newview/llinventoryitemslist.cpp b/indra/newview/llinventoryitemslist.cpp
index 23ea786484a0e1b718fe600f056b940aa0d2400b..384b24210cf80328d191aef248d19c65e94d0856 100644
--- a/indra/newview/llinventoryitemslist.cpp
+++ b/indra/newview/llinventoryitemslist.cpp
@@ -288,6 +288,8 @@ void LLPanelInventoryListItemBase::setIconImage(const LLUIImagePtr& image)
 
 void LLPanelInventoryListItemBase::setTitle(const std::string& title, const std::string& highlit_text)
 {
+	setToolTip(title);
+
 	LLTextUtil::textboxSetHighlightedVal(
 		mTitleCtrl,
 		LLStyle::Params(),
@@ -295,6 +297,16 @@ void LLPanelInventoryListItemBase::setTitle(const std::string& title, const std:
 		highlit_text);
 }
 
+BOOL LLPanelInventoryListItemBase::handleToolTip( S32 x, S32 y, MASK mask)
+{
+	LLTextBox* item_name = getChild<LLTextBox>("item_name");
+	if (item_name->getRect().getWidth() < item_name->getTextPixelWidth())
+	{
+		return LLPanel::handleToolTip(x,y,mask);
+	}
+	return FALSE;
+}
+
 void LLPanelInventoryListItemBase::reshapeLeftWidgets()
 {
 	S32 widget_left = 0;
diff --git a/indra/newview/llinventoryitemslist.h b/indra/newview/llinventoryitemslist.h
index d6132717e86716a7f877743a6177cfa3828dee81..489a82829c8cc20ae049fc3f7218832e65b6c9d5 100644
--- a/indra/newview/llinventoryitemslist.h
+++ b/indra/newview/llinventoryitemslist.h
@@ -179,6 +179,10 @@ class LLPanelInventoryListItemBase : public LLPanel
 	/** Set item title - inventory item name usually */
 	virtual void setTitle(const std::string& title, const std::string& highlit_text);
 
+	/**
+	 * Show tool tip if item name text size > panel size
+	 */
+	virtual BOOL handleToolTip( S32 x, S32 y, MASK mask);
 
 	LLViewerInventoryItem* mItem;
 
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index f16d1d8fda659208e99fb0120c5630e9758cd2a5..6dd800c0c6a4612eb9c4f7d32859183d17847075 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -1450,7 +1450,7 @@ void LLPanelPeople::showFriendsAccordionsIfNeeded()
 		LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("friends_accordion");
 		accordion->arrange();
 
-		// *TODO: new empty_accordion_text attribute was implemented in accordion (EXT-7368).
+		// *TODO: new no_matched_tabs_text attribute was implemented in accordion (EXT-7368).
 		// this code should be refactored to use it
 		// keep help text in a synchronization with accordions visibility.
 		updateFriendListHelpText();
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 494cba8c6f7d10e12ea0b664e4866695113dd0a0..1048e3fcc017876357eb94a89850bf34e9dae67e 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -648,16 +648,18 @@ void LLTeleportHistoryPanel::refresh()
 	LLDate tab_boundary_date =  LLDate::now();
 
 	LLFlatListView* curr_flat_view = NULL;
+	std::string filter_string = sFilterSubString;
+	LLStringUtil::toUpper(filter_string);
 
 	U32 added_items = 0;
 	while (mCurrentItem >= 0)
 	{
 		// Filtering
-		if (!sFilterSubString.empty())
+		if (!filter_string.empty())
 		{
 			std::string landmark_title(items[mCurrentItem].mTitle);
 			LLStringUtil::toUpper(landmark_title);
-			if( std::string::npos == landmark_title.find(sFilterSubString) )
+			if( std::string::npos == landmark_title.find(filter_string) )
 			{
 				mCurrentItem--;
 				continue;
@@ -706,7 +708,7 @@ void LLTeleportHistoryPanel::refresh()
 				.getFlatItemForPersistentItem(&mContextMenu,
 											  items[mCurrentItem],
 											  mCurrentItem,
-											  sFilterSubString);
+											  filter_string);
 			if ( !curr_flat_view->addItem(item, LLUUID::null, ADD_BOTTOM, false) )
 				llerrs << "Couldn't add flat item to teleport history." << llendl;
 			if (mLastSelectedItemIndex == mCurrentItem)
@@ -729,6 +731,8 @@ void LLTeleportHistoryPanel::refresh()
 		}
 	}
 
+	mHistoryAccordion->setFilterSubString(sFilterSubString);
+
 	mHistoryAccordion->arrange();
 
 	updateVerbs();
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index fc5143d33bddbe81e3e7ed7178ed4df6511c4258..63b6fe5ef0e4fcd2a0a7e967d9fe5cb35b19eec4 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -88,6 +88,8 @@ BOOL LLSidepanelInventory::postBuild()
 		
 		mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
 		mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
+		LLTabContainer* tabs = mPanelMainInventory->getChild<LLTabContainer>("inventory filter tabs");
+		tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this));
 
 		/* 
 		   EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?"
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index a038f9985347c2c04bbe679da9bc6dc8e08b2f6b..13275d14c05a3bb096df824e05d88b40f67c8c2e 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -54,6 +54,10 @@ class LLSidepanelInventory : public LLPanel
 	LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; }
 	BOOL isMainInventoryPanelActive() const;
 
+	void showItemInfoPanel();
+	void showTaskInfoPanel();
+	void showInventoryPanel();
+
 protected:
 	// Tracks highlighted (selected) item in inventory panel.
 	LLInventoryItem *getSelectedItem();
@@ -63,9 +67,6 @@ class LLSidepanelInventory : public LLPanel
 	void performActionOnSelection(const std::string &action);
 	bool canShare();
 
-	void showItemInfoPanel();
-	void showTaskInfoPanel();
-	void showInventoryPanel();
 	void updateVerbs();
 
 	//
diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
index ff7e479368a6a5ace6f0f8ff46e3dd99aa9666a9..0df7035f849d1ca2df01832e3524329c4a87e6d4 100644
--- a/indra/newview/llslurl.cpp
+++ b/indra/newview/llslurl.cpp
@@ -48,8 +48,9 @@ const char* LLSLURL::SLURL_COM		         = "slurl.com";
 // text with www.slurl.com or a link explicitly pointing at www.slurl.com so testing for this
 // version is required also.
 
-const char* LLSLURL::WWW_SLURL_COM		 = "www.slurl.com";
-const char* LLSLURL::MAPS_SECONDLIFE_COM	 = "maps.secondlife.com";	
+const char* LLSLURL::WWW_SLURL_COM				 = "www.slurl.com";
+const char* LLSLURL::SECONDLIFE_COM				 = "secondlife.com";
+const char* LLSLURL::MAPS_SECONDLIFE_COM		 = "maps.secondlife.com";
 const char* LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME = "x-grid-location-info";
 const char* LLSLURL::SLURL_APP_PATH              = "app";
 const char* LLSLURL::SLURL_REGION_PATH           = "region";
@@ -187,6 +188,15 @@ LLSLURL::LLSLURL(const std::string& slurl)
 		   (slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) || 
 		   (slurl_uri.scheme() == LLSLURL::SLURL_X_GRID_LOCATION_INFO_SCHEME))
 		{
+			// *HACK: ignore http://secondlife.com/ URLs so that we can use
+			// http://secondlife.com/app/ redirect URLs
+			// This is only necessary while the server returns Release Note
+			// urls using this format rather that pointing to the wiki
+			if ((slurl_uri.scheme() == LLSLURL::SLURL_HTTP_SCHEME ||
+				 slurl_uri.scheme() == LLSLURL::SLURL_HTTPS_SCHEME) &&
+				slurl_uri.hostName() == LLSLURL::SECONDLIFE_COM)
+			  return;
+
 		    // We're dealing with either a Standalone style slurl or slurl.com slurl
 		  if ((slurl_uri.hostName() == LLSLURL::SLURL_COM) ||
 		      (slurl_uri.hostName() == LLSLURL::WWW_SLURL_COM) || 
diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h
index 1210c398f17e4ad4e6976c5b16bd2c97f4df70d1..e9b0e7f52a3527dcfc2f7d38316c354ec268f6f2 100644
--- a/indra/newview/llslurl.h
+++ b/indra/newview/llslurl.h
@@ -47,6 +47,7 @@ class LLSLURL
 	static const char* SLURL_SECONDLIFE_PATH;
 	static const char* SLURL_COM;
 	static const char* WWW_SLURL_COM;
+	static const char* SECONDLIFE_COM;
 	static const char* MAPS_SECONDLIFE_COM;
 	static const char* SLURL_X_GRID_LOCATION_INFO_SCHEME;
 	static LLSLURL START_LOCATION;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index df5be34e39c0dde4eba74c12ca7ce2f0213cabff..3ef190f766104edb8856f9a84d63c4b48dabcde4 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1116,8 +1116,6 @@ bool idle_startup()
 				LLVoiceClient::getInstance()->userAuthorized(gUserCredential->userID(), gAgentID);
 				// create the default proximal channel
 				LLVoiceChannel::initClass();
-				// update the voice settings
-				LLVoiceClient::getInstance()->updateSettings();
 				LLGridManager::getInstance()->setFavorite(); 
 				LLStartUp::setStartupState( STATE_WORLD_INIT);
 			}
@@ -1300,6 +1298,10 @@ bool idle_startup()
             LLAppViewer::instance()->loadNameCache();
 		}
 
+		// update the voice settings *after* gCacheName initialization
+		// so that we can construct voice UI that relies on the name cache
+		LLVoiceClient::getInstance()->updateSettings();
+
 		//gCacheName is required for nearby chat history loading
 		//so I just moved nearby history loading a few states further
 		if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory"))
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 52d227f82796d20296d8f732f72590e972291bf6..ceed90e21018087b8aa6f846fe1a4b3214436ef5 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -582,14 +582,26 @@ bool LLTextureFetchWorker::doWork(S32 param)
 {
 	LLMutexLock lock(&mWorkMutex);
 
-	if ((mFetcher->isQuitting() || mImagePriority < 1.0f || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
+	if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED)))
 	{
 		if (mState < DECODE_IMAGE)
 		{
 			return true; // abort
 		}
 	}
-	
+	if(mImagePriority < 1.0f)
+	{
+		if (mState == INIT || mState == LOAD_FROM_NETWORK || mState == LOAD_FROM_SIMULATOR)
+		{
+			return true; // abort
+		}
+	}
+	if(mState > CACHE_POST && !mCanUseNET && !mCanUseHTTP)
+	{
+		//nowhere to get data, abort.
+		return true ;
+	}
+
 	if (mFetcher->mDebugPause)
 	{
 		return false; // debug: don't do any work
@@ -777,7 +789,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			}
 			// don't return, fall through to next state
 		}
-		else if (mSentRequest == UNSENT)
+		else if (mSentRequest == UNSENT && mCanUseNET)
 		{
 			// Add this to the network queue and sit here.
 			// LLTextureFetch::update() will send off a request which will change our state
@@ -830,6 +842,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
 	
 	if (mState == SEND_HTTP_REQ)
 	{
+		if(mCanUseHTTP)
 		{
 			const S32 HTTP_QUEUE_MAX_SIZE = 8;
 			// *TODO: Integrate this with llviewerthrottle
@@ -895,6 +908,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
 			}
 			// fall through
 		}
+		else //can not use http fetch.
+		{
+			return true ; //abort
+		}
 	}
 	
 	if (mState == WAIT_HTTP_REQ)
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 3482ac508ed9940035f47734e1e0317d78477bb4..ab6ff880738d2f936996071d1ceeab265f218134 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -597,7 +597,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 
 		LLPipeline::sFastAlpha = gSavedSettings.getBOOL("RenderFastAlpha");
 		LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
-		LLVOAvatar::sMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible");
+		LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
 		LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
 
 		S32 occlusion = LLPipeline::sUseOcclusion;
@@ -699,8 +699,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		// Doing this here gives hardware occlusion queries extra time to complete
 		LLAppViewer::instance()->pingMainloopTimeout("Display:UpdateImages");
 		LLError::LLCallStacks::clear() ;
-		llpushcallstacks ;
-
+		
 		{
 			LLMemType mt_iu(LLMemType::MTYPE_DISPLAY_IMAGE_UPDATE);
 			LLFastTimer t(FTM_IMAGE_UPDATE);
@@ -718,7 +717,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			LLImageGL::deleteDeadTextures();
 			stop_glerror();
 		}
-		llpushcallstacks ;
 		///////////////////////////////////
 		//
 		// StateSort
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index eb0d4cb8ae8de120cabaaa99c598e61b032d4dc6..179002d2a869b36f584155ece87c7d89f6adbea0 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -595,7 +595,7 @@ LLVOAvatarSkeletonInfo* LLVOAvatar::sAvatarSkeletonInfo = NULL;
 LLVOAvatar::LLVOAvatarXmlInfo* LLVOAvatar::sAvatarXmlInfo = NULL;
 LLVOAvatarDictionary *LLVOAvatar::sAvatarDictionary = NULL;
 S32 LLVOAvatar::sFreezeCounter = 0;
-S32 LLVOAvatar::sMaxVisible = 50;
+U32 LLVOAvatar::sMaxVisible = 12;
 F32 LLVOAvatar::sRenderDistance = 256.f;
 S32	LLVOAvatar::sNumVisibleAvatars = 0;
 S32	LLVOAvatar::sNumLODChangesThisFrame = 0;
@@ -3173,23 +3173,23 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		{ // muted avatars update at 16 hz
 			mUpdatePeriod = 16;
 		}
-		else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible * 0.25f)
+		else if (visible && mVisibilityRank <= LLVOAvatar::sMaxVisible)
 		{ //first 25% of max visible avatars are not impostored
 			mUpdatePeriod = 1;
 		}
-		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 0.75f)
-		{ //back 25% of max visible avatars are slow updating impostors
-			mUpdatePeriod = 8;
-		}
-		else if (visible && mVisibilityRank > (U32) LLVOAvatar::sMaxVisible)
+		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 4)
 		{ //background avatars are REALLY slow updating impostors
 			mUpdatePeriod = 16;
 		}
+		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 3)
+		{ //back 25% of max visible avatars are slow updating impostors
+			mUpdatePeriod = 8;
+		}
 		else if (visible && mImpostorPixelArea <= impostor_area)
 		{  // stuff in between gets an update period based on pixel area
 			mUpdatePeriod = llclamp((S32) sqrtf(impostor_area*4.f/mImpostorPixelArea), 2, 8);
 		}
-		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible * 0.25f)
+		else if (visible && mVisibilityRank > LLVOAvatar::sMaxVisible)
 		{ // force nearby impostors in ultra crowded areas
 			mUpdatePeriod = 2;
 		}
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index b30cce09f65d3930194ac3a4cbafa3ac67304d7e..4259bb8e7382018c5b79e7a1593f49d723aa24d2 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -223,8 +223,8 @@ class LLVOAvatar :
 public:
 	static S32		sRenderName;
 	static BOOL		sRenderGroupTitles;
-	static S32		sMaxVisible;
-	static F32		sRenderDistance; //distance at which avatars will render (affected by control "RenderAvatarMaxVisible")
+	static U32		sMaxVisible; //(affected by control "RenderAvatarMaxVisible")
+	static F32		sRenderDistance; //distance at which avatars will render.
 	static BOOL		sShowAnimationDebug; // show animation debug info
 	static BOOL		sUseImpostors; //use impostors for far away avatars
 	static BOOL		sShowFootPlane;	// show foot collision plane reported by server
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 5e9c4dcec875f86c4d50f34edb92ada36df96f16..ea0c5f1d0f47100d25dd17ece70f705f7f20be44 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -647,6 +647,7 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
 
 	// *TODO: eliminate multiple traversals over the menu items
 	setMenuItemVisible(menu, "wear_add",			mask == MASK_CLOTHING && n_worn == 0);
+	setMenuItemEnabled(menu, "wear_add",			n_items == 1 && canAddWearable(ids.front()));
 	setMenuItemVisible(menu, "wear",				n_worn == 0);
 	setMenuItemVisible(menu, "edit",				!standalone && mask & (MASK_CLOTHING|MASK_BODYPART));
 	setMenuItemEnabled(menu, "edit",				n_editable == 1 && n_worn == 1 && n_items == 1);
@@ -740,4 +741,23 @@ void LLWearableItemsList::ContextMenu::createNewWearable(const LLUUID& item_id)
 	LLAgentWearables::createWearable(item->getWearableType(), true);
 }
 
+// Can we wear another wearable of the given item's wearable type?
+// static
+bool LLWearableItemsList::ContextMenu::canAddWearable(const LLUUID& item_id)
+{
+	if (!gAgentWearables.areWearablesLoaded())
+	{
+		return false;
+	}
+
+	LLViewerInventoryItem* item = gInventory.getItem(item_id);
+	if (!item || item->getType() != LLAssetType::AT_CLOTHING)
+	{
+		return false;
+	}
+
+	U32 wearable_count = gAgentWearables.getWearableCount(item->getWearableType());
+	return wearable_count < LLAgentWearables::MAX_CLOTHING_PER_TYPE;
+}
+
 // EOF
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index fe859075c41831e782a4898dd63dd21832c75a21..69134dd6462b49511867854899648182aa073a23 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -342,6 +342,7 @@ class LLWearableItemsList : public LLInventoryItemsList
 		static void setMenuItemEnabled(LLContextMenu* menu, const std::string& name, bool val);
 		static void updateMask(U32& mask, LLAssetType::EType at);
 		static void createNewWearable(const LLUUID& item_id);
+		static bool canAddWearable(const LLUUID& item_id);
 
 		LLWearableItemsList*	mParent;
 	};
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index cc65b34a612e3eb6d4b7ed1312634457b54e2f7c..ee3a2fc34f2f7d7c302ac6af5752d2a3f1f874b0 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -2207,7 +2207,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 	//LLVertexBuffer::unbind();
 
 	grabReferences(result);
-	llpushcallstacks ;
 	for (LLCullResult::sg_list_t::iterator iter = sCull->beginDrawableGroups(); iter != sCull->endDrawableGroups(); ++iter)
 	{
 		LLSpatialGroup* group = *iter;
@@ -2225,7 +2224,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			}
 		}
 	}
-	llpushcallstacks ;
 	for (LLCullResult::sg_list_t::iterator iter = sCull->beginVisibleGroups(); iter != sCull->endVisibleGroups(); ++iter)
 	{
 		LLSpatialGroup* group = *iter;
@@ -2241,7 +2239,6 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 		}
 	}
 	
-	llpushcallstacks ;
 	if (LLViewerCamera::sCurCameraID == LLViewerCamera::CAMERA_WORLD)
 	{
 		for (LLCullResult::bridge_list_t::iterator i = sCull->beginVisibleBridge(); i != sCull->endVisibleBridge(); ++i)
@@ -2268,12 +2265,13 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			}
 		}
 	}
-
+	llpushcallstacks ;	
 	{
 		LLFastTimer ftm(FTM_CLIENT_COPY);
 		LLVertexBuffer::clientCopy();
 	}
-
+	llpushcallstacks ;
+	
 	postSort(camera);
 	llpushcallstacks ;
 }
@@ -7117,7 +7115,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 			skip_avatar_update = TRUE;
 		}
 
-		llpushcallstacks ;
 		if (!skip_avatar_update)
 		{
 			gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
@@ -7216,7 +7213,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 										(1 << LLPipeline::RENDER_TYPE_WL_SKY));
 					static LLCullResult result;
 					updateCull(camera, result);
-					llpushcallstacks ;
 					stateSort(camera, result);
 					mRenderTypeMask = tmp & ((1 << LLPipeline::RENDER_TYPE_SKY) |
 										(1 << LLPipeline::RENDER_TYPE_CLOUDS) |
@@ -7251,7 +7247,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 					LLGLUserClipPlane clip_plane(plane, mat, projection);
 					LLGLDisable cull(GL_CULL_FACE);
 					updateCull(camera, ref_result, 1);
-					llpushcallstacks ;
 					stateSort(camera, ref_result);
 				}
 				
@@ -7308,7 +7303,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 				LLGLUserClipPlane clip_plane(LLPlane(-pnorm, -(pd+pad)), mat, projection);
 				static LLCullResult result;
 				updateCull(camera, result, water_clip);
-				llpushcallstacks ;
 				stateSort(camera, result);
 
 				gGL.setColorMask(true, true);
@@ -7347,7 +7341,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 		{
 			gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
 		}
-		llpushcallstacks ;
 	}
 }
 
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index c1e5ae50e69fdbc34d0650f13ed6862cb4e35e55..a59070496e9f4a15715d6a325a7db43b8a2f2258 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -48,7 +48,7 @@
            mouse_opaque="true"
            name="cof_tab"
            start_folder="Current Outfit"
-           use_label_suffix="false" 
+           use_label_suffix="true" 
            width="315" />
    </tab_container>
 	 <panel
@@ -130,4 +130,4 @@
       width="152" />
 	 </panel>
        
-</panel>
\ No newline at end of file
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index 5c9ae51a483e376418a43e2198a62e332f602282..d0c44c4328916c5f6c8f2e2a90f8ded7ebdabf95 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -14,7 +14,8 @@
      background_visible="true"
      bg_alpha_color="DkGray2"
      bg_opaque_color="DkGray2"
-     empty_accordion_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
+     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
+     no_visible_tabs_text.value="There are no any outfits. Try [secondlife:///app/search/all/ Search]."
      follows="all"
      height="400"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index da28773c74c57241b1394679e53abe03a94e5426..b79ef1e287b58d2bc364b20a31cd820c8acb72e7 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -173,7 +173,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
        		 background_visible="true"
        		 bg_alpha_color="DkGray2"
        		 bg_opaque_color="DkGray2"
-             empty_accordion_text.value=""
              follows="all"
              height="356"
              layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 266fd6cb5e7e49393bbe871e9a19c9d2e4969acc..f4694180a121d36fc2eebbfba1f2a607f610da69 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -372,29 +372,17 @@
     decimal_digits="0"
     follows="left|top"
     height="16"
-    increment="2"
-    initial_value="35"
-    label="Max. avatar draw distance:"
+    increment="1"
+    initial_value="12"
+    label="Max. # of non-impostor avatars:"
     label_width="185"
     layout="topleft"
     left_delta="0"
     max_val="65"
     min_val="1"
-    name="MaxAvatarDrawDistance"
+    name="MaxNumberAvatarDrawn"
     top_pad="4"
     width="290" />
-    <text
-    type="string"
-    length="1"
-    follows="left|top"
-    height="12"
-    layout="topleft"
-    left_delta="291"
-    name="DrawDistanceMeterText3"
-    top_delta="0"
-    width="128">
-      m
-    </text>
 		<slider
 		control_name="RenderGlowResolutionPow"
 		decimal_digits="0"
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
index 21addb8e6fe9f80fed2e17ea768261aefe43aba4..daa4356c836513f96085f575cdf0a797d37eed4e 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml
@@ -5,14 +5,16 @@
      background_visible="true"
      bg_alpha_color="DkGray">     
     <accordion
+     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search]."
+     no_visible_tabs_text.value="Teleport history is empty. Try [secondlife:///app/search/places/ Search]."
      follows="left|top|right|bottom"
      height="373"
      layout="topleft"
      left="3"
      top="0"
      name="history_accordion"
-   background_visible="true"
-   bg_alpha_color="DkGray2"
+     background_visible="true"
+     bg_alpha_color="DkGray2"
      width="307">
 	    <accordion_tab
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 294267d43b2864ce6b43d400e7e1f14c32e031f7..68eea8dc9a6b1d332d0f1a239d74f22bbe4a1386 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -136,7 +136,7 @@
 	<string name="RetrievingData">Retrieving...</string>
 
 	<string name="ReleaseNotes">Release Notes</string>
-	<string name="RELEASE_NOTES_BASE_URL">http://secondlife.com/app/releasenotes/</string>
+	<string name="RELEASE_NOTES_BASE_URL">http://wiki.secondlife.com/wiki/Release_Notes/</string>
 
 	<!-- Indicates something is being loaded. Maybe should be merged with RetrievingData -->
 	<string name="LoadingData">Loading...</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/accordion.xml b/indra/newview/skins/default/xui/en/widgets/accordion.xml
index 05d7447a6f8b5824510b569ddf34d92ec5f199dd..19f8234389d5ff034c670b4effb2c511008d7bcd 100644
--- a/indra/newview/skins/default/xui/en/widgets/accordion.xml
+++ b/indra/newview/skins/default/xui/en/widgets/accordion.xml
@@ -3,12 +3,16 @@
  height="100"
  name="accordion"
  width="200">
-    <empty_accordion_text
+    <no_matched_tabs_text
      follows="all"
      height="100"
      h_pad="10"
-     name="no_visible_items_msg"
+     name="no_matched_tabs_msg"
      v_pad="15"
      width="200"
      wrap="true "/>
+    <!-- This widget will not be created in viewer. Only its value will be used for empty accordion without filter. -->
+    <no_visible_tabs_text
+     name="no_visible_tabs_msg"
+     visible="false"/>
 </accordion>