Dashboard › sentry › Session 1M0IZXcT4bWM
1M0IZXcT4bWM5FuIxYou are reviewing PR #115603 on getsentry/sentry (branch BYK/chore/add-jira-forge-manifest). Be thorough and critical — the author is asking you to find any remaining issues before merging.
Review the following aspects:
/home/byk/Code/getsentry/sentry/src/sentry/integrations/jira/forge/manifest.yml — check for correctness, consistency with the existing Connect descriptor, missing fields, security concernsgh pr view 115603 to see it. Check if it's accurate, complete, and follows Sentry conventions/home/byk/Code/getsentry/sentry/src/sentry/integrations/jira/endpoints/descriptor.py and compare every field/URL/key with the Forge manifest. Flag any discrepancies.https://sentry.io/_static/dist/sentry/entrypoints/logo-sentry.svg. Verify this is a valid stable URL by checking how get_frontend_app_asset_url in src/sentry/utils/assets.py constructs the non-hashed path. Consider: does sentry.io serve /_static/dist/sentry/entrypoints/logo-sentry.svg or does it only serve the hashed version?/extensions/jira/issue-details/{issue.key}/ is correctly registered in src/sentry/integrations/jira/urls.pyname field — the manifest has value: 'Sentry ' with a trailing space. Check if the Connect descriptor has the same.Return a detailed review with:
I'll start by gathering all the information needed for a thorough review.
[tool results provided]
Now let me check a few more things to complete the review:
[tool results provided]
Let me check the JIRA_KEY value and a few more details:
[tool results provided]
[tool results provided]
Now let me check the web URL mounting to confirm the full path prefix, and verify the Connect descriptor's name field vs the manifest:
[tool results provided]
Let me check the set_badge function to understand how entity properties work, and verify the Connect descriptor's name field more carefully:
[tool results provided]
Now I have all the information needed. Let me also check the old lore entry about the URL discrepancy to understand the current state:
[tool results provided]
Now I have everything needed. Let me also check whether the lore entry about the URL discrepancy is now stale (since this PR appears to fix it):
[tool results provided]
Now let me verify one last critical thing — whether the _static/dist/sentry/entrypoints/logo-sentry.svg URL is actually stable on sentry.io or if it gets hashed:
[tool results provided]
Now I have all the information needed to write a thorough review. Let me compile my findings.
chore(jira): Add Forge app manifest for Connect-to-Forge migrationThis PR adds an Atlassian Forge manifest.yml for migrating the existing Jira Connect app to Forge. The manifest wraps the Connect app as a Forge remote app, proxying all requests back to sentry.io. The PR is a single new file addition with no code changes.
name field has trailing space — 'Sentry 'Severity: LOW
Line 40 of the manifest:
name:
value: 'Sentry '
The Connect descriptor at descriptor.py:76 also has:
"name": {"value": "Sentry "},
So these are consistent — both have the trailing space. However, this trailing space in the app name displayed as the issue context panel title is almost certainly an accidental artifact. It's pre-existing and not introduced by this PR, but worth noting as a follow-up cleanup (in both files simultaneously).
Verdict: Not a blocker — consistent with Connect descriptor. Consider a follow-up to trim both.
https://sentry.io/_static/dist/sentry/entrypoints/logo-sentry.svgSeverity: LOW
I verified this URL live:
HTTP/2 200
content-type: image/svg+xml
cache-control: max-age=0, must-revalidate
The URL works and returns the SVG correctly. Here's why:
get_frontend_app_asset_url("sentry", "entrypoints/logo-sentry.svg") constructs the path using STATIC_FRONTEND_APP_URL (/_static/dist/), producing /_static/dist/sentry/entrypoints/logo-sentry.svg when no frontend-versions.json is present, or the hashed variant (/_static/dist/sentry/entrypoints-hashed/<hash>.svg) when it is.frontend-versions.json IS present, the Connect descriptor dynamically resolves to the hashed path at request time. But sentry.io also serves the unhashed path with `cache-control: ...