Skip to content

chore: release v3.5.1 - #295

Merged
raaymax merged 9 commits into
mainfrom
dev
Jun 15, 2026
Merged

chore: release v3.5.1#295
raaymax merged 9 commits into
mainfrom
dev

Conversation

@raaymax

@raaymax raaymax commented Jun 15, 2026

Copy link
Copy Markdown
Owner

Maintenance release: fixes intermittent image/thumbnail load failures, removes any types across the codebase, and automates Docker image publishing on release.

Fixes

  • Thumbnails no longer crash the server. The native sharp/libvips thumbnail pipeline is replaced with the pure-WASM @cf-wasm/photon. On musl/arm64 under Deno, sharp could abort the whole process with a native SIGABRT on the first (uncached) resize of an image — dropping every in-flight connection (surfacing as NS_BINDING_ABORTED in the browser) until the container restarted. photon runs sandboxed in WebAssembly with no per-arch native binary, so that crash class is eliminated. (fix(storage): replace sharp with pure-WASM photon for thumbnails #294)
    • Thumbnail resizing now works from a single dimension (the UI sends height only) and preserves aspect ratio instead of requiring both sides.
    • Decode/resize failures fall back to streaming the original image instead of failing the request.
    • Large source images are streamed as-is above a size threshold to cap memory use.

Improvements

CI / Release

  • The release workflow now builds and pushes the multi-arch (amd64 + arm64) Docker image automatically after creating the GitHub Release. (ci: trigger docker build from release workflow #271)
  • CI pinned to deno 2.6.8 to match the production runtime (denoland/deno:alpine-2.6.8).

Fix GITHUB_TOKEN limitation: release.yml now calls docker.yml directly via workflow_call so Docker builds are triggered automatically on release.
Removes ~25 any type annotations from backend core, infra, and inter layers, replacing them with proper types (unknown, Record<string, unknown>, BusMessage, JsonWebKey, PromiseLike signatures). Part of the ongoing type safety cleanup.
…modules (#273)

Remove any types from storage, encryption, config, migration, and utility modules. Part 2 of the ongoing type safety cleanup (follows PR #272 which covered backend core).
Remove any types from the shared API client module (deno/api/). Part 3 of the type safety cleanup, following PR #272 (backend core) and PR #273 (storage/encryption/support).
Remove any types from frontend code: client, plugins, utils, models, and components. Part 4 of the type safety cleanup series. Includes fix aligning parsingErrors type with SerializeError shape.
Replace ~98 any instances across 19 test files with proper types. Final PR (5 of 5) in the remove-any-types series (PRs #272-276). Only 2 justified any remain in test helpers with deno-lint-ignore.
* fix(storage): replace sharp with pure-WASM photon for thumbnails

* fix(api): type timeout ids as ReturnType<typeof setTimeout>

* ci(tests): pin deno to 2.6.8 to match production runtime

* chore: remove code comments
@github-actions

Copy link
Copy Markdown
Contributor

Docker image

ghcr.io/raaymax/quack:build-96

@raaymax
raaymax merged commit 4c29a5c into main Jun 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant