diff --git a/src/lib/components/chat/OpenReasoningResults.svelte b/src/lib/components/chat/OpenReasoningResults.svelte
index b6c28e6b063..7720ec0d10c 100644
--- a/src/lib/components/chat/OpenReasoningResults.svelte
+++ b/src/lib/components/chat/OpenReasoningResults.svelte
@@ -16,7 +16,27 @@
- Reasoning
@@ -41,16 +61,14 @@
display: none;
}
- :global(.animate-spin-slow) {
- animation: spin 3s linear infinite;
+ .loading-path {
+ stroke-dasharray: 61.45;
+ animation: loading 2s linear infinite;
}
- @keyframes spin {
- from {
- transform: rotate(0deg);
- }
+ @keyframes loading {
to {
- transform: rotate(360deg);
+ stroke-dashoffset: 122.9;
}
}
diff --git a/src/lib/server/textGeneration/generate.ts b/src/lib/server/textGeneration/generate.ts
index af14fe5647c..ece4528dccb 100644
--- a/src/lib/server/textGeneration/generate.ts
+++ b/src/lib/server/textGeneration/generate.ts
@@ -22,6 +22,7 @@ export async function* generate(
let reasoningBuffer = "";
let lastReasoningUpdate = new Date();
let status = "";
+ const startTime = new Date();
if (
model.reasoning &&
(model.reasoning.type === "regex" || model.reasoning.type === "summarize")
@@ -90,7 +91,7 @@ Do not use prefixes such as Response: or Answer: when answering to the user.`,
yield {
type: MessageUpdateType.Reasoning,
subtype: MessageReasoningUpdateType.Status,
- status: "Done reasoning.",
+ status: `Done in ${Math.round((new Date().getTime() - startTime.getTime()) / 1000)}s.`,
};
}
@@ -118,7 +119,7 @@ Do not use prefixes such as Response: or Answer: when answering to the user.`,
yield {
type: MessageUpdateType.Reasoning,
subtype: MessageReasoningUpdateType.Status,
- status: "Done reasoning.",
+ status: `Done in ${Math.round((new Date().getTime() - startTime.getTime()) / 1000)}s.`,
};
}
}