Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c74e7df6a0 | ||
|
|
29d8f8d91b | ||
|
|
0d1553562d | ||
|
|
8e3312c032 | ||
|
|
878d12da24 | ||
|
|
c1dfafcc9e | ||
|
|
6668d79519 | ||
|
|
775a3dc359 | ||
|
|
98f935b8f7 | ||
|
|
86359ef374 | ||
|
|
ef8fbaae28 | ||
|
|
9e48aeca45 | ||
|
|
9518111ed3 | ||
|
|
4fea55bac3 | ||
|
|
027dd848eb | ||
|
|
98928fc5f0 |
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [0.3.10] - 2024-07-17
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **🔄 Improved File Upload**: Addressed the issue where file uploads lacked animation.
|
||||||
|
- **💬 Chat Continuity**: Fixed a problem where existing chats were not functioning properly in some instances.
|
||||||
|
- **🗂️ Chat File Reset**: Resolved the issue of chat files not resetting for new conversations, now ensuring a clean slate for each chat session.
|
||||||
|
- **📁 Document Workspace Uploads**: Corrected the handling of document uploads in the workspace using the Files API.
|
||||||
|
|
||||||
## [0.3.9] - 2024-07-17
|
## [0.3.9] - 2024-07-17
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.9",
|
"version": "0.3.10",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.9",
|
"version": "0.3.10",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/lang-javascript": "^6.2.2",
|
"@codemirror/lang-javascript": "^6.2.2",
|
||||||
"@codemirror/lang-python": "^6.1.6",
|
"@codemirror/lang-python": "^6.1.6",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "open-webui",
|
"name": "open-webui",
|
||||||
"version": "0.3.9",
|
"version": "0.3.10",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run pyodide:fetch && vite dev --host",
|
"dev": "npm run pyodide:fetch && vite dev --host",
|
||||||
|
|||||||
@@ -264,6 +264,8 @@
|
|||||||
messages: {},
|
messages: {},
|
||||||
currentId: null
|
currentId: null
|
||||||
};
|
};
|
||||||
|
|
||||||
|
chatFiles = [];
|
||||||
params = {};
|
params = {};
|
||||||
|
|
||||||
if ($page.url.searchParams.get('models')) {
|
if ($page.url.searchParams.get('models')) {
|
||||||
@@ -335,7 +337,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
params = chatContent?.params ?? {};
|
params = chatContent?.params ?? {};
|
||||||
chatFiles = chatContent?.files ?? {};
|
chatFiles = chatContent?.files ?? [];
|
||||||
|
|
||||||
autoScroll = true;
|
autoScroll = true;
|
||||||
await tick();
|
await tick();
|
||||||
@@ -770,6 +772,11 @@
|
|||||||
if (model?.info?.meta?.knowledge ?? false) {
|
if (model?.info?.meta?.knowledge ?? false) {
|
||||||
files.push(...model.info.meta.knowledge);
|
files.push(...model.info.meta.knowledge);
|
||||||
}
|
}
|
||||||
|
if (responseMessage?.files) {
|
||||||
|
files.push(
|
||||||
|
...responseMessage?.files.filter((item) => ['web_search_results'].includes(item.type))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
eventTarget.dispatchEvent(
|
eventTarget.dispatchEvent(
|
||||||
new CustomEvent('chat:start', {
|
new CustomEvent('chat:start', {
|
||||||
@@ -1005,6 +1012,11 @@
|
|||||||
if (model?.info?.meta?.knowledge ?? false) {
|
if (model?.info?.meta?.knowledge ?? false) {
|
||||||
files.push(...model.info.meta.knowledge);
|
files.push(...model.info.meta.knowledge);
|
||||||
}
|
}
|
||||||
|
if (responseMessage?.files) {
|
||||||
|
files.push(
|
||||||
|
...responseMessage?.files.filter((item) => ['web_search_results'].includes(item.type))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
scrollToBottom();
|
scrollToBottom();
|
||||||
|
|
||||||
|
|||||||
@@ -545,6 +545,7 @@
|
|||||||
<FileItem
|
<FileItem
|
||||||
name={file.name}
|
name={file.name}
|
||||||
type={file.type}
|
type={file.type}
|
||||||
|
status={file.status}
|
||||||
dismissible={true}
|
dismissible={true}
|
||||||
on:dismiss={() => {
|
on:dismiss={() => {
|
||||||
files.splice(fileIdx, 1);
|
files.splice(fileIdx, 1);
|
||||||
|
|||||||
@@ -566,6 +566,11 @@
|
|||||||
const metadata = citation.metadata?.[index];
|
const metadata = citation.metadata?.[index];
|
||||||
const id = metadata?.source ?? 'N/A';
|
const id = metadata?.source ?? 'N/A';
|
||||||
let source = citation?.source;
|
let source = citation?.source;
|
||||||
|
|
||||||
|
if (metadata?.name) {
|
||||||
|
source = { ...source, name: metadata.name };
|
||||||
|
}
|
||||||
|
|
||||||
// Check if ID looks like a URL
|
// Check if ID looks like a URL
|
||||||
if (id.startsWith('http://') || id.startsWith('https://')) {
|
if (id.startsWith('http://') || id.startsWith('https://')) {
|
||||||
source = { name: id };
|
source = { name: id };
|
||||||
|
|||||||
@@ -99,12 +99,8 @@
|
|||||||
<div class={$settings?.chatBubble ?? true ? 'self-end' : ''}>
|
<div class={$settings?.chatBubble ?? true ? 'self-end' : ''}>
|
||||||
{#if file.type === 'image'}
|
{#if file.type === 'image'}
|
||||||
<img src={file.url} alt="input" class=" max-h-96 rounded-lg" draggable="false" />
|
<img src={file.url} alt="input" class=" max-h-96 rounded-lg" draggable="false" />
|
||||||
{:else if file.type === 'file'}
|
{:else}
|
||||||
<FileItem url={`${file?.url}/content`} name={file.name} type={$i18n.t('File')} />
|
<FileItem url={file.url} name={file.name} type={file.type} />
|
||||||
{:else if file.type === 'doc'}
|
|
||||||
<FileItem url={`${file?.url}`} name={file.name} type={$i18n.t('Document')} />
|
|
||||||
{:else if file.type === 'collection'}
|
|
||||||
<FileItem name={file?.title ?? `#${file.name}`} type={$i18n.t('Collection')} />
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
export let show = false;
|
export let show = false;
|
||||||
|
export let uploadDoc: Function;
|
||||||
let uploadDocInputElement: HTMLInputElement;
|
let uploadDocInputElement: HTMLInputElement;
|
||||||
let inputFiles;
|
let inputFiles;
|
||||||
let tags = [];
|
let tags = [];
|
||||||
@@ -26,32 +27,6 @@
|
|||||||
content: null
|
content: null
|
||||||
};
|
};
|
||||||
|
|
||||||
const uploadDoc = async (file) => {
|
|
||||||
const res = await uploadDocToVectorDB(localStorage.token, '', file).catch((error) => {
|
|
||||||
toast.error(error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res) {
|
|
||||||
await createNewDoc(
|
|
||||||
localStorage.token,
|
|
||||||
res.collection_name,
|
|
||||||
res.filename,
|
|
||||||
transformFileName(res.filename),
|
|
||||||
res.filename,
|
|
||||||
tags.length > 0
|
|
||||||
? {
|
|
||||||
tags: tags
|
|
||||||
}
|
|
||||||
: null
|
|
||||||
).catch((error) => {
|
|
||||||
toast.error(error);
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
await documents.set(await getDocs(localStorage.token));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const submitHandler = async () => {
|
const submitHandler = async () => {
|
||||||
if (inputFiles && inputFiles.length > 0) {
|
if (inputFiles && inputFiles.length > 0) {
|
||||||
for (const file of inputFiles) {
|
for (const file of inputFiles) {
|
||||||
|
|||||||
@@ -205,7 +205,7 @@
|
|||||||
<EditDocModal bind:show={showEditDocModal} {selectedDoc} />
|
<EditDocModal bind:show={showEditDocModal} {selectedDoc} />
|
||||||
{/key}
|
{/key}
|
||||||
|
|
||||||
<AddDocModal bind:show={showAddDocModal} />
|
<AddDocModal bind:show={showAddDocModal} {uploadDoc} />
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<div class="flex justify-between items-center">
|
<div class="flex justify-between items-center">
|
||||||
|
|||||||
Reference in New Issue
Block a user