Commit Graph

22 Commits

Author SHA1 Message Date
Émile Ré
050073ab3c Fix TextLength to count characters instead of bytes
Use utf8.RuneCountInString so multi-byte characters like é count as one
character. Add a unicode test case to cover this.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-09 14:47:48 +04:00
Émile Ré
7cd4606278 Validate document content length by extracted text, not JSON size
Add Node.TextLength() to walk the ProseMirror tree and sum actual user
text. Introduce ProseMirrorDocumentMaxTextLength validator that enforces
a 50k character limit on extracted text, paired with a 500k byte safety
cap on the raw JSON string. Extend e2e tests for content length.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-09 14:47:48 +04:00
Émile Ré
ad326224b3 Fix inline code rendering and error handling consistence
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 16:01:51 +04:00
Émile Ré
23eaa4ce24 Fix lint
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 15:35:58 +04:00
Émile Ré
6d2e9dbe19 Update MCP to handle markdown for all document content tools + fix converter edge case for code fence closing
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 15:13:39 +04:00
Émile Ré
24a9459fb9 Move tests to dedicated file for html converter
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 15:13:39 +04:00
Émile Ré
5280898eb9 Implement prosemirror markdown renderer
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 15:13:38 +04:00
Émile Ré
ab33285c9c Rename files for clarity
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-06 15:13:38 +04:00
Émile Ré
7afab9487c Convert html blocks inside table cells
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 21:32:39 +04:00
Émile Ré
9baeab4889 Add table conversion
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 20:56:37 +04:00
Émile Ré
821f66cc20 Review fixes
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 19:53:25 +04:00
Émile Ré
9bbcba68c0 Add mermaid tiptap extension
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:04:36 +04:00
Émile Ré
a03a2deae1 Fix lint & test
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:28 +04:00
Émile Ré
dda6e41102 Fix html conversion of soft line breaks + rel attr for _blank link targets
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:27 +04:00
Émile Ré
a461410fed prosemirror html conversion unwrapping + table rows collection
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:27 +04:00
Émile Ré
f3982f23f9 Sanitize upon saving
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:27 +04:00
Émile Ré
62e68dfb6f Fix html block to prosemirror default table colspan & rowspan
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:27 +04:00
Émile Ré
9781c7534f Handle mardown html elements parsing with sanitization
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:27 +04:00
Émile Ré
745c52537d Add promisemirror markdown capabilities
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:25 +04:00
Émile Ré
e71e7f1a45 Use prosemirror pkg to render document PDF
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:25 +04:00
Émile Ré
1e55bccdf8 Rename prosemirror file
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:25 +04:00
Émile Ré
79a4e7c781 Create prosemirror structs and HTML conversion logic
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:24 +04:00