diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 07418d1b5e98354beae9e369027c4caf37ea9b65..9d911777d12f2000448e790b61cdc7a9491b387f 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8635,7 +8635,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>ShowBetaGrids</key>
     <map>
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index f7ae320a6fc9f29f7740c93c8c3ed1157fb1cf00..1edc96e1652200861bc4e909d2888b19d2a3cd9b 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -115,6 +115,7 @@ void LLInitialWearablesFetch::processContents()
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t wearable_array;
 	LLFindWearables is_wearable;
+	llassert_always(mComplete.size() != 0);
 	gInventory.collectDescendentsIf(mComplete.front(), cat_array, wearable_array, 
 									LLInventoryModel::EXCLUDE_TRASH, is_wearable);
 
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 94286fd799f8b120ce17d13066ae5aa6830345d1..7159d89d21d09b201e214794a6e4d9928977e5f2 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -2307,12 +2307,17 @@ bool LLAppearanceMgr::updateBaseOutfit()
 
 void LLAppearanceMgr::divvyWearablesByType(const LLInventoryModel::item_array_t& items, wearables_by_type_t& items_by_type)
 {
-	items_by_type.reserve(LLWearableType::WT_COUNT);
+	items_by_type.resize(LLWearableType::WT_COUNT);
 	if (items.empty()) return;
 
 	for (S32 i=0; i<items.count(); i++)
 	{
 		LLViewerInventoryItem *item = items.get(i);
+		if (!item)
+		{
+			LL_WARNS("Appearance") << "NULL item found" << llendl;
+			continue;
+		}
 		// Ignore non-wearables.
 		if (!item->isWearableType())
 			continue;
@@ -2335,6 +2340,7 @@ std::string build_order_string(LLWearableType::EType type, U32 i)
 
 struct WearablesOrderComparator
 {
+	LOG_CLASS(WearablesOrderComparator);
 	WearablesOrderComparator(const LLWearableType::EType type)
 	{
 		mControlSize = build_order_string(type, 0).size();
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 78c2142ea563b52f2d37b137726a243110966d12..c65d9dc9eeda8448d3c3042fb336a14d2d095fa4 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -42,6 +42,8 @@ class LLOutfitUnLockTimer;
 
 class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 {
+	LOG_CLASS(LLAppearanceMgr);
+
 	friend class LLSingleton<LLAppearanceMgr>;
 	friend class LLOutfitUnLockTimer;
 	
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index b00a663a9af78afb9ce9ed4691f8d52701dd2c4d..129c9aec142de34d4d4392368a8aa9068b4d0a3b 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -3077,7 +3077,9 @@ public:
 			std::string saved;
 			if(offline == IM_OFFLINE)
 			{
-				saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
+				LLStringUtil::format_map_t args;
+				args["[LONG_TIMESTAMP]"] = formatted_time(timestamp);
+				saved = LLTrans::getString("Saved_message", args);
 			}
 			std::string buffer = saved + message;
 
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index 08229d3a50d00a4bfab48bad8043e23495b194c6..53835f0166ebed6a4cb51644243d84661d3f8527 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -501,7 +501,7 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,
 		for(S32 i = 0; i < count; ++i)
 		{
 			item = item_array->get(i);
-			if (item->getActualType() == LLAssetType::AT_LINK_FOLDER)
+			if (item && item->getActualType() == LLAssetType::AT_LINK_FOLDER)
 			{
 				LLViewerInventoryCategory *linked_cat = item->getLinkedCategory();
 				if (linked_cat && linked_cat->getPreferredType() != LLFolderType::FT_OUTFIT)
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp
index 87257832b654c03ba6ca5b3fe5aebe226cb4f8a1..dd402de394a9564037492d74123440e8d417c7d8 100644
--- a/indra/newview/lllandmarklist.cpp
+++ b/indra/newview/lllandmarklist.cpp
@@ -159,6 +159,11 @@ void LLLandmarkList::processGetAssetReply(
 
 }
 
+BOOL LLLandmarkList::isAssetInLoadedCallbackMap(const LLUUID& asset_uuid)
+{
+	return mLoadedCallbackMap.find(asset_uuid) != mLoadedCallbackMap.end();
+}
+
 BOOL LLLandmarkList::assetExists(const LLUUID& asset_uuid)
 {
 	return mList.count(asset_uuid) != 0 || mBadList.count(asset_uuid) != 0;
diff --git a/indra/newview/lllandmarklist.h b/indra/newview/lllandmarklist.h
index 6d32f0e75b44b8686a0de748d53baa53bc1a70bf..3356f866ce453aa83c8ebaef1e783e84fd7a8d0a 100644
--- a/indra/newview/lllandmarklist.h
+++ b/indra/newview/lllandmarklist.h
@@ -59,6 +59,10 @@ public:
 		S32 status,
 		LLExtStat ext_status );
 
+	// Returns TRUE if loading the landmark with given asset_uuid has been requested
+	// but is not complete yet.
+	BOOL isAssetInLoadedCallbackMap(const LLUUID& asset_uuid);
+
 protected:
 	void onRegionHandle(const LLUUID& landmark_id);
 	void makeCallbacks(const LLUUID& landmark_id);
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 43814ac652095650b994275b277d850114e6c37a..ff15e3f08ed09b09afc7c5a12248dd05088d202b 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -974,7 +974,28 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
 			)
 	{
 		// disable some commands for multi-selection. EXT-1757
-		return root_folder_view && root_folder_view->getSelectedCount() == 1;
+		bool is_single_selection = root_folder_view && root_folder_view->getSelectedCount() == 1;
+		if (!is_single_selection)
+		{
+			return false;
+		}
+
+		if ("show_on_map" == command_name)
+		{
+			LLFolderViewItem* cur_item = root_folder_view->getCurSelectedItem();
+			if (!cur_item) return false;
+
+			LLViewerInventoryItem* inv_item = cur_item->getInventoryItem();
+			if (!inv_item) return false;
+
+			LLUUID asset_uuid = inv_item->getAssetUUID();
+			if (asset_uuid.isNull()) return false;
+
+			// Disable "Show on Map" if landmark loading is in progress.
+			return !gLandmarkList.isAssetInLoadedCallbackMap(asset_uuid);
+		}
+
+		return true;
 	}
 	else if ("rename" == command_name)
 	{
@@ -1099,7 +1120,8 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co
 
 		if ("cut" == command_name)
 		{
-			can_be_modified = root_folder->canCut();
+			// "Cut" disabled for folders. See EXT-8697.
+			can_be_modified = root_folder->canCut() && listenerp->getInventoryType() != LLInventoryType::IT_CATEGORY;
 		}
 		else if ("rename" == command_name)
 		{
@@ -1188,6 +1210,7 @@ void LLLandmarksPanel::doShowOnMap(LLLandmark* landmark)
 	}
 
 	mShowOnMapBtn->setEnabled(TRUE);
+	mGearLandmarkMenu->setItemEnabled("show_on_map", TRUE);
 }
 
 void LLLandmarksPanel::doProcessParcelInfo(LLLandmark* landmark,
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 92c61ddefebc854dcce52bf12fe26312c1369375..82bc084f6820f144c54fe4284062497ae1c99fd3 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2183,7 +2183,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			std::string saved;
 			if(offline == IM_OFFLINE)
 			{
-				saved = llformat("(Saved %s) ", formatted_time(timestamp).c_str());
+				LLStringUtil::format_map_t args;
+				args["[LONG_TIMESTAMP]"] = formatted_time(timestamp);
+				saved = LLTrans::getString("Saved_message", args);
 			}
 			buffer = saved + message;
 
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
index 0f02de866b9a91a0a8f96b76cb8c4fe18d4335db..b373be438280c7a54330cf7f2bdb16a39b5714a5 100644
--- a/indra/newview/skins/default/xui/de/panel_login.xml
+++ b/indra/newview/skins/default/xui/de/panel_login.xml
@@ -20,7 +20,7 @@
 			<text name="start_location_text">
 				Hier anfangen:
 			</text>
-			<combo_box name="start_location_combo" width="150">
+			<combo_box name="start_location_combo">
 				<combo_box.item label="Mein letzter Standort" name="MyLastLocation"/>
 				<combo_box.item label="Mein Zuhause" name="MyHome"/>
 				<combo_box.item label="&lt;Region eingeben&gt;" name="Typeregionname"/>
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 9fac296e26cd7aaba7b15a840b30a6b790c80f53..751dc0bf3e4b4b5a220617f3f7c16ba685ce319d 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -64,6 +64,7 @@
        parameter="UseDebugMenus" />
     </menu_item_check>
     <menu
+     create_jump_keys="true"
       visible="false"
      create_jump_keys="true"
      label="Debug"
@@ -102,6 +103,7 @@
       </menu_item_call>
       -->
       <menu
+       create_jump_keys="true"
        label="UI Tests"
        name="UI Tests"
        tear_off="true">
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 0b85074eb6ce4249c9a75a31b6f09bf7a313ccec..c79a484ef63d5b46f00b71bfe17a8dd3433f152d 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -4,6 +4,7 @@
  follows="left|top|right"
  name="Main Menu">
     <menu
+     create_jump_keys="true"
      label="Me"
      name="Me"
      tear_off="true">
@@ -94,6 +95,7 @@
              parameter="voice_effect" />
         </menu_item_check>
         <menu
+         create_jump_keys="true"
          label="My Status"
          name="Status"
          tear_off="true">
@@ -138,6 +140,7 @@
         </menu_item_call>
     </menu>
     <menu
+     create_jump_keys="true"
      label="Communicate"
      name="Communicate"
      tear_off="true">
@@ -188,6 +191,7 @@
             </menu_item_call>
     </menu>
     <menu
+     create_jump_keys="true"
      label="World"
      name="World"
      tear_off="true">
@@ -901,6 +905,7 @@
         </menu>
     </menu>
     <menu
+     create_jump_keys="true"
      label="Help"
      name="Help"
      tear_off="true">
@@ -947,6 +952,7 @@
         </menu_item_call>
     </menu>
     <menu
+     create_jump_keys="true"
      label="Advanced"
      name="Advanced"
      tear_off="true"
@@ -1451,6 +1457,7 @@
         <menu_item_separator/>
 
         <menu
+         create_jump_keys="true"
          label="Shortcuts"
          name="Shortcuts"
          tear_off="true"
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 0499873fb071365dd126ca161374489917f1dc72..6b136495d2960b53149ff41b56a39d77fd7d47b9 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -130,7 +130,7 @@ control_name="LoginLocation"
 max_chars="128"
 top_pad="0"
 name="start_location_combo"
-     width="135">
+     width="170">
 <combo_box.item
 label="My last location"
 name="MyLastLocation"
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index cf174da2f07d2b5dd928f30f8282dbbe78f40050..e6714af943a394ae853fa529574c5064096e5d8b 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -295,7 +295,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
          auto_resize="true"
          default_tab_group="3"
          height="450"
-         min_height="53"
+         min_height="73"
          name="add_wearables_panel"
          width="313"
          tab_group="2"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 676bef2d0be736242a364a42d14c28dcd8fc4cce..cf040b10c7a5add2a8bfc9759c51e6a53d5a6da1 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3005,6 +3005,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="IM_default_text_label">Click here to instant message.</string>
 	<string name="IM_to_label">To</string>
 	<string name="IM_moderator_label">(Moderator)</string>
+	<string name="Saved_message">(Saved [LONG_TIMESTAMP])</string>
 
 	<!-- voice calls -->
 	<string name="answered_call">Your call has been answered</string>
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
index 1b3e1c1c90928e0ff2ea7fd03aa7e824e4b53309..b3ab2f4f90341f800ba2bd3c63dd197a39a68e36 100644
--- a/indra/newview/skins/default/xui/fr/panel_login.xml
+++ b/indra/newview/skins/default/xui/fr/panel_login.xml
@@ -20,7 +20,7 @@
 			<text name="start_location_text">
 				Lieu de départ :
 			</text>
-			<combo_box name="start_location_combo" width="152">
+			<combo_box name="start_location_combo">
 				<combo_box.item label="Dernier emplacement" name="MyLastLocation"/>
 				<combo_box.item label="Domicile" name="MyHome"/>
 				<combo_box.item label="&lt;Saisir le nom de la région&gt;" name="Typeregionname"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml
index 47d7a88b4c2effabe1eadda827f5c7fee4e9e674..808f19a16d40805ea5d77ae42cb09858af0027ab 100644
--- a/indra/newview/skins/default/xui/ja/panel_login.xml
+++ b/indra/newview/skins/default/xui/ja/panel_login.xml
@@ -20,7 +20,7 @@
 			<text name="start_location_text">
 				開始地点:
 			</text>
-			<combo_box name="start_location_combo" width="160">
+			<combo_box name="start_location_combo">
 				<combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
 				<combo_box.item label="ホーム" name="MyHome"/>
 				<combo_box.item label="<地域名を入力>" name="Typeregionname"/>