+
diff --git a/src/routes/(app)/documents/+page.svelte b/src/routes/(app)/documents/+page.svelte
deleted file mode 100644
index c3912d9cf..000000000
--- a/src/routes/(app)/documents/+page.svelte
+++ /dev/null
@@ -1,617 +0,0 @@
-
-
-
- {$i18n.t('Documents')} | {$WEBUI_NAME}
-
-
-{#if dragged}
-
-
-
-
-
-
- Drop any files here to add to my documents
-
-
-
-
-
-
-{/if}
-
-{#key selectedDoc}
-
-{/key}
-
-
-
-
-
-
-
-
-
-
-
{$i18n.t('My Documents')}
-
-
-
-
-
-
- ⓘ {$i18n.t("Use '#' in the prompt input to load and select your documents.")}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {#if tags.length > 0}
-
-
- doc?.selected === 'checked').length ===
- filteredDocs.length
- ? 'checked'
- : 'unchecked'}
- indeterminate={filteredDocs.filter((doc) => doc?.selected === 'checked').length > 0 &&
- filteredDocs.filter((doc) => doc?.selected === 'checked').length !==
- filteredDocs.length}
- on:change={(e) => {
- if (e.detail === 'checked') {
- filteredDocs = filteredDocs.map((doc) => ({ ...doc, selected: 'checked' }));
- } else if (e.detail === 'unchecked') {
- filteredDocs = filteredDocs.map((doc) => ({ ...doc, selected: 'unchecked' }));
- }
- }}
- />
-
-
- {#if filteredDocs.filter((doc) => doc?.selected === 'checked').length === 0}
-
-
- {#each tags as tag}
-
- {/each}
- {:else}
-
-
- {filteredDocs.filter((doc) => doc?.selected === 'checked').length} Selected
-
-
-
-
-
-
-
-
- {/if}
-
- {/if}
-
-
- {#each filteredDocs as doc}
-
- {/each}
-
-
-
-
-
{
- console.log(importFiles);
-
- const reader = new FileReader();
- reader.onload = async (event) => {
- const savedDocs = JSON.parse(event.target.result);
- console.log(savedDocs);
-
- for (const doc of savedDocs) {
- await createNewDoc(
- localStorage.token,
- doc.collection_name,
- doc.filename,
- doc.name,
- doc.title
- ).catch((error) => {
- toast.error(error);
- return null;
- });
- }
-
- await documents.set(await getDocs(localStorage.token));
- };
-
- reader.readAsText(importFiles[0]);
- }}
- />
-
-
{
- documentsImportInputElement.click();
- }}
- >
- {$i18n.t('Import Documents Mapping')}
-
-
-
-
-
{
- let blob = new Blob([JSON.stringify($documents)], {
- type: 'application/json'
- });
- saveAs(blob, `documents-mapping-export-${Date.now()}.json`);
- }}
- >
- {$i18n.t('Export Documents Mapping')}
-
-
-
-
-
-
-
-
diff --git a/src/routes/(app)/modelfiles/+page.svelte b/src/routes/(app)/modelfiles/+page.svelte
deleted file mode 100644
index 9d62dae8a..000000000
--- a/src/routes/(app)/modelfiles/+page.svelte
+++ /dev/null
@@ -1,425 +0,0 @@
-
-
-
-
- {$i18n.t('Modelfiles')} | {$WEBUI_NAME}
-
-
-
-
-
-
-
{$i18n.t('My Modelfiles')}
-
-
-
-
-
-
{$i18n.t('Create a modelfile')}
-
{$i18n.t('Customize Ollama models for a specific purpose')}
-
-
-
-
-
-
- {#each $modelfiles as modelfile}
-
- {/each}
-
-
-
-
-
{
- console.log(importFiles);
-
- let reader = new FileReader();
- reader.onload = async (event) => {
- let savedModelfiles = JSON.parse(event.target.result);
- console.log(savedModelfiles);
-
- for (const modelfile of savedModelfiles) {
- await createNewModelfile(localStorage.token, modelfile).catch((error) => {
- return null;
- });
- }
-
- await modelfiles.set(await getModelfiles(localStorage.token));
- };
-
- reader.readAsText(importFiles[0]);
- }}
- />
-
-
{
- modelfilesImportInputElement.click();
- }}
- >
- {$i18n.t('Import Modelfiles')}
-
-
-
-
-
{
- saveModelfiles($modelfiles);
- }}
- >
- {$i18n.t('Export Modelfiles')}
-
-
-
-
-
- {#if localModelfiles.length > 0}
-
-
- {localModelfiles.length} Local Modelfiles Detected
-
-
-
-
{
- for (const modelfile of localModelfiles) {
- await createNewModelfile(localStorage.token, modelfile).catch((error) => {
- return null;
- });
- }
-
- saveModelfiles(localModelfiles);
- localStorage.removeItem('modelfiles');
- localModelfiles = JSON.parse(localStorage.getItem('modelfiles') ?? '[]');
- await modelfiles.set(await getModelfiles(localStorage.token));
- }}
- >
- {$i18n.t('Sync All')}
-
-
-
-
-
{
- saveModelfiles(localModelfiles);
-
- localStorage.removeItem('modelfiles');
- localModelfiles = JSON.parse(localStorage.getItem('modelfiles') ?? '[]');
- await modelfiles.set(await getModelfiles(localStorage.token));
- }}
- >
-
-
-
-
- {/if}
-
-
-
-
-
-
diff --git a/src/routes/(app)/prompts/+page.svelte b/src/routes/(app)/prompts/+page.svelte
deleted file mode 100644
index 8d5c44d27..000000000
--- a/src/routes/(app)/prompts/+page.svelte
+++ /dev/null
@@ -1,342 +0,0 @@
-
-
-
-
- {$i18n.t('Prompts')} | {$WEBUI_NAME}
-
-
-
-
-
-
-
-
{$i18n.t('My Prompts')}
-
-
-
-
-
-
- {#each $prompts.filter((p) => query === '' || p.command.includes(query)) as prompt}
-
-
-
-
-
-
-
-
{
- // console.log(modelfile);
- sessionStorage.prompt = JSON.stringify(prompt);
- goto('/prompts/create');
- }}
- >
-
-
-
-
{
- sharePrompt(prompt);
- }}
- >
-
-
-
-
{
- deletePrompt(prompt.command);
- }}
- >
-
-
-
-
- {/each}
-
-
-
-
-
{
- console.log(importFiles);
-
- const reader = new FileReader();
- reader.onload = async (event) => {
- const savedPrompts = JSON.parse(event.target.result);
- console.log(savedPrompts);
-
- for (const prompt of savedPrompts) {
- await createNewPrompt(
- localStorage.token,
- prompt.command.charAt(0) === '/' ? prompt.command.slice(1) : prompt.command,
- prompt.title,
- prompt.content
- ).catch((error) => {
- toast.error(error);
- return null;
- });
- }
-
- await prompts.set(await getPrompts(localStorage.token));
- };
-
- reader.readAsText(importFiles[0]);
- }}
- />
-
-
{
- promptsImportInputElement.click();
- }}
- >
- {$i18n.t('Import Prompts')}
-
-
-
-
-
{
- // promptsImportInputElement.click();
- let blob = new Blob([JSON.stringify($prompts)], {
- type: 'application/json'
- });
- saveAs(blob, `prompts-export-${Date.now()}.json`);
- }}
- >
- {$i18n.t('Export Prompts')}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/routes/(app)/workspace/+layout.svelte b/src/routes/(app)/workspace/+layout.svelte
new file mode 100644
index 000000000..87b67f7ab
--- /dev/null
+++ b/src/routes/(app)/workspace/+layout.svelte
@@ -0,0 +1,78 @@
+
+
+
+
+ {$i18n.t('Workspace')} | {$WEBUI_NAME}
+
+
+
+
+
+
+
+
{$i18n.t('Workspace')}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/(app)/workspace/+page.svelte b/src/routes/(app)/workspace/+page.svelte
index 2a74ba163..671af863d 100644
--- a/src/routes/(app)/workspace/+page.svelte
+++ b/src/routes/(app)/workspace/+page.svelte
@@ -1,173 +1,8 @@
-
-
-
- {$i18n.t('Workspace')} | {$WEBUI_NAME}
-
-
-
-
-
-
-
-
{$i18n.t('Workspace')}
-
-
-
-
-
- {
- tab = '';
- }}>{$i18n.t('Modelfiles')}
-
- {
- tab = 'prompts';
- }}>{$i18n.t('Prompts')}
-
- {
- tab = 'documents';
- }}
- >
- {$i18n.t('Documents')}
-
-
- {
- tab = 'playground';
- }}>{$i18n.t('Playground')}
-
-
-
-
-
-
- {#if tab === ''}
-
- {:else if tab === 'prompts'}
-
- {:else if tab === 'documents'}
-
- {:else if tab === 'playground'}
-
- {/if}
-
-
diff --git a/src/routes/(app)/workspace/documents/+page.svelte b/src/routes/(app)/workspace/documents/+page.svelte
new file mode 100644
index 000000000..4bba55115
--- /dev/null
+++ b/src/routes/(app)/workspace/documents/+page.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/routes/(app)/workspace/modelfiles/+page.svelte b/src/routes/(app)/workspace/modelfiles/+page.svelte
new file mode 100644
index 000000000..0c56d19d0
--- /dev/null
+++ b/src/routes/(app)/workspace/modelfiles/+page.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/routes/(app)/modelfiles/create/+page.svelte b/src/routes/(app)/workspace/modelfiles/create/+page.svelte
similarity index 100%
rename from src/routes/(app)/modelfiles/create/+page.svelte
rename to src/routes/(app)/workspace/modelfiles/create/+page.svelte
diff --git a/src/routes/(app)/modelfiles/edit/+page.svelte b/src/routes/(app)/workspace/modelfiles/edit/+page.svelte
similarity index 100%
rename from src/routes/(app)/modelfiles/edit/+page.svelte
rename to src/routes/(app)/workspace/modelfiles/edit/+page.svelte
diff --git a/src/routes/(app)/workspace/playground/+page.svelte b/src/routes/(app)/workspace/playground/+page.svelte
new file mode 100644
index 000000000..aed8abf12
--- /dev/null
+++ b/src/routes/(app)/workspace/playground/+page.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/routes/(app)/workspace/prompts/+page.svelte b/src/routes/(app)/workspace/prompts/+page.svelte
new file mode 100644
index 000000000..48c6e65c6
--- /dev/null
+++ b/src/routes/(app)/workspace/prompts/+page.svelte
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/routes/(app)/prompts/create/+page.svelte b/src/routes/(app)/workspace/prompts/create/+page.svelte
similarity index 100%
rename from src/routes/(app)/prompts/create/+page.svelte
rename to src/routes/(app)/workspace/prompts/create/+page.svelte
diff --git a/src/routes/(app)/prompts/edit/+page.svelte b/src/routes/(app)/workspace/prompts/edit/+page.svelte
similarity index 100%
rename from src/routes/(app)/prompts/edit/+page.svelte
rename to src/routes/(app)/workspace/prompts/edit/+page.svelte