fix(renderer): subscribe ConsoleView to logRevision to trigger re-render (D-04)
logRevision was bumped on every run-log event but no component subscribed, so ref mutations to logBufferRef never triggered a re-render -- the console pre stayed stale until something else forced a render. Subscribe to logRevision via useAppStore and depend on it in the useMemo that reads logBufferRef, keeping the ref-based buffer (cheap writes) while restoring re-renders.
This commit is contained in:
1 parent
0119872db6
commit
0123103f58
1 file changed
+11
-1
@@ -1,8 +1,10 @@
|
||||
import { useMemo } from "react";
|
||||
import { AnimatePresence, motion } from "framer-motion";
|
||||
import { FolderOpen, TerminalWindow, X } from "@phosphor-icons/react";
|
||||
import type { RunRecord } from "@shared/types";
|
||||
import { ActionButton, Select, StatusPill } from "../components/ui";
|
||||
import { formatMoney, formatTime } from "../lib/formatters";
|
||||
import { useAppStore } from "../state/store";
|
||||
|
||||
interface ConsoleViewProps {
|
||||
consoleOpen: boolean;
|
||||
@@ -27,6 +29,14 @@ export function ConsoleView({
|
||||
panelTransition,
|
||||
t,
|
||||
}: ConsoleViewProps) {
|
||||
const logRevision = useAppStore((s) => s.logRevision);
|
||||
const logBuffer = useMemo(
|
||||
() => (selectedRun ? logBufferRef.current[selectedRun.id] ?? "" : ""),
|
||||
// logRevision is intentionally part of deps: it bumps on every run-log
|
||||
// push into the ref, forcing this memo (and this component) to re-evaluate
|
||||
// the ref contents on re-render.
|
||||
[selectedRun, logRevision, logBufferRef],
|
||||
);
|
||||
return (
|
||||
<AnimatePresence>
|
||||
{consoleOpen ? (
|
||||
@@ -96,7 +106,7 @@ export function ConsoleView({
|
||||
</div>
|
||||
<div className="h-[200px] overflow-auto px-5 py-3">
|
||||
<pre className="font-mono whitespace-pre-wrap break-all text-[12px] leading-relaxed text-muted-foreground">
|
||||
{selectedRun ? logBufferRef.current[selectedRun.id] ?? t("common.waitingForLog") : t("common.noRunSelected")}
|
||||
{selectedRun ? (logBuffer || t("common.waitingForLog")) : t("common.noRunSelected")}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user