Skip to content

About

Masonry layouts Picture Viewer

Topics

Resources

Stars

366 stars

Watchers

1 watching

Forks

Latest commit

 

History

151 Commits

Folders and files

Repository files navigation

Mason Gallery

banner

Masonry layout Image Viewer — desktop, web, and CLI.

繁体中文

Controls

Open Preferences → Controls & shortcuts to customize keyboard, mouse, and wheel bindings. Current controls keeps wheel zoom and arrow-key panning when zoomed in. Wheel navigation switches images with the wheel and zooms with the left and right mouse buttons. Mouse bindings apply to the image; touch pinch remains available.

Use Record keys for keyboard shortcuts, or enter keys such as Escape and Delete directly. Remove every binding to disable an action; Restore returns it to the selected preset. Switching presets keeps custom bindings. Settings search finds individual controls and focuses them when selected.

Monorepo Structure

packages/
├── core/       — Shared UI components, stores, types, i18n
├── desktop/    — Tauri desktop app (Windows, macOS, Linux)
├── web/        — Astro static site + React browser app (Chromium browsers)
└── cli/        — npm CLI that serves the web build locally

Development

Prerequisites

bun install

Desktop

task dev:desktop

Web

task dev:web

CLI

task build:cli

Linting & Type Checking

task check     # biome ci + tsc --build
task format    # biome format --write
task test      # core + web behavior tests

Updater Signing Key Setup (Desktop)

The auto-updater requires a signing key pair. Generate one with:

bunx @tauri-apps/cli signer generate -w ~/.tauri/mason-gallery.key

This creates:

  • Private key: ~/.tauri/mason-gallery.key (keep secret)
  • Public key: printed to stdout

Configure the project:

  1. Copy the public key into packages/desktop/src-tauri/tauri.conf.json under plugins.updater.pubkey
  2. Add the following GitHub repository secrets for the release workflow:
    • TAURI_SIGNING_PRIVATE_KEY — contents of the private key file
    • TAURI_SIGNING_PRIVATE_KEY_PASSWORD — password entered during generation (if any)

Keep the existing signing key when repairing updates. Installed clients trust the public key bundled with their version; replacing the key would prevent them from installing updates.

The signing key was rotated after v2.2.0. Automatic updates from v2.2.0 are not being repaired. Users of versions carrying the previous public key must manually install a v2.2.1 or a later release carrying the new public key before using automatic updates again.

The desktop release workflow verifies the signing key before building, checks each platform's signed bundle, and downloads the completed latest.json and its installers to verify all four supported targets. A successful build alone is insufficient. Releases remain drafts until these checks pass and a maintainer publishes them.

To restore updater metadata for an existing published release without rebuilding its installers or publishing a new version, dispatch Release Desktop with that release's tag and repair_only=true, using the original signing credentials for that release. For example, from a branch containing the repair workflow:

gh workflow run release.yml --ref YOUR_BRANCH -f tag=YOUR_RELEASE_TAG -f repair_only=true

Repair checks the original assets' SHA-256 digests, signs them using the repository Secrets, verifies signatures against the public key from the original tag, and uploads the signatures followed by latest.json. It preserves the binaries, tag, release notes, and publication state. If a valid manifest already exists, repair only verifies it.

To verify the repository signing Secrets against the current branch's public key without building binaries or modifying any release, dispatch with verify_only=true:

gh workflow run release.yml --ref YOUR_BRANCH -f tag=YOUR_RELEASE_TAG -f verify_only=true

Publish

git switch main
git pull --ff-only origin main

# Synchronize workspace, Rust, Tauri and displayed versions before tagging.
task check
task test

git tag v2.3.0
git push origin v2.3.0

The tag starts Release Desktop. Wait for all builds and the complete updater verification to succeed, then review and publish the draft GitHub Release.

About

Masonry layouts Picture Viewer

Topics

Resources

Stars

366 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages