Diff
1diff --git a/index.ts b/index.ts
2index 777a9ed8c51605ff637a6bd0ab71ab373c78757c..507e3c3dc3c5c38b33fbb19ec9b49630099849bd 100644
3--- a/index.ts
4+++ b/index.ts
5@@ -195,6 +195,14 @@ export default async function (pi: ExtensionAPI) {
6
7 const discoveredMetadata = new Set<string>();
8 const pendingMetadata = new Set<string>();
9+ let statusTimeout: ReturnType<typeof setTimeout> | undefined;
10+
11+ function clearFooterStatusTimeout(): void {
12+ if (statusTimeout !== undefined) {
13+ clearTimeout(statusTimeout);
14+ statusTimeout = undefined;
15+ }
16+ }
17
18 async function discoverModelMetadata(
19 modelId: string,
20@@ -225,8 +233,13 @@ export default async function (pi: ExtensionAPI) {
21 const controller = new AbortController();
22 const timer = setTimeout(() => controller.abort(), timeoutMs);
23 const propsUrl = `${baseUrl.replace(/\/v1$/, "")}/props?model=${encodeURIComponent(modelId)}&autoload=${autoload}`;
24- const clearFooterStatusLater = () =>
25- setTimeout(() => ctx?.ui.setStatus(PROVIDER_ID, undefined), 8000);
26+ const clearFooterStatusLater = () => {
27+ clearFooterStatusTimeout();
28+ statusTimeout = setTimeout(() => {
29+ statusTimeout = undefined;
30+ ctx?.ui.setStatus(PROVIDER_ID, undefined);
31+ }, 8000);
32+ };
33
34 try {
35 if (autoload && ctx) {
36@@ -317,4 +330,8 @@ export default async function (pi: ExtensionAPI) {
37 void discoverModelMetadata(modelId, ctx, true, PROPS_TIMEOUT_MS, activeModel);
38 }
39 });
40+
41+ pi.on("session_shutdown", () => {
42+ clearFooterStatusTimeout();
43+ });
44 }