Repository navigation
Description
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://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.altattribute dropped.widthandheightsurvive in the stored HTML butaltdoes 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
hrefis an AWS presigned URL withX-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
- Connect a GitHub repo to a Plane workspace via the official GitHub integration. Set sync to bidirectional.
- Create a GitHub issue with body containing an
<img>referencing a GH user-attachments URL. Apply thePlanelabel. - Within seconds the Plane work item has stored HTML with the anchor-wrapped
<image-component>form shown above. - 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