Skip to content

GitHub <img> tags lose alt, replaced with auth-gated silo URLs #9073

Open

Description

@aspiers

Affected: Plane Cloud, official GitHub integration. See also: meta-issue on destructive overwrite (issue 01).

Symptom

Inline HTML <img> tags pointing at GitHub-hosted assets are destroyed by a GH→Plane import + Plane→GH round-trip.

Input (GH markdown):

<img width="746" height="253" alt="Screenshot of chart"
     src="https://github.com/user-attachments/assets/<uuid>" />

Plane stored HTML (image mirrored into Plane's silo asset store, wrapped in an anchor pointing at a 5-minute AWS presigned URL):

<a target="_blank" href="https://private-user-images.githubusercontent.com/.../?jwt=...&X-Amz-Expires=300...">
  <image-component src="<plane-asset-uuid>" width="746" height="253"></image-component>
</a>

Pushed back to GH markdown:

[![](https://silo.plane.so/api/assets/github/<workspace>/<user>/<asset>)](https://private-user-images.githubusercontent.com/.../?jwt=...)

Four distinct issues

  • <img> HTML form is destroyed. GitHub renders native HTML <img> tags inline; the round-trip converts to markdown image syntax which loses HTML attributes.
  • alt attribute dropped. width and height survive in the stored HTML but alt does not. This is a real accessibility regression for screen-reader users on both sides of the sync.
  • Silo URL requires Plane workspace auth. The silo.plane.so/api/assets/... URL is gated behind Plane authentication. It breaks for any GitHub viewer not signed into that Plane workspace — i.e. essentially everyone reading the issue on GitHub.
  • AWS fallback expires after 5 minutes. The anchor's href is an AWS presigned URL with X-Amz-Expires=300. Within minutes of the round-trip, even the fallback link errors.

Impact

Images embedded in issues become unviewable on GitHub within minutes of any Plane→GH push. The original GH-hosted asset URL that humans pasted is gone from the body and cannot be recovered from the rendered GitHub page.

Ask

Preserve raw <img> HTML tags that point at GitHub-hosted assets, including their width / height / alt attributes.

At minimum, do not wrap them in an anchor pointing at a short-lived AWS presigned URL.

Reproduction

  1. Connect a GitHub repo to a Plane workspace via the official GitHub integration. Set sync to bidirectional.
  2. Create a GitHub issue with body containing an <img> referencing a GH user-attachments URL. Apply the Plane label.
  3. Within seconds the Plane work item has stored HTML with the anchor-wrapped <image-component> form shown above.
  4. To exercise the destructive Plane→GH push, follow the trigger recipe in meta-issue 01. Wait >5 minutes after the push and reload the GH issue: the fallback URL errors.

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions