diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index 72074955d1436237a7958eecd210ddf55e04bf5b..47f1b7c9f544bd761fff38ea65357392ebbff3fb 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -446,10 +446,20 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
 
 		if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status )
 		{
+			//TODO* CHAT: how to show this?
+			//LLSD args;
+			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
+			//LLNotificationsUtil::add("SystemMessage", args);
+			
 			buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName;
 		}
 		else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status)
 		{
+			//TODO* CHAT: how to show this?
+			//LLSD args;
+			//args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound);
+			//LLNotificationsUtil::add("SystemMessage", args);
+
 			buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName;
 		}
 		else
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index d96d7df24ad5323290ef79eda37589b356c88a4e..5692ccee291d399fa80137bc8cec54842f99a473 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -6373,8 +6373,54 @@ class LLToolsSelectedScriptAction : public view_listener_t
 
 void handle_selected_texture_info(void*)
 {
-	//useless without LLFloaterChat
-	//as since we don't use LLFloaterChat...
+	for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin();
+   		iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++)
+	{
+		LLSelectNode* node = *iter;
+	   	
+   		std::string msg;
+   		msg.assign("Texture info for: ");
+   		msg.append(node->mName);
+   		LLChat chat(msg);
+   		LLFloaterChat::addChat(chat);
+	   
+   		U8 te_count = node->getObject()->getNumTEs();
+   		// map from texture ID to list of faces using it
+   		typedef std::map< LLUUID, std::vector<U8> > map_t;
+   		map_t faces_per_texture;
+   		for (U8 i = 0; i < te_count; i++)
+   		{
+   			if (!node->isTESelected(i)) continue;
+	   
+   			LLViewerTexture* img = node->getObject()->getTEImage(i);
+   			LLUUID image_id = img->getID();
+   			faces_per_texture[image_id].push_back(i);
+   		}
+   		// Per-texture, dump which faces are using it.
+   		map_t::iterator it;
+   		for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it)
+   		{
+   			LLUUID image_id = it->first;
+   			U8 te = it->second[0];
+   			LLViewerTexture* img = node->getObject()->getTEImage(te);
+   			S32 height = img->getHeight();
+   			S32 width = img->getWidth();
+   			S32 components = img->getComponents();
+   			msg = llformat("%dx%d %s on face ",
+   								width,
+   								height,
+   								(components == 4 ? "alpha" : "opaque"));
+   			for (U8 i = 0; i < it->second.size(); ++i)
+   			{
+   				msg.append( llformat("%d ", (S32)(it->second[i])));
+   			}
+
+			//TODO* CHAT: how to show this?
+			//LLSD args;
+			//args["MESSAGE"] = msg;
+			//LLNotificationsUtil::add("SystemMessage", args);
+   		}
+	}
 }
 
 void handle_test_male(void*)
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 5279c4174a25d5440a384886c9cdb4232d802b62..8372711cd1db0bf07c1d184acd612267bc99a7a4 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1356,7 +1356,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 			if (check_offer_throttle(mFromName, true))
 			{
 				log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
-				//TODO* should go to history only - how?
+				//TODO* CHAT: how to show this?
 				//LLSD args;
 				//args["MESSAGE"] = log_message;
 				//LLNotificationsUtil::add("SystemMessage", args);
@@ -1401,7 +1401,7 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const
 			// send the message
 			msg->sendReliable(mHost);
 			
-			//TODO* should go to message history only...
+			//TODO* CHAT: how to show this?
 			//log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
 			//LLSD args;
 			//args["MESSAGE"] = log_message;
@@ -1829,17 +1829,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				// history.  Pretend the chat is from a local agent,
 				// so it will go into the history but not be shown on screen.
 
-				//TODO* should go to message hisyory only
+				//TODO* CHAT: how to show this?
 				//and this is not system message...
 				//LLSD args;
 				//args["MESSAGE"] = buffer;
 				//LLNotificationsUtil::add("SystemMessage", args);
-
-				/*
-				chat.mText = buffer;
-				BOOL local_agent = TRUE;
-				LLFloaterChat::addChat( chat, TRUE, local_agent );
-				*/
 			}
 		}
 		break;
@@ -3076,7 +3070,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
 		{
 			// Chat the "back" SLURL. (DEV-4907)
 
-			//should go to history only so leave commented
+			//TODO* CHAT: how to show this?
 			//LLSD args;
 			//args["MESSAGE"] = message;
 			//LLNotificationsUtil::add("SystemMessage", args);