DashboardsentrySession 1RKE6wp9sEfV

Session 1RKE6wp9sEfV

Full ID: 1RKE6wp9sEfVuYd5d
Messages: 6
Distillations: 0
Time range: 2026-05-19 16:24:46 — 2026-05-19 16:25:08

Conversation (6 messages)

In the Sentry repo at /home/byk/Code/getsentry/sentry, I need to verify two things from the existing Jira Connect descriptor:

  1. What URL does the existing Connect descriptor use for the jiraIssueContexts / issue panel? Look in src/sentry/integrations/jira/descriptor.py or similar files for the issue details URL. I expect it might be /extensions/jira/issue-details/{issue.key}/ vs the legacy /extensions/jira/issue/{issue.key}/.

  2. How does the existing Connect descriptor handle the icon URL? Is it hardcoded or dynamically resolved via get_frontend_app_asset_url?

Search thoroughly and return the exact code snippets showing both the issue URL and icon URL handling.

gateway · 2026-05-19 16:24:46

I'll search for the Jira Connect descriptor and related files to answer both questions.

claude-opus-4-6 · 2026-05-19 16:24:46 · ~30 tokens

[tool results provided]

gateway · 2026-05-19 16:24:51

Now let me read the full descriptor file and the relevant URLs file:

claude-opus-4-6 · 2026-05-19 16:24:51 · ~24 tokens

[tool results provided]

gateway · 2026-05-19 16:25:08

Here are the findings for both questions:


1. Issue Panel URL (jiraIssueContexts)

The Connect descriptor endpoint (src/sentry/integrations/jira/endpoints/descriptor.py) uses the new URL path:

# Line 68-78
"jiraIssueContexts": [
    {
        "icon": {"width": 24, "height": 24, "url": sentry_logo},
        "content": {"type": "label", "label": {"value": "Linked Issues"}},
        "target": {
            "type": "web_panel",
            "url": "/extensions/jira/issue-details/{issue.key}/",
        },
        "name": {"value": "Sentry "},
        "key": "sentry-issues-glance",
    }
],

The descriptor serves /extensions/jira/issue-details/{issue.key}/ (the new path).

However, the Forge manifest (src/sentry/integrations/jira/forge/manifest.yml) still uses the legacy URL:

# Lines 37-39
      target:
        type: web_panel
        url: /extensions/jira/issue/{issue.key}/

Both URL paths are registered in the URL router (src/sentry/integrations/jira/urls.py), with an explicit comment explaining why the legacy route is kept:

# Lines 52-61
# TODO(cells): Legacy URL, remove once Atlassian marketplace version updated.
# Our descriptor now correctly points at `/issue-details/{key}/`, but
# Atlassian only re-snapshots it when a new Marketplace version of `sentry.io.jira` is
# published — existing tenants keep hitting this path until that happens. Routed to the
# control view by `JiraRequestParser.immediate_response_cell_classes`.
re_path(
    r"^issue/(?P<issue_key>[^/]+)/$",
    JiraSentryIssueDetailsView.as_view(),
    name="sentry-extensions-jira-issue-hook",
),
re_path(
    r"^issue-details/(?P<issue_key>[^/]+)/$",
    JiraSentryIssueDetailsControlView.as_view(),
    name="sentry-extensions-jira-issue-hook-control",
),

Key detail: the legacy path (/issue/...) routes to JiraSentryIssueDetailsView, while the new path (/issue-details/...) routes to a different class, ...

claude-opus-4-6 · 2026-05-19 16:25:08 · ~1.2K tokens