diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 093b35a..0ff01fb 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -277,6 +277,9 @@ onUnmounted(() => {
min-height: 0;
overflow-y: auto;
}
+.app-content:has(.workspace-root) {
+ overflow: hidden;
+}
/* Shortcuts overlay */
.shortcuts-overlay {
diff --git a/frontend/src/components/WorkspaceNoteEditor.vue b/frontend/src/components/WorkspaceNoteEditor.vue
new file mode 100644
index 0000000..922d9ca
--- /dev/null
+++ b/frontend/src/components/WorkspaceNoteEditor.vue
@@ -0,0 +1,571 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Suggested:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/WorkspaceTaskPanel.vue b/frontend/src/components/WorkspaceTaskPanel.vue
new file mode 100644
index 0000000..b17308f
--- /dev/null
+++ b/frontend/src/components/WorkspaceTaskPanel.vue
@@ -0,0 +1,579 @@
+
+
+
+
+
+
+
+
+
+
+
{{ activeTask.title }}
+
+
+
+ {{ activeTask.priority }}
+
+
+ Due {{ activeTask.due_date }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
+
+
+
+
+
diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts
index 4b672ed..bff27a4 100644
--- a/frontend/src/router/index.ts
+++ b/frontend/src/router/index.ts
@@ -75,6 +75,11 @@ const router = createRouter({
name: "project-view",
component: () => import("@/views/ProjectView.vue"),
},
+ {
+ path: "/workspace/:projectId",
+ name: "workspace",
+ component: () => import("@/views/WorkspaceView.vue"),
+ },
{
path: "/tasks",
name: "tasks",
diff --git a/frontend/src/stores/chat.ts b/frontend/src/stores/chat.ts
index f9fb6b8..15c8c11 100644
--- a/frontend/src/stores/chat.ts
+++ b/frontend/src/stores/chat.ts
@@ -156,6 +156,7 @@ export const useChatStore = defineStore("chat", () => {
contextNoteTitle?: string,
excludeNoteIds?: number[],
ragProjectId?: number | null,
+ workspaceProjectId?: number | null,
) {
if (!currentConversation.value) return;
@@ -206,6 +207,7 @@ export const useChatStore = defineStore("chat", () => {
excluded_note_ids: excludeNoteIds?.length ? excludeNoteIds : undefined,
think,
rag_project_id: ragProjectId ?? undefined,
+ workspace_project_id: workspaceProjectId ?? undefined,
},
);
assistantMessageId = resp.assistant_message_id;
diff --git a/frontend/src/views/ChatView.vue b/frontend/src/views/ChatView.vue
index c9ff665..82aa006 100644
--- a/frontend/src/views/ChatView.vue
+++ b/frontend/src/views/ChatView.vue
@@ -458,6 +458,14 @@ onUnmounted(() => {
{{ store.currentConversation.title || "New Chat" }}
+