-
+
+
+
+
+
window.removeEventListener("beforeunload", onBeforeUnload));
@@ -442,41 +458,9 @@ onUnmounted(() => window.removeEventListener("beforeunload", onBeforeUnload));
{{ assist.error.value }}
-
-
-
- {{ assist.isProofreading.value
- ? 'Proofreading document...'
- : `Revising: "${truncateTarget(assist.target.value?.text ?? '')}"` }}
-
-
-
●●●
-
-
-
-
-
-
-
- {{ line.type === 'delete' ? '−' : line.type === 'insert' ? '+' : ' ' }}
- {{ line.text }}
-
-
No changes.
-
-
-
-
-
-
+
+
+ {{ assist.state.value === 'streaming' ? 'Generating in editor…' : 'Review diff in editor ↑' }}
diff --git a/frontend/src/views/TaskEditorView.vue b/frontend/src/views/TaskEditorView.vue
index 6217974..e2ef5e5 100644
--- a/frontend/src/views/TaskEditorView.vue
+++ b/frontend/src/views/TaskEditorView.vue
@@ -14,6 +14,8 @@ import TiptapEditor from "@/components/TiptapEditor.vue";
import TagInput from "@/components/TagInput.vue";
import ProjectSelector from "@/components/ProjectSelector.vue";
import MilestoneSelector from "@/components/MilestoneSelector.vue";
+import TaskLogSection from "@/components/TaskLogSection.vue";
+import InlineAssistPanel from "@/components/InlineAssistPanel.vue";
const route = useRoute();
const router = useRouter();
@@ -90,7 +92,8 @@ async function toggleSubTask(sub: SubTask) {
toast.show("Failed to update sub-task", "error");
}
}
-const showPreview = ref(false);
+const showPreview = ref(true);
+const sidebarOpen = ref(true);
const editorRef = ref
| null>(null);
const tiptapEditor = computed(() => {
return (editorRef.value?.editor as Editor | undefined) ?? null;
@@ -106,8 +109,13 @@ const renderedPreview = computed(() => renderMarkdown(body.value));
// AI Assist
const assist = useAssist(body);
-const renderedStreaming = computed(() => renderMarkdown(assist.streamingText.value));
-const renderedProposal = computed(() => renderMarkdown(assist.proposedText.value));
+const assistLabel = computed(() => {
+ if (assist.isProofreading.value) return "Proofreading document...";
+ const t = assist.target.value;
+ if (!t) return "Generating...";
+ const heading = t.text.split("\n")[0];
+ return `Revising: "${heading.length > 50 ? heading.slice(0, 50) + "..." : heading}"`;
+});
// Assist panel toggle (persisted)
const ASSIST_KEY = 'fa-assist-open';
@@ -145,9 +153,6 @@ function handleInlineAssist() {
nextTick(() => instructionRef.value?.focus());
}
-// Diff view toggle
-const showFullProposed = ref(false);
-
function handleAssistAccept() {
const newBody = assist.accept();
if (newBody !== body.value) {
@@ -155,7 +160,6 @@ function handleAssistAccept() {
markDirty();
toast.show("Section updated");
}
- showFullProposed.value = false;
}
function truncateTarget(text: string, max = 60): string {
@@ -443,7 +447,7 @@ onUnmounted(() => window.removeEventListener("beforeunload", onBeforeUnload));
-
+