@polishd/next 0.2.3-dev.5 → 0.2.3-dev.6
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/CHANGELOG.md +79 -14
- package/README.md +5 -0
- package/dist/ai/actions.d.ts +13 -1
- package/dist/ai/actions.d.ts.map +1 -1
- package/dist/ai/actions.js +20 -1
- package/dist/ai/actions.js.map +1 -1
- package/dist/ai/design.d.ts +5 -1
- package/dist/ai/design.d.ts.map +1 -1
- package/dist/ai/design.js +21 -4
- package/dist/ai/design.js.map +1 -1
- package/dist/ai/fix.d.ts +14 -0
- package/dist/ai/fix.d.ts.map +1 -0
- package/dist/ai/fix.js +254 -0
- package/dist/ai/fix.js.map +1 -0
- package/dist/ai/guard.d.ts.map +1 -1
- package/dist/ai/guard.js +8 -32
- package/dist/ai/guard.js.map +1 -1
- package/dist/ai/issues.d.ts +29 -6
- package/dist/ai/issues.d.ts.map +1 -1
- package/dist/ai/issues.js +113 -40
- package/dist/ai/issues.js.map +1 -1
- package/dist/ai/types.d.ts +52 -0
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/dashboard/design-review-card.d.ts +3 -1
- package/dist/dashboard/design-review-card.d.ts.map +1 -1
- package/dist/dashboard/design-review-card.js +14 -6
- package/dist/dashboard/design-review-card.js.map +1 -1
- package/dist/dashboard/design.d.ts.map +1 -1
- package/dist/dashboard/design.js +75 -17
- package/dist/dashboard/design.js.map +1 -1
- package/dist/dashboard/file-bug-button.d.ts +14 -0
- package/dist/dashboard/file-bug-button.d.ts.map +1 -0
- package/dist/dashboard/file-bug-button.js +37 -0
- package/dist/dashboard/file-bug-button.js.map +1 -0
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +4 -2
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/issue-list.d.ts +11 -0
- package/dist/dashboard/issue-list.d.ts.map +1 -0
- package/dist/dashboard/issue-list.js +159 -0
- package/dist/dashboard/issue-list.js.map +1 -0
- package/dist/dashboard/issues.d.ts +31 -2
- package/dist/dashboard/issues.d.ts.map +1 -1
- package/dist/dashboard/issues.js +4 -71
- package/dist/dashboard/issues.js.map +1 -1
- package/dist/dashboard/markdown-parse.d.ts +87 -0
- package/dist/dashboard/markdown-parse.d.ts.map +1 -0
- package/dist/dashboard/markdown-parse.js +244 -0
- package/dist/dashboard/markdown-parse.js.map +1 -0
- package/dist/dashboard/markdown.d.ts +5 -0
- package/dist/dashboard/markdown.d.ts.map +1 -0
- package/dist/dashboard/markdown.js +65 -0
- package/dist/dashboard/markdown.js.map +1 -0
- package/dist/dashboard/snapshot-actions.d.ts.map +1 -1
- package/dist/dashboard/snapshot-actions.js +22 -54
- package/dist/dashboard/snapshot-actions.js.map +1 -1
- package/dist/dashboard/snapshots.d.ts.map +1 -1
- package/dist/dashboard/snapshots.js +7 -20
- package/dist/dashboard/snapshots.js.map +1 -1
- package/dist/dashboard/summary.d.ts.map +1 -1
- package/dist/dashboard/summary.js +8 -36
- package/dist/dashboard/summary.js.map +1 -1
- package/dist/dashboard/ui.d.ts +1 -0
- package/dist/dashboard/ui.d.ts.map +1 -1
- package/dist/dashboard/ui.js +1 -0
- package/dist/dashboard/ui.js.map +1 -1
- package/dist/dashboard/value-preview.d.ts +47 -0
- package/dist/dashboard/value-preview.d.ts.map +1 -0
- package/dist/dashboard/value-preview.js +138 -0
- package/dist/dashboard/value-preview.js.map +1 -0
- package/dist/dashboard.css +234 -62
- package/dist/server/snapshots.d.ts +32 -4
- package/dist/server/snapshots.d.ts.map +1 -1
- package/dist/server/snapshots.js +146 -24
- package/dist/server/snapshots.js.map +1 -1
- package/dist/server/value-previews.d.ts +47 -0
- package/dist/server/value-previews.d.ts.map +1 -0
- package/dist/server/value-previews.js +313 -0
- package/dist/server/value-previews.js.map +1 -0
- package/dist/shared/design-values.d.ts +71 -0
- package/dist/shared/design-values.d.ts.map +1 -0
- package/dist/shared/design-values.js +98 -0
- package/dist/shared/design-values.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Polishd — a small GitHub-flavored-markdown parser (pure, no dependencies).
|
|
3
|
+
*
|
|
4
|
+
* The Issues tab shows issue bodies that are real markdown: polishd writes
|
|
5
|
+
* them (`issueBody` in `src/ai/issues.ts` emits headings, bold, code, link
|
|
6
|
+
* lists, blockquotes) and humans edit them on GitHub afterwards. Rendering
|
|
7
|
+
* that as a raw `<pre>` wastes the structure — but the package's rule is zero
|
|
8
|
+
* runtime dependencies, so `react-markdown` and friends are off the table.
|
|
9
|
+
*
|
|
10
|
+
* This module is the answer: a bounded, hand-written parser for the subset of
|
|
11
|
+
* GFM that actually appears in issues — headings, paragraphs, fenced code,
|
|
12
|
+
* blockquotes, ordered/unordered/task lists (nested), tables, rules, and the
|
|
13
|
+
* inline set (bold, italic, strikethrough, code, links, images, autolinks).
|
|
14
|
+
* One GitHub-ism matters: inside a paragraph a single newline is a hard
|
|
15
|
+
* break, the way issue comments render. Anything the parser doesn't
|
|
16
|
+
* recognize degrades to plain paragraph text — never a crash, never dropped
|
|
17
|
+
* content.
|
|
18
|
+
*
|
|
19
|
+
* Parsing is kept apart from rendering (`markdown.tsx`) so the grammar can be
|
|
20
|
+
* pinned down by plain node:test files with no React in sight.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Ordered by precedence for ties at the same index: code spans protect their
|
|
24
|
+
* contents from everything else, images must beat links (shared `[` syntax),
|
|
25
|
+
* and `**strong**` must beat `*em*`.
|
|
26
|
+
*/
|
|
27
|
+
const INLINE_RULES = [
|
|
28
|
+
{ re: /`([^`\n]+)`/, make: (m) => ({ kind: "code", text: m[1] }) },
|
|
29
|
+
{
|
|
30
|
+
re: /!\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/,
|
|
31
|
+
make: (m) => ({ kind: "image", alt: m[1], src: m[2] }),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
re: /\[([^\]]+)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/,
|
|
35
|
+
make: (m) => ({ kind: "link", href: m[2], children: parseInline(m[1]) }),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
re: /\*\*((?:[^*\n]|\*(?!\*))+)\*\*/,
|
|
39
|
+
make: (m) => ({ kind: "strong", children: parseInline(m[1]) }),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
re: /__((?:[^_\n]|_(?!_))+)__/,
|
|
43
|
+
make: (m) => ({ kind: "strong", children: parseInline(m[1]) }),
|
|
44
|
+
},
|
|
45
|
+
{ re: /\*([^*\n]+)\*/, make: (m) => ({ kind: "em", children: parseInline(m[1]) }) },
|
|
46
|
+
{
|
|
47
|
+
re: /(?<![A-Za-z0-9_])_([^_\n]+)_(?![A-Za-z0-9_])/,
|
|
48
|
+
make: (m) => ({ kind: "em", children: parseInline(m[1]) }),
|
|
49
|
+
},
|
|
50
|
+
{ re: /~~([^~\n]+)~~/, make: (m) => ({ kind: "del", children: parseInline(m[1]) }) },
|
|
51
|
+
{
|
|
52
|
+
re: /https?:\/\/[^\s<>]*[^\s<>.,;:!?)'"`]/,
|
|
53
|
+
make: (m) => ({ kind: "link", href: m[0], children: [{ kind: "text", text: m[0] }] }),
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
/** Plain text, with each newline becoming a hard break (GitHub issue style). */
|
|
57
|
+
function pushText(out, text) {
|
|
58
|
+
if (!text)
|
|
59
|
+
return;
|
|
60
|
+
const parts = text.split("\n");
|
|
61
|
+
parts.forEach((part, i) => {
|
|
62
|
+
if (i > 0)
|
|
63
|
+
out.push({ kind: "break" });
|
|
64
|
+
if (part)
|
|
65
|
+
out.push({ kind: "text", text: part });
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/** Parse one run of inline markdown into a token list. */
|
|
69
|
+
export function parseInline(text) {
|
|
70
|
+
const out = [];
|
|
71
|
+
let rest = text;
|
|
72
|
+
while (rest.length > 0) {
|
|
73
|
+
let best = null;
|
|
74
|
+
for (const rule of INLINE_RULES) {
|
|
75
|
+
const m = rule.re.exec(rest);
|
|
76
|
+
if (m && (best === null || m.index < best.index)) {
|
|
77
|
+
best = { index: m.index, length: m[0].length, node: rule.make(m) };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!best) {
|
|
81
|
+
pushText(out, rest);
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
pushText(out, rest.slice(0, best.index));
|
|
85
|
+
out.push(best.node);
|
|
86
|
+
rest = rest.slice(best.index + best.length);
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
// ── Block parsing ────────────────────────────────────────────────────────────
|
|
91
|
+
const HEADING_RE = /^(#{1,6})\s+(.*?)\s*#*\s*$/;
|
|
92
|
+
const RULE_RE = /^ {0,3}(?:-{3,}|\*{3,}|_{3,})\s*$/;
|
|
93
|
+
const FENCE_RE = /^ {0,3}(```|~~~)\s*(\S*)\s*$/;
|
|
94
|
+
const QUOTE_RE = /^ {0,3}>\s?(.*)$/;
|
|
95
|
+
const LIST_RE = /^(\s*)(?:([-*+])|(\d{1,9})[.)])\s+(.*)$/;
|
|
96
|
+
/** The `| --- | :--: |` row that promotes the line above it to a table header. */
|
|
97
|
+
const TABLE_SEP_RE = /^\s*\|?[\s:|-]*-[\s:|-]*\|?\s*$/;
|
|
98
|
+
function isBlank(line) {
|
|
99
|
+
return line.trim().length === 0;
|
|
100
|
+
}
|
|
101
|
+
/** Does this line begin a block of its own, ending any open paragraph? */
|
|
102
|
+
function startsBlock(line) {
|
|
103
|
+
return (HEADING_RE.test(line) ||
|
|
104
|
+
RULE_RE.test(line) ||
|
|
105
|
+
FENCE_RE.test(line) ||
|
|
106
|
+
QUOTE_RE.test(line) ||
|
|
107
|
+
LIST_RE.test(line));
|
|
108
|
+
}
|
|
109
|
+
/** `| a | b |` → ["a", "b"]. Outer pipes optional, cells trimmed. */
|
|
110
|
+
function splitCells(line) {
|
|
111
|
+
let t = line.trim();
|
|
112
|
+
if (t.startsWith("|"))
|
|
113
|
+
t = t.slice(1);
|
|
114
|
+
if (t.endsWith("|"))
|
|
115
|
+
t = t.slice(0, -1);
|
|
116
|
+
return t.split("|").map((c) => c.trim());
|
|
117
|
+
}
|
|
118
|
+
/** Fold rows into (possibly nested) items — deeper indent means a sublist. */
|
|
119
|
+
function buildList(rows, pos, level) {
|
|
120
|
+
const ordered = rows[pos.i].ordered;
|
|
121
|
+
const items = [];
|
|
122
|
+
while (pos.i < rows.length) {
|
|
123
|
+
const row = rows[pos.i];
|
|
124
|
+
if (row.indent < level)
|
|
125
|
+
break;
|
|
126
|
+
if (row.indent > level) {
|
|
127
|
+
const sub = buildList(rows, pos, row.indent);
|
|
128
|
+
if (items.length > 0)
|
|
129
|
+
items[items.length - 1].sub = sub;
|
|
130
|
+
else
|
|
131
|
+
items.push({ children: [], sub });
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
pos.i += 1;
|
|
135
|
+
let text = row.text;
|
|
136
|
+
let checked;
|
|
137
|
+
const task = text.match(/^\[([ xX])\]\s+(.*)$/);
|
|
138
|
+
if (task) {
|
|
139
|
+
checked = task[1] !== " ";
|
|
140
|
+
text = task[2];
|
|
141
|
+
}
|
|
142
|
+
items.push({ checked, children: parseInline(text) });
|
|
143
|
+
}
|
|
144
|
+
return { ordered, items };
|
|
145
|
+
}
|
|
146
|
+
/** Parse a whole markdown document into blocks. */
|
|
147
|
+
export function parseMarkdown(md) {
|
|
148
|
+
const lines = md.replace(/\r\n?/g, "\n").split("\n");
|
|
149
|
+
const blocks = [];
|
|
150
|
+
let i = 0;
|
|
151
|
+
while (i < lines.length) {
|
|
152
|
+
const line = lines[i];
|
|
153
|
+
if (isBlank(line)) {
|
|
154
|
+
i += 1;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
// Fenced code — verbatim until the closing fence (or the end of input).
|
|
158
|
+
const fence = line.match(FENCE_RE);
|
|
159
|
+
if (fence) {
|
|
160
|
+
const marker = fence[1];
|
|
161
|
+
const body = [];
|
|
162
|
+
i += 1;
|
|
163
|
+
while (i < lines.length && !lines[i].trim().startsWith(marker)) {
|
|
164
|
+
body.push(lines[i]);
|
|
165
|
+
i += 1;
|
|
166
|
+
}
|
|
167
|
+
i += 1; // past the closing fence, harmless at end of input
|
|
168
|
+
blocks.push({ kind: "codeBlock", lang: fence[2], text: body.join("\n") });
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
const heading = line.match(HEADING_RE);
|
|
172
|
+
if (heading) {
|
|
173
|
+
blocks.push({
|
|
174
|
+
kind: "heading",
|
|
175
|
+
level: heading[1].length,
|
|
176
|
+
children: parseInline(heading[2]),
|
|
177
|
+
});
|
|
178
|
+
i += 1;
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (RULE_RE.test(line)) {
|
|
182
|
+
blocks.push({ kind: "rule" });
|
|
183
|
+
i += 1;
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
// Blockquote — strip the markers and parse the inside as its own document.
|
|
187
|
+
if (QUOTE_RE.test(line)) {
|
|
188
|
+
const inner = [];
|
|
189
|
+
while (i < lines.length && QUOTE_RE.test(lines[i])) {
|
|
190
|
+
inner.push(lines[i].match(QUOTE_RE)[1]);
|
|
191
|
+
i += 1;
|
|
192
|
+
}
|
|
193
|
+
blocks.push({ kind: "quote", children: parseMarkdown(inner.join("\n")) });
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
// Table — a pipe row whose next line is the `---|---` separator.
|
|
197
|
+
if (line.includes("|") && i + 1 < lines.length && TABLE_SEP_RE.test(lines[i + 1]) && lines[i + 1].includes("|")) {
|
|
198
|
+
const header = splitCells(line).map(parseInline);
|
|
199
|
+
i += 2;
|
|
200
|
+
const rows = [];
|
|
201
|
+
while (i < lines.length && lines[i].includes("|") && !isBlank(lines[i])) {
|
|
202
|
+
rows.push(splitCells(lines[i]).map(parseInline));
|
|
203
|
+
i += 1;
|
|
204
|
+
}
|
|
205
|
+
blocks.push({ kind: "table", header, rows });
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
// List — collect the run of list lines (plus indented continuations),
|
|
209
|
+
// then fold it into a tree by indent.
|
|
210
|
+
if (LIST_RE.test(line)) {
|
|
211
|
+
const rows = [];
|
|
212
|
+
while (i < lines.length) {
|
|
213
|
+
const m = lines[i].match(LIST_RE);
|
|
214
|
+
if (m) {
|
|
215
|
+
rows.push({ indent: m[1].length, ordered: m[3] !== undefined, text: m[4] });
|
|
216
|
+
i += 1;
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
// A deeper-indented plain line continues the previous item's text.
|
|
220
|
+
if (rows.length > 0 && /^\s{2,}\S/.test(lines[i])) {
|
|
221
|
+
rows[rows.length - 1].text += `\n${lines[i].trim()}`;
|
|
222
|
+
i += 1;
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
blocks.push({ kind: "list", list: buildList(rows, { i: 0 }, rows[0].indent) });
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
// Paragraph — everything up to a blank line or the start of another block.
|
|
231
|
+
const para = [line];
|
|
232
|
+
i += 1;
|
|
233
|
+
while (i < lines.length && !isBlank(lines[i]) && !startsBlock(lines[i])) {
|
|
234
|
+
// A `---|---` line would turn the next line into a table header, not us.
|
|
235
|
+
if (lines[i].includes("|") && i + 1 < lines.length && TABLE_SEP_RE.test(lines[i + 1]))
|
|
236
|
+
break;
|
|
237
|
+
para.push(lines[i]);
|
|
238
|
+
i += 1;
|
|
239
|
+
}
|
|
240
|
+
blocks.push({ kind: "paragraph", children: parseInline(para.join("\n")) });
|
|
241
|
+
}
|
|
242
|
+
return blocks;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=markdown-parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-parse.js","sourceRoot":"","sources":["../../src/dashboard/markdown-parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/dashboard/markdown.tsx"],"names":[],"mappings":"AA4LA,4DAA4D;AAC5D,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,+BAMlD"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { parseMarkdown, } from "./markdown-parse";
|
|
3
|
+
const codeSpan = "rounded bg-[#1a1a1a] px-1 py-0.5 font-mono text-[0.92em] text-[#ddd]";
|
|
4
|
+
function renderInline(nodes) {
|
|
5
|
+
return nodes.map((node, i) => {
|
|
6
|
+
switch (node.kind) {
|
|
7
|
+
case "text":
|
|
8
|
+
return node.text;
|
|
9
|
+
case "break":
|
|
10
|
+
return _jsx("br", {}, i);
|
|
11
|
+
case "code":
|
|
12
|
+
return (_jsx("code", { className: codeSpan, children: node.text }, i));
|
|
13
|
+
case "strong":
|
|
14
|
+
return (_jsx("strong", { className: "font-semibold text-[#ddd]", children: renderInline(node.children) }, i));
|
|
15
|
+
case "em":
|
|
16
|
+
return _jsx("em", { children: renderInline(node.children) }, i);
|
|
17
|
+
case "del":
|
|
18
|
+
return (_jsx("del", { className: "text-[#777]", children: renderInline(node.children) }, i));
|
|
19
|
+
case "link":
|
|
20
|
+
return (_jsx("a", { href: node.href, target: "_blank", rel: "noreferrer noopener", className: "break-words text-[#8ab4f8] hover:underline", children: renderInline(node.children) }, i));
|
|
21
|
+
case "image":
|
|
22
|
+
return (
|
|
23
|
+
// Plain <img>, not next/image — screenshots live on arbitrary hosts
|
|
24
|
+
// the consumer's image config knows nothing about.
|
|
25
|
+
_jsx("img", { src: node.src, alt: node.alt, loading: "lazy", className: "my-1 max-w-full rounded-md border border-[#2e2e2e]" }, i));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function List({ list }) {
|
|
30
|
+
const Tag = list.ordered ? "ol" : "ul";
|
|
31
|
+
return (_jsx(Tag, { className: `space-y-1 pl-5 ${list.ordered ? "list-decimal" : "list-disc"} marker:text-[#555]`, children: list.items.map((item, i) => (_jsxs("li", { children: [item.checked !== undefined && (_jsx("span", { "aria-hidden": true, className: `mr-1.5 font-mono ${item.checked ? "text-emerald-500" : "text-[#555]"}`, children: item.checked ? "☑" : "☐" })), renderInline(item.children), item.sub && (_jsx("div", { className: "mt-1", children: _jsx(List, { list: item.sub }) }))] }, i))) }));
|
|
32
|
+
}
|
|
33
|
+
const HEADING_CLS = {
|
|
34
|
+
1: "text-[15px] font-semibold text-white",
|
|
35
|
+
2: "text-[14px] font-semibold text-white",
|
|
36
|
+
3: "text-[13px] font-semibold text-[#ddd]",
|
|
37
|
+
4: "text-[12px] font-semibold text-[#ddd]",
|
|
38
|
+
5: "text-[12px] font-medium text-[#ccc]",
|
|
39
|
+
6: "text-[11px] font-medium uppercase tracking-[0.08em] text-[#888]",
|
|
40
|
+
};
|
|
41
|
+
function renderBlock(block, key) {
|
|
42
|
+
switch (block.kind) {
|
|
43
|
+
case "heading": {
|
|
44
|
+
const Tag = `h${Math.min(block.level + 2, 6)}`;
|
|
45
|
+
return (_jsx(Tag, { className: `pt-1 ${HEADING_CLS[block.level]}`, children: renderInline(block.children) }, key));
|
|
46
|
+
}
|
|
47
|
+
case "paragraph":
|
|
48
|
+
return _jsx("p", { children: renderInline(block.children) }, key);
|
|
49
|
+
case "codeBlock":
|
|
50
|
+
return (_jsx("pre", { className: "overflow-x-auto rounded-md border border-[#2e2e2e] bg-[#111] px-3 py-2.5 font-mono text-[11px] leading-relaxed text-[#aaa]", children: _jsx("code", { children: block.text }) }, key));
|
|
51
|
+
case "quote":
|
|
52
|
+
return (_jsx("blockquote", { className: "space-y-2 border-l-2 border-[#2e2e2e] pl-3 text-[#888]", children: block.children.map(renderBlock) }, key));
|
|
53
|
+
case "list":
|
|
54
|
+
return _jsx(List, { list: block.list }, key);
|
|
55
|
+
case "rule":
|
|
56
|
+
return _jsx("hr", { className: "border-t border-[#2e2e2e]" }, key);
|
|
57
|
+
case "table":
|
|
58
|
+
return (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-left text-[12px]", children: [_jsx("thead", { children: _jsx("tr", { children: block.header.map((cell, i) => (_jsx("th", { className: "border-b border-[#2e2e2e] py-1.5 pr-4 font-medium text-[#ddd]", children: renderInline(cell) }, i))) }) }), _jsx("tbody", { children: block.rows.map((row, r) => (_jsx("tr", { children: row.map((cell, c) => (_jsx("td", { className: "border-b border-[#1f1f1f] py-1.5 pr-4", children: renderInline(cell) }, c))) }, r))) })] }) }, key));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** GitHub-flavored markdown → dashboard-styled elements. */
|
|
62
|
+
export function Markdown({ text }) {
|
|
63
|
+
return (_jsx("div", { className: "space-y-2.5 break-words text-[13px] leading-relaxed text-[#aaa]", children: parseMarkdown(text).map(renderBlock) }));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/dashboard/markdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-actions.d.ts","sourceRoot":"","sources":["../../src/dashboard/snapshot-actions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"snapshot-actions.d.ts","sourceRoot":"","sources":["../../src/dashboard/snapshot-actions.ts"],"names":[],"mappings":"AAwBA,OAAO,EAML,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAoB7B;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA+C/E;AAED,8EAA8E;AAC9E,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,CAY7B;AAED,qEAAqE;AACrE,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,qBAAqB,CAAC,CAYhC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAEhF,8EAA8E;AAC9E,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,CAI9B"}
|
|
@@ -19,6 +19,7 @@ import { requirePolishdAuth } from "../ai/guard";
|
|
|
19
19
|
import { resolveSettings } from "../ai/settings";
|
|
20
20
|
import { isDashboardPath, resolveDashboardRoute } from "../config";
|
|
21
21
|
import { getDesignData } from "../server/design";
|
|
22
|
+
import { designPreviewTargets } from "../shared/design-values";
|
|
22
23
|
import { MAX_SNAPSHOT_ROUTES, beginSnapshot, captureSnapshotRoute, finishSnapshot, readSnapshotImage, } from "../server/snapshots";
|
|
23
24
|
/**
|
|
24
25
|
* The origin to shoot. `POLISHD_SITE_ORIGIN` wins when set (proxies, tunnels,
|
|
@@ -38,27 +39,6 @@ async function resolveSiteOrigin() {
|
|
|
38
39
|
(host.startsWith("localhost") || host.startsWith("127.") ? "http" : "https");
|
|
39
40
|
return `${proto}://${host}`;
|
|
40
41
|
}
|
|
41
|
-
/**
|
|
42
|
-
* A denial, phrased for the error box. The capture actions return this rather
|
|
43
|
-
* than letting `PolishdUnauthorizedError` propagate: a thrown error reaches
|
|
44
|
-
* the dashboard as an opaque digest, while the capture UI renders a returned
|
|
45
|
-
* message. The denial itself is unchanged — no work happens.
|
|
46
|
-
*/
|
|
47
|
-
const DENIED = {
|
|
48
|
-
ok: false,
|
|
49
|
-
message: "This dashboard session isn't authorized to capture. Reload the dashboard " +
|
|
50
|
-
"— if it asks you to unlock again, do so — then retry.",
|
|
51
|
-
};
|
|
52
|
-
/** True when the caller may proceed; false is a denial. */
|
|
53
|
-
async function authorized() {
|
|
54
|
-
try {
|
|
55
|
-
await requirePolishdAuth();
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
42
|
/**
|
|
63
43
|
* Capture is chunked into one action call per route — begin, then one
|
|
64
44
|
* `captureSnapshotRouteAction` per returned route, then finish — so no single
|
|
@@ -71,8 +51,7 @@ async function authorized() {
|
|
|
71
51
|
* an opaque digest, while a returned message renders in the card.
|
|
72
52
|
*/
|
|
73
53
|
export async function beginSnapshotCaptureAction() {
|
|
74
|
-
|
|
75
|
-
return DENIED;
|
|
54
|
+
await requirePolishdAuth();
|
|
76
55
|
try {
|
|
77
56
|
const origin = await resolveSiteOrigin();
|
|
78
57
|
if (!origin) {
|
|
@@ -82,35 +61,28 @@ export async function beginSnapshotCaptureAction() {
|
|
|
82
61
|
"to the origin the site is reachable at.",
|
|
83
62
|
};
|
|
84
63
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
//
|
|
88
|
-
|
|
64
|
+
const data = await getDesignData();
|
|
65
|
+
const dashboardRoute = resolveDashboardRoute();
|
|
66
|
+
// Shoot what visitors have actually rendered, never the dashboard itself
|
|
67
|
+
// (nor the telemetry pseudo-paths the collector namespaces under /~polishd).
|
|
68
|
+
const scanned = data.pages
|
|
69
|
+
.map((p) => p.path)
|
|
70
|
+
.filter((p) => p.startsWith("/") && !p.startsWith("/~") && !isDashboardPath(p, dashboardRoute));
|
|
71
|
+
const routes = (scanned.length > 0 ? scanned : ["/"]).slice(0, MAX_SNAPSHOT_ROUTES);
|
|
72
|
+
// Stamp the snapshot with the same metrics fingerprint the AI review caches
|
|
73
|
+
// under, so "taken before/after this round of changes" is a hash comparison.
|
|
89
74
|
let fingerprint = null;
|
|
90
|
-
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
// Shoot what visitors have actually rendered, never the dashboard itself
|
|
94
|
-
// (nor the telemetry pseudo-paths the collector namespaces under /~polishd).
|
|
95
|
-
const scanned = data.pages
|
|
96
|
-
.map((p) => p.path)
|
|
97
|
-
.filter((p) => p.startsWith("/") && !p.startsWith("/~") && !isDashboardPath(p, dashboardRoute));
|
|
98
|
-
routes = (scanned.length > 0 ? scanned : ["/"]).slice(0, MAX_SNAPSHOT_ROUTES);
|
|
99
|
-
// Stamp the snapshot with the same metrics fingerprint the AI review
|
|
100
|
-
// caches under, so "taken before/after this round of changes" is a hash
|
|
101
|
-
// comparison.
|
|
102
|
-
if (data.ready && data.pages.length > 0) {
|
|
103
|
-
const { settings } = await resolveSettings();
|
|
104
|
-
fingerprint = fingerprintDigest(buildDesignDigest(data, settings.context));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch (err) {
|
|
108
|
-
console.error("[polishd] snapshot route planning failed, shooting / only:", err);
|
|
75
|
+
if (data.ready && data.pages.length > 0) {
|
|
76
|
+
const { settings } = await resolveSettings();
|
|
77
|
+
fingerprint = fingerprintDigest(buildDesignDigest(data, settings.context));
|
|
109
78
|
}
|
|
110
|
-
|
|
79
|
+
// The one-off and off-grid values flagged right now get pictured in place,
|
|
80
|
+
// so hovering one on the Design tab shows the element that carries it.
|
|
81
|
+
const shot = new Set(routes);
|
|
82
|
+
const targets = designPreviewTargets(data).filter((t) => t.pages.some((p) => shot.has(p)));
|
|
83
|
+
return await beginSnapshot({ origin, routes, fingerprint, targets });
|
|
111
84
|
}
|
|
112
85
|
catch (err) {
|
|
113
|
-
console.error("[polishd] beginSnapshotCaptureAction failed:", err);
|
|
114
86
|
return {
|
|
115
87
|
ok: false,
|
|
116
88
|
message: `Snapshot capture failed unexpectedly: ${err instanceof Error ? err.message : "unknown error"}`,
|
|
@@ -119,13 +91,11 @@ export async function beginSnapshotCaptureAction() {
|
|
|
119
91
|
}
|
|
120
92
|
/** Shoot one route of the capture in progress — both devices, both themes. */
|
|
121
93
|
export async function captureSnapshotRouteAction(id, route) {
|
|
122
|
-
|
|
123
|
-
return DENIED;
|
|
94
|
+
await requirePolishdAuth();
|
|
124
95
|
try {
|
|
125
96
|
return await captureSnapshotRoute(id, route);
|
|
126
97
|
}
|
|
127
98
|
catch (err) {
|
|
128
|
-
console.error("[polishd] captureSnapshotRouteAction failed:", err);
|
|
129
99
|
return {
|
|
130
100
|
ok: false,
|
|
131
101
|
message: `Screenshot capture failed unexpectedly: ${err instanceof Error ? err.message : "unknown error"}`,
|
|
@@ -134,13 +104,11 @@ export async function captureSnapshotRouteAction(id, route) {
|
|
|
134
104
|
}
|
|
135
105
|
/** Record the accumulated shots as a snapshot and prune old ones. */
|
|
136
106
|
export async function finishSnapshotCaptureAction(id) {
|
|
137
|
-
|
|
138
|
-
return DENIED;
|
|
107
|
+
await requirePolishdAuth();
|
|
139
108
|
try {
|
|
140
109
|
return await finishSnapshot(id);
|
|
141
110
|
}
|
|
142
111
|
catch (err) {
|
|
143
|
-
console.error("[polishd] finishSnapshotCaptureAction failed:", err);
|
|
144
112
|
return {
|
|
145
113
|
ok: false,
|
|
146
114
|
message: `The snapshot couldn't be recorded: ${err instanceof Error ? err.message : "unknown error"}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-actions.js","sourceRoot":"","sources":["../../src/dashboard/snapshot-actions.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,iBAAiB,GAIlB,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,OAAO,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,KAAK,GACT,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC1B,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/E,OAAO,GAAG,KAAK,MAAM,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"snapshot-actions.js","sourceRoot":"","sources":["../../src/dashboard/snapshot-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshots.d.ts","sourceRoot":"","sources":["../../src/dashboard/snapshots.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAwGhF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,kBAAkB,+
|
|
1
|
+
{"version":3,"file":"snapshots.d.ts","sourceRoot":"","sources":["../../src/dashboard/snapshots.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,qBAAqB,CAAC;AAwGhF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,kBAAkB,+BA2PlF"}
|
|
@@ -58,20 +58,6 @@ export default function SnapshotsCard({ initial, captureIssue }) {
|
|
|
58
58
|
// A site with no dark mode has its identical dark shots dropped at capture
|
|
59
59
|
// time — hide the toggle rather than offering an empty view.
|
|
60
60
|
const effectiveTheme = selected?.noDarkMode ? "light" : theme;
|
|
61
|
-
// What a rejected action call can tell us, phrased for the error box. In
|
|
62
|
-
// production Next masks a thrown server error to a generic message plus a
|
|
63
|
-
// digest — the digest is the correlation id to grep the host's function
|
|
64
|
-
// logs for, so it is worth surfacing. A transport-level death (the function
|
|
65
|
-
// killed at its time limit, a network drop) has no digest and keeps its
|
|
66
|
-
// fetch-layer message.
|
|
67
|
-
const describeRejection = (err) => {
|
|
68
|
-
console.error("[polishd] capture action rejected:", err);
|
|
69
|
-
if (err instanceof Error) {
|
|
70
|
-
const digest = err.digest;
|
|
71
|
-
return `${err.message}${digest ? ` [digest ${digest}]` : ""}`;
|
|
72
|
-
}
|
|
73
|
-
return String(err);
|
|
74
|
-
};
|
|
75
61
|
const capture = () => {
|
|
76
62
|
setError(null);
|
|
77
63
|
startCapture(async () => {
|
|
@@ -96,9 +82,11 @@ export default function SnapshotsCard({ initial, captureIssue }) {
|
|
|
96
82
|
failure = res.message;
|
|
97
83
|
}
|
|
98
84
|
}
|
|
99
|
-
catch
|
|
85
|
+
catch {
|
|
100
86
|
failed.push(route);
|
|
101
|
-
failure =
|
|
87
|
+
failure =
|
|
88
|
+
"the request failed mid-shoot — usually a serverless function " +
|
|
89
|
+
"time limit; the host's function logs will name the exact failure";
|
|
102
90
|
}
|
|
103
91
|
setProgress({ done: i + 1, total: begun.routes.length });
|
|
104
92
|
}
|
|
@@ -117,10 +105,9 @@ export default function SnapshotsCard({ initial, captureIssue }) {
|
|
|
117
105
|
setError(failure ? `Capture failed: ${failure}.` : fin.message);
|
|
118
106
|
}
|
|
119
107
|
}
|
|
120
|
-
catch
|
|
121
|
-
setError(
|
|
122
|
-
"
|
|
123
|
-
"logs have the server side of it.");
|
|
108
|
+
catch {
|
|
109
|
+
setError("The capture failed before a result came back — your host's function " +
|
|
110
|
+
"logs will name the exact failure.");
|
|
124
111
|
}
|
|
125
112
|
finally {
|
|
126
113
|
setProgress(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../../src/dashboard/snapshots.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../../src/dashboard/snapshots.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/dashboard/summary.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,uBAAuB,EAGvB,qBAAqB,EACrB,cAAc,EACf,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/dashboard/summary.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EACV,uBAAuB,EAGvB,qBAAqB,EACrB,cAAc,EACf,MAAM,aAAa,CAAC;AAcrB,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE,uBAAuB,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC7C,6EAA6E;IAC7E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,GAChB,EAAE,gBAAgB,+BA2HlB"}
|