Skip to content

Latest commit

 

History

1,797 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dezoomify

High-resolution zoomable images (IIIF, Deep Zoom, Zoomify, krpano, and more).

  • Website (repository root, deployed from this branch): worker-hosted wasm core discovery, direct-first transport with automatic eligible metadata proxy fallback, canvas assembly, and real save (Chromium E2E covered).
  • Extension (apps/extension/): explicit-action scan with unit coverage; available from the Chrome Web Store and Firefox Browser Add-ons.
  • Desktop (apps/desktop/): real Tauri window with the five capability commands, native save dialog, and installer bundling (unsigned Linux x86_64 .deb, Windows x86_64 .msi, and Apple silicon macOS .dmg; automatic updates are disabled, check GitHub Releases manually).
  • CLI (apps/cli/): real save pipeline through the native runtime, covering discovery, bounded tile acquisition, assembly, and output writing.

Quick start

cargo xtask setup     # verify tools and install the pnpm workspace
cargo xtask check     # formatting, lint, artifact validation
cargo xtask test      # one Rust workspace run + one combined Node unit run
cargo xtask test all  # add generated WASM and browser integration (no public network)

The fast test does not run check, generated WASM bindings, packaging, or browsers. Node 24 is the minimum supported Node version. test all adds the generated WASM Node harness, Chromium website E2E, and full Chromium/Firefox extension integration without rerunning the fast matrix; the desktop real window remains explicit.

cargo xtask test live --public is the only command that contacts real websites (explicit opt-in). cargo xtask --help lists everything else, including build, dev, ci, release, protocol, and fixtures. See Development and Testing.

Layout

  • Repository root: the website, where you paste a URL and save the image.
  • apps/: the extension, desktop app, and CLI.
  • crates/: the Rust engine, with pure discovery core, job state machine, versioned protocol, native runtime, WASM adapter, and test tooling.
  • packages/: TypeScript shared UI, browser runtime, and generated protocol bindings.
  • testdata/scenarios: deterministic test fixtures.
  • docs/: architecture, privacy, security, and release contracts.

How fetching works

The website always tries a direct browser fetch first, with a short 1500 ms window. If the direct fetch does not complete in time, it automatically retries eligible public metadata (never image tiles) through a same-origin metadata proxy. This proxy is visible in the UI and never carries cookies or credentials. The extension instead uses your browser session under permissions you grant; cookie handoff to the desktop app is a separate, explicitly consented step.

About

Dezoomify is a web application to download zoomable images from museum websites, image galleries, and map viewers. Many different zoomable image technologies are supported.

Topics

Resources

Security policy

Stars

823 stars

Watchers

20 watching

Forks

Releases

Used by

Contributors

Languages