From 555c139409cbdcf82c527a888a0892c39ec30ae1 Mon Sep 17 00:00:00 2001 From: James Bradford Date: Mon, 19 Jun 2023 12:20:00 -0700 Subject: [PATCH 1/8] change 'Meta' tab name to 'Details' --- .../client/src/views/Campaign/Explore/Panels/Panels.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/client/src/views/Campaign/Explore/Panels/Panels.tsx b/applications/client/src/views/Campaign/Explore/Panels/Panels.tsx index 6fc05b50..dd1088d4 100644 --- a/applications/client/src/views/Campaign/Explore/Panels/Panels.tsx +++ b/applications/client/src/views/Campaign/Explore/Panels/Panels.tsx @@ -34,7 +34,7 @@ export const TabNames: (store: AppStore) => Record = (store: AppSt [Tabs.OPERATORS]: 'Operators', [Tabs.COMMENTS]: store.router.params.currentItem === 'comments_list' ? '' : 'Comments', [Tabs.COMMENTS_LIST]: 'Comments', - [Tabs.METADATA]: 'Meta', + [Tabs.METADATA]: 'Details', }); export enum CommentFilterOptions { From 8791368060a07d9e9328e069efdb0eec82d939b5 Mon Sep 17 00:00:00 2001 From: James Bradford Date: Mon, 19 Jun 2023 12:23:43 -0700 Subject: [PATCH 2/8] change Tabs.METADATA route name to 'details' --- applications/client/src/types/explore.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/applications/client/src/types/explore.ts b/applications/client/src/types/explore.ts index 8d3a0b79..470f9569 100644 --- a/applications/client/src/types/explore.ts +++ b/applications/client/src/types/explore.ts @@ -11,12 +11,10 @@ export enum InfoType { export enum Tabs { BEACONS = 'beacons', HOSTS = 'hosts', - // LANES = 'Lanes', COMMANDS = 'commands', - COMMANDS_OVERVIEW = 'command-overview', + COMMANDS_OVERVIEW = 'commands-overview', OPERATORS = 'operators', COMMENTS = 'comments', COMMENTS_LIST = 'comments_list', - // INFO = 'Info', - METADATA = 'Metadata', + METADATA = 'details', } From 8c8899e5824eb9f443783bb3ebe32e0927f713b8 Mon Sep 17 00:00:00 2001 From: James Bradford Date: Mon, 19 Jun 2023 12:57:04 -0700 Subject: [PATCH 3/8] validate #Tags --- .../Explore/components/Comment/CommentBox.tsx | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx b/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx index fb909c58..e89e07f6 100644 --- a/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx +++ b/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx @@ -2,6 +2,7 @@ import { Alignment, Button, ButtonGroup, Classes, Intent, Position, TextArea } f import type { ItemPredicate } from '@blueprintjs/select'; import { MultiSelect2 } from '@blueprintjs/select'; import { + Add16, ArrowRight16, Bookmark16, BookmarkFilled16, @@ -508,22 +509,22 @@ export const CommentBox = observer( if (e) e.stopPropagation(); }, }} - query={state.tagQuery} - onQueryChange={(query) => state.update('tagQuery', query)} + query={state.tagQuery && formatTag(state.tagQuery)} + onQueryChange={(query) => state.update('tagQuery', validateTag(query))} items={state.autoTags} fill - createNewItemPosition="first" + createNewItemPosition="last" itemPredicate={filterTags} selectedItems={state.tags} onRemove={state.handleTagsRemove} onItemSelect={state.handleTagsChange} - createNewItemFromQuery={(query) => query} + createNewItemFromQuery={(query) => validateTag(query)} createNewItemRenderer={(item, active, handleClick: MouseEventHandler) => ( } disabled={state.tags.includes(item)} - text={`#${item}`} + text={formatTag(validateTag(item))} active={active} onClick={handleClick} shouldDismissPopover={false} @@ -536,7 +537,7 @@ export const CommentBox = observer( key={item} onClick={handleClick} disabled={modifiers.disabled} - text={`#${item}`} + text={formatTag(item)} shouldDismissPopover={false} /> )} @@ -775,8 +776,8 @@ const displayOptionStyle = css` `; const filterTags: ItemPredicate = (query, tag, _index, exactMatch) => { - const normalizedTag = tag?.toLowerCase(); - const normalizedQuery = query.toLowerCase(); + const normalizedTag = validateTag(tag?.toLowerCase()); + const normalizedQuery = validateTag(query.toLowerCase()); if (exactMatch) { return normalizedTag === normalizedQuery; @@ -784,3 +785,6 @@ const filterTags: ItemPredicate = (query, tag, _index, exactMatch) => { return normalizedTag?.includes(normalizedQuery); } }; + +const validateTag = (tag: string) => tag.replaceAll('#', ''); // maybe remove special chars? +const formatTag = (tag: string) => `#${tag}`; From f13208973d0fce5723ed0f6511e328fad6f36434 Mon Sep 17 00:00:00 2001 From: James Bradford Date: Mon, 19 Jun 2023 13:07:57 -0700 Subject: [PATCH 4/8] changed Favorited icon from 'Bookmark' to 'Start' --- .../Campaign/Explore/Panels/Comment/CommentsList.tsx | 4 ++-- .../Campaign/Explore/components/Comment/CommentBox.tsx | 6 +++--- .../Campaign/Presentation/PresentationTopicItem.tsx | 9 +++------ 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx b/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx index 471db4be..6798edf6 100644 --- a/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx +++ b/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx @@ -9,7 +9,7 @@ import { import { CoreTokens, FlexSplitter } from '@redeye/ui-styles'; import { useQuery } from '@tanstack/react-query'; import { observer } from 'mobx-react-lite'; -import { Bookmark16, Hashtag16, Playlist16, User16 } from '@carbon/icons-react'; +import { StarFilled16, Hashtag16, Playlist16, User16 } from '@carbon/icons-react'; import type { ComponentProps } from 'react'; import { useCallback, useMemo } from 'react'; import { CampaignViews, Tabs } from '@redeye/client/types'; @@ -111,7 +111,7 @@ export const CommentsList = observer(({ sort }) => { }); const getIcon = (itemId: string): any => { - if (itemId === 'favorited') return Bookmark16; + if (itemId === 'favorited') return StarFilled16; if (itemId === 'procedural') return Playlist16; if (itemId.slice(0, 5) === 'user-') return User16; else return Hashtag16; diff --git a/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx b/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx index e89e07f6..b7b5d6cf 100644 --- a/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx +++ b/applications/client/src/views/Campaign/Explore/components/Comment/CommentBox.tsx @@ -4,8 +4,8 @@ import { MultiSelect2 } from '@blueprintjs/select'; import { Add16, ArrowRight16, - Bookmark16, - BookmarkFilled16, + Star16, + StarFilled16, Chat16, Checkmark16, Edit16, @@ -425,7 +425,7 @@ export const CommentBox = observer( cy-test="fav-comment" minimal small - icon={} + icon={} onClick={state.toggleFavorite} disabled={!isRedTeam || isPresentationMode} /> diff --git a/applications/client/src/views/Campaign/Presentation/PresentationTopicItem.tsx b/applications/client/src/views/Campaign/Presentation/PresentationTopicItem.tsx index 72579867..1d6e5ff6 100644 --- a/applications/client/src/views/Campaign/Presentation/PresentationTopicItem.tsx +++ b/applications/client/src/views/Campaign/Presentation/PresentationTopicItem.tsx @@ -1,4 +1,4 @@ -import { BookmarkFilled20, Chat16, Chat20, Play16 } from '@carbon/icons-react'; +import { Star20, Chat16, Chat20, Play16 } from '@carbon/icons-react'; import { css } from '@emotion/react'; import { CarbonIcon } from '@redeye/client/components'; import type { PresentationItemModel } from '@redeye/client/store'; @@ -24,7 +24,6 @@ export const PresentationTopicItem = observer(({ pre UtilityStyles.hoverRevealChildrenOpacity, css` padding: 0 2.5rem 0 3.5rem; - position: relative; justify-content: space-between; display: flex; `, @@ -44,7 +43,6 @@ export const PresentationTopicItem = observer(({ pre (({ pre {presentationItem.key} - {/* */} (({ pre const heroButtonStyle = css` position: absolute; - right: 0.75rem; + right: 0.25rem; height: 2.5rem; width: 2.5rem; `; const getIcon = (presentationItem: PresentationItemModel): any => { - if (presentationItem.id === 'favorited') return BookmarkFilled20; + if (presentationItem.id === 'favorited') return Star20; if (presentationItem.id === 'all') return Chat20; else return ''; }; From 88e38e3ea57c62de66b7875eeae695fe272afdc7 Mon Sep 17 00:00:00 2001 From: James Bradford Date: Mon, 19 Jun 2023 13:11:09 -0700 Subject: [PATCH 5/8] fix bug: accidentally changed Tabs.COMMANDS_OVERVIEW route name --- applications/client/src/types/explore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/client/src/types/explore.ts b/applications/client/src/types/explore.ts index 470f9569..00bad69e 100644 --- a/applications/client/src/types/explore.ts +++ b/applications/client/src/types/explore.ts @@ -12,7 +12,7 @@ export enum Tabs { BEACONS = 'beacons', HOSTS = 'hosts', COMMANDS = 'commands', - COMMANDS_OVERVIEW = 'commands-overview', + COMMANDS_OVERVIEW = 'command-overview', OPERATORS = 'operators', COMMENTS = 'comments', COMMENTS_LIST = 'comments_list', From 45d3a9928be8d55c18d46dc3c2b6cd8f191aeff6 Mon Sep 17 00:00:00 2001 From: James Bradford Date: Mon, 19 Jun 2023 14:43:26 -0700 Subject: [PATCH 6/8] add [input] line CommandOutput --- .../views/Campaign/Explore/Panels/Command/CommandOutput.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/applications/client/src/views/Campaign/Explore/Panels/Command/CommandOutput.tsx b/applications/client/src/views/Campaign/Explore/Panels/Command/CommandOutput.tsx index 50c2682e..c463f112 100644 --- a/applications/client/src/views/Campaign/Explore/Panels/Command/CommandOutput.tsx +++ b/applications/client/src/views/Campaign/Explore/Panels/Command/CommandOutput.tsx @@ -24,7 +24,7 @@ export const CommandOutput = observer(({ command }) => { this.showAll = !this.showAll; }, get commandOutputLines() { - const commandOutputLines = command?.outputLines.slice(); + const commandOutputLines = command?.outputLines.slice(); // shallow copy to edit if (commandOutputLines) { while (commandOutputLines[0] === '') { commandOutputLines.shift(); @@ -77,6 +77,9 @@ export const CommandOutput = observer(({ command }) => {
+
+						{command?.inputLog?.blob}
+					
{state.renderedLines?.length ? ( <>

From 6edd6a19a8686e48dcdaa0740b096a02ec922e0f Mon Sep 17 00:00:00 2001
From: James Bradford 
Date: Mon, 19 Jun 2023 15:16:30 -0700
Subject: [PATCH 7/8] Add count title tooltip to IconLabel

---
 .../views/Campaign/Explore/Panels/Comment/CommentsList.tsx    | 2 +-
 .../src/views/Campaign/Explore/components/IconLabel.tsx       | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx b/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx
index 6798edf6..edeb912b 100644
--- a/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx
+++ b/applications/client/src/views/Campaign/Explore/Panels/Comment/CommentsList.tsx
@@ -100,7 +100,7 @@ export const CommentsList = observer(({ sort }) => {
 					/>
 					
diff --git a/applications/client/src/views/Campaign/Explore/components/IconLabel.tsx b/applications/client/src/views/Campaign/Explore/components/IconLabel.tsx
index 16e3b214..acb46103 100644
--- a/applications/client/src/views/Campaign/Explore/components/IconLabel.tsx
+++ b/applications/client/src/views/Campaign/Explore/components/IconLabel.tsx
@@ -9,8 +9,8 @@ type TextLabelProps = ComponentProps<'span'> & {
 	value?: ReactNode;
 	icon: CarbonIconProps['icon'];
 };
-export const IconLabel = observer(({ value, icon, ...props }) => (
-	
+export const IconLabel = observer(({ value, icon, title, ...props }) => (
+	
 		{value}
 		
Date: Tue, 20 Jun 2023 07:40:16 -0700
Subject: [PATCH 8/8] Update tests to reference Details tab instead of Meta
 tab.

---
 .../{meta-tab.cy.js => details-tab.cy.js}     | 10 ++++-----
 .../e2e/blueteam/hide-show-beacon.cy.js       |  8 +++----
 ...ab-links.cy.js => details-tab-links.cy.js} | 10 ++++-----
 .../e2e/redteam/hide-show-beacon.cy.js        | 16 +++++++-------
 .../e2e/redteam/hide-show-host.cy.js          | 21 +++++++++---------
 .../e2e/redteam/hide-show-server.cy.js        | 22 +++++++++----------
 ....skip.js => update-beacon-details.skip.js} |  4 ++--
 .../redeye-e2e/src/support/command.d.ts       |  6 ++---
 .../redeye-e2e/src/support/explore.js         | 10 ++++-----
 9 files changed, 54 insertions(+), 53 deletions(-)
 rename applications/redeye-e2e/src/integration/e2e/blueteam/{meta-tab.cy.js => details-tab.cy.js} (74%)
 rename applications/redeye-e2e/src/integration/e2e/redteam/{meta-tab-links.cy.js => details-tab-links.cy.js} (78%)
 rename applications/redeye-e2e/src/integration/e2e/redteam/{update-beacon-metadata.skip.js => update-beacon-details.skip.js} (97%)

diff --git a/applications/redeye-e2e/src/integration/e2e/blueteam/meta-tab.cy.js b/applications/redeye-e2e/src/integration/e2e/blueteam/details-tab.cy.js
similarity index 74%
rename from applications/redeye-e2e/src/integration/e2e/blueteam/meta-tab.cy.js
rename to applications/redeye-e2e/src/integration/e2e/blueteam/details-tab.cy.js
index cdffdaa7..ce716194 100644
--- a/applications/redeye-e2e/src/integration/e2e/blueteam/meta-tab.cy.js
+++ b/applications/redeye-e2e/src/integration/e2e/blueteam/details-tab.cy.js
@@ -1,10 +1,10 @@
 /// 
 
-describe('Meta tab fields disabled', () => {
-	const camp = 'metatab';
+describe('Details tab fields disabled', () => {
+	const camp = 'detailstab';
 	const fileName = 'gt.redeye';
 
-	it('Cannot update beacon info via Meta tab', () => {
+	it('Cannot update beacon info via Details tab', () => {
 		// Upload campaign and open
 		cy.uploadCampaignBlue(camp, fileName);
 
@@ -13,9 +13,9 @@ describe('Meta tab fields disabled', () => {
 		// Go to Beacons tab
 		cy.clickBeaconsTab();
 
-		// Select beacon and go to Meta tab
+		// Select beacon and go to Details tab
 		cy.get('[cy-test=beacons-row]').eq(0).click();
-		cy.clickMetaTab();
+		cy.clickDetailsTab();
 
 		// Verify Display Name, TOD, and Type fields are disabled
 		cy.get('[cy-test=beacon-display-name]').should('be.disabled');
diff --git a/applications/redeye-e2e/src/integration/e2e/blueteam/hide-show-beacon.cy.js b/applications/redeye-e2e/src/integration/e2e/blueteam/hide-show-beacon.cy.js
index 0480e39d..66dc07c2 100644
--- a/applications/redeye-e2e/src/integration/e2e/blueteam/hide-show-beacon.cy.js
+++ b/applications/redeye-e2e/src/integration/e2e/blueteam/hide-show-beacon.cy.js
@@ -33,14 +33,14 @@ describe('Hide a beacon', () => {
 		cy.showHiddenItems();
 	});
 
-	it('Verify Hide button is disabled in Meta tab', () => {
+	it('Verify Hide button is disabled in Details tab', () => {
 		// Search for new campaign by name
 		cy.selectCampaign(camp);
 
-		// Go to Beacons tab; open first beacon; go to Meta tab
+		// Go to Beacons tab; open first beacon; go to Detals tab
 		cy.clickBeaconsTab();
 		cy.get('[cy-test=beacons-row]').eq(0).click();
-		cy.clickMetaTab();
+		cy.clickDetailsTab();
 
 		// Verify unable to hide/show new beacons/host
 		cy.get('[cy-test=show-hide-this-beacon]').should('be.disabled');
@@ -57,7 +57,7 @@ describe('Hide a beacon', () => {
 		// Navigate to the Beacons tab and open kebab menu for first beacon
 		cy.clickBeaconsTab();
 		cy.get('[cy-test=beacons-row]').eq(0).click();
-		cy.clickMetaTab();
+		cy.clickDetailsTab();
 		cy.get('[cy-test=show-hide-this-beacon]').should('be.disabled');
 	});
 
diff --git a/applications/redeye-e2e/src/integration/e2e/redteam/meta-tab-links.cy.js b/applications/redeye-e2e/src/integration/e2e/redteam/details-tab-links.cy.js
similarity index 78%
rename from applications/redeye-e2e/src/integration/e2e/redteam/meta-tab-links.cy.js
rename to applications/redeye-e2e/src/integration/e2e/redteam/details-tab-links.cy.js
index c76b70c9..363fd4fb 100644
--- a/applications/redeye-e2e/src/integration/e2e/redteam/meta-tab-links.cy.js
+++ b/applications/redeye-e2e/src/integration/e2e/redteam/details-tab-links.cy.js
@@ -1,19 +1,19 @@
 /// 
 
-describe('Links on Meta tab', () => {
-	const camp = 'metatablinks';
+describe('Links on Details tab', () => {
+	const camp = 'detailstablinks';
 	const fileName = 'gt.redeye';
 
-	it('Beacon metadata links redirect to correct location', () => {
+	it('Beacon details links redirect to correct location', () => {
 		cy.uploadCampaign(camp, fileName);
 
 		// Search for new campaign by name; go to Beacons tab
 		cy.selectCampaign(camp);
 		cy.clickBeaconsTab();
 
-		// Select first beacon; go to Meta tab
+		// Select first beacon; go to Details tab
 		cy.get('[cy-test=beacons-row]').eq(0).click();
-		cy.clickMetaTab();
+		cy.clickDetailsTab();
 
 		// Log location name under Links
 		cy.get('[cy-test=meta-link]')
diff --git a/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-beacon.cy.js b/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-beacon.cy.js
index b99ebdfd..dc1f392c 100644
--- a/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-beacon.cy.js
+++ b/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-beacon.cy.js
@@ -4,15 +4,15 @@ function hideUnhideBeacon(beaconName) {
 	// Hide a beacon
 	cy.get('[cy-test=beacons-row]').contains(beaconName).click();
 	cy.contains('[cy-test=beaconName]', beaconName);
-	cy.clickMetaTab();
-	cy.showHideBeaconMetaTab();
+	cy.clickDetailsTab();
+	cy.showHideBeaconDetailsTab();
 }
 
 describe('Hide a beacon', () => {
 	const camp = 'hideshowbeacon';
 	const fileName = 'gt.redeye';
 
-	it('Hide beacon via Meta tab using toggle in left nav panel', () => {
+	it('Hide beacon via Details tab using toggle in left nav panel', () => {
 		cy.uploadCampaign(camp, fileName);
 
 		// Search for new campaign by name
@@ -55,7 +55,7 @@ describe('Hide a beacon', () => {
 			});
 	});
 
-	it('Hide beacon via Meta tab using toggle on main page', () => {
+	it('Hide beacon via Details tab using toggle on main page', () => {
 		// Toggle off switch for hidden beacons
 		cy.doNotShowHiddenItems();
 
@@ -154,7 +154,7 @@ describe('Hide a beacon', () => {
 			});
 	});
 
-	it('Verify Cancel button works from Meta tab', () => {
+	it('Verify Cancel button works from Details tab', () => {
 		// Search for new campaign by name
 		cy.selectCampaign(camp);
 
@@ -162,8 +162,8 @@ describe('Hide a beacon', () => {
 		cy.clickBeaconsTab();
 		cy.get('[cy-test=beacons-row]').eq(0).click();
 
-		// Go to Meta tab and click show/hide link
-		cy.clickMetaTab();
+		// Go to Details tab and click show/hide link
+		cy.clickDetailsTab();
 		cy.get('[cy-test=show-hide-this-beacon]').click();
 
 		// Verify modal shows; click Cancel
@@ -174,7 +174,7 @@ describe('Hide a beacon', () => {
 		// Verify modal disappears
 		cy.verifyDialogBoxDisappears();
 
-		// Verify the Meta tab link says "Hide this beacon" vs. "Show"
+		// Verify the Details tab link says "Hide this beacon" vs. "Show"
 		cy.get('[cy-test=show-hide-this-beacon]').invoke('text').should('eq', 'Hide this beacon');
 	});
 
diff --git a/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-host.cy.js b/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-host.cy.js
index 567701bd..faab55c0 100644
--- a/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-host.cy.js
+++ b/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-host.cy.js
@@ -3,15 +3,15 @@
 function hideUnhideHost(hostName) {
 	cy.get('[cy-test=info-row]').contains(hostName).click();
 	cy.contains('[cy-test=panel-header]', hostName);
-	cy.clickMetaTab();
-	cy.showHideHostMetaTab();
+	cy.clickDetailsTab();
+	cy.showHideHostDetailsTab();
 }
 
 describe('Hide a host', () => {
 	const camp = 'hideshowhost';
 	const fileName = 'gt.redeye';
 
-	it('Hide host via Meta tab using toggle in left nav panel', () => {
+	it('Hide host via Details tab using toggle in left nav panel', () => {
 		cy.uploadCampaign(camp, fileName);
 
 		// Search for new campaign by name
@@ -26,7 +26,7 @@ describe('Hide a host', () => {
 			.eq(1)
 			.invoke('text')
 			.then((hostName) => {
-				// Hide a host via the Meta tab
+				// Hide a host via the Details tab
 				hideUnhideHost(hostName);
 
 				// Verify host no longer shows
@@ -52,7 +52,7 @@ describe('Hide a host', () => {
 			});
 	});
 
-	it('Hide host via Meta tab using toggle on main page', () => {
+	it('Hide host via Details tab using toggle on main page', () => {
 		// Toggle off switch for hidden items on the main page
 		// cy.doNotShowHiddenItems();
 
@@ -64,7 +64,7 @@ describe('Hide a host', () => {
 			.eq(1)
 			.invoke('text')
 			.then((hostName) => {
-				// Hide the host via the Meta tab
+				// Hide the host via the Details tab
 				hideUnhideHost(hostName);
 
 				// Verify host no longer shows
@@ -139,13 +139,13 @@ describe('Hide a host', () => {
 			});
 	});
 
-	it('Verify Cancel button works from Meta tab', () => {
+	it('Verify Cancel button works from Details tab', () => {
 		// Search for new campaign by name
 		cy.selectCampaign(camp);
 
-		// Select the first host, go to Meta tab, click show/hide link
+		// Select the first host, go to Details tab, click show/hide link
 		cy.get('[cy-test=hostName]').eq(1).click();
-		cy.clickMetaTab();
+		cy.clickDetailsTab();
 		cy.get('[cy-test=show-hide-this-host]').click();
 
 		// Verify modal shows; click Cancel
@@ -155,7 +155,8 @@ describe('Hide a host', () => {
 
 		// Verify modal disappears
 		cy.verifyDialogBoxDisappears();
-		// Verify the Meta tab link says "Hide this host" vs. "Show"
+
+		// Verify the Details tab link says "Hide this host" vs. "Show"
 		cy.get('[cy-test=show-hide-this-host]').invoke('text').should('eq', 'Hide this host');
 	});
 
diff --git a/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-server.cy.js b/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-server.cy.js
index 4e79f0c5..aa73f8e8 100644
--- a/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-server.cy.js
+++ b/applications/redeye-e2e/src/integration/e2e/redteam/hide-show-server.cy.js
@@ -1,18 +1,18 @@
 /// 
 
 function hideUnhideServer(serverName) {
-	// Hide/unhide server via the Meta tab
+	// Hide/unhide server via the Details tab
 	cy.get('[cy-test=info-row]').contains(serverName).click();
 	cy.contains('[cy-test=panel-header]', serverName);
-	cy.clickMetaTab();
-	cy.showHideServerMetaTab();
+	cy.clickDetailsTab();
+	cy.showHideServerDetailsTab();
 }
 
 describe('Hide a server', () => {
 	const camp = 'hideshowserver';
 	const fileName = 'smalldata.redeye';
 
-	it('Hide server via Meta tab using toggle in left nav panel', () => {
+	it('Hide server via Details tab using toggle in left nav panel', () => {
 		cy.uploadCampaign(camp, fileName);
 
 		// Search for new campaign by name
@@ -26,7 +26,7 @@ describe('Hide a server', () => {
 			.eq(0)
 			.invoke('text')
 			.then((serverName) => {
-				// Hide server via the Meta tab
+				// Hide server via the Details tab
 				hideUnhideServer(serverName);
 
 				// Verify server no longer shows
@@ -53,7 +53,7 @@ describe('Hide a server', () => {
 			});
 	});
 
-	it('Hide server via Meta tab using toggle on main page', () => {
+	it('Hide server via Details tab using toggle on main page', () => {
 		// Toggle off switch for hidden items on the main page
 		cy.doNotShowHiddenItems();
 
@@ -65,7 +65,7 @@ describe('Hide a server', () => {
 			.eq(0)
 			.invoke('text')
 			.then((serverName) => {
-				// Hide the server via the Meta tab
+				// Hide the server via the Details tab
 				hideUnhideServer(serverName);
 
 				// Verify server no longer shows
@@ -141,13 +141,13 @@ describe('Hide a server', () => {
 			});
 	});
 
-	it('Verify Cancel button works from Meta tab', () => {
+	it('Verify Cancel button works from Details tab', () => {
 		// Search for new campaign by name
 		cy.selectCampaign(camp);
 
-		// Select the server, go to Meta tab, click show/hide link
+		// Select the server, go to Details tab, click show/hide link
 		cy.get('[cy-test=hostName]').eq(0).click();
-		cy.clickMetaTab();
+		cy.clickDetailsTab();
 		cy.get('[cy-test=show-hide-this-server]').click();
 
 		// Verify modal shows; click Cancel
@@ -158,7 +158,7 @@ describe('Hide a server', () => {
 		// Verify modal disappears
 		cy.verifyDialogBoxDisappears();
 
-		// Verify the Meta tab link says "Hide this server" vs. "Show"
+		// Verify the Details tab link says "Hide this server" vs. "Show"
 		cy.get('[cy-test=show-hide-this-server]').invoke('text').should('eq', 'Hide this server');
 	});
 
diff --git a/applications/redeye-e2e/src/integration/e2e/redteam/update-beacon-metadata.skip.js b/applications/redeye-e2e/src/integration/e2e/redteam/update-beacon-details.skip.js
similarity index 97%
rename from applications/redeye-e2e/src/integration/e2e/redteam/update-beacon-metadata.skip.js
rename to applications/redeye-e2e/src/integration/e2e/redteam/update-beacon-details.skip.js
index 82941910..74e3d308 100644
--- a/applications/redeye-e2e/src/integration/e2e/redteam/update-beacon-metadata.skip.js
+++ b/applications/redeye-e2e/src/integration/e2e/redteam/update-beacon-details.skip.js
@@ -17,7 +17,7 @@ describe('Update Beacon metadata', () => {
 		// Get current info for the beacon
 		cy.get('[data-test-id=virtuoso-item-list] [cy-test=beacons-row]').eq(0).click();
 
-		cy.clickMetaTab();
+		cy.clickDetailsTab();
 		cy.get('[cy-test=beacon-display-name]')
 			.invoke('attr', 'value')
 			.then((resultBeacon1) => {
@@ -41,7 +41,7 @@ describe('Update Beacon metadata', () => {
 
 				// Verify new TOD shows
 				cy.get('[data-test-id=virtuoso-item-list] [cy-test=beacons-row]').contains(newBeaconName).click();
-				cy.clickMetaTab();
+				cy.clickDetailsTab();
 				cy.get('[cy-test=beacon-time-of-death]')
 					.find('.bp4-input')
 					.invoke('attr', 'value')
diff --git a/applications/redeye-e2e/src/support/command.d.ts b/applications/redeye-e2e/src/support/command.d.ts
index c65910b9..ca058262 100644
--- a/applications/redeye-e2e/src/support/command.d.ts
+++ b/applications/redeye-e2e/src/support/command.d.ts
@@ -125,11 +125,11 @@ declare namespace Cypress {
 		 */
 		clickHostsTab();
 
-		/**Clicks the Meta tab in Explorer mode.
+		/**Clicks the Details tab in Explorer mode.
 		 * @example
-		 * cy.clickMetaTab()
+		 * cy.clickDetailsTab()
 		 */
-		clickMetaTab();
+		clickDetailsTab();
 
 		/**Clicks the tab to open the list of Operators.
 		 * @example
diff --git a/applications/redeye-e2e/src/support/explore.js b/applications/redeye-e2e/src/support/explore.js
index 0b569020..8f877446 100644
--- a/applications/redeye-e2e/src/support/explore.js
+++ b/applications/redeye-e2e/src/support/explore.js
@@ -102,8 +102,8 @@ Cypress.Commands.add('clickCommandsTab', () => {
 });
 
 //CLICK META TAB
-Cypress.Commands.add('clickMetaTab', () => {
-	cy.get('[cy-test=Metadata]').click();
+Cypress.Commands.add('clickDetailsTab', () => {
+	cy.get('[cy-test=details]').click();
 	cy.wait(500);
 });
 
@@ -251,21 +251,21 @@ Cypress.Commands.add('closeSearch', () => {
 // *******************************************
 
 // SHOW / HIDE BEACON FROM META TAB
-Cypress.Commands.add('showHideBeaconMetaTab', () => {
+Cypress.Commands.add('showHideBeaconDetailsTab', () => {
 	cy.get('[cy-test=show-hide-this-beacon]').click();
 	cy.get('[cy-test=confirm-show-hide]').click();
 	cy.get('[cy-test=modal-header]').should('not.exist');
 });
 
 // SHOW / HIDE HOST FROM META TAB
-Cypress.Commands.add('showHideHostMetaTab', () => {
+Cypress.Commands.add('showHideHostDetailsTab', () => {
 	cy.get('[cy-test=show-hide-this-host]').click();
 	cy.get('[cy-test=confirm-show-hide]').click();
 	cy.get('[cy-test=modal-header]').should('not.exist');
 });
 
 // SHOW / HIDE SERVER FROM META TAB
-Cypress.Commands.add('showHideServerMetaTab', () => {
+Cypress.Commands.add('showHideServerDetailsTab', () => {
 	cy.get('[cy-test=show-hide-this-server]').click();
 	cy.get('[cy-test=confirm-show-hide]').click();
 	cy.get('[cy-test=modal-header]').should('not.exist');