Commit Graph

265 Commits

Author SHA1 Message Date
hand-dot
b178c6f557 feat(ui): improve zoom controls and gestures 2026-06-09 18:44:19 +09:00
hand-dot
6bcd468227 Refactor code structure for improved readability and maintainability 2026-06-04 18:31:11 +09:00
Kyohei Fukuda
35c100b599 [codex] add circle mark schema (#1547)
* feat(schemas): add circle mark schema

* test(ci): fix playground chrome setup

* test(ci): install puppeteer chrome in shared cache

* test(ci): verify puppeteer chrome install

* test(ci): install pinned puppeteer chrome directly

* test(ci): use system chrome for playground e2e
2026-06-03 17:09:08 +09:00
dependabot[bot]
f16a005949 build(deps): bump the minor-and-patch group across 3 directories with 29 updates (#1532)
Bumps the minor-and-patch group with 16 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.6.0` | `25.9.1` |
| [jsdom](https://github.com/jsdom/jsdom) | `29.1.0` | `29.1.1` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.10` | `8.0.14` |
| [vite-plus](https://github.com/voidzero-dev/vite-plus/tree/HEAD/packages/cli) | `0.1.19` | `0.1.23` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.5` | `4.1.7` |
| [vitest-image-snapshot](https://github.com/webgpu-tools/wesl-js) | `0.6.50` | `0.6.51` |
| [zod](https://github.com/colinhacks/zod) | `4.3.6` | `4.4.3` |
| [@types/estree](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/estree) | `1.0.8` | `1.0.9` |
| [bwip-js](https://github.com/metafloor/bwip-js) | `4.10.1` | `4.11.1` |
| [date-fns](https://github.com/date-fns/date-fns) | `4.1.0` | `4.4.0` |
| [dompurify](https://github.com/cure53/DOMPurify) | `3.4.1` | `3.4.7` |
| [lucide](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide) | `1.12.0` | `1.17.0` |
| [antd](https://github.com/ant-design/ant-design) | `6.3.7` | `6.4.3` |
| [hotkeys-js](https://github.com/jaywcjlove/hotkeys-js) | `4.0.3` | `4.0.4` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) | `1.12.0` | `1.17.0` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `6.0.1` | `6.0.2` |

Bumps the minor-and-patch group with 8 updates in the /playground directory:

| Package | From | To |
| --- | --- | --- |
| [vite-plus](https://github.com/voidzero-dev/vite-plus/tree/HEAD/packages/cli) | `0.1.19` | `0.1.23` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.5` | `4.1.7` |
| [vitest-image-snapshot](https://github.com/webgpu-tools/wesl-js) | `0.6.50` | `0.6.51` |
| [@sentry/react](https://github.com/getsentry/sentry-javascript) | `10.50.0` | `10.55.0` |
| [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) | `7.14.2` | `7.16.0` |
| [@sentry/vite-plugin](https://github.com/getsentry/sentry-javascript-bundler-plugins) | `5.2.0` | `5.3.0` |
| [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.2.4` | `4.3.0` |
| [postcss](https://github.com/postcss/postcss) | `8.5.12` | `8.5.15` |

Bumps the minor-and-patch group with 7 updates in the /website directory:

| Package | From | To |
| --- | --- | --- |
| [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `19.2.5` | `19.2.6` |
| [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) | `19.2.5` | `19.2.6` |
| [@docusaurus/core](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus) | `3.10.0` | `3.10.1` |
| [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) | `3.10.0` | `3.10.1` |
| [@docusaurus/plugin-client-redirects](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-client-redirects) | `3.10.0` | `3.10.1` |
| [@docusaurus/plugin-google-gtag](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-google-gtag) | `3.10.0` | `3.10.1` |
| [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) | `3.10.0` | `3.10.1` |



Updates `@types/node` from 25.6.0 to 25.9.1
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `jsdom` from 29.1.0 to 29.1.1
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v29.1.0...v29.1.1)

Updates `vite` from 8.0.10 to 8.0.14
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.0.14/packages/vite)

Updates `vite-plus` from 0.1.19 to 0.1.23
- [Release notes](https://github.com/voidzero-dev/vite-plus/releases)
- [Commits](https://github.com/voidzero-dev/vite-plus/commits/v0.1.23/packages/cli)

Updates `vitest` from 4.1.5 to 4.1.7
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/vitest)

Updates `vitest-image-snapshot` from 0.6.50 to 0.6.51
- [Commits](https://github.com/webgpu-tools/wesl-js/commits)

Updates `zod` from 4.3.6 to 4.4.3
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.3.6...v4.4.3)

Updates `@types/estree` from 1.0.8 to 1.0.9
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/estree)

Updates `bwip-js` from 4.10.1 to 4.11.1
- [Release notes](https://github.com/metafloor/bwip-js/releases)
- [Commits](https://github.com/metafloor/bwip-js/compare/v4.10.1...v4.11.1)

Updates `date-fns` from 4.1.0 to 4.4.0
- [Release notes](https://github.com/date-fns/date-fns/releases)
- [Commits](https://github.com/date-fns/date-fns/compare/v4.1.0...v4.4.0)

Updates `dompurify` from 3.4.1 to 3.4.7
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.1...3.4.7)

Updates `lucide` from 1.12.0 to 1.17.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.17.0/packages/lucide)

Updates `antd` from 6.3.7 to 6.4.3
- [Release notes](https://github.com/ant-design/ant-design/releases)
- [Changelog](https://github.com/ant-design/ant-design/blob/master/CHANGELOG.en-US.md)
- [Commits](https://github.com/ant-design/ant-design/compare/6.3.7...6.4.3)

Updates `hotkeys-js` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/jaywcjlove/hotkeys-js/releases)
- [Commits](https://github.com/jaywcjlove/hotkeys-js/compare/v4.0.3...v4.0.4)

Updates `lucide-react` from 1.12.0 to 1.17.0
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.17.0/packages/lucide-react)

Updates `@vitejs/plugin-react` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.0.2/packages/plugin-react)

Updates `vite-plus` from 0.1.19 to 0.1.23
- [Release notes](https://github.com/voidzero-dev/vite-plus/releases)
- [Commits](https://github.com/voidzero-dev/vite-plus/commits/v0.1.23/packages/cli)

Updates `vitest` from 4.1.5 to 4.1.7
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.7/packages/vitest)

Updates `vitest-image-snapshot` from 0.6.50 to 0.6.51
- [Commits](https://github.com/webgpu-tools/wesl-js/commits)

Updates `@sentry/react` from 10.50.0 to 10.55.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/10.50.0...10.55.0)

Updates `react-router-dom` from 7.14.2 to 7.16.0
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.16.0/packages/react-router-dom)

Updates `@sentry/vite-plugin` from 5.2.0 to 5.3.0
- [Release notes](https://github.com/getsentry/sentry-javascript-bundler-plugins/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript-bundler-plugins/compare/5.2.0...5.3.0)

Updates `@tailwindcss/postcss` from 4.2.4 to 4.3.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/@tailwindcss-postcss)

Updates `postcss` from 8.5.12 to 8.5.15
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.12...8.5.15)

Updates `tailwindcss` from 4.2.4 to 4.3.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/tailwindcss)

Updates `react` from 19.2.5 to 19.2.6
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.6/packages/react)

Updates `react-dom` from 19.2.5 to 19.2.6
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.2.6/packages/react-dom)

Updates `@docusaurus/core` from 3.10.0 to 3.10.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.1/packages/docusaurus)

Updates `@docusaurus/module-type-aliases` from 3.10.0 to 3.10.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.1/packages/docusaurus-module-type-aliases)

Updates `@docusaurus/plugin-client-redirects` from 3.10.0 to 3.10.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.1/packages/docusaurus-plugin-client-redirects)

Updates `@docusaurus/plugin-google-gtag` from 3.10.0 to 3.10.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.1/packages/docusaurus-plugin-google-gtag)

Updates `@docusaurus/preset-classic` from 3.10.0 to 3.10.1
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v3.10.1/packages/docusaurus-preset-classic)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 25.9.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: jsdom
  dependency-version: 29.1.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vite
  dependency-version: 8.0.14
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vite-plus
  dependency-version: 0.1.23
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vitest
  dependency-version: 4.1.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vitest-image-snapshot
  dependency-version: 0.6.51
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: zod
  dependency-version: 4.4.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: "@types/estree"
  dependency-version: 1.0.9
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: bwip-js
  dependency-version: 4.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: date-fns
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: dompurify
  dependency-version: 3.4.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: lucide
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: antd
  dependency-version: 6.4.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: hotkeys-js
  dependency-version: 4.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: lucide-react
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 6.0.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vite-plus
  dependency-version: 0.1.23
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vitest
  dependency-version: 4.1.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: vitest-image-snapshot
  dependency-version: 0.6.51
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@sentry/react"
  dependency-version: 10.55.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: react-router-dom
  dependency-version: 7.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: "@sentry/vite-plugin"
  dependency-version: 5.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: postcss
  dependency-version: 8.5.15
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: tailwindcss
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
- dependency-name: react
  dependency-version: 19.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: react-dom
  dependency-version: 19.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@docusaurus/core"
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@docusaurus/module-type-aliases"
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@docusaurus/plugin-client-redirects"
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@docusaurus/plugin-google-gtag"
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
- dependency-name: "@docusaurus/preset-classic"
  dependency-version: 3.10.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-02 21:14:09 +00:00
Sai Asish Y
5a6376a824 fix(common): wrap structuredClone to avoid Illegal invocation under farmfe/Vite (#1120) (#1507)
* fix(common): wrap structuredClone to avoid Illegal invocation under farmfe/Vite (#1120)

Signed-off-by: SAY-5 <say.apm35@gmail.com>

* trim verbose comments

---------

Signed-off-by: SAY-5 <say.apm35@gmail.com>
2026-05-15 10:02:03 +09:00
Kyohei Fukuda
c7576f46ba fix(common): preserve blank dynamic template pages (#1493) 2026-05-09 11:03:43 +09:00
Kyohei Fukuda
48590919fa [codex] Disable text expand for custom basePdf (#1470)
* fix(ui): disable text expand for custom base pdf

* fix(ui): limit custom base pdf expand guard to text
2026-05-06 12:00:26 +09:00
Kyohei Fukuda
616ace4aed [codex] Add generic split range metadata (#1469)
* refactor(schemas): add generic split range metadata

* refactor(schemas): remove legacy split range fields

* refactor(schemas): polish split range helpers
2026-05-06 11:55:10 +09:00
Kyohei Fukuda
1bd2ec9bd8 [codex] Add dynamic height for text schemas (#1467)
* feat(generator): expand text schema height dynamically

* fix(schemas): restore overflow select binding

* feat(schemas): split expanded text by line

* fix(ui): merge edits from split text chunks

* fix(schemas): avoid regex splitting split text edits

* fix(schemas): harden split text dynamic layout
2026-05-06 10:41:45 +09:00
Kyohei Fukuda
03f616f0c5 [codex] Add @pdfme/jsx package (#1466)
* feat(jsx): add pdfme jsx package

* refactor(jsx): derive text props from schema types

* fix(jsx): tighten mvp layout constraints

* feat(jsx): measure text height with schema helpers

* docs: update jsx md2pdf roadmap
2026-05-05 17:48:19 +09:00
Kyohei Fukuda
8ebd068721 feat: add link support groundwork for JSX and md2pdf
Adds inline markdown links, URI scheme allowlisting, basePdf URI link preservation, internal #schemaName PDF links, and planning notes for @pdfme/jsx/md2pdf.
2026-05-05 16:03:26 +09:00
Kyohei Fukuda
bed77e5713 [codex] add list schema implementation plan (#1460)
* docs: add list schema implementation plan

* feat(schemas): add list schema

* fix(schemas): improve list form editing

* fix(schemas): localize list editing labels

* fix(schemas): align table control buttons

* fix(schemas): keep list designer editing during actions

* fix(tsconfig): resolve list schema subpath

* fix(schemas): keep list action clicks isolated

* fix(schemas): support empty list state

* fix(schemas): allow editing list items in designer

* fix(schemas): keep list designer editing on enter

* fix(schemas): ignore IME enter in list editor

* fix(schemas): make enter insert list item line breaks

* test(generator): add list plugin to playground snapshots

* refactor(schemas): render list items with text ui

* fix(schemas): adapt list prop panel fields by style

* fix(schemas): simplify list options and nested numbering

* Reorder import statements in generate-templates-thumbnail

* Reorder List plugin in getPlugins function

* fix(ui): reflow schemas after dynamic list resize

* chore: remove obsolete list plan

* fix(ui): reflow form list height changes

* fix(ui): keep designer height changes local

* fix(schemas): commit list item line breaks immediately

* fix(schemas): restore list focus after line break rerender

* fix(schemas): keep form list focused after enter

* test(generator): update dynamic list snapshots

* fix(schemas): store list content as json arrays

* fix(schemas): address list review cleanup

* test(ui): update designer snapshot

* chore: trim list pr noise

* fix(schemas): align list markers in ui
2026-05-03 13:34:51 +09:00
Kyohei Fukuda
16bec8babb [codex] Add inline markdown text format (#1461)
* feat(schemas): add inline markdown text format

* fix(common): handle missing git tags in version script

* fix(converter): align pdfjs document options with latest types

* test(generator): update pdfjs image snapshots

* test(playground): register inline markdown example

* refactor(schemas): avoid default font i18n key

* refactor(schemas): move markdown controls to prop panel end

* refactor(schemas): use checkbox for inline markdown toggle

* fix(schemas): localize multi variable text prop labels

* refactor(schemas): align inline markdown fallback control

* fix(schemas): address inline markdown review feedback

* refactor(schemas): address inline markdown review refinements

* fix(schemas): correct synthetic italic pdf skew

* test(playground): add bold italic inline markdown sample
2026-05-02 16:34:43 +09:00
Mani
6bef40c67c fix: two unbounded-cache memory leaks in common and schemas (#1426)
* fix: two unbounded-cache memory leaks in common and schemas

Two module-level Map caches that never evict and store multi-MB strings
as keys, silently leaking for the entire lifetime of any consumer.

1. packages/common/src/expression.ts — parseDataCache

   parseData() was memoized via a module-level parseDataCache keyed by
   JSON.stringify(data). replacePlaceholders() calls it with a merged
   { ...schemaNameDefaults, ...variables } object where values may be
   arbitrary strings from the caller. Whenever inputs contain base64
   (image schemas with embedded data URLs, embedded fonts, large text),
   the cache key is a multi-MB JSON string that gets pinned permanently;
   every unique inputs state adds its own key, never collected. Parsing
   is O(fields) and cheap, so removing the cache is strictly a win.

   Regression test: packages/common/__tests__/expression.test.ts
   'replacePlaceholders memory safety > does not retain call inputs in
   a module-level cache' — runs 30 replacePlaceholders() calls with
   unique ~500 KB payloads, captures a V8 heap snapshot via
   v8.writeHeapSnapshot, aggregates string nodes >= 200 KB and asserts
   the total retained size is below 2 MB. Pre-fix: ~30 MB retained
   (FAILS). Post-fix: 0 bytes retained (passes).

2. packages/schemas/src/graphics/image.ts — getCacheKey

   getCacheKey(schema, input) returned `${schema.type}${input}`, using
   the full base64 bytes of the image as part of the cache key. Every
   unique image processed by the PDF render path added a permanent Map
   entry whose key byte length matched the image itself.

   Replaced with a short fingerprint that samples the total length plus
   three 16-char regions (first, middle, last). The middle-region
   sample is essential: base64 PNGs share a common header and IEND
   trailer, so distinct images of the same size would collide if only
   first/last regions were sampled. Middle bytes are pixel data and
   differ between distinct images with overwhelming probability. Keys
   stay under 80 chars regardless of input size.

   Regression tests: packages/schemas/__tests__/image.test.ts
   - 'does not pin the full base64 input as a cache key' — asserts
     key length < 100 chars. Pre-fix: 139 chars for a minimal PNG and
     proportionally more for realistic images (FAILS).
   - 'distinguishes different images via the fingerprint' — guards
     against future over-shortening of the fingerprint that could
     reintroduce collisions between distinct images.

Both leaks were originally identified via a V8 heap-snapshot diff taken
across a UI workload (typing + field tabbing) against a consumer app
with image schemas carrying base64 content. Before the fix, the top two
growing allocations by retained size were multi-MB string entries — one
per module-level cache in this PR — together accounting for hundreds of
MB of retained JS heap in a single 3-iteration run. After the fix, both
string entries disappear from the top 25 growing allocations and
aggregate JS heap is net flat / slightly shrinking across iterations.

No public API change. No behavioral change for consumers. Both caches
were module-local implementation details.

* fix(schemas): harden image cache key with FNV-1a hash; fix stale test comments

Addresses Greptile review on #1426:

- Replace 3-region sampling fingerprint in getCacheKey with an FNV-1a
  32-bit hash over the full input. The old first-16 slice was a
  constant data-URI prefix for any image of the same MIME type,
  contributing no entropy; hashing every byte removes that weakness
  at the same O(n) cost without retaining any slice as a Map key.
  Key format is now `${type}:${len}:${fnv1a-hex}` (~40 chars).
- Rewrite stale comments in image.test.ts that referred to a
  padding/mutation scheme the test never performs, and update the
  fingerprint-format comment to match the new hash-based key.
- Add trailing newline to expression.test.ts.

All pre-existing and new tests still pass.
2026-04-27 16:30:32 +09:00
hand-dot
758983d564 fix fmt 2026-04-20 17:01:39 +09:00
Kyohei Fukuda
1422f930fb fix(cli): stop pulling ui peers through common (#1420) 2026-04-03 20:35:34 +09:00
hand-dot
1e38ff416d fix(release): unblock 6.0.4 publish 2026-04-03 18:10:18 +09:00
Kyohei Fukuda
51f63b747f fix(deps): unblock dependabot updates (#1419)
* fix(deps): unblock dependabot updates

* test(ui): refresh antd 6 snapshots
2026-04-03 15:25:43 +09:00
hand-dot
d23fc9e815 fix(types): omit 'plugins' from GenerateProps, UIProps, PreviewProps, and DesignerProps types 2026-04-02 12:44:10 +09:00
hand-dot
524fc14c36 fix(ci): remove lifecycle script dependencies 2026-04-02 11:50:12 +09:00
Kyohei Fukuda
559618a3e4 Merge branch 'main' into cli 2026-04-02 09:10:36 +09:00
hand-dot
cc27790770 Convert CJS helpers to JS 2026-03-24 16:00:44 +09:00
Mowmowj
5ec6fa1ddf fix: guard against negative Y position in dynamic template processing
- Add Math.max(0, ...) guard when calculating localY in normalizePageSchemas
- Prevents TypeError when schema.position.y < paddingTop
- Fixes issue #1346 where PDF generation crashes with 'Cannot read properties of undefined (reading 'push')'
- Includes explanatory comment for future maintainers
2026-03-21 18:02:40 +08:00
hand-dot
cd3db68070 improve scripts 2026-03-21 10:20:23 +09:00
hand-dot
3d87f977d6 use vp 2026-03-21 09:24:02 +09:00
hand-dot
fc7567b879 Finish Phase 1 cleanup and verification 2026-03-20 22:58:47 +09:00
hand-dot
6c4900f00e Complete pdf-lib and ui Vite build migration 2026-03-20 19:04:44 +09:00
hand-dot
2dec270bc4 Migrate common and manipulator builds to Vite 2026-03-20 18:29:50 +09:00
hand-dot
982a3a0fcb Separate build tsconfig from typecheck aliases 2026-03-20 17:20:37 +09:00
hand-dot
45082df08b Add Vitest foundation for common and manipulator 2026-03-20 15:31:31 +09:00
hand-dot
58a8c712cb Add TypeScript project references 2026-03-20 15:10:39 +09:00
hand-dot
0d0f89f12b Prepare ESM migration groundwork 2026-03-20 14:49:50 +09:00
hand-dot
41dffae848 fix(security): address PR review - IPv6 SSRF bypass and ensureBuffer defensive assertion
- Add IPv4-mapped IPv6 (::ffff:x.x.x.x), link-local (fe80::/10), and
  unique-local (fc00::/7) blocking to isUrlSafeToFetch
- Add defensive assertion in ensureBuffer cap to throw if size < requested

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 12:08:21 +09:00
hand-dot
8c3b6a713b fix(security): address decompression bomb, XSS, and SSRF vulnerabilities
- GHSA-vrqm-gvq7-rrwh: Add 100MB MAX_DECODED_SIZE limit to DecodeStream.ensureBuffer() to prevent decompression bomb attacks
- GHSA-xgx4-2wgv-4jhm: Replace innerHTML with safe DOM APIs in multiVariableText propPanel to prevent XSS via i18n labels
- GHSA-pgx6-7jcq-2qff: Add URL validation (isUrlSafeToFetch) before fetch() in getB64BasePdf and font loading to prevent SSRF

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 11:54:28 +09:00
dependabot[bot]
3943e17574 build(deps): bump acorn from 8.15.0 to 8.16.0 (#1362)
Bumps [acorn](https://github.com/acornjs/acorn) from 8.15.0 to 8.16.0.
- [Commits](https://github.com/acornjs/acorn/compare/8.15.0...8.16.0)

---
updated-dependencies:
- dependency-name: acorn
  dependency-version: 8.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-01 15:10:47 +00:00
dependabot[bot]
77c38ad54a build(deps): bump zod from 4.1.13 to 4.3.6 (#1332)
Bumps [zod](https://github.com/colinhacks/zod) from 4.1.13 to 4.3.6.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.1.13...v4.3.6)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.3.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-01 15:09:49 +00:00
dependabot[bot]
4b4109f03a build(deps): bump zod from 4.1.12 to 4.1.13 (#1274)
Bumps [zod](https://github.com/colinhacks/zod) from 4.1.12 to 4.1.13.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.1.12...v4.1.13)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.1.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-02 09:24:28 +09:00
TNBO/Eedge
69f6be160b fix(dynamicTemplate): rewrite layout engine for accurate multi-page table rendering (#1294)
* fix(dynamicTemplate): rewrite layout engine for accurate multi-page table rendering

- Implement sequential offset-based layout algorithm for correct element positioning
- Add floating point tolerance (EPSILON) to prevent precision errors in page break calculations
- Fix __bodyRange indexing to correctly map dynamicHeights to table body data
- Prevent orphaned table headers by moving header with first data row when page breaks
- Fix UI recalculation timing to use immediate input values for dynamic templates
- Update tests to match new layout behavior

* refactor(common): process dynamic template per page and remove duplicate cloneDeep

* refactor(common): process each template page independently regardless of dynamic content
2025-12-16 15:17:29 +09:00
ryoppippi
38eeecb3ed chore: replace npm-run-all with npm-run-all2 (#1288)
* chore: replace npm-run-all with npm-run-all2

* chore: replace npm-run-all with npm-run-all2 and use run-p shorthand
2025-12-05 09:42:53 +09:00
hand-dot
c97fa9b73d fix(table): rename headerRepeat to repeatHead for consistency 2025-11-21 15:50:32 +09:00
TNBO/Eedge
f791e0b5a2 feat(table): add headerRepeat option and fix dynamic layout (#1238) 2025-11-21 15:32:38 +09:00
hand-dot
22f199e76d feat(ui): add out-of-bounds validation for schema positioning and update related types 2025-11-09 09:46:05 +09:00
dependabot[bot]
968dddea63 build(deps-dev): bump typescript from 5.8.3 to 5.9.3 (#1211)
* build(deps-dev): bump typescript from 5.8.3 to 5.9.3

Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.3 to 5.9.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.8.3...v5.9.3)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 5.9.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Apply TypeScript 5.9 compatibility changes

- Update Uint8Array types to Uint8Array<ArrayBuffer> for TypeScript 5.9 compatibility
- Changes based on PR #1145 comment by bnarnold

Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyoheif@wix.com>
2025-11-09 08:32:15 +09:00
dependabot[bot]
b471b47f1d build(deps): Bump zod from 3.25.76 to 4.1.12 in /packages/common (#1226)
* build(deps): Bump zod from 3.25.76 to 4.1.12 in /packages/common

Bumps [zod](https://github.com/colinhacks/zod) from 3.25.76 to 4.1.12.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.25.76...v4.1.12)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.1.12
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix zod v4 API compatibility issues

- Update z.function() usage to z.any() for Plugin schema (zod v4 changed z.function() to a function factory)
- Update z.record() calls to use two arguments (key schema, value schema) as required by zod v4
- Add type assertions for Object.entries() to fix type inference issues
- Update test error message to match zod v4 format

Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>

* Update test expectations for zod v4 error message format

- Update error messages in common package tests to match zod v4 format
- 'Expected array, received string' → 'Invalid input: expected array, received string'
- 'Array must contain at least 1 element(s)' → 'Too small: expected array to have >=1 items'
- 'Required' → 'Invalid input: expected {type}, received undefined'

Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyoheif@wix.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
2025-11-08 14:52:35 +09:00
dependabot[bot]
d493f0bd8f build(deps): bump zod from 3.25.67 to 4.1.11 (#1210)
* build(deps): bump zod from 3.25.67 to 4.1.11

Bumps [zod](https://github.com/colinhacks/zod) from 3.25.67 to 4.1.11.
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v3.25.67...v4.1.11)

---
updated-dependencies:
- dependency-name: zod
  dependency-version: 4.1.11
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix zod v4 API compatibility issues

- Update z.function() usage to z.any() for Plugin schema (zod v4 changed z.function() to a function factory)
- Update z.record() calls to use two arguments (key schema, value schema) as required by zod v4
- Add type assertions for Object.entries() to fix type inference issues
- Update test error message to match zod v4 format

Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>

* Update test expectations for zod v4 error message format

- Update error messages in common package tests to match zod v4 format
- 'Expected array, received string' → 'Invalid input: expected array, received string'
- 'Array must contain at least 1 element(s)' → 'Too small: expected array to have >=1 items'
- 'Required' → 'Invalid input: expected {type}, received undefined'

Co-Authored-By: Kyohei Fukuda <kyoheif@wix.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <kyoheif@wix.com>
Co-authored-by: Kyohei Fukuda <kyouhei.fukuda0729@gmail.com>
2025-11-08 14:44:27 +09:00
Kiewn
6d16b14fb8 fix: Fix calculate target page index in function page breaking. (#1188)
* fix: Fix calculate target page index in function page breaking.

* fix : fix unit test.
2025-10-03 10:11:19 +09:00
tetty
9e5a08988c fix: Align the mouse cursor with the X coordinate of the table column (#1118) 2025-07-16 09:05:05 +09:00
Kyohei Fukuda
0dd54739ac XSS vulnerability prevention for replacePlaceholders function (#1117)
* test(expression): add XSS vulnerability prevention tests for replacePlaceholders function

* Update packages/common/src/expression.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* test: group safe Object method tests into single test case

- Refactored individual tests for Object.keys, Object.values, Object.entries, and Object.assign
- Combined them into a single test case with multiple assertions for better organization
- Addresses code review feedback about test organization

Co-authored-by: Kyohei Fukuda <hand-dot@users.noreply.github.com>

* feat(security): implement safeAssign to prevent prototype pollution and enhance XSS protection

* fix(safeAssign): use object spread for safer target assignment

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Kyohei Fukuda <hand-dot@users.noreply.github.com>
2025-07-10 08:21:48 +09:00
Kyohei Fukuda
093f183d74 npm run prettier 2025-07-02 15:21:54 +09:00
Kyohei Fukuda
41b8dd970c Organize generator test (#1098)
* remove old japanese template

* Add new image snapshots and update font references in tests

* Refactor code structure for improved readability and maintainability
2025-06-27 16:59:02 +09:00