fix: embed images inline in Gitea issues, fix retry dropping attachments (v0.51.6)
Two related bugs in the Gitea issue body: 1. Attachments were always plain bullet links (`- url`), even for images — so they never rendered as a preview in the Gitea issue, just a clickable URL. Image content-types now use markdown image embed (``). 2. The admin "Create Gitea issue" retry action built its own body from scratch (`ticket.description` only) and never queried attachments at all — a retry always lost them, regardless of point 1's fix. Extracted buildGiteaIssueBody() to lib/gitea.ts so both the initial ticket-creation path and the retry path share one body-building implementation instead of two independent (and inevitably diverging) ones. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// Mirrors CHANGELOG.md at the repo root — update both together.
|
||||
export const APP_VERSION = "0.51.5";
|
||||
export const APP_VERSION = "0.51.6";
|
||||
|
||||
export type ChangelogEntry = {
|
||||
version: string;
|
||||
@@ -11,6 +11,13 @@ export type ChangelogEntry = {
|
||||
};
|
||||
|
||||
export const CHANGELOG: ChangelogEntry[] = [
|
||||
{
|
||||
version: "0.51.6",
|
||||
date: "2026-07-19 13:20",
|
||||
fixed: [
|
||||
"Image attachments on support tickets now embed inline in the Gitea issue (rendered preview) instead of just a plain link. Also fixed the admin \"Create Gitea issue\" retry action, which was dropping attachments entirely and only ever sent the ticket description.",
|
||||
],
|
||||
},
|
||||
{
|
||||
version: "0.51.5",
|
||||
date: "2026-07-19 13:05",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { getSiteSetting } from "@/lib/site-settings";
|
||||
import { getPublicUrl } from "@/lib/storage";
|
||||
|
||||
const LABEL_NAMES: Record<string, string[]> = {
|
||||
bug: ["bug"],
|
||||
@@ -26,6 +27,27 @@ async function resolveLabelIds(baseUrl: string, token: string, repo: string, nam
|
||||
}
|
||||
}
|
||||
|
||||
/** Shared by ticket creation and the admin retry action, so a retry embeds
|
||||
* attachments exactly the same way the original attempt would have. Image
|
||||
* attachments embed inline (``) so they render as a preview in the
|
||||
* Gitea issue instead of just a clickable link — everything else (PDF,
|
||||
* text, zip) stays a plain link since Gitea can't preview those anyway. */
|
||||
export function buildGiteaIssueBody(opts: {
|
||||
description: string;
|
||||
userId: string;
|
||||
attachments: { key: string; contentType: string }[];
|
||||
}): string {
|
||||
const attachmentLines = opts.attachments.map((a) => {
|
||||
const url = getPublicUrl(a.key);
|
||||
return a.contentType.startsWith("image/") ? `` : `- ${url}`;
|
||||
});
|
||||
return [
|
||||
opts.description,
|
||||
attachmentLines.length > 0 ? `\n**Attachments:**\n${attachmentLines.join("\n")}` : "",
|
||||
`\n---\nReported via Epicure support form by user \`${opts.userId}\`.`,
|
||||
].join("\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens an issue on the configured Gitea repo for a support ticket. Returns
|
||||
* the issue's HTML URL on success, or null if Gitea isn't configured or the
|
||||
|
||||
Reference in New Issue
Block a user