Repository navigation
Releases: nkyang10/tsx-reader-export
Release list
Canvas Reader with HTML and PDF v1.2.0
Canvas Reader with HTML and PDF v1.2.0 — Windows release
Converts Cursor canvas .tsx files into standalone static HTML, and
previews them in a desktop viewer. No install, no Node.js required.
The exported page is no longer black if your Windows is in dark mode. Same
zip layout as v1.1.0, same flags, same CLI path.
Download
tsx-reader-export-1.2.0-windows-x64.zip
- Extract the zip anywhere (e.g.
C:\tools\tsx-reader-export). - Double-click
tsx-reader-export-viewer.exe— it is at the top level. - That is it — nothing to install.
What's in the zip
tsx-reader-export-1.2.0-windows-x64\
tsx-reader-export-viewer.exe <- the reader: double-click this
locales\ resources\
*.pak *.dll <- its runtime, keep them beside the exe
cli\
tsx-reader-export.exe <- the command line converter
node_modules\ <- required by the CLI (keep together)
cursor-canvas.compat.mjs
run-cli.bat
LICENSE
README.txt
The loose .pak and .dll files at the top level are Electron's runtime, not
clutter. The app resolves them relative to its own exe, so they have to sit in
the same folder. Deleting them breaks the reader.
Light or dark: pick the theme the canvas had in Cursor
A canvas .tsx does not record whether it was drawn in Cursor's light or
dark theme. It reads its colours from the Cursor host theme while it renders, so
the file on disk is theme-agnostic and the look depends entirely on the host.
Until v1.2.0 the export only half-supplied that, which produced the bug below.
In the reader — the Theme dropdown in the toolbar:
| Choice | What you get |
|---|---|
| Light | the light Cursor theme, always |
| Dark | the dark Cursor theme, always |
| Match system | follows the reader's Windows light/dark setting |
Your choice is remembered between sessions. Changing it re-renders (a moment's
wait) rather than restyling, because the colours are baked into the HTML at
render time.
From the CLI — the same choice as a flag:
cli\tsx-reader-export.exe my.canvas.tsx out.html
cli\tsx-reader-export.exe my.canvas.tsx out.html --color-scheme dark
cli\tsx-reader-export.exe my.canvas.tsx out.html --color-scheme autolight (default) and dark are pinned: the file looks the same on every
machine. auto follows whoever opens it, which is what you want for a link you
are sharing, and what you do not want for a PDF.
The fix: the background was following your OS
The exported HTML is a Mantine page, and Mantine does not publish literal
colours — every one of them is a var(--mantine-color-*) defined by a block
scoped to an attribute on the root element:
:root[data-mantine-color-scheme='light'] { --mantine-color-body: var(--mantine-color-white); }
:root[data-mantine-color-scheme='dark'] { --mantine-color-body: var(--mantine-color-dark-7); }The export never wrote that attribute, because a server render has no browser to
set it. So --mantine-color-body was undefined, the page background fell back
to transparent, and the browser painted the canvas from color-scheme: light dark — which is to say, from your Windows setting. Hence light content on a
black page for anyone using dark mode.
The export now writes the attribute and a matching <meta name="color-scheme">,
so the page is white on a light machine and on a dark one. Verified by reading
computed styles out of the rendered file with the OS theme forced both ways:
| Export | reader in dark mode | reader in light mode |
|---|---|---|
| v1.1.0 | transparent → black |
transparent → white |
| v1.2.0, default | rgb(255, 255, 255) |
rgb(255, 255, 255) |
v1.2.0, --color-scheme dark |
rgb(36, 36, 36) |
rgb(36, 36, 36) |
v1.2.0, --color-scheme auto |
rgb(36, 36, 36) |
rgb(255, 255, 255) |
This also means --color-scheme does something for the first time. In v1.0.0 and
v1.1.0 it was accepted, passed to the renderer, and then ignored.
Upgrading from v1.1.0
Extract the new zip into a new folder (or over the old one — nothing moved
this time; the reader is still at the top level and the CLI is still in cli\).
Nothing about the CLI changed: same executable, same flags, same paths. The only
difference is that --color-scheme now reaches the output.
Verify the download works
Both programs write a detailed log if anything goes wrong:
| Program | Log location |
|---|---|
| reader | %APPDATA%\tsx-reader-export-viewer\viewer.log |
cli\tsx-reader-export.exe |
cli\logs\tsx-reader-export.log (or %TEMP%) |
Headless self-check of the packaged reader:
tsx-reader-export-viewer.exe --smoke path\to\canvas.tsxKnown issues
- SmartScreen warning. The binaries are unsigned. Choose
More info → Run anyway. To avoid it entirely, right-click the.exe→
Properties → tick Unblock. - Antivirus false positives. Unsigned self-contained executables are
sometimes flagged. - macOS and Linux builds are not included in this release. A macOS tester build
is produced in CI on av*tag — see the repository README. - The reproduced themes are the standard Cursor light and dark themes. A
custom Cursor theme is not carried in the.tsx, so it cannot be reproduced
— pick the closest built-in scheme.
Requirements
- Windows 10 or later, 64-bit.
- No Node.js, no Python, no build tools.
License
MIT — see LICENSE.
Built on the public shim
@thisismydesign/cursor-canvas-web
(MIT, © 2026 thisismydesign), which reimplements Cursor's virtual
cursor/canvas module so canvases can render outside the IDE.
Canvas Reader with HTML and PDF v1.1.0
Canvas Reader with HTML and PDF v1.1.0 — Windows release
Converts Cursor canvas .tsx files into standalone static HTML, and
previews them in a desktop viewer. No install, no Node.js required.
The layout of the zip changed. See Upgrading from v1.0.0.
Download
tsx-reader-export-1.1.0-windows-x64.zip
- Extract the zip anywhere (e.g.
C:\tools\tsx-reader-export). - Double-click
tsx-reader-export-viewer.exe— it is at the top level. - That is it — nothing to install.
What's in the zip
tsx-reader-export-1.1.0-windows-x64\
tsx-reader-export-viewer.exe <- the reader: double-click this
locales\ resources\
*.pak *.dll <- its runtime, keep them beside the exe
cli\
tsx-reader-export.exe <- the command line converter
node_modules\ <- required by the CLI (keep together)
cursor-canvas.compat.mjs
run-cli.bat
LICENSE
README.txt
The loose .pak and .dll files at the top level are Electron's runtime, not
clutter. The app resolves them relative to its own exe, so they have to sit in
the same folder. Deleting them breaks the reader.
The reader (GUI)
Double-click tsx-reader-export-viewer.exe.
| Action | How |
|---|---|
| Open a canvas | Open .tsx button, or drag-and-drop a .tsx onto the window |
| Preview | rendered live in the window |
| Save the result | Save as HTML — writes a self-contained .html |
| Print / export PDF | Print / PDF — opens the Windows print dialog; choose Microsoft Print to PDF or Save as PDF |
Starts in about 0.2 seconds (the app is shipped unpacked on purpose — a
single-file "portable" build re-extracts ~200 MB on every launch and took 23s).
The CLI
The CLI is for scripting. It now lives in the cli\ subfolder:
cli\tsx-reader-export.exe my.canvas.tsx out.html
cli\tsx-reader-export.exe my.canvas.tsx out.html --title "My Page"
cli\tsx-reader-export.exe my.canvas.tsx out.html --color-scheme dark
cli\tsx-reader-export.exe --helpEvery flag is unchanged from v1.0.0 — only the path to the executable moved.
cli\node_modules\ must stay next to it: the executable embeds the Node runtime
but loads React and the cursor/canvas shim from that folder.
Prefer a visible console? Use cli\run-cli.bat — same arguments, and it pauses
so the output stays readable.
Upgrading from v1.0.0
Extract the new zip into a new folder. Do not copy files over an old
install; two things moved.
| v1.0.0 | v1.1.0 | |
|---|---|---|
| The reader | tsx-reader-export-viewer\tsx-reader-export-viewer.exe |
tsx-reader-export-viewer.exe (top level) |
| The CLI | tsx-reader-export.exe (top level) |
cli\tsx-reader-export.exe |
| Source distribution | deployment\win\ (source + install.ps1) |
removed — the exe needs no Node and no install step |
If you scripted the CLI, update the path:
REM before
tsx-reader-export.exe report.canvas.tsx report.html
REM after
cli\tsx-reader-export.exe report.canvas.tsx report.htmlNothing about the conversion itself changed: same flags, same self-contained
.html output, byte-for-byte.
What you get
The output is a single self-contained .html file — all CSS is inlined, with
no external stylesheet links, so it opens offline and can be emailed or archived
as one file. It is fully rendered; it does not need React in the browser.
Verify the download works
Both programs write a detailed log if anything goes wrong:
| Program | Log location |
|---|---|
| reader | %APPDATA%\tsx-reader-export-viewer\viewer.log |
cli\tsx-reader-export.exe |
cli\logs\tsx-reader-export.log (or %TEMP%) |
Headless self-check of the packaged reader:
tsx-reader-export-viewer.exe --smoke path\to\canvas.tsxSmaller download
The release is 30 MB smaller than v1.0.0. The CLI folder used to ship the
project's own build tools — the TypeScript compiler (22.5 MB) and postject
(4.6 MB, the tool that injects the executable) — which it never used. It now
carries only the runtime dependencies.
Known issues
- SmartScreen warning. The binaries are unsigned. Choose
More info → Run anyway. To avoid it entirely, right-click the.exe→
Properties → tick Unblock. - Antivirus false positives. Unsigned self-contained executables are
sometimes flagged. - macOS and Linux builds are not included in this release. A macOS tester build
is produced in CI on av*tag — see the repository README.
Requirements
- Windows 10 or later, 64-bit.
- No Node.js, no Python, no build tools.
License
MIT — see LICENSE.
Built on the public shim
@thisismydesign/cursor-canvas-web
(MIT, © 2026 thisismydesign), which reimplements Cursor's virtual
cursor/canvas module so canvases can render outside the IDE.
Canvas Reader with HTML and PDF v1.0.0
Canvas Reader with HTML and PDF v1.0.0 — Windows release
Converts Cursor canvas .tsx files into standalone static HTML, and
previews them in a desktop viewer. No install, no Node.js required.
Download
tsx-reader-export-1.0.0-windows-x64.zip
- Extract the zip anywhere (e.g.
C:\tools\tsx-reader-export). - That is it — nothing to install.
What's in the zip
tsx-reader-export-1.0.0-windows-x64\
tsx-reader-export-viewer\
tsx-reader-export-viewer.exe <- the GUI: double-click this
... <- app files (keep the folder together)
tsx-reader-export.exe <- the command line converter
node_modules\ <- required by tsx-reader-export.exe (keep together)
cursor-canvas.compat.mjs
run-cli.bat
README.txt
The viewer (GUI)
Double-click tsx-reader-export-viewer\tsx-reader-export-viewer.exe.
| Action | How |
|---|---|
| Open a canvas | Open .tsx button, or drag-and-drop a .tsx onto the window |
| Preview | rendered live in the window |
| Save the result | Save as HTML — writes a self-contained .html |
| Print / export PDF | Print / PDF — opens the Windows print dialog; choose Microsoft Print to PDF or Save as PDF |
Starts in about 0.2 seconds (the app folder is shipped unpacked on purpose —
a single-file "portable" build re-extracts ~200 MB on every launch and took 23s).
The CLI
tsx-reader-export.exe my.canvas.tsx out.html
tsx-reader-export.exe my.canvas.tsx out.html --title "My Page"
tsx-reader-export.exe my.canvas.tsx out.html --color-scheme dark
tsx-reader-export.exe --helpnode_modules\ must stay next to tsx-reader-export.exe — the executable embeds the
Node runtime but loads React and the cursor/canvas shim from that folder.
Prefer a visible console? Use run-cli.bat.
What you get
The output is a single self-contained .html file — all CSS is inlined, with
no external stylesheet links, so it opens offline and can be emailed or archived
as one file. It is fully rendered; it does not need React in the browser.
Verify the download works
Both programs write a detailed log if anything goes wrong:
| Program | Log location |
|---|---|
tsx-reader-export.exe |
logs\tsx-reader-export.log next to it (or %TEMP%) |
| viewer | %APPDATA%\tsx-reader-export-viewer\viewer.log |
Headless self-check of the packaged viewer:
"tsx-reader-export-viewer\tsx-reader-export-viewer.exe" --smoke path\to\canvas.tsxKnown issues
- SmartScreen warning. The binaries are unsigned. Choose
More info → Run anyway. To avoid it entirely, right-click the.exe→
Properties → tick Unblock. - Antivirus false positives. Unsigned self-contained executables are
sometimes flagged. The viewer is an unpacked folder, so you can also run
tsx-reader-export-viewer.exefromwin-unpacked-style layout without a wrapper. - macOS and Linux builds are not included in this release.
Requirements
- Windows 10 or later, 64-bit.
- No Node.js, no Python, no build tools.
License
MIT — see LICENSE.
Built on the public shim
@thisismydesign/cursor-canvas-web
(MIT, © 2026 thisismydesign), which reimplements Cursor's virtual
cursor/canvas module so canvases can render outside the IDE.