Improvements: remove dead config, fix ESM, add URL validation, unify types, add missing logging
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m52s

- Remove .prettierrc (dead config, Biome replaces Prettier)
- Rename lighthouserc.json to lighthouserc.cjs with module.exports for ESM compat
- Add logger.warn to empty catch blocks in auth, register, site-settings, prisma-cache, redis, security, rate-limit
- Unify ActionResult type: action-helper.ts uses 'ok' consistent with safe-action-shared.ts
- Add noUnusedLocals + noUnusedParameters to tsconfig + fix 25 pre-existing unused vars
- Replace barrel export src/types/index.ts with direct @/types/common imports
- Make trustHost conditional (development only) in auth.ts
- Add pre-flight URL validation to update-Nitrov3.sh to catch image.library.url misconfigurations
- Improve NITRO_IMAGE_LIBRARY_URL content validation in pre-flight & post-compute checks
This commit is contained in:
openhands committed 2026-07-26 20:28:11 +02:00
1 parent b922f6d49f
commit 17847545dd
292 files changed
+69195 -67915

No files matched your search

@@ -4,8 +4,8 @@ import { getTranslations } from "next-intl/server";
import type { CSSProperties } from "react";
import { replyToThread } from "@/actions/social";
import { ContentCard, EmptyState } from "@/components/public/ui";
import { formatDate } from "@/lib/format-date";
import { auth } from "@/lib/auth";
import { formatDate } from "@/lib/format-date";
import { prisma } from "@/lib/prisma";
export const revalidate = 60;
@@ -216,7 +216,9 @@ export default async function GuildForumThreadPage({
)}
</span>
<span className="muted" style={{ fontSize: "0.85rem" }}>
{formatDate(post.createdAt ? new Date(post.createdAt * 1000) : null)}
{formatDate(
post.createdAt ? new Date(post.createdAt * 1000) : null,
)}
</span>
</div>
<p
@@ -236,7 +238,11 @@ export default async function GuildForumThreadPage({
</ContentCard>
{canReply ? (
<ContentCard icon="✍️" title={t("replyTitle")} subtitle={t("replySubtitle")}>
<ContentCard
icon="✍️"
title={t("replyTitle")}
subtitle={t("replySubtitle")}
>
<form action={replyToThread}>
<input type="hidden" name="guildId" value={String(guild.id)} />
<input type="hidden" name="threadId" value={String(thread.id)} />
@@ -262,8 +268,7 @@ export default async function GuildForumThreadPage({
</p>
) : (
<p className="muted" style={{ margin: 0 }}>
{t("loginToReply")}{" "}
<Link href="/login">{t("loginLink")}</Link>
{t("loginToReply")} <Link href="/login">{t("loginLink")}</Link>
</p>
)}
</main>
+5 -2
View File
@@ -2,8 +2,8 @@ import Link from "next/link";
import { notFound } from "next/navigation";
import { getTranslations } from "next-intl/server";
import type { CSSProperties } from "react";
import { formatDate } from "@/lib/format-date";
import { ContentCard, EmptyState } from "@/components/public/ui";
import { formatDate } from "@/lib/format-date";
import { prisma } from "@/lib/prisma";
export const revalidate = 300;
@@ -190,7 +190,10 @@ export default async function GuildForumPage({
{t2.postsCount ?? 0}
</td>
<td className="muted" style={{ padding: "0.6rem 0.75rem" }}>
{formatDate(t2.createdAt ? new Date(t2.createdAt * 1000) : null, "date")}
{formatDate(
t2.createdAt ? new Date(t2.createdAt * 1000) : null,
"date",
)}
</td>
</tr>
);
+1 -1
View File
@@ -3,8 +3,8 @@ import { notFound } from "next/navigation";
import { getTranslations } from "next-intl/server";
import { ContentCard, EmptyState, StatBlock } from "@/components/public/ui";
import { avatarImageUrl } from "@/lib/format";
import { prisma } from "@/lib/prisma";
import { formatDate } from "@/lib/format-date";
import { prisma } from "@/lib/prisma";
import { siteSettings } from "@/lib/services/site-settings";
export const revalidate = 300;