Skip to content

Preserve balanced parentheses in rendered Markdown link destinations #37

Closed

Description

@armstrongsam25

The regex for Markdown destinations stops at the first closing parenthesis. A normal link such as https://example.test/A_(B) becomes a link to https://example.test/A_(B with an extra visible closing parenthesis. Fix bounded destination parsing while keeping escape-first rendering and the existing URL allowlist.

Bounty: 50 points · Priority: P3 · Type: confirmed-bug

Points only; no monetary payment.

Review ID: AP-12 · Reviewed revision: b375588301b8

Acceptance criteria

  • Add bounded balanced-parenthesis/escaped-parenthesis parsing for supported inline links without permitting raw HTML.
  • Cover common documentation/Wikipedia URLs, nested parentheses, escaped closing characters, malformed input and surrounding emphasis/code.
  • Retain unsafe-scheme rejection, attribute escaping and forged-fragment protections; run Markdown renderer tests and coverage.

Evidence at the reviewed revision

Verification and limits

Confirmed inline_md reproduction using a synthetic URL; no network navigation performed.

Activity

  1. github-actions commented on Oct 2, 2026

    @github-actions

    @makar52nn2016-jpg claim status: rejected. Finish or release your existing bounty first.

    One active task per contributor. Reservations last seven days. Post a new /unclaim comment here to release yours. Use Closes #N in your PR description. A configured maintainer’s merge awards points automatically, including their own work. Points have no cash value.

  2. xiasan1992 commented on Oct 3, 2026

    @xiasan1992

    /claim

  3. github-actions commented on Oct 3, 2026

    @github-actions

    @xiasan1992 claim status: released. This reservation is no longer active. Choose an available task and post a new /claim comment.

    One active task per contributor. Reservations last seven days. Post a new /unclaim comment here to release yours. Use Closes #N in your PR description. A configured maintainer’s merge awards points automatically, including their own work. Points have no cash value.

  4. xiasan1992 commented on Oct 3, 2026

    @xiasan1992

    /claim

    I will add bounded balanced-parenthesis parsing for inline Markdown destinations and regression coverage for nested/escaped parentheses, malformed input, and surrounding formatting while preserving scheme, HTML, escaping, and fragment protections.

  5. github-actions commented on Oct 3, 2026

    @github-actions

    @xiasan1992 claim status: released. This reservation is no longer active. Choose an available task and post a new /claim comment.

    One active task per contributor. Reservations last seven days. Post a new /unclaim comment here to release yours. Use Closes #N in your PR description. A configured maintainer’s merge awards points automatically, including their own work. Points have no cash value.

  6. xiasan1992 commented on Oct 3, 2026

    @xiasan1992

    /unclaim

  7. github-actions commented on Oct 3, 2026

    @github-actions

    @xiasan1992 claim status: released. This reservation is no longer active. Choose an available task and post a new /claim comment.

    One active task per contributor. Reservations last seven days. Post a new /unclaim comment here to release yours. Use Closes #N in your PR description. A configured maintainer’s merge awards points automatically, including their own work. Points have no cash value.

  8. xiasan1992 commented on Oct 3, 2026

    @xiasan1992

    The original /claim remains queued even though the coordinator ledger currently lists it as active. I posted /unclaim at 2026-10-03 15:59Z; its receipt is also still queued, and the later claim on AstralPrimitives #14 is pending. I have not started implementation because the bot requires Reserved. Could the claims reconcile the release or confirm the active reservation state?

  9. armstrongsam25 commented on Oct 5, 2026

    @armstrongsam25
    ContributorAuthor

    @xiasan1992 The current bot receipts here now mark both your claim and /unclaim as released. Your later AstralPrimitives #14 receipt confirms Reserved and assigned until 2026-10-10T21:42:39.940Z. That resolves the queued status described in your comment; keep #14 as your one active reservation. Technical review of PR #44 remains separate and still requires the bounded-work correction.

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

    bountyApproved points-based community taskpoints:5050 recognition pointspriority:P3Lower prioritytrack:reusabilityIndependent reusable components

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions