Merge branch 'canary' into feat/tailwind-v4-shadcn-update

This commit is contained in:
Mauricio Siu
2026-06-29 12:25:19 -06:00
7 changed files with 57 additions and 3 deletions

View File

@@ -763,6 +763,37 @@ export const AddDomain = ({ id, type, domainId = "", children }: Props) => {
<SelectItem value={"custom"}>Custom</SelectItem>
</SelectContent>
</Select>
<FormDescription>
{field.value === "none" && (
<>
<strong>None</strong> serves TLS using any
certificate you created in the{" "}
<Link
href="/dashboard/settings/certificates"
className="text-primary"
>
Certificates
</Link>{" "}
section whose CN/SAN matches this host —
Traefik selects it automatically via SNI.
</>
)}
{field.value === "letsencrypt" && (
<>
<strong>Let's Encrypt</strong> auto-provisions
a certificate automatically for this host.
</>
)}
{field.value === "custom" && (
<>
<strong>Custom</strong> uses a Traefik cert
resolver by name (defined in your static
configuration).
</>
)}
{!field.value &&
"Select a certificate provider to see how TLS will be served for this host."}
</FormDescription>
<FormMessage />
</FormItem>
);
@@ -777,10 +808,19 @@ export const AddDomain = ({ id, type, domainId = "", children }: Props) => {
return (
<FormItem>
<FormLabel>Custom Certificate Resolver</FormLabel>
<FormDescription>
Enter the <strong>name</strong> of a Traefik
cert resolver defined in your static
configuration (e.g. <code>letsencrypt</code>)
not certificate or private key content. To use a
certificate you pasted in the Certificates
section, choose <strong>None</strong> instead
and Traefik will match it by SNI.
</FormDescription>
<FormControl>
<Input
className="w-full"
placeholder="Enter your custom certificate resolver"
placeholder="e.g. letsencrypt"
{...field}
value={field.value || ""}
onChange={(e) => {

View File

@@ -187,6 +187,7 @@ export default function Home({ IS_CLOUD, enforceSSO }: Props) {
{IS_CLOUD && <SignInWithGoogle />}
<Form {...loginForm}>
<form
method="post"
onSubmit={loginForm.handleSubmit(onSubmit)}
className="space-y-4"
id="login-form"
@@ -268,6 +269,7 @@ export default function Home({ IS_CLOUD, enforceSSO }: Props) {
) : (
<>
<form
method="post"
onSubmit={onTwoFactorSubmit}
className="space-y-4"
id="two-factor-form"
@@ -342,7 +344,11 @@ export default function Home({ IS_CLOUD, enforceSSO }: Props) {
</DialogDescription>
</DialogHeader>
<form onSubmit={onBackupCodeSubmit} className="space-y-4">
<form
method="post"
onSubmit={onBackupCodeSubmit}
className="space-y-4"
>
<div className="flex flex-col gap-2">
<Label>Backup Code</Label>
<Input

View File

@@ -172,6 +172,7 @@ const Register = ({ isCloud }: Props) => {
)}
<Form {...form}>
<form
method="post"
onSubmit={form.handleSubmit(onSubmit)}
className="grid gap-4"
>

View File

@@ -123,6 +123,7 @@ export default function Home({ tokenResetPassword }: Props) {
)}
<Form {...form}>
<form
method="post"
onSubmit={form.handleSubmit(onSubmit)}
className="grid gap-4"
>

View File

@@ -110,6 +110,7 @@ export default function Home() {
{!temp.is2FAEnabled ? (
<Form {...form}>
<form
method="post"
onSubmit={form.handleSubmit(onSubmit)}
className="grid gap-4"
>

View File

@@ -243,7 +243,11 @@ export const deploymentRouter = createTRPCRouter({
}
const command = `tail -n ${input.tail} "${deployment.logPath}" 2>/dev/null || echo ""`;
const serverId = deployment.serverId || deployment.schedule?.serverId;
const serverId =
deployment.serverId ||
deployment.schedule?.serverId ||
deployment.application?.serverId ||
deployment.compose?.serverId;
if (serverId) {
const { stdout } = await execAsyncRemote(serverId, command);
return stdout;

View File

@@ -84,6 +84,7 @@ export const findDeploymentById = async (deploymentId: string) => {
where: eq(deployments.deploymentId, deploymentId),
with: {
application: true,
compose: true,
schedule: true,
},
});