@autocode-cli/autocode 0.1.32 → 0.1.34

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.
Files changed (51) hide show
  1. package/README.md +3 -3
  2. package/dist/cli/commands/init.js +1 -1
  3. package/dist/server/api.js +2 -2
  4. package/dist/server/api.js.map +1 -1
  5. package/dist/server/dashboard/pages/changelog.js +2 -2
  6. package/dist/server/dashboard/pages/changelog.js.map +1 -1
  7. package/dist/server/dashboard/pages/index.d.ts +3 -0
  8. package/dist/server/dashboard/pages/index.d.ts.map +1 -1
  9. package/dist/server/dashboard/pages/index.js +3 -0
  10. package/dist/server/dashboard/pages/index.js.map +1 -1
  11. package/dist/server/dashboard/pages/issue-comments.d.ts +8 -0
  12. package/dist/server/dashboard/pages/issue-comments.d.ts.map +1 -0
  13. package/dist/server/dashboard/pages/issue-comments.js +283 -0
  14. package/dist/server/dashboard/pages/issue-comments.js.map +1 -0
  15. package/dist/server/dashboard/pages/issue-history.d.ts +8 -0
  16. package/dist/server/dashboard/pages/issue-history.d.ts.map +1 -0
  17. package/dist/server/dashboard/pages/issue-history.js +149 -0
  18. package/dist/server/dashboard/pages/issue-history.js.map +1 -0
  19. package/dist/server/dashboard/pages/issue-shared.d.ts +27 -0
  20. package/dist/server/dashboard/pages/issue-shared.d.ts.map +1 -0
  21. package/dist/server/dashboard/pages/issue-shared.js +365 -0
  22. package/dist/server/dashboard/pages/issue-shared.js.map +1 -0
  23. package/dist/server/dashboard/pages/issue-terminal.d.ts +8 -0
  24. package/dist/server/dashboard/pages/issue-terminal.d.ts.map +1 -0
  25. package/dist/server/dashboard/pages/issue-terminal.js +363 -0
  26. package/dist/server/dashboard/pages/issue-terminal.js.map +1 -0
  27. package/dist/server/dashboard/pages/issue-view.d.ts +2 -2
  28. package/dist/server/dashboard/pages/issue-view.d.ts.map +1 -1
  29. package/dist/server/dashboard/pages/issue-view.js +49 -1027
  30. package/dist/server/dashboard/pages/issue-view.js.map +1 -1
  31. package/dist/server/dashboard/pages/main-dashboard.js +1 -1
  32. package/dist/server/dashboard/pages/main-dashboard.js.map +1 -1
  33. package/dist/server/dashboard/pages/new-issue.d.ts.map +1 -1
  34. package/dist/server/dashboard/pages/new-issue.js +66 -2
  35. package/dist/server/dashboard/pages/new-issue.js.map +1 -1
  36. package/dist/server/dashboard/pages/new-issue.test.js +208 -3
  37. package/dist/server/dashboard/pages/new-issue.test.js.map +1 -1
  38. package/dist/server/dashboard.d.ts +1 -1
  39. package/dist/server/dashboard.d.ts.map +1 -1
  40. package/dist/server/dashboard.js +1 -1
  41. package/dist/server/dashboard.js.map +1 -1
  42. package/dist/server/index.d.ts.map +1 -1
  43. package/dist/server/index.js +35 -5
  44. package/dist/server/index.js.map +1 -1
  45. package/dist/server/watcher.d.ts +1 -1
  46. package/dist/server/watcher.js +1 -1
  47. package/dist/services/issue-io.d.ts +1 -1
  48. package/dist/services/issue-io.js +1 -1
  49. package/dist/utils/config.js +2 -2
  50. package/dist/utils/config.js.map +1 -1
  51. package/package.json +4 -1
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Issue terminal page generator
3
+ */
4
+ import { getConfig } from '../../../utils/config.js';
5
+ import { getIssue } from '../../../core/issue.js';
6
+ import { escapeHtml } from '../utils.js';
7
+ import { generate404Page } from './shared.js';
8
+ import { generateIssueBaseStyles, generateIssueHeader, generateTabsNav, generateIssueBaseScript, } from './issue-shared.js';
9
+ /**
10
+ * Generate the issue terminal page
11
+ */
12
+ export function generateIssueTerminalPage(issueKey, lang) {
13
+ const config = getConfig();
14
+ const issue = getIssue(config.root, issueKey);
15
+ if (!issue) {
16
+ return generate404Page(issueKey, lang);
17
+ }
18
+ const pageData = {
19
+ issueKey,
20
+ title: issue.title,
21
+ commentsCount: issue.comments?.length || 0,
22
+ historyCount: issue.history?.length || 0,
23
+ lang,
24
+ };
25
+ return `<!DOCTYPE html>
26
+ <html lang="${lang}">
27
+ <head>
28
+ <meta charset="UTF-8">
29
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
30
+ <title>Terminal - ${escapeHtml(issue.title)} - ${issueKey} - AutoCode</title>
31
+ <style>
32
+ ${generateIssueBaseStyles()}
33
+
34
+ .claude-status {
35
+ font-size: 11px;
36
+ padding: 3px 10px;
37
+ border-radius: 12px;
38
+ background: var(--bg-tertiary);
39
+ color: var(--muted);
40
+ }
41
+ .claude-status.processing {
42
+ color: var(--yellow);
43
+ animation: pulse 1s infinite;
44
+ }
45
+ .claude-status.success { color: var(--green); }
46
+ .claude-status.error { color: var(--red); }
47
+ .claude-log {
48
+ background: #0d1117;
49
+ border: 1px solid var(--border);
50
+ border-radius: 8px;
51
+ padding: 16px;
52
+ min-height: 400px;
53
+ max-height: 70vh;
54
+ overflow-y: auto;
55
+ font-family: 'SF Mono', Monaco, 'Consolas', monospace;
56
+ font-size: 12px;
57
+ line-height: 1.6;
58
+ white-space: pre-wrap;
59
+ word-break: break-word;
60
+ color: var(--text);
61
+ }
62
+
63
+ /* Formatted log entries */
64
+ .log-entry { margin-bottom: 8px; padding: 8px 12px; border-radius: 4px; border-left: 3px solid transparent; flex-shrink: 0; }
65
+ .log-entry.timestamp { color: #8b949e; font-size: 11px; border-left-color: #484f58; background: transparent; padding: 4px 12px; }
66
+ .log-entry.system { color: #8b949e; border-left-color: #484f58; background: rgba(139,148,158,0.1); }
67
+ .log-entry.user { color: #58a6ff; border-left-color: #58a6ff; background: rgba(88,166,255,0.1); }
68
+ .log-entry.assistant { color: #7ee787; border-left-color: #7ee787; background: rgba(126,231,135,0.1); }
69
+ .log-entry.tool-call { color: #d2a8ff; border-left-color: #d2a8ff; background: rgba(210,168,255,0.1); padding: 12px; }
70
+ .log-entry.tool-result { color: #ffa657; border-left-color: #ffa657; background: rgba(255,166,87,0.1); }
71
+ .log-entry.error { color: #f85149; border-left-color: #f85149; background: rgba(248,81,73,0.1); }
72
+ .log-entry.success { color: #7ee787; border-left-color: #7ee787; background: rgba(126,231,135,0.1); }
73
+ .log-label { font-weight: 600; font-size: 11px; text-transform: uppercase; margin-bottom: 4px; display: block; opacity: 0.8; }
74
+ .log-content { white-space: pre-wrap; word-break: break-word; }
75
+
76
+ /* Code blocks */
77
+ .log-code-block { background: #161b22; border-radius: 6px; overflow: hidden; margin: 8px 0; border: 1px solid #30363d; }
78
+ .log-code-header { background: #21262d; padding: 8px 12px; font-size: 12px; color: #8b949e; border-bottom: 1px solid #30363d; display: flex; align-items: center; gap: 8px; cursor: pointer; }
79
+ .log-code-header::before { content: ''; display: inline-block; width: 12px; height: 12px; background: #ffa657; border-radius: 50%; }
80
+ .log-code-content { padding: 12px; overflow-x: auto; font-family: 'Fira Code', 'SF Mono', Monaco, monospace; font-size: 12px; line-height: 1.5; max-height: 400px; overflow-y: auto; }
81
+
82
+ /* Message cards */
83
+ .log-message-card { background: #161b22; border-radius: 8px; margin: 12px 0; overflow: hidden; border: 1px solid #30363d; flex-shrink: 0; }
84
+ .log-message-header { padding: 10px 14px; display: flex; align-items: center; gap: 8px; font-weight: 500; font-size: 13px; }
85
+ .log-message-header.assistant-header { background: linear-gradient(135deg, #238636 0%, #2ea043 100%); color: white; }
86
+ .log-message-header.user-header { background: linear-gradient(135deg, #1f6feb 0%, #388bfd 100%); color: white; }
87
+ .log-message-header.tool-header { background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%); color: white; }
88
+ .log-message-header.result-header { background: linear-gradient(135deg, #f97316 0%, #fb923c 100%); color: white; }
89
+ .log-message-body { padding: 14px; border-top: 1px solid #30363d; color: #c9d1d9; white-space: pre-wrap; word-break: break-word; }
90
+
91
+ /* Tool badges */
92
+ .log-tool-badge { display: inline-flex; align-items: center; gap: 6px; background: rgba(139,92,246,0.2); color: #a78bfa; padding: 4px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; }
93
+
94
+ @keyframes pulse {
95
+ 0%, 100% { opacity: 1; }
96
+ 50% { opacity: 0.5; }
97
+ }
98
+ </style>
99
+ </head>
100
+ <body>
101
+ ${generateIssueHeader(issueKey, issue.title)}
102
+ ${generateTabsNav(issueKey, 'terminal', pageData)}
103
+
104
+ <main class="main-content">
105
+ <div class="section">
106
+ <div class="section-title">
107
+ <span data-i18n="issueView.claudeTerminal">Claude Terminal</span>
108
+ <span class="claude-status" id="claude-status" data-i18n="status.waiting">Waiting</span>
109
+ </div>
110
+ <pre class="claude-log" id="claude-log"></pre>
111
+ </div>
112
+ </main>
113
+
114
+ <div class="notification" id="notification"></div>
115
+
116
+ <script>
117
+ ${generateIssueBaseScript(issueKey)}
118
+
119
+ function escapeHtmlLog(str) {
120
+ if (typeof str !== 'string') return '';
121
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
122
+ }
123
+
124
+ function formatCodeBlock(content, filename) {
125
+ const lines = content.split(/\\\\n|\\n/);
126
+ let lang = 'plaintext';
127
+ if (filename) {
128
+ const ext = filename.split('.').pop().toLowerCase();
129
+ const langMap = {
130
+ 'js': 'javascript', 'ts': 'typescript', 'vue': 'html', 'jsx': 'javascript',
131
+ 'tsx': 'typescript', 'py': 'python', 'rb': 'ruby', 'java': 'java',
132
+ 'go': 'go', 'rs': 'rust', 'cpp': 'cpp', 'c': 'c', 'h': 'c',
133
+ 'css': 'css', 'scss': 'scss', 'html': 'html', 'json': 'json',
134
+ 'md': 'markdown', 'sh': 'bash', 'yml': 'yaml', 'yaml': 'yaml'
135
+ };
136
+ lang = langMap[ext] || 'plaintext';
137
+ }
138
+ let codeLines = [];
139
+ for (const line of lines) {
140
+ const match = line.match(/^\\s*\\d+[→|](.*)$/);
141
+ if (match) {
142
+ codeLines.push(match[1]);
143
+ } else if (line.trim()) {
144
+ codeLines.push(line);
145
+ }
146
+ }
147
+ const codeContent = codeLines.join('\\n');
148
+ const lineCount = codeLines.length;
149
+ const preview = filename || (lineCount + ' lines');
150
+
151
+ let html = '<details class="log-code-block">';
152
+ html += '<summary class="log-code-header"><span class="code-lang">' + lang + '</span> ' + escapeHtmlLog(preview) + '</summary>';
153
+ html += '<pre><code class="language-' + lang + '">' + escapeHtmlLog(codeContent) + '</code></pre>';
154
+ html += '</details>';
155
+ return html;
156
+ }
157
+
158
+ function formatLogContent(rawContent) {
159
+ if (!rawContent) return '';
160
+ let cleanedContent = rawContent.replace(/<system-reminder>[\\s\\S]*?<\\/system-reminder>/gi, '');
161
+ const lines = cleanedContent.split('\\n');
162
+ const entries = [];
163
+ let textBuffer = [];
164
+
165
+ function flushTextBuffer() {
166
+ if (textBuffer.length > 0) {
167
+ const text = textBuffer.join('\\n');
168
+ entries.push('<div class="log-message-card"><div class="log-message-header assistant-header">Assistant</div><div class="log-message-body">' + renderMarkdown(text) + '</div></div>');
169
+ textBuffer = [];
170
+ }
171
+ }
172
+
173
+ for (const line of lines) {
174
+ if (!line.trim()) {
175
+ if (textBuffer.length > 0) textBuffer.push('');
176
+ continue;
177
+ }
178
+
179
+ const timestampMatch = line.match(/^\\[(\\d{4}-\\d{2}-\\d{2}T[^\\]]+)\\]\\s*(.*)$/);
180
+ if (timestampMatch) {
181
+ flushTextBuffer();
182
+ const date = new Date(timestampMatch[1]);
183
+ const timeStr = date.toLocaleTimeString();
184
+ entries.push('<div class="log-entry timestamp">' + timeStr + ' - ' + escapeHtmlLog(timestampMatch[2]) + '</div>');
185
+ continue;
186
+ }
187
+
188
+ if (line.startsWith('[RAW] ')) {
189
+ const raw = line.slice(6);
190
+ if (!raw.startsWith('{')) continue;
191
+
192
+ if (raw.includes('"type":"tool_result"')) {
193
+ const contentStart = raw.indexOf('"content":"');
194
+ if (contentStart !== -1) {
195
+ let content = raw.slice(contentStart + 11);
196
+ const endQuote = content.lastIndexOf('"');
197
+ if (endQuote > 0) content = content.slice(0, endQuote);
198
+ const decoded = content.replace(/\\\\n/g, '\\n').replace(/\\\\"/g, '"').replace(/\\\\t/g, '\\t');
199
+ if (/^\\s*\\d+[→|]/.test(decoded)) {
200
+ entries.push('<div class="log-message-card"><div class="log-message-header result-header">Tool Result</div><div class="log-message-body">' + formatCodeBlock(decoded) + '</div></div>');
201
+ } else {
202
+ const resultLines = decoded.split('\\n').slice(0, 20);
203
+ const truncated = decoded.split('\\n').length > 20 ? '<div style="color:#8b949e;font-style:italic">... (truncated)</div>' : '';
204
+ entries.push('<div class="log-message-card"><div class="log-message-header result-header">Tool Result</div><div class="log-message-body" style="font-family:monospace;font-size:12px;white-space:pre-wrap;max-height:200px;overflow-y:auto">' + escapeHtmlLog(resultLines.join('\\n')) + truncated + '</div></div>');
205
+ }
206
+ continue;
207
+ }
208
+ }
209
+
210
+ const textMatch = raw.match(/"type":"text","text":"([^"]+)"/);
211
+ if (textMatch) {
212
+ const decoded = textMatch[1].replace(/\\\\n/g, '\\n').replace(/\\\\"/g, '"');
213
+ entries.push('<div class="log-message-card"><div class="log-message-header assistant-header">Assistant</div><div class="log-message-body">' + renderMarkdown(decoded) + '</div></div>');
214
+ continue;
215
+ }
216
+
217
+ const toolMatch = raw.match(/"type":"tool_use"[^}]*"name":"([^"]+)"/);
218
+ if (toolMatch) {
219
+ entries.push('<div class="log-entry tool-call"><span class="log-tool-badge">' + escapeHtmlLog(toolMatch[1]) + '</span></div>');
220
+ continue;
221
+ }
222
+ continue;
223
+ }
224
+
225
+ if (line.startsWith('[SYSTEM]')) {
226
+ flushTextBuffer();
227
+ entries.push('<div class="log-entry system"><span class="log-label">System</span><div class="log-content">' + escapeHtmlLog(line.slice(9)) + '</div></div>');
228
+ continue;
229
+ }
230
+ if (line.startsWith('[ASSISTANT]')) {
231
+ flushTextBuffer();
232
+ entries.push('<div class="log-message-card"><div class="log-message-header assistant-header">Assistant</div><div class="log-message-body">' + renderMarkdown(line.slice(12)) + '</div></div>');
233
+ continue;
234
+ }
235
+ if (line.startsWith('[TOOL]')) {
236
+ flushTextBuffer();
237
+ entries.push('<div class="log-entry tool-call"><span class="log-tool-badge">' + escapeHtmlLog(line.slice(7)) + '</span></div>');
238
+ continue;
239
+ }
240
+ if (line.startsWith('[RESULT]')) {
241
+ flushTextBuffer();
242
+ const content = line.slice(9);
243
+ if (/^\\s*\\d+[→|]/.test(content)) {
244
+ entries.push('<div class="log-message-card"><div class="log-message-header result-header">Result</div><div class="log-message-body">' + formatCodeBlock(content) + '</div></div>');
245
+ } else {
246
+ entries.push('<div class="log-message-card"><div class="log-message-header result-header">Result</div><div class="log-message-body">' + escapeHtmlLog(content.slice(0, 1000)) + (content.length > 1000 ? '...' : '') + '</div></div>');
247
+ }
248
+ continue;
249
+ }
250
+ if (line.startsWith('[ERROR]')) {
251
+ flushTextBuffer();
252
+ entries.push('<div class="log-entry error"><span class="log-label">Error</span><div class="log-content">' + escapeHtmlLog(line.slice(8)) + '</div></div>');
253
+ continue;
254
+ }
255
+
256
+ textBuffer.push(line);
257
+ }
258
+
259
+ flushTextBuffer();
260
+ return entries.join('');
261
+ }
262
+
263
+ // WebSocket & Log polling
264
+ let ws;
265
+ let logPollingInterval = null;
266
+
267
+ function connectWebSocket() {
268
+ const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
269
+ ws = new WebSocket(protocol + '//' + location.host + '/ws');
270
+
271
+ ws.onmessage = (event) => {
272
+ try {
273
+ const data = JSON.parse(event.data);
274
+ switch (data.type) {
275
+ case 'issue_updated':
276
+ if (data.key === ISSUE_KEY) {
277
+ location.reload();
278
+ }
279
+ break;
280
+ case 'claude_start':
281
+ if (data.issue === ISSUE_KEY) {
282
+ onClaudeStart();
283
+ }
284
+ break;
285
+ case 'claude_stream':
286
+ if (data.issue === ISSUE_KEY) {
287
+ fetchLog();
288
+ }
289
+ break;
290
+ case 'claude_end':
291
+ if (data.issue === ISSUE_KEY) {
292
+ onClaudeEnd(data.success, data.duration);
293
+ }
294
+ break;
295
+ }
296
+ } catch (e) {
297
+ console.error('WebSocket message error:', e);
298
+ }
299
+ };
300
+
301
+ ws.onclose = () => {
302
+ setTimeout(connectWebSocket, 3000);
303
+ };
304
+ }
305
+
306
+ function startLogPolling() {
307
+ stopLogPolling();
308
+ logPollingInterval = setInterval(fetchLog, 1000);
309
+ fetchLog();
310
+ }
311
+
312
+ function stopLogPolling() {
313
+ if (logPollingInterval) {
314
+ clearInterval(logPollingInterval);
315
+ logPollingInterval = null;
316
+ }
317
+ }
318
+
319
+ async function fetchLog() {
320
+ try {
321
+ const res = await fetch('/api/issues/' + ISSUE_KEY + '/log');
322
+ const json = await res.json();
323
+ const log = document.getElementById('claude-log');
324
+
325
+ if (json.success && json.data && (json.data.exists || json.data.content)) {
326
+ log.innerHTML = formatLogContent(json.data.content || '');
327
+ log.scrollTop = log.scrollHeight;
328
+ } else {
329
+ log.innerHTML = '<div class="log-entry system">' + t('issueView.noLog') + '</div>';
330
+ }
331
+ } catch (e) {
332
+ console.error('Log fetch error:', e);
333
+ }
334
+ }
335
+
336
+ function onClaudeStart() {
337
+ const status = document.getElementById('claude-status');
338
+ status.className = 'claude-status processing';
339
+ status.textContent = t('status.processing');
340
+ startLogPolling();
341
+ }
342
+
343
+ function onClaudeEnd(success, duration) {
344
+ stopLogPolling();
345
+ fetchLog();
346
+ const status = document.getElementById('claude-status');
347
+ if (success) {
348
+ status.className = 'claude-status success';
349
+ status.textContent = t('status.completed') + ' (' + (duration / 1000).toFixed(1) + 's)';
350
+ } else {
351
+ status.className = 'claude-status error';
352
+ status.textContent = t('status.failed');
353
+ }
354
+ }
355
+
356
+ // Init
357
+ connectWebSocket();
358
+ fetchLog();
359
+ </script>
360
+ </body>
361
+ </html>`;
362
+ }
363
+ //# sourceMappingURL=issue-terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-terminal.js","sourceRoot":"","sources":["../../../../src/server/dashboard/pages/issue-terminal.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,IAAY;IACtE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAkB;QAC9B,QAAQ;QACR,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;QAC1C,YAAY,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;QACxC,IAAI;KACL,CAAC;IAEF,OAAO;cACK,IAAI;;;;sBAII,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,QAAQ;;MAErD,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqE3B,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;IAC1C,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;;;;;;;;;;;;;;;MAe7C,uBAAuB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoP/B,CAAC;AACT,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Issue view page generator
2
+ * Issue view page generator (Details tab)
3
3
  */
4
4
  /**
5
- * Generate the issue view page
5
+ * Generate the issue view page (Details tab)
6
6
  */
7
7
  export declare function generateIssueViewPage(issueKey: string, lang: string): string;
8
8
  //# sourceMappingURL=issue-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-view.d.ts","sourceRoot":"","sources":["../../../../src/server/dashboard/pages/issue-view.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA00C5E"}
1
+ {"version":3,"file":"issue-view.d.ts","sourceRoot":"","sources":["../../../../src/server/dashboard/pages/issue-view.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAwX5E"}