Myriad-Dreamin / tinymist

Tinymist [ˈtaɪni mɪst] is an integrated language service for Typst [taɪpst].
https://myriad-dreamin.github.io/tinymist
Apache License 2.0
574 stars 28 forks source link

Tinymist preview does not work in Safari. #630

Closed j0lol closed 4 days ago

j0lol commented 6 days ago

Describe the bug Tinymist preview works in chrome, updating when text edits. Safari does not work. MacOS 15.0.1

Package/Software version:

Using tinymist preview in terminal.

tinymist version: v0.11.1.

tinymist
Build Timestamp:     2024-10-05T07:02:18.000000000Z
Build Git Describe:  VERGEN_IDEMPOTENT_OUTPUT
Commit SHA:          VERGEN_IDEMPOTENT_OUTPUT
Commit Date:         None
Commit Branch:       None
Cargo Target Triple: aarch64-apple-darwin
Typst Version:       0.11.1
Typst Source:        git+https://github.com/Myriad-Dreamin/typst.git?tag=tinymist-v0.11.1-2#314749ea26ac3f62622bc3b3c30d3a7d6a457a74

Logs:

tinymist preview log

Sorry I ran out of characters: https://hastebin.skyra.pw/raw/elevexocuy

Chrome client logs
plugin initialized, build info: {version: '0.5.0-rc7', features: Array(4), commit_hash: 'd84a52c82a4373f0d3c1668280b4ae9da156affc', profile: 'opt_level(3)'}
(index):5874 WebSocket connection opened WebSocket {url: 'ws://127.0.0.1:23625/', readyState: 1, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}
(index):5909 batch 2 messages
(index):5930 recv invert-colors 19
(index):5973 Experimental feature: invert colors strategy taken: never
(index):5930 recv diff-v1 3148
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.70 ms, rerender 2.60 ms, total 3.30 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.10000000149011612
(index):5909 batch 1 messages
(index):5930 recv diff-v1 196
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.20 ms, rerender 1.80 ms, total 2.00 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.19999999925494194
(index):5909 batch 1 messages
(index):5930 recv diff-v1 5108
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.70 ms, rerender 4.00 ms, total 4.70 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.19999999925494194
(index):5909 batch 1 messages
(index):5930 recv diff-v1 10396
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.40 ms, rerender 3.20 ms, total 3.60 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.19999999925494194
(index):5909 batch 1 messages
(index):5930 recv diff-v1 2452
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.20 ms, rerender 1.90 ms, total 2.10 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.10000000149011612
(index):1320 element path (4) [Array(3), Array(3), Array(3), Array(3)]
(index):5909 batch 1 messages
(index):5930 recv diff-v1 196
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.00 ms, rerender 0.50 ms, total 0.50 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.10000000149011612
(index):1320 element path (4) [Array(3), Array(3), Array(3), Array(3)]
(index):5909 batch 1 messages
(index):5930 recv diff-v1 212
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.20 ms, rerender 0.40 ms, total 0.60 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0
(index):5909 batch 1 messages
(index):5930 recv diff-v1 196
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.10 ms, rerender 1.00 ms, total 1.10 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.19999999925494194
(index):5909 batch 1 messages
(index):5930 recv diff-v1 2708
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.30 ms, rerender 2.30 ms, total 2.60 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0
(index):1320 element path (4) [Array(3), Array(3), Array(3), Array(3)]
(index):5909 batch 1 messages
(index):5930 recv diff-v1 212
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.10 ms, rerender 0.60 ms, total 0.70 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.10000000149011612
(index):1320 element path (4) [Array(3), Array(3), Array(3), Array(3)]
(index):5909 batch 1 messages
(index):5930 recv diff-v1 196
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.00 ms, rerender 0.70 ms, total 0.70 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0
(index):1320 element path (4) [Array(3), Array(3), Array(3), Array(3)]
(index):5909 batch 1 messages
(index):5930 recv diff-v1 196
(index):1544 render_in_window with partial rendering disabled 0 0 1e+33 1e+33
(index):514 parse 0.00 ms, rerender 0.70 ms, total 0.70 ms
(index):1976 updateCanvas start
(index):2016 updateCanvas done 0.10000000149011612
(index):5882 WebSocket connection closed CloseEvent {isTrusted: true, wasClean: false, code: 1006, reason: '', type: 'close', …}
(index):5902 WebSocket Error:  CloseEvent {isTrusted: true, wasClean: false, code: 1006, reason: '', type: 'close', …}
Safari client logs
[Error] ReferenceError: Can't find variable: requestIdleCallback — 127.0.0.1:1819
    (anonymous function) (127.0.0.1:519)
    doUpdate (127.0.0.1:492)
[Error] ReferenceError: Can't find variable: requestIdleCallback — 127.0.0.1:1819
    (anonymous function) (127.0.0.1:519)
    doUpdate (127.0.0.1:492)
[Error] ReferenceError: Can't find variable: requestIdleCallback — 127.0.0.1:1819
    (anonymous function) (127.0.0.1:519)
    doUpdate (127.0.0.1:492)
[Error] ReferenceError: Can't find variable: requestIdleCallback — 127.0.0.1:1819
    (anonymous function) (127.0.0.1:519)
    doUpdate (127.0.0.1:492)
[Error] ReferenceError: Can't find variable: requestIdleCallback — 127.0.0.1:1819
    (anonymous function) (127.0.0.1:519)
    doUpdate (127.0.0.1:492)

Demonstration video

(sorry i had to crush it a lot to get it through github)

https://github.com/user-attachments/assets/ce01bdbd-7486-4595-91ea-b7b4f58e19aa

Enter-tainer commented 6 days ago

looks like safari doesnt support this api: https://developer.mozilla.org/en-US/docs/Web/API/Window/requestIdleCallback#browser_compatibility

j0lol commented 6 days ago

Maybe this polyfill could help? https://github.com/pladaria/requestidlecallback-polyfill

j0lol commented 3 days ago

Hi, I downloaded the latest nightly build. I am still getting the error printed in logs:

[Error] ReferenceError: Can't find variable: requestIdleCallback
decorateSvgElement — 127.0.0.1:1898
patchSvgToContainer — 127.0.0.1:1101
rerender$svg — 127.0.0.1:1450
(anonymous function) — 127.0.0.1:527
doUpdate — 127.0.0.1:511

        (anonymous function) (127.0.0.1:519)
        doUpdate (127.0.0.1:492)

tinymist version for proof:

tinymist
Build Timestamp:     2024-10-07T06:21:35.531180000Z
Build Git Describe:  3aa8f12
Commit SHA:          3aa8f1233dcc6ce3ee5db50a85a9ace30f61d1ac
Commit Date:         None
Commit Branch:       None
Cargo Target Triple: aarch64-apple-darwin
Typst Version:       0.11.1
Typst Source:        git+https://github.com/Myriad-Dreamin/typst.git?branch=tinymist-v0.11.30#a6350064021075a9c9e6452d127638bb109b07a9
Myriad-Dreamin commented 2 days ago

This patch is not available until next release.