Add account based multiplayer hosting and bug report retention

This commit is contained in:
2026-10-10 16:24:34 +05:00
parent 9af71c85c2
commit fc6da6756d
33 changed files with 1538 additions and 102 deletions

View File

@@ -218,7 +218,10 @@ export function SupportInbox({ pagePath }: { pagePath: string }) {
{inbox.reports.map((report) => (
<li key={report.id}>
<Link href={`/support/${report.id}`}>
<strong>{report.title}</strong>
<strong>
{report.title}
{report.state === "done" && <> · {t("Done")}</>}
</strong>
<small>
{formatDate(report.created_at)} ·{" "}
{report.linear_identifier ??
@@ -331,6 +334,47 @@ export function SupportConversation({ id }: { id: string }) {
{report.linear_identifier ?? t("Waiting for support")}
</span>
<h1>{report.title}</h1>
{report.state === "done" && (
<div role="status">
<p>
<strong>{t("Done")}</strong> ·{" "}
{t(
"This report is closed and will be deleted from MineGeo and Linear after three days.",
)}
</p>
{report.delete_after && (
<p>
{t("Scheduled deletion")}: {formatDate(report.delete_after)}
</p>
)}
{!report.linear_done_synced && (
<p>{t("Syncing Done status with Linear…")}</p>
)}
{report.cleanup_error && (
<p className="error-message">
{t(
"Support cleanup paused. The support team may need to update Linear permissions.",
)}{" "}
<button
className="text-link"
disabled={busy}
onClick={() => void action("retry-cleanup", {})}
>
{t("Retry")}
</button>
</p>
)}
</div>
)}
{report.state === "open" && (
<button
className="button"
disabled={busy}
onClick={() => void action("close", {})}
>
{t("Close report")}
</button>
)}
{report.state === "pending" && (
<p role="status">
{t("Your report is saved. We’re connecting it to support.")}
@@ -432,7 +476,7 @@ export function SupportConversation({ id }: { id: string }) {
</article>
))}
</div>
{report.state !== "draft" && (
{report.state !== "draft" && report.state !== "done" && (
<form
onSubmit={(event) => {
event.preventDefault();