idea-manager 0.7.10 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "idea-manager",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "AI 기반 브레인스토밍 → 구조화 → 프롬프트 생성 도구. MCP Server 내장.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"brainstorm",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"react": "19.2.3",
|
|
52
52
|
"react-dom": "19.2.3",
|
|
53
53
|
"react-markdown": "^10.1.0",
|
|
54
|
+
"remark-gfm": "^4.0.1",
|
|
54
55
|
"tsx": "^4.21.0"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
package/public/sw.js
CHANGED
package/src/app/globals.css
CHANGED
|
@@ -1016,6 +1016,29 @@ textarea:focus {
|
|
|
1016
1016
|
margin: 0.5em 0;
|
|
1017
1017
|
}
|
|
1018
1018
|
|
|
1019
|
+
.chat-markdown table {
|
|
1020
|
+
border-collapse: collapse;
|
|
1021
|
+
width: 100%;
|
|
1022
|
+
margin: 0.5em 0;
|
|
1023
|
+
font-size: 0.85em;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.chat-markdown th,
|
|
1027
|
+
.chat-markdown td {
|
|
1028
|
+
border: 1px solid hsl(var(--border));
|
|
1029
|
+
padding: 4px 8px;
|
|
1030
|
+
text-align: left;
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
.chat-markdown th {
|
|
1034
|
+
background: hsl(var(--muted));
|
|
1035
|
+
font-weight: 600;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
.chat-markdown tr:nth-child(even) {
|
|
1039
|
+
background: hsl(var(--muted) / 0.3);
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1019
1042
|
/* Dialog animation */
|
|
1020
1043
|
@keyframes dialogIn {
|
|
1021
1044
|
from { opacity: 0; transform: scale(0.95) translateY(4px); }
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import ReactMarkdown from 'react-markdown';
|
|
4
|
+
import remarkGfm from 'remark-gfm';
|
|
5
|
+
|
|
3
6
|
interface ChatMessageProps {
|
|
4
7
|
role: 'assistant' | 'user';
|
|
5
8
|
content: string;
|
|
@@ -16,11 +19,17 @@ export default function ChatMessage({ role, content, createdAt }: ChatMessagePro
|
|
|
16
19
|
return (
|
|
17
20
|
<div className={`chat-message ${isAi ? 'chat-message-ai' : 'chat-message-user'}`}>
|
|
18
21
|
<div className={`chat-bubble ${isAi ? 'chat-bubble-ai' : 'chat-bubble-user'}`}>
|
|
19
|
-
{
|
|
20
|
-
<
|
|
21
|
-
{
|
|
22
|
-
</
|
|
23
|
-
)
|
|
22
|
+
{isAi ? (
|
|
23
|
+
<div className="chat-markdown">
|
|
24
|
+
<ReactMarkdown remarkPlugins={[remarkGfm]}>{content}</ReactMarkdown>
|
|
25
|
+
</div>
|
|
26
|
+
) : (
|
|
27
|
+
content.split('\n').map((line, i) => (
|
|
28
|
+
<p key={i} className={i > 0 ? 'mt-1' : ''}>
|
|
29
|
+
{line}
|
|
30
|
+
</p>
|
|
31
|
+
))
|
|
32
|
+
)}
|
|
24
33
|
</div>
|
|
25
34
|
<span className="chat-time">{time}</span>
|
|
26
35
|
</div>
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { useState, useEffect, useRef, useCallback } from 'react';
|
|
4
4
|
import type { ITaskConversation, TaskStatus } from '@/types';
|
|
5
5
|
import ReactMarkdown from 'react-markdown';
|
|
6
|
+
import remarkGfm from 'remark-gfm';
|
|
6
7
|
|
|
7
8
|
const POLL_INTERVAL = 3000; // Poll every 3s when task is testing
|
|
8
9
|
|
|
@@ -112,7 +113,7 @@ export default function TaskChat({
|
|
|
112
113
|
: 'bg-muted text-foreground rounded-bl-sm chat-markdown'
|
|
113
114
|
}`}>
|
|
114
115
|
{msg.role === 'assistant'
|
|
115
|
-
? <ReactMarkdown>{msg.content}</ReactMarkdown>
|
|
116
|
+
? <ReactMarkdown remarkPlugins={[remarkGfm]}>{msg.content}</ReactMarkdown>
|
|
116
117
|
: msg.content}
|
|
117
118
|
</div>
|
|
118
119
|
{msg.role === 'assistant' && (
|