From 24f551a39eae849d891da26cc91f90d354e3a2db Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sun, 12 Jul 2026 02:44:05 +0800
Subject: [PATCH] chore(mas): refresh codebase memory after split

---
 C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte
index e2b9d09..9466e90 100644
--- a/C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte
+++ b/C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte
@@ -1,6 +1,7 @@
 <script lang="ts">
   import { onMount } from 'svelte'
   import { Call } from '@wailsio/runtime'
+  import TextOutputFallbackPanel from './TextOutputFallbackPanel.svelte'
   import { t } from '../../lib/i18n'
 
   interface PermissionStatus {
@@ -14,11 +15,18 @@
 
   let statuses = $state<PermissionStatus[]>([])
   let loading = $state(true)
+  let refreshTimeout: number | null = null
 
   onMount(() => {
     refresh()
     const timer = window.setInterval(refresh, 2500)
-    return () => window.clearInterval(timer)
+    return () => {
+      window.clearInterval(timer)
+      if (refreshTimeout !== null) {
+        window.clearTimeout(refreshTimeout)
+        refreshTimeout = null
+      }
+    }
   })
 
   async function refresh() {
@@ -40,7 +48,13 @@
         await Call.ByName('voicesnap/services.PermissionService.OpenSettings', id)
       } catch {}
     }
-    window.setTimeout(refresh, 800)
+    if (refreshTimeout !== null) {
+      window.clearTimeout(refreshTimeout)
+    }
+    refreshTimeout = window.setTimeout(() => {
+      refreshTimeout = null
+      refresh()
+    }, 800)
   }
 
   function sortStatuses(items: PermissionStatus[]) {
@@ -83,6 +97,8 @@
     <button class="refresh-btn" onclick={refresh}>{t('permissions.refresh')}</button>
   </div>
 
+  <TextOutputFallbackPanel />
+
   <div class="permission-list">
     {#each statuses as item}
       <div class="permission-row">

--
Gitblit v1.9.3