Skip to content

Commit b711935

Browse files
authored
Merge pull request open-webui#26388 from open-webui/dev
0.10.1
2 parents 4d2e13c + 86231e4 commit b711935

4 files changed

Lines changed: 25 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.10.1] - 2026-06-29
9+
10+
### Fixed
11+
12+
- 🤝 **Shared folder read-only chats no longer sign users out.** Opening or reading chats from shared folders now keeps the current session active when a resource-level access error is returned, instead of incorrectly showing "Session expired. Please sign in again."
13+
814
## [0.10.0] - 2026-06-29
915

1016
### Added

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "open-webui",
3-
"version": "0.10.0",
3+
"version": "0.10.1",
44
"private": true,
55
"scripts": {
66
"dev": "npm run pyodide:fetch && vite dev --host",

src/routes/+layout.svelte

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,20 @@
810810
});
811811
};
812812
813+
const isAuthFailureResponse = async (response) => {
814+
try {
815+
const data = await response.clone().json();
816+
const detail = data?.detail;
817+
return (
818+
detail === '401 Unauthorized' ||
819+
detail === 'Not authenticated' ||
820+
detail === 'Your session has expired or the token is invalid. Please sign in again.'
821+
);
822+
} catch {
823+
return true;
824+
}
825+
};
826+
813827
const checkTokenExpiry = async () => {
814828
const exp = $user?.expires_at; // token expiry time in unix timestamp
815829
const now = Math.floor(Date.now() / 1000); // current time in unix timestamp
@@ -939,7 +953,8 @@
939953
if (
940954
response.status === 401 &&
941955
localStorage.token &&
942-
isAuthenticatedBackendFetch(input, init)
956+
isAuthenticatedBackendFetch(input, init) &&
957+
(await isAuthFailureResponse(response))
943958
) {
944959
redirectToAuthAfterUnauthorized();
945960
}

0 commit comments

Comments
 (0)