Compare commits
2 Commits
eeb0920afd
...
v1.15.17
| Author | SHA1 | Date | |
|---|---|---|---|
| 7d6d34dd7b | |||
| 1f0de18755 |
@@ -154,6 +154,16 @@ jobs:
|
||||
run: |
|
||||
echo "${{ secrets.REGISTRY_PASS }}" | docker login registry.infra.mintel.me -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||
|
||||
- name: Clean runner
|
||||
run: |
|
||||
echo "Disk space before prune:"
|
||||
df -h
|
||||
docker system prune -af --volumes
|
||||
docker builder prune -af
|
||||
echo "Disk space after prune:"
|
||||
df -h
|
||||
continue-on-error: true
|
||||
|
||||
- name: 🏗️ Build and Push
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
|
||||
11
Dockerfile
11
Dockerfile
@@ -72,17 +72,14 @@ WORKDIR /app
|
||||
|
||||
# Copy standalone output and static files (Monorepo paths)
|
||||
# Note: Base image already handles the non-root user and basic env
|
||||
COPY --from=builder /app/apps/web/public ./apps/web/public
|
||||
COPY --from=builder /app/apps/web/.next/standalone ./
|
||||
COPY --from=builder /app/apps/web/.next/static ./apps/web/.next/static
|
||||
COPY --from=builder --chown=1001:65533 /app/apps/web/public ./apps/web/public
|
||||
COPY --from=builder --chown=1001:65533 /app/apps/web/.next/standalone ./
|
||||
COPY --from=builder --chown=1001:65533 /app/apps/web/.next/static ./apps/web/.next/static
|
||||
|
||||
# Explicitly copy Payload dynamically generated importMap.js excluded by Standalone tracing
|
||||
COPY --from=builder /app/apps/web/app/(payload)/admin/importMap.js ./apps/web/app/(payload)/admin/importMap.js
|
||||
COPY --from=builder --chown=1001:65533 /app/apps/web/app/(payload)/admin/importMap.js ./apps/web/app/(payload)/admin/importMap.js
|
||||
|
||||
# Fix permissions for the non-root user (Standard uid/gid from base image)
|
||||
# We do this as root before switching users
|
||||
USER root
|
||||
RUN chown -R 1001:65533 /app
|
||||
USER nextjs
|
||||
|
||||
# Start from the app directory to ensure references solve correctly
|
||||
|
||||
@@ -246,6 +246,7 @@ export function ContactForm({
|
||||
onBack={() => setFlow("discovery")} // Can keep, but won't be seen if we hide button
|
||||
onSubmit={() => handleSubmit()}
|
||||
isSubmitting={isSubmitting}
|
||||
error={error}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ interface DirectMessageFlowProps {
|
||||
onBack: () => void;
|
||||
onSubmit: () => void;
|
||||
isSubmitting: boolean;
|
||||
error?: string | null;
|
||||
}
|
||||
|
||||
export const DirectMessageFlow = ({
|
||||
@@ -57,10 +58,32 @@ export const DirectMessageFlow = ({
|
||||
onBack,
|
||||
onSubmit,
|
||||
isSubmitting,
|
||||
error,
|
||||
}: DirectMessageFlowProps) => {
|
||||
return (
|
||||
<div className="w-full max-w-3xl mx-auto px-4 py-12">
|
||||
<div className="space-y-12">
|
||||
{error && (
|
||||
<Reveal width="100%" delay={0.1}>
|
||||
<div className="bg-red-50 border border-red-100 rounded-2xl p-6 flex items-start gap-4 mb-8">
|
||||
<div className="p-2 bg-red-100 rounded-lg text-red-600">
|
||||
<Mail size={20} className="animate-pulse" />
|
||||
</div>
|
||||
<div className="space-y-1">
|
||||
<h3 className="text-red-900 font-bold text-sm uppercase tracking-wider">
|
||||
Übertragungsfehler
|
||||
</h3>
|
||||
<p className="text-red-700/80 font-medium text-base">
|
||||
{error}
|
||||
</p>
|
||||
<div className="mt-2 text-[10px] font-mono text-red-400 uppercase tracking-widest">
|
||||
Status: FEHLER_BEI_SEQUENZ_INIT
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Reveal>
|
||||
)}
|
||||
|
||||
<Reveal width="100%" delay={0.2}>
|
||||
<div className="space-y-4">
|
||||
<span className="text-[10px] font-mono text-green-600 uppercase tracking-[0.3em] font-bold">
|
||||
|
||||
@@ -45,11 +45,23 @@ export async function sendEmail({
|
||||
subject,
|
||||
html,
|
||||
}: SendEmailOptions) {
|
||||
const recipients = to || env.MAIL_RECIPIENTS;
|
||||
let recipients = to || env.MAIL_RECIPIENTS;
|
||||
let from = env.MAIL_FROM;
|
||||
|
||||
if (!from) {
|
||||
from = "info@mintel.me";
|
||||
console.warn("MAIL_FROM is empty. Using fallback: info@mintel.me");
|
||||
}
|
||||
|
||||
if (!recipients) {
|
||||
recipients = "marc@mintel.me";
|
||||
console.warn("MAIL_RECIPIENTS is empty. Using fallback: marc@mintel.me");
|
||||
}
|
||||
|
||||
const transporter = getTransporter();
|
||||
|
||||
const mailOptions = {
|
||||
from: env.MAIL_FROM,
|
||||
from,
|
||||
to: recipients,
|
||||
replyTo,
|
||||
subject,
|
||||
|
||||
Reference in New Issue
Block a user