<pre style='margin:0'>
Zhenfu Shi (i0ntempest) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/18284189f1eb3bdebbda7a67964f705e472fac6a">https://github.com/macports/macports-ports/commit/18284189f1eb3bdebbda7a67964f705e472fac6a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 18284189f1e filebrowser: 2.32.0
</span>18284189f1e is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 18284189f1eb3bdebbda7a67964f705e472fac6a
</span>Author: i0ntempest <i0ntempest@i0ntempest.com>
AuthorDate: Sun Feb 2 03:40:56 2025 +0800

<span style='display:block; white-space:pre;color:#404040;'>    filebrowser: 2.32.0
</span>---
 net/filebrowser/Portfile                           |  77 ++++----
 ...h-d1c84a84123c77dede05c023b3697a432b56122c.diff | 199 ---------------------
 2 files changed, 39 insertions(+), 237 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/filebrowser/Portfile b/net/filebrowser/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index bdb9e44b2f6..79eaf86dca9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/filebrowser/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/filebrowser/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,10 +3,11 @@
</span> PortSystem          1.0
 PortGroup           golang 1.0
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-go.setup            github.com/filebrowser/filebrowser 2.31.2 v
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set git-commit      129a4fd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+go.setup            github.com/filebrowser/filebrowser 2.32.0 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from tarball
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set git-commit      3d6c515
</span> # This line is for displaying commit in CLI only
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span> categories          net sysutils
 maintainers         {i0ntempest @i0ntempest} openmaintainer
 license             Apache-2
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,15 +21,9 @@ long_description    filebrowser provides a file managing interface within a spec
</span> homepage            https://filebrowser.org
 
 checksums           ${distname}${extract.suffix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        rmd160  109a4f1954afa2b454eb6e190c68b759dfc33944 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  affa66dfd9de8af359a6f242410d1327ca8acf498dead6b3066f6a766b97679a \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    3828081
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Command runner fixes: https://github.com/filebrowser/filebrowser/pull/3676
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Pop up prompt fixes: https://github.com/filebrowser/filebrowser/commit/d1c84a84123c77dede05c023b3697a432b56122c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append   patch-3676.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patch-d1c84a84123c77dede05c023b3697a432b56122c.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patch.args          -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  8dfd7b54cd51e79b5db87fb6a4a7b9f208309b5b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  7bc0aa6f44994f1582cdb06f8dd6da3802af5881a2e3120bf780ed030e2cb37d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    3817808
</span> 
 go.vendors          gopkg.in/yaml.v3 \
                         lock    v3.0.1 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -68,25 +63,25 @@ go.vendors          gopkg.in/yaml.v3 \
</span>                         sha256  add6a354e7031705b39bdb1795ca064107038011f060460a23001dd339b41aac \
                         size    628767 \
                     golang.org/x/text \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lock    v0.17.0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        rmd160  d78334f0fbc6685d09d300728e8d76dec95f4a0d \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  1485e4341b809faa9541d59999dbfa9016570395a2fcdd252c448e42a8196b81 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    8972469 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lock    v0.21.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  0a0d95c777a2df3108c79f5a23de3c226ad84d06 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  de16b0463799b320acfa2707e154091015d4b25dbaae866a8fc9bf2f72d67b5c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    8976785 \
</span>                     golang.org/x/sys \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lock    v0.23.0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        rmd160  2f2f0d9166b97a7934502b27fa5fd1731ea13a47 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  1a7d353f259d1f34c27bafc2c7280627a3227a95387aa2dc636b17a321a49186 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    1501815 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lock    v0.28.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  6afc12ada3ca9173b9f8ba2c66caf3dbf0ac7929 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  aa8ba4cd13aa5d7f839d604e002d2c994e6dfc09c3746f532bf69fc64617869c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    1520294 \
</span>                     golang.org/x/sync \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lock    v0.8.0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        rmd160  753a4804058e3be785a5d00aea60bc6950baa709 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  9f9f999d50ea1bbba9f7d9a629d594da7e221eeb4d54216ef480d1a8546fa817 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    18185 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lock    v0.10.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  3cdb4e0e41894bd4f102154d7e193423451c64c6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  0318693e1204134ef8d4110f1fd961fd0273ff4d59874c542d8b4739236bebfe \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    18107 \
</span>                     golang.org/x/net \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lock    v0.23.0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        rmd160  314021a9d4fc510f2acfbfa131810944101c66bf \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  7c2b7d3c9062bc8cd529f8f1b2aa16d5a8616a90cb3cbdbf326bd5c6f0fb51f1 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    1509183 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lock    v0.33.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  c1974416a5379a87b032076f82d4353929b7cf30 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  c9edb767d02ea972c474508028e90d8c2b19a075f89697dbe787860f8dba3aa2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    1466556 \
</span>                     golang.org/x/image \
                         lock    v0.19.0 \
                         rmd160  e8d527797fe92eee70673ece17aa9a11c371108f \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -98,10 +93,10 @@ go.vendors          gopkg.in/yaml.v3 \
</span>                         sha256  54961fbc9af33753e5866ef4bbe39b9c9b6328e6816467f0c0a8979aa12714cd \
                         size    1743889 \
                     golang.org/x/crypto \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lock    v0.26.0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        rmd160  437ca84bbed506eac15af824b0162f9bdd0008da \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  dd29f4e0dbf8eaffc8e8d97c7a94b81f59d86f8ff0e3b6e042b44a38f78845a7 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    1799499 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lock    v0.31.0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  ccd79163c4c288444622b7e39560353ba8caef9a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  8c60e95193c8a72264fef36dc5f6a23e69c9a5948680829fcfbe9d28030f9dca \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    1837747 \
</span>                     go.uber.org/multierr \
                         repo    github.com/uber-go/multierr \
                         lock    v1.11.0 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -315,10 +310,10 @@ go.vendors          gopkg.in/yaml.v3 \
</span>                         sha256  39c685a625c4d92d0b4e4f4d9ba3ca021e61fb936a9575b9ec0e647607fdf5db \
                         size    405608 \
                     github.com/golang-jwt/jwt \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lock    v4.5.0 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        rmd160  311821d136d54dfd8361a99e82acfce3e03c7aa6 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        sha256  e37ca46342dbb9b301be70e3d1ab22fe119d3e73f01933755be2e2e782352f52 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        size    53062 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lock    v4.5.1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        rmd160  b1e36c30230836225a5b5474286ebf492ec6f577 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        sha256  6f5cb4c2a76ad59f9d0aa6d3a4287b2fcf97309b6961c5e73a3e11a5dfc6126c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        size    53190 \
</span>                     github.com/go-ole/go-ole \
                         lock    v1.2.6 \
                         rmd160  70350a72faa92597facb55379e481ea049bb57da \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -413,6 +408,10 @@ go.vendors          gopkg.in/yaml.v3 \
</span> # Notes for updating this port:
 # Remember to update git commit hash
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Command runner fixes: https://github.com/filebrowser/filebrowser/pull/3676
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   patch-3676.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.args          -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> depends_build-append \
                     path:bin/node:nodejs22 \
                     path:bin/npm:npm10
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -441,10 +440,12 @@ pre-build {
</span>     set nodesslver [exec ${prefix}/bin/node -e "console.log(process.versions.openssl)" | /usr/bin/grep -e "\\d.\\d*.\\d*" -o]
     ui_debug "Installed Node.js linked OpenSSL ${nodesslver}"
     if {[vercmp ${nodesslver} 3] < 0} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        system -W ${worksrcpath}/frontend "${prefix}/bin/npm --verbose ci && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${worksrcpath}/frontend "${prefix}/bin/npm --verbose install && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                           ${prefix}/bin/npm --verbose ci && \
</span>                                            ${prefix}/bin/npm --verbose run build"
     } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        system -W ${worksrcpath}/frontend "NODE_OPTIONS=--openssl-legacy-provider ${prefix}/bin/npm --verbose ci && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${worksrcpath}/frontend "NODE_OPTIONS=--openssl-legacy-provider ${prefix}/bin/npm --verbose install && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                           NODE_OPTIONS=--openssl-legacy-provider ${prefix}/bin/npm --verbose ci && \
</span>                                            NODE_OPTIONS=--openssl-legacy-provider ${prefix}/bin/npm --verbose run build"
     }
 }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/filebrowser/files/patch-d1c84a84123c77dede05c023b3697a432b56122c.diff b/net/filebrowser/files/patch-d1c84a84123c77dede05c023b3697a432b56122c.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index e274c83d2f6..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/filebrowser/files/patch-d1c84a84123c77dede05c023b3697a432b56122c.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,199 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/api/files.ts b/frontend/src/api/files.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a36de03f78..928f528298 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/api/files.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/api/files.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,7 +1,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--import { createURL, fetchURL, removePrefix } from "./utils";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--import { baseURL } from "@/utils/constants";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import { useAuthStore } from "@/stores/auth";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+import { useLayoutStore } from "@/stores/layout";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+import { baseURL } from "@/utils/constants";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import { upload as postTus, useTus } from "./tus";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+import { createURL, fetchURL, removePrefix } from "./utils";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- export async function fetch(url: string) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   url = removePrefix(url);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -156,6 +157,7 @@ function moveCopy(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   overwrite = false,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   rename = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  const layoutStore = useLayoutStore();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const promises = [];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (const item of items) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -166,7 +168,7 @@ function moveCopy(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }&destination=${to}&override=${overwrite}&rename=${rename}`;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     promises.push(resourceAction(url, "PATCH"));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  layoutStore.closeHovers();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return Promise.all(promises);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index d88d2d2f9d..543818ad70 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/components/Sidebar.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/components/Sidebar.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -101,7 +101,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           href="https://github.com/filebrowser/filebrowser"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           >File Browser</a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         >
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        <span> {{ ' ' }} {{ version }}</span>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        <span> {{ " " }} {{ version }}</span>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       </span>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       <span>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         <a @click="help">{{ $t("sidebar.help") }}</a>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/components/prompts/Prompts.vue b/frontend/src/components/prompts/Prompts.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 4ecde79428..71e4e753df 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/components/prompts/Prompts.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/components/prompts/Prompts.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3,7 +3,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- </template>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- <script setup lang="ts">
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--import { ref, watch } from "vue";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+import { watch } from "vue";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import { ModalsContainer, useModal } from "vue-final-modal";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import { storeToRefs } from "pinia";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import { useLayoutStore } from "@/stores/layout";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -30,8 +30,6 @@ const layoutStore = useLayoutStore();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const { currentPromptName } = storeToRefs(layoutStore);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--const closeModal = ref<() => Promise<string>>();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const components = new Map<string, any>([
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   ["info", Info],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   ["help", Help],
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -52,11 +50,6 @@ const components = new Map<string, any>([
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- watch(currentPromptName, (newValue) => {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (closeModal.value) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    closeModal.value();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    closeModal.value = undefined;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const modal = components.get(newValue!);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!modal) return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -67,7 +60,7 @@ watch(currentPromptName, (newValue) => {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  closeModal.value = close;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  layoutStore.setCloseOnPrompt(close, newValue!);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   open();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/components/prompts/Upload.vue b/frontend/src/components/prompts/Upload.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index bb8ec40ea4..538e84b5d1 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/components/prompts/Upload.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/components/prompts/Upload.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -48,8 +48,6 @@ const layoutStore = useLayoutStore();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // TODO: this is a copy of the same function in FileListing.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const uploadInput = (event: Event) => {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  layoutStore.closeHovers();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   let files = (event.currentTarget as HTMLInputElement)?.files;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (files === null) return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/stores/layout.ts b/frontend/src/stores/layout.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1911643a19..faf8bca721 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/stores/layout.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/stores/layout.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -29,6 +29,12 @@ export const useLayoutStore = defineStore("layout", {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     toggleShell() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       this.showShell = !this.showShell;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    setCloseOnPrompt(closeFunction: () => Promise<string>, onPrompt: string) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      const prompt = this.prompts.find((prompt) => prompt.prompt === onPrompt);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      if (prompt) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        prompt.close = closeFunction;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     showHover(value: PopupProps | string) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (typeof value !== "object") {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         this.prompts.push({
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -36,6 +42,7 @@ export const useLayoutStore = defineStore("layout", {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           confirm: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           action: undefined,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           props: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          close: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -45,6 +52,7 @@ export const useLayoutStore = defineStore("layout", {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         confirm: value?.confirm,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         action: value?.action,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         props: value?.props,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        close: value?.close,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     showError() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -53,6 +61,7 @@ export const useLayoutStore = defineStore("layout", {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         confirm: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         action: undefined,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         props: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        close: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     showSuccess() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -61,10 +70,11 @@ export const useLayoutStore = defineStore("layout", {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         confirm: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         action: undefined,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         props: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        close: null,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       });
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     closeHovers() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      this.prompts.pop();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      this.prompts.shift()?.close?.();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // easily reset state using `$reset`
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     clearLayout() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/types/layout.d.ts b/frontend/src/types/layout.d.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index fa05a48496..b625cc070d 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/types/layout.d.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/types/layout.d.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3,6 +3,7 @@ interface PopupProps {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   confirm?: any;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   action?: PopupAction;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   props?: any;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  close?: (() => Promise<string>) | null;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- type PopupAction = (e: Event) => void;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e7ce8becbe..cdd974e83c 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/utils/upload.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/utils/upload.ts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,3 +1,4 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+import { useLayoutStore } from "@/stores/layout";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import { useUploadStore } from "@/stores/upload";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import url from "@/utils/url";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -126,6 +127,9 @@ export function handleFiles(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   overwrite = false
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const uploadStore = useUploadStore();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  const layoutStore = useLayoutStore();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  layoutStore.closeHovers();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (const file of files) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     const id = uploadStore.id;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 72171f4e06..ec75aec5aa 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/frontend/src/views/files/FileListing.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/frontend/src/views/files/FileListing.vue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -753,8 +753,6 @@ const drop = async (event: DragEvent) => {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const uploadInput = (event: Event) => {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  layoutStore.closeHovers();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   let files = (event.currentTarget as HTMLInputElement)?.files;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (files === null) return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span></pre><pre style='margin:0'>

</pre>