fix(FN-2586): restore 0.4.x release line and agent log stability
This commit is contained in:
@@ -185,26 +185,6 @@ export function AgentLogViewer({
|
||||
}
|
||||
}, [isFullscreen, handleKeyDown]);
|
||||
|
||||
if (loading && entries.length === 0) {
|
||||
return (
|
||||
<div className="agent-log-viewer" data-testid="agent-log-viewer">
|
||||
<div className="agent-log-loading">Loading agent logs…</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (entries.length === 0) {
|
||||
return (
|
||||
<div className="agent-log-viewer" data-testid="agent-log-viewer">
|
||||
<div className="agent-log-empty">No agent output yet.</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Reverse entries so newest appear first
|
||||
const reversedEntries = [...entries].reverse();
|
||||
const reversedEntryKeys = [...chronologicalEntryKeys].reverse();
|
||||
|
||||
const hasExecutorOverride = executorModel?.provider && executorModel?.modelId;
|
||||
const hasValidatorOverride = validatorModel?.provider && validatorModel?.modelId;
|
||||
const hasPlanningOverride = planningModel?.provider && planningModel?.modelId;
|
||||
@@ -242,6 +222,26 @@ export function AgentLogViewer({
|
||||
planningModel,
|
||||
]);
|
||||
|
||||
if (loading && entries.length === 0) {
|
||||
return (
|
||||
<div className="agent-log-viewer" data-testid="agent-log-viewer">
|
||||
<div className="agent-log-loading">Loading agent logs…</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (entries.length === 0) {
|
||||
return (
|
||||
<div className="agent-log-viewer" data-testid="agent-log-viewer">
|
||||
<div className="agent-log-empty">No agent output yet.</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Reverse entries so newest appear first
|
||||
const reversedEntries = [...entries].reverse();
|
||||
const reversedEntryKeys = [...chronologicalEntryKeys].reverse();
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={containerRef}
|
||||
|
||||
@@ -36,6 +36,19 @@ describe("AgentLogViewer", () => {
|
||||
expect(screen.getByText("No agent output yet.")).toBeTruthy();
|
||||
});
|
||||
|
||||
it("rerenders from empty state to populated logs without changing hook order", () => {
|
||||
const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
||||
const entry = makeEntry({ text: "streamed chunk" });
|
||||
const { rerender } = render(<AgentLogViewer entries={[]} loading={false} />);
|
||||
|
||||
expect(() => {
|
||||
rerender(<AgentLogViewer entries={[entry]} loading={false} />);
|
||||
}).not.toThrow();
|
||||
|
||||
expect(screen.getByText("streamed chunk")).toBeTruthy();
|
||||
consoleErrorSpy.mockRestore();
|
||||
});
|
||||
|
||||
it("renders text entries as spans in reverse order (newest first)", () => {
|
||||
const entries = [
|
||||
makeEntry({ text: "first chunk" }),
|
||||
|
||||
Reference in New Issue
Block a user