17 Commits

Author SHA1 Message Date
Andrey Antukh
2e1839f898 🐛 Fix NotReadableError in rasterizer during thumbnail generation
The rasterizer's create-image function was clearing image.src in its
Rx teardown cleanup. This caused the decoded pixel data to be discarded
before downstream operators (drawImage / createImageBitmap) could read
it, resulting in a browser NotReadableError.

Changes:
- Remove image.src = "" from cleanup; the image element will be
  garbage collected naturally. Event handler nulling is kept to break
  circular references.
- Add dimension validation in svg-get-adjusted-size to return nil for
  zero/NaN dimensions instead of producing invalid sizes.
- Add fallback in svg-set-intrinsic-size! to use [max max] when SVG
  dimensions can't be determined.

Error occurred in production (2.16.0-RC10) during thumbnail generation
in the workspace.

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2026-06-11 17:04:24 +02:00
Yamila Moreno
ddba2ffa75
📎 Update Kaleidos Copyright (#9929) 2026-05-29 11:24:58 +02:00
Andrey Antukh
0dfac801a4 Improve error handling and exception formatting (#8757)
*  Improve error handling and exception formatting

- Enhance exception formatting with visual separators and cause chaining
- Add new handler for :internal error type
- Refine error types: change assertion-related errors to :assertion type
- Improve error messages and hints consistency
- Clean up error handling in zip utilities and HTTP modules

* 🐛 Properly handle AbortError on fetch request unsubscription

When a fetch request in-flight is cancelled due to RxJS unsubscription
(e.g. navigating away from the workspace while thumbnail loads are
pending), the AbortController.abort() call triggers a catch handler
that previously relied solely on a @unsubscribed? flag to suppress the
error.

This was unreliable: nested observables spawned inside rx/mapcat (such
as datauri->blob-uri conversions within get-file-object-thumbnails)
could abort independently, with their own AbortController instances,
meaning the outer unsubscribed? flag was never set and the AbortError
propagated as an unhandled exception.

Add an explicit AbortError name check as a disjunctive condition so
that abort errors originating from any observable in the chain are
suppressed at the source, regardless of subscription state.

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2026-03-24 19:55:23 +01:00
Aitor
1c29c73b8e 🐛 Fix rasterizer using wrong sizes 2024-03-08 15:32:48 +01:00
Aitor
611b90f5fb 🐛 Fix rasterizer not setting intrinsic size 2024-03-04 08:58:49 +01:00
Andrey Antukh
833871df65 💄 Format frontend code 2024-01-08 09:32:50 +01:00
Aitor
5ad31a878b 🐛 Fix rasterizer not loading embedded styles 2024-01-04 10:09:37 +01:00
Andrey Antukh
96f5a33f5f ⬆️ Upgrade to beicon2 (part1) 2023-12-26 14:14:20 +01:00
Andrey Antukh
2c8e29d1df 🔥 Remove verbose logging on rasterizer 2023-12-11 17:14:20 +01:00
Aitor
f477de962d Cache rasterizer resources 2023-11-30 17:28:11 +01:00
Aitor
aa6fdf10f9 🐛 Fix rasterizer log level 2023-11-30 15:43:52 +01:00
Aitor
16c8c4bd2a Use subdomain for rasterizer (OOPIF) 2023-11-29 12:06:34 +01:00
Aitor
39635cf5df ♻️ Refactor how fonts are passed to raster 2023-11-28 17:33:04 +01:00
Aitor
3cbb60620a 🐛 Fix corrupted thumbnail rendering 2023-11-20 10:39:07 +01:00
Aitor
95d73494d6 Do not refetch data: URIs 2023-11-16 23:07:00 +01:00
Aitor
9ce8c2d580 ♻️ Change pixel overlay inner workings 2023-09-18 17:00:13 +02:00
Aitor
51a8e8799b ♻️ Change thumbnail-renderer to rasterizer 2023-09-18 17:00:13 +02:00