Fix all build-breaking errors across codebase #4691
9 changed files+26−15
Modifiedsrc/app/(marketing)/_d8/D8Bits.tsx+16−1View fileUnifiedSplit
@@ -1,6 +1,6 @@
11import React from "react";
22
3export function D8Card(props: { children?: React.ReactNode }) {
3export function D8Card(props: { title?: string; body?: string; kicker?: string; children?: React.ReactNode }) {
44 return (
55 <div
66 style={{
@@ -11,6 +11,21 @@ export function D8Card(props: { children?: React.ReactNode }) {
1111 boxShadow: "0 18px 55px rgba(0,0,0,0.35)",
1212 }}
1313 >
14 {props.kicker && (
15 <div style={{ fontSize: 11, fontWeight: 900, letterSpacing: "0.18em", textTransform: "uppercase", color: "rgba(237,234,247,0.75)" }}>
16 {props.kicker}
17 </div>
18 )}
19 {props.title && (
20 <div style={{ marginTop: props.kicker ? 8 : 0, fontSize: 15, fontWeight: 900, color: "rgba(246,242,255,0.95)" }}>
21 {props.title}
22 </div>
23 )}
24 {props.body && (
25 <div style={{ marginTop: 8, fontSize: 13, lineHeight: 1.55, color: "rgba(237,234,247,0.72)" }}>
26 {props.body}
27 </div>
28 )}
1429 {props.children}
1530 </div>
1631 );
Modifiedsrc/app/_client/D8TV.tsx+0−3View fileUnifiedSplit
@@ -12,9 +12,6 @@ export type D8SectionProps = {
1212};
1313
1414export function D8Section(props: D8SectionProps) {
15 tone?: string;
16 lead?: string;
17 eyebrow?: string;
1815 const { title, subtitle, children, id } = props;
1916
2017 // Keep server-safe: no "use client", no browser-only APIs.
Modifiedsrc/app/admin/marketing-queue/page.tsx+1−1View fileUnifiedSplit
@@ -128,7 +128,7 @@ export default function Page() {
128128
129129 const [scheduleLocal, setScheduleLocal] = useState(""); // datetime-local
130130
131 const headers = useMemo(() => (token ? { "x-admin-token": token } : {}), [token]);
131 const headers = useMemo<Record<string, string>>(() => (token ? { "x-admin-token": token } : ({} as Record<string, string>)), [token]);
132132
133133 async function refresh() {
134134 setErr(null);
Modifiedsrc/app/api/__probe__/route.ts+1−1View fileUnifiedSplit
@@ -4,7 +4,7 @@ export const runtime = "nodejs";
44export const dynamic = "force-dynamic";
55
66function safeEnv(name: string): string | null {
7 try: any {
7 try {
88 // @ts-ignore
99 const v = process?.env?.[name];
1010 return typeof v === "string" && v.length ? v : null;
Modifiedsrc/app/page.tsx+0−5View fileUnifiedSplit
@@ -1,8 +1,3 @@
1// === D8_AUTOREPAIR_DEMO_START ===
2// Intentionally missing import to demonstrate Auto Repair fixing a build.
3// This produces a deterministic "Module not found" error with zero UI impact.
4import AutoRepairDemoWidget from "./_client/AutoRepairDemoWidget";
5// === D8_AUTOREPAIR_DEMO_END ===
61export const dynamic = "force-dynamic";
72export const revalidate = 0;
83
Modifiedsrc/app/video/_client/VideoStudioClient.tsx+3−2View fileUnifiedSplit
@@ -167,6 +167,7 @@ export default function VideoStudioClient() {
167167
168168 const durations = shots.map(s => Math.max(2, Math.min(12, Math.floor(s.durationSec || 6))));
169169 let t0 = performance.now();
170 const validCtx = ctx;
170171
171172 function tick() {
172173 const elapsed = (performance.now() - t0) / 1000;
@@ -178,7 +179,7 @@ export default function VideoStudioClient() {
178179 }
179180 if (idx >= durations.length) {
180181 setActiveIndex(durations.length - 1);
181 drawFrame(ctx, w, h, shots[durations.length - 1], 1);
182 drawFrame(validCtx, w, h, shots[durations.length - 1], 1);
182183 stopAnimation();
183184 if (previewOnly) setStatus("ready");
184185 return;
@@ -186,7 +187,7 @@ export default function VideoStudioClient() {
186187 setActiveIndex(idx);
187188 const local = elapsed - acc;
188189 const p = Math.max(0, Math.min(1, local / durations[idx]));
189 drawFrame(ctx, w, h, shots[idx], p);
190 drawFrame(validCtx, w, h, shots[idx], p);
190191 rafRef.current = requestAnimationFrame(tick);
191192 }
192193
Modifiedsrc/lib/d8kv.ts+3−0View fileUnifiedSplit
@@ -50,4 +50,7 @@ export function d8Key_bundleRun(projectId: string, runId: string) {
5050}
5151export function d8Key_patchLatest(projectId: string) {
5252 return `agentPatch:project:${projectId}:latest`;
53}
54export function projectVideoKey(projectId: string) {
55 return `projectVideo:project:${projectId}`;
5356}
\ No newline at end of file
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts