authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-03-09 15:12:42-07:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-03-09 15:20:07-07:00
log3a86b60680f147ef1420558548354bbfa0253f5b
tree5ff58300226761a03a8e5a479403da812b6be3ff
parenteb7c428a2d3438f2ba72fb83c5df750236517a77

Render collapsed plan preview directly as markdown

- remove deferred collapsed preview state in `ProposedPlanCard` - always render collapsed preview with `ChatMarkdown` for simpler, consistent display

1 files changed, 1 insertions(+), 25 deletions(-)

apps/web/src/components/ChatView.tsx+1-25
......@@ -31,7 +31,6 @@ import {
3131} from "@t3tools/shared/model";
3232import {
3333 memo,
34 startTransition,
3534 useCallback,
3635 useEffect,
3736 useLayoutEffect,
......@@ -4765,7 +4764,6 @@ const ProposedPlanCard = memo(function ProposedPlanCard({
47654764 const [isSaveDialogOpen, setIsSaveDialogOpen] = useState(false);
47664765 const [savePath, setSavePath] = useState("");
47674766 const [isSavingToWorkspace, setIsSavingToWorkspace] = useState(false);
4768 const [renderCollapsedMarkdown, setRenderCollapsedMarkdown] = useState(false);
47694767 const savePathInputId = useId();
47704768 const title = proposedPlanTitle(planMarkdown) ?? "Proposed plan";
47714769 const lineCount = planMarkdown.split("\n").length;
......@@ -4777,22 +4775,6 @@ const ProposedPlanCard = memo(function ProposedPlanCard({
47774775 const downloadFilename = buildProposedPlanMarkdownFilename(planMarkdown);
47784776 const saveContents = normalizePlanMarkdownForExport(planMarkdown);
47794777
4780 useEffect(() => {
4781 if (!canCollapse || expanded) {
4782 setRenderCollapsedMarkdown(false);
4783 return;
4784 }
4785 setRenderCollapsedMarkdown(false);
4786 const frame = window.requestAnimationFrame(() => {
4787 startTransition(() => {
4788 setRenderCollapsedMarkdown(true);
4789 });
4790 });
4791 return () => {
4792 window.cancelAnimationFrame(frame);
4793 };
4794 }, [canCollapse, expanded, collapsedPreview]);
4795
47964778 const handleDownload = () => {
47974779 downloadPlanAsTextFile(downloadFilename, saveContents);
47984780 };
......@@ -4880,13 +4862,7 @@ const ProposedPlanCard = memo(function ProposedPlanCard({
48804862 <div className="mt-4">
48814863 <div className={cn("relative", canCollapse && !expanded && "max-h-104 overflow-hidden")}>
48824864 {canCollapse && !expanded ? (
4883 renderCollapsedMarkdown ? (
4884 <ChatMarkdown text={collapsedPreview ?? ""} cwd={cwd} isStreaming={false} />
4885 ) : (
4886 <pre className="whitespace-pre-wrap wrap-break-word text-sm leading-relaxed text-foreground/80">
4887 {collapsedPreview}
4888 </pre>
4889 )
4865 <ChatMarkdown text={collapsedPreview ?? ""} cwd={cwd} isStreaming={false} />
48904866 ) : (
48914867 <ChatMarkdown text={displayedPlanMarkdown} cwd={cwd} isStreaming={false} />
48924868 )}