Skip to content

jtk: emit inlineCard for bare Atlassian URLs in markdown conversion #485

Open

Description

@zzwong

Summary

Markdown descriptions referencing tickets by URL currently produce plain links. Jira's editor turns a pasted issue URL into an inlineCard (smart link with live status chip); the converter should match that behavior for bare same-site URLs (https://<site>.atlassian.net/browse/KEY-123, standalone — not inside code spans/fences, not markdown-link syntax [text](url), which keeps the author's explicit text). Gives agents and humans status-chip ticket references without hand-writing ADF.

Environment

  • jtk version tested: 1.3.169
  • Jira: Cloud
  • Date tested: 2026-09-03

Reproduction

Using a placeholder issue key and site:

jtk issues update PROJ-1 --description 'Bare browse URL on its own line:

https://<site>.atlassian.net/browse/PROJ-2

Markdown link: [see ticket](https://<site>.atlassian.net/browse/PROJ-2)

Code span: `https://<site>.atlassian.net/browse/PROJ-2`

Non-Atlassian: https://example.com/page'

Then read the stored ADF back:

GET /rest/api/3/issue/PROJ-1?fields=description

Expected behavior

The standalone browse URL becomes an inlineCard:

{ "type": "inlineCard", "attrs": { "url": "https://<site>.atlassian.net/browse/PROJ-2" } }

The markdown link, the code span, and the non-Atlassian URL are unchanged.

Actual behavior

The standalone browse URL is stored as a bare text node with no link mark at all — not merely a plain link:

{
  "type": "paragraph",
  "content": [
    { "type": "text", "text": "https://<site>.atlassian.net/browse/PROJ-2" }
  ]
}

The other three cases already behave as the acceptance criteria require, so only the standalone-URL path needs to change:

{
  "type": "text",
  "text": "see ticket",
  "marks": [{ "type": "link", "attrs": { "href": "https://<site>.atlassian.net/browse/PROJ-2" } }]
}
{ "type": "text", "text": "https://<site>.atlassian.net/browse/PROJ-2", "marks": [{ "type": "code" }] }

The non-Atlassian URL stays inline plain text.

Acceptance

Bare browse-URL on its own → inlineCard; [text](url), code spans, and non-Atlassian URLs unchanged.

Status

Still reproduces on 1.3.169, verified 2026-09-03 against Jira Cloud with the reproduction above. The version at original reporting time was not recorded.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions