openpencil/tests/helpers
Danila Poyarkov f8d2dbc7e6
feat(chat): attach dropped images and style tables, menus, and link prompts in replies (#955)
* feat(chat): attach images by dropping them on the chat

Images could be attached with the attach button or by pasting, but a
drop on the chat did nothing: the window's document drop handler left
images to the canvas, so they were dropped silently.

Images dropped anywhere on the chat panel now attach, through the same
path as the attach button and paste, with the same limits and errors.
While images are dragged over the panel, an outline over the composer
says where they go, or why they cannot be attached while a reply runs or
four images are already attached. SVG images are drawn as PNGs, since
vision models take raster images. A drag without images, such as a
.fig, is left to the window, which opens documents.

The canvas and the chat share AppDropOverlay, a typed feedback component
with a light tint over surfaces and a cover over fields.

* fix(chat): style tables, menus, and link prompts in AI replies

vue-stream-markdown drew tables with semibold, filled rows at 14px, with
copy, download, and fullscreen buttons above each; its tooltips doubled
with the browser's, and the link confirmation it teleports out of the
message had no app colors, since the token mapping sat on the message
element only.

The token mapping now lives in markdown.css on the renderer's
.stream-markdown elements, so teleported dialogs and menus use app
colors. Tables use regular weight, a light header, and the chat density's
size, with copy as their only action; task items show their checkbox in
place of the bullet; the copy menu and link prompt follow the app's
menus and dialogs. Hover labels use the app's tooltip, while click menus
keep the renderer's. Links no longer request each site's favicon.

* fix(chat): keep an SVG drawn after sending out of the next message

Drawing a dropped SVG as PNG takes a moment. A message sent or cleared
meanwhile no longer gets the image added to the following draft: each
draft has a generation that sending and clearing advance, and an image
finished for an earlier one is dropped.
2026-10-07 18:18:15 +00:00
..
ai feat(ai): add guided AI setup for providers, coding agents, and Pi (#916) 2026-10-07 08:46:57 +00:00
canvas refactor(design-jsx): extract design JSX into its own package (#793) 2026-09-30 20:55:27 +04:00
chat feat(chat): attach dropped images and style tables, menus, and link prompts in replies (#955) 2026-10-07 18:18:15 +00:00
collab feat(collab)!: sync layer trees as a CRDT and open each room in its own tab (#902) 2026-10-06 10:40:25 +00:00
fig test: resolve repository files without climbing directories (#946) 2026-10-07 12:35:39 +00:00
fonts perf(canvas): reuse labels with shared font fallback 2026-09-15 23:08:53 +03:00
mcp test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
pages feat(app): jump between pages from the command palette (#801) 2026-10-01 20:26:35 +04:00
performance feat: select layers at Figma's click depth (#900) 2026-10-05 12:39:04 +00:00
tauri fix: refuse risky desktop writes and run every Storybook play function (#933) 2026-10-06 14:52:12 +00:00
vue fix(editor): close preview and history lifecycle gaps 2026-09-16 03:36:44 +03:00
assert.ts chore(tests): remove targeted non-null assertions 2026-05-06 01:14:50 +03:00
canvas.ts fix: keep stored page backgrounds and number layers by their own page (#949) 2026-10-07 13:35:59 +00:00
cli.ts ci: shard unit tests by owner and cut the quick suite from 100 s to 13 s (#715) 2026-09-17 10:18:16 +03:00
code-panel.ts feat(code): add live JSX and HTML/CSS editing (#525) 2026-08-15 09:48:42 +03:00
demo.ts fix: convert document colour profiles, keep text edits live, and fix .fig exports (#716) 2026-09-18 00:43:10 +03:00
dom-css-browser.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
dom-css.ts refactor!: move shared primitives below dom-css and core (#771) 2026-09-26 11:39:11 +04:00
doubles.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
fetch.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
figma.ts chore(tests): remove easy non-null assertions 2026-05-06 02:59:56 +03:00
geometry.ts feat(editor): checkpoint live interaction improvements 2026-09-15 11:36:17 +03:00
large-document.ts perf(scene-graph): accelerate axis-aligned hit tests (#534) 2026-08-16 15:43:25 +03:00
layout.ts chore(lint): enforce type imports in tests 2026-05-06 02:35:57 +03:00
paths.ts test: resolve repository files without climbing directories (#946) 2026-10-07 12:35:39 +00:00
properties.ts feat(app): migrate paint effect and export panels 2026-07-14 17:06:28 +03:00
scene.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
store.ts feat(text): create text boxes by dragging 2026-07-20 21:22:30 +03:00
test-ids.ts refactor(toolbar): reuse test id helpers 2026-05-15 13:13:24 +03:00
test-utils.ts test: extend timeout for slow gold-preview fixture tests 2026-06-19 11:05:25 +10:00
tools.ts chore(tests): remove easy non-null assertions 2026-05-06 02:59:56 +03:00
vector-network.ts Refactor architecture boundaries across core, app, and packages (#234) 2026-04-30 15:14:19 +03:00
yjs-test-helper.d.ts perf(collab): skip unchanged Yjs node fields (#529) 2026-08-15 11:40:27 +03:00
yjs.ts fix(collab): replicate document content to joiners 2026-06-30 11:56:58 +03:00