diff --git a/src/apigw/proxy.py b/src/apigw/proxy.py index 8c69e2035d4d0e..b2a3f81add7bf5 100644 --- a/src/apigw/proxy.py +++ b/src/apigw/proxy.py @@ -31,6 +31,7 @@ (["/files/dsyms/"], 90.0), (["/installablepreprodartifact/"], 90.0), (["/objectstore/"], 90.0), + (["/preprodartifacts/snapshots/", "/download/"], 90.0), ] diff --git a/src/sentry/features/temporary.py b/src/sentry/features/temporary.py index 000f6b28edd36a..d87426452b771b 100644 --- a/src/sentry/features/temporary.py +++ b/src/sentry/features/temporary.py @@ -496,6 +496,8 @@ def register_temporary_features(manager: FeatureManager) -> None: manager.add("projects:relay-minidump-uploads", ProjectFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) # Enables the uploading of playstation attachments to the objectstore. manager.add("projects:relay-playstation-uploads", ProjectFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) + # Enables smarter measurements -> attributes conversion in Relay (see https://github.com/getsentry/relay/pull/6007) + manager.add("projects:relay-measurements-smart-conversion", ProjectFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) # Enable lightweight RCA clustering write path (generate embeddings on new issues) manager.add("organizations:supergroups-lightweight-rca-clustering-write", OrganizationFeature, FeatureHandlerStrategy.FLAGPOLE, api_expose=False) diff --git a/src/sentry/relay/config/__init__.py b/src/sentry/relay/config/__init__.py index 2d95c8e4f89284..4d0caf7b9ece8a 100644 --- a/src/sentry/relay/config/__init__.py +++ b/src/sentry/relay/config/__init__.py @@ -74,6 +74,7 @@ "projects:relay-minidump-attachment-uploads", "projects:relay-minidump-uploads", "projects:relay-playstation-uploads", + "projects:relay-measurements-smart-conversion", ] EXTRACT_METRICS_VERSION = 1 diff --git a/static/app/components/events/autofix/v3/artifactLoadingDetails.tsx b/static/app/components/events/autofix/v3/artifactLoadingDetails.tsx index 0099d67c530ff9..50c8ab7b86f8f3 100644 --- a/static/app/components/events/autofix/v3/artifactLoadingDetails.tsx +++ b/static/app/components/events/autofix/v3/artifactLoadingDetails.tsx @@ -1,11 +1,11 @@ import styled from '@emotion/styled'; import {Flex} from '@sentry/scraps/layout'; +import {Markdown} from '@sentry/scraps/markdown'; import {Text} from '@sentry/scraps/text'; import {type AutofixSection} from 'sentry/components/events/autofix/useExplorerAutofix'; import {ArtifactDetails} from 'sentry/components/events/autofix/v3/artifactDetails'; -import {StyledMarkedText} from 'sentry/components/events/autofix/v3/styled'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {useAutoScroll} from 'sentry/utils/useAutoScroll'; @@ -40,11 +40,11 @@ export function ArtifactLoadingDetails({ } if (block.message.content && block.message.content !== 'Thinking...') { - return ; + return ; } if (block.message.thinking_content) { - return ; + return ; } return null; diff --git a/static/app/components/events/autofix/v3/autofixPreviews.tsx b/static/app/components/events/autofix/v3/autofixPreviews.tsx index 7f7ba599afb12b..8043e17d2d7b71 100644 --- a/static/app/components/events/autofix/v3/autofixPreviews.tsx +++ b/static/app/components/events/autofix/v3/autofixPreviews.tsx @@ -5,6 +5,7 @@ import {Tag} from '@sentry/scraps/badge'; import {LinkButton} from '@sentry/scraps/button'; import {Flex} from '@sentry/scraps/layout'; import {ExternalLink} from '@sentry/scraps/link'; +import {Markdown} from '@sentry/scraps/markdown'; import {Text} from '@sentry/scraps/text'; import { @@ -21,7 +22,6 @@ import { isSolutionArtifact, type AutofixSection, } from 'sentry/components/events/autofix/useExplorerAutofix'; -import {StyledMarkedText} from 'sentry/components/events/autofix/v3/styled'; import {LoadingIndicator} from 'sentry/components/loadingIndicator'; import {Placeholder} from 'sentry/components/placeholder'; import {IconOpen} from 'sentry/icons'; @@ -50,7 +50,7 @@ export function RootCausePreview({section}: ArtifactPreviewProps) { {t('Finding the root cause\u2026')} ) : artifact?.data ? ( - + ) : ( {t( @@ -76,7 +76,7 @@ export function SolutionPreview({section}: ArtifactPreviewProps) { {t('Formulating a plan\u2026')} ) : artifact?.data ? ( - + ) : ( {t('Seer failed to generate a plan. This one is on us. Try running it again.')} diff --git a/static/app/components/events/autofix/v3/rootCauseCard.tsx b/static/app/components/events/autofix/v3/rootCauseCard.tsx index b24371b9de8610..6054862c61c5c9 100644 --- a/static/app/components/events/autofix/v3/rootCauseCard.tsx +++ b/static/app/components/events/autofix/v3/rootCauseCard.tsx @@ -2,6 +2,7 @@ import {Fragment, useMemo} from 'react'; import {Button} from '@sentry/scraps/button'; import {Container, Flex} from '@sentry/scraps/layout'; +import {Markdown} from '@sentry/scraps/markdown'; import {Text} from '@sentry/scraps/text'; import { @@ -15,7 +16,6 @@ import {ArtifactDetails} from 'sentry/components/events/autofix/v3/artifactDetai import {ArtifactLoadingDetails} from 'sentry/components/events/autofix/v3/artifactLoadingDetails'; import {AutofixEvidence} from 'sentry/components/events/autofix/v3/autofixEvidence'; import {AutofixResetPrompt} from 'sentry/components/events/autofix/v3/autofixResetPrompt'; -import {StyledMarkedText} from 'sentry/components/events/autofix/v3/styled'; import {useAutofixSectionEvidence} from 'sentry/components/events/autofix/v3/useAutofixSectionEvidence'; import {useResetAutofixStep} from 'sentry/components/events/autofix/v3/useResetAutofixStep'; import {artifactToMarkdown} from 'sentry/components/events/autofix/v3/utils'; @@ -79,7 +79,7 @@ export function RootCauseCard({autofix, groupId, section}: RootCauseCardProps) { /> )} - + {artifact.data.five_whys?.length ? ( @@ -88,7 +88,7 @@ export function RootCauseCard({autofix, groupId, section}: RootCauseCardProps) { {artifact.data.five_whys.map((why, index) => (
  • - +
  • ))}
    @@ -99,7 +99,7 @@ export function RootCauseCard({autofix, groupId, section}: RootCauseCardProps) { {artifact.data?.reproduction_steps.map((step, index) => (
  • - +
  • ))}
    diff --git a/static/app/components/events/autofix/v3/solutionCard.tsx b/static/app/components/events/autofix/v3/solutionCard.tsx index 3cbaa6496a1907..0cce9a14db2223 100644 --- a/static/app/components/events/autofix/v3/solutionCard.tsx +++ b/static/app/components/events/autofix/v3/solutionCard.tsx @@ -2,6 +2,7 @@ import {Fragment, useMemo} from 'react'; import {Button} from '@sentry/scraps/button'; import {Container, Flex} from '@sentry/scraps/layout'; +import {Markdown} from '@sentry/scraps/markdown'; import {Text} from '@sentry/scraps/text'; import { @@ -14,7 +15,6 @@ import {ArtifactCard} from 'sentry/components/events/autofix/v3/artifactCard'; import {ArtifactDetails} from 'sentry/components/events/autofix/v3/artifactDetails'; import {ArtifactLoadingDetails} from 'sentry/components/events/autofix/v3/artifactLoadingDetails'; import {AutofixResetPrompt} from 'sentry/components/events/autofix/v3/autofixResetPrompt'; -import {StyledMarkedText} from 'sentry/components/events/autofix/v3/styled'; import {useResetAutofixStep} from 'sentry/components/events/autofix/v3/useResetAutofixStep'; import {artifactToMarkdown} from 'sentry/components/events/autofix/v3/utils'; import {IconList} from 'sentry/icons/iconList'; @@ -74,7 +74,7 @@ export function SolutionCard({autofix, section}: SolutionCardProps) { /> )} - + {artifact.data.steps ? ( @@ -83,7 +83,7 @@ export function SolutionCard({autofix, section}: SolutionCardProps) { {artifact.data.steps.map((step, index) => (
  • - + {step.description} diff --git a/static/app/components/events/autofix/v3/styled.tsx b/static/app/components/events/autofix/v3/styled.tsx deleted file mode 100644 index 70270a06151c21..00000000000000 --- a/static/app/components/events/autofix/v3/styled.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import styled from '@emotion/styled'; - -import {MarkedText} from 'sentry/utils/marked/markedText'; - -export const StyledMarkedText = styled(MarkedText)` - p { - margin: 0; - overflow-wrap: break-word; - } -`; diff --git a/static/app/components/preprod/preprodBuildsSnapshotTable.snapshots.tsx b/static/app/components/preprod/preprodBuildsSnapshotTable.snapshots.tsx index 0203058ccdd0e8..ca955081a0d1b8 100644 --- a/static/app/components/preprod/preprodBuildsSnapshotTable.snapshots.tsx +++ b/static/app/components/preprod/preprodBuildsSnapshotTable.snapshots.tsx @@ -69,6 +69,7 @@ function makeBuild( images_removed: 0, images_changed: 3, images_unchanged: 19, + images_skipped: 0, }, ...overrides, }; @@ -117,6 +118,7 @@ describe('PreprodBuildsSnapshotTable', () => { images_removed: 0, images_changed: 3, images_unchanged: 19, + images_skipped: 0, }, }) ), @@ -137,6 +139,7 @@ describe('PreprodBuildsSnapshotTable', () => { images_removed: 0, images_changed: 0, images_unchanged: 0, + images_skipped: 0, }, }) ), @@ -168,6 +171,7 @@ describe('PreprodBuildsSnapshotTable', () => { images_removed: 0, images_changed: 0, images_unchanged: 20, + images_skipped: 0, }, }) ), diff --git a/static/app/components/preprod/preprodBuildsSnapshotTable.tsx b/static/app/components/preprod/preprodBuildsSnapshotTable.tsx index eef097448b7fb0..b75b01d6a35bb9 100644 --- a/static/app/components/preprod/preprodBuildsSnapshotTable.tsx +++ b/static/app/components/preprod/preprodBuildsSnapshotTable.tsx @@ -31,18 +31,20 @@ function ChangeCounts({ removed, changed, unchanged, + skipped, comparisonState, }: { added: number; changed: number; comparisonState: SnapshotComparisonState | null | undefined; removed: number; + skipped: number; unchanged: number; }) { if (comparisonState !== 'success') { return {'–'}; } - if (added === 0 && removed === 0 && changed === 0) { + if (added === 0 && removed === 0 && changed === 0 && skipped === 0) { return ( {t('No changes')} @@ -62,6 +64,9 @@ function ChangeCounts({ if (unchanged > 0) { parts.push(t('%s unchanged', unchanged)); } + if (skipped > 0) { + parts.push(t('%s skipped', skipped)); + } return ( {parts.join(', ')} @@ -113,6 +118,7 @@ export function PreprodBuildsSnapshotTable({ removed={info?.images_removed ?? 0} changed={info?.images_changed ?? 0} unchanged={info?.images_unchanged ?? 0} + skipped={info?.images_skipped ?? 0} comparisonState={info?.comparison_state} /> diff --git a/static/app/views/preprod/types/buildDetailsTypes.ts b/static/app/views/preprod/types/buildDetailsTypes.ts index bf2b6e49c9d1e0..a3f6ea1853a5f4 100644 --- a/static/app/views/preprod/types/buildDetailsTypes.ts +++ b/static/app/views/preprod/types/buildDetailsTypes.ts @@ -211,5 +211,6 @@ interface SnapshotComparisonInfo { images_added: number; images_changed: number; images_removed: number; + images_skipped: number; images_unchanged: number; }