Skip to main content
July 11, 2026
Fix
CLI patch fixes
Clearer next steps when Docker isn’t runningopeninary create now tells you clearly what to do next if Docker isn’t available on your machine, instead of leaving you stuck.
July 11, 2026
FeatureFix
Weekly update

New features

Official Openinary CLI — Spin up a new Openinary instance in seconds with create-openinary, or manage an existing one with the openinary CLI. This is now the recommended way to get started — see the quickstart guide.Presigned client-side uploads — Large files can now be uploaded directly to your storage backend using presigned URLs, taking load off your server and speeding up uploads.Appearance settings — You can now hide thumbnails in the media grid from the dashboard’s appearance settings, handy for large libraries or slower connections.Anonymous usage telemetry — Openinary now collects anonymous, non-identifying usage data to help us understand how the project is used and prioritize improvements.

Improvements

Faster folder browsing — The dashboard now loads folder contents on demand instead of fetching your entire storage tree at once, making navigation much faster on large libraries.Media grid and bulk actions — The media grid got a round of polish, including support for selecting and acting on multiple files at once.

Bug fixes

  • .DS_Store files ignored on upload — Folder uploads from macOS no longer fail or clutter your storage because of stray .DS_Store files.
  • Video worker concurrency — Video processing now correctly detects available memory in containerized environments, avoiding overloaded workers on small instances.
  • Video jobs no longer block the API — Video processing on small containers no longer starves HTTP requests, keeping transformations responsive during heavy video load.
  • Lower memory usage after jobs — Memory is now released more reliably after image and video processing, reducing RSS growth over time.
June 27, 2026
FeatureFixImprovement
Weekly update

New features

Round corners transformation — You can now round the corners of any image using the r parameter, including full circles and ovals. See the transform API reference.

Improvements

Parallel video processing — Video jobs are now processed in parallel up to your configured concurrency limit, speeding up queues with multiple pending videos.Faster image transformations — Image processing now uses non-blocking file I/O, improving throughput under load.Open source help links — In-app help links now point to GitHub instead of commercial resources.

Bug fixes

  • API key Bearer auth bypass — Fixed an authentication issue where API key validation could be bypassed via the Bearer header.
  • Crop and resize combined — Fixed aspect-ratio cropping being ignored when combined with a resize parameter.
  • Video content type — Thumbnails and non-MP4 video outputs now report the correct content type.
  • File extension casing — Extensions are now lowercased before format matching, fixing edge cases with mixed-case file names.
April 27, 2026
Fix
Weekly update

Bug fixes

  • Uppercase file extensions — Files with uppercase extensions (such as .JPG or .PNG) are now correctly recognized and processed instead of being rejected as unsupported. See the transform API reference for supported formats.
April 20, 2026
FeatureFix
April update

New features

Round corners transformation — You can now round the corners of any image using the r parameter. Apply a uniform radius, set each corner individually, or use r_max for a full circle or oval. Pair with b_rgb:<hex> to fill the corners with a solid color. See the transform API reference for all syntax options.PSD file support — Openinary now accepts Adobe Photoshop (.psd) files. Upload PSD files through the API or the web dashboard, and apply image transformations just like any other format. PSD sources are automatically converted before processing.HEIC and HEIF upload support — You can now upload images in HEIC and HEIF formats (common on iOS devices). Files are automatically normalized for compatibility with the transformation pipeline.Configurable upload file size limit — The maximum upload size is no longer hardcoded. Set the MAX_FILE_SIZE_MB environment variable to allow larger files — useful for video uploads on self-hosted instances. Defaults to 50 MB. See server configuration.Original file download route — A new GET /download/{path} endpoint lets you retrieve the original uploaded file without any transformations applied. See the download API reference.Folder management in the web UI — You can now create and delete folders directly from the Openinary dashboard, including support for empty folders on S3 and R2 storage backends.Upload prewarming — When uploading files, you can pass a list of transformations to pre-generate and cache immediately. The first public request for those variants is served instantly instead of triggering on-demand processing. See upload & cache warming.Multi-architecture Docker images — Docker images now support both AMD64 and ARM64 architectures, so you can run Openinary on Raspberry Pi, Apple Silicon, and AWS Graviton without any extra steps.Cache invalidation endpoint — A new authenticated endpoint lets you programmatically purge cached transformations. See the cache invalidation API reference.Signed URLs — Restrict who can request transformations by signing delivery URLs with HMAC-SHA256. Requests with a missing or invalid signature are rejected. See signed URLs.Public rate limiting — Public transformation and download routes are now rate-limited per IP. Configure the window and max requests with PUBLIC_RATE_LIMIT_MAX and PUBLIC_RATE_LIMIT_WINDOW_MS. See server configuration.

Improvements

Folder thumbnails — Folders in the media grid now display thumbnail previews of their contents.Configurable S3/R2 connection settings — You can now set socket limits, request timeouts, and connection timeouts for S3-compatible storage backends via environment variables. See storage configuration.

Bug fixes

  • Transparency preserved with quality parameter — Applying a q (quality) parameter no longer strips the alpha channel from PNG, WebP, or AVIF images.
  • Folder names with underscores — Folder names containing underscores are no longer misidentified as transformation segments in the URL path.
  • Image transformation race condition — Fixed a concurrency issue that could cause intermittent failures when multiple transformations were requested simultaneously.
  • Empty folder handling on S3/R2 — Creating and displaying empty folders now works correctly with S3 and R2 storage backends.
April 12, 2026
FeatureFix
Weekly update

New features

Configurable upload file size limit — Set the MAX_FILE_SIZE_MB environment variable to allow larger uploads on self-hosted instances. See server configuration.

Improvements

Folder thumbnails — Folders in the media grid now show thumbnail previews of their contents.

Bug fixes

  • Transparency preserved with quality parameter — Applying a q (quality) parameter no longer strips the alpha channel from PNG, WebP, or AVIF images.
  • Folder names with underscores — Folder names containing underscores are no longer misidentified as transformation segments in the URL path.
April 7, 2026
FeatureFix
Weekly update

New features

HEIC and HEIF upload support — You can now upload images in HEIC and HEIF formats, common on iOS devices. Files are automatically normalized for the transformation pipeline.PSD file support — Openinary now accepts Adobe Photoshop (.psd) files, automatically converted before processing.Folder management in the web UI — Create and delete folders directly from the dashboard, including empty folders on S3 and R2 storage backends.

Bug fixes

  • Image transformation race condition — Fixed a concurrency issue that could cause intermittent failures when multiple transformations were requested simultaneously.
March 7, 2026
FeatureFix
Weekly update

New features

Named file uploads — Uploads now support custom file names instead of relying only on generated ones.Target folder on upload — Specify a destination folder directly when uploading a file.Signed URLs — Restrict who can request transformations by signing delivery URLs with HMAC-SHA256. See signed URLs.Multi-architecture Docker images — Docker images now support both AMD64 and ARM64, so Openinary runs on Raspberry Pi, Apple Silicon, and AWS Graviton without extra steps.

Bug fixes

  • Docker build reliability — Fixed a missing OpenSSL dependency and a SQLite race condition during table initialization.
  • API key auth compatibility — Fixed the apiKey table schema for compatibility with newer Better Auth versions.
  • Environment template — Corrected STORAGE_* variable names in env.template.
December 27, 2025
Feature
Weekly update

New features

Cache invalidation endpoint — A new authenticated endpoint lets you programmatically purge cached transformations after replacing a file directly in storage. See the cache invalidation API reference.Configurable S3/R2 connection settings — Set socket limits, request timeouts, and connection timeouts for S3-compatible storage backends via environment variables. See storage configuration.
December 23, 2025
FeatureFixSecurity
Weekly update

New features

Single admin account enforcement — Sign-ups are now restricted to a single admin account, enforced at the database level.Version endpoint — A new public /api/version endpoint and UI components let you check the running Openinary version.

Improvements

Stricter session validation — Sessions are now revalidated against the database on every request, so deleted users lose access immediately.Async auth initialization — Authentication now initializes asynchronously, improving startup performance.

Bug fixes

  • Loading screen after login — Fixed a stuck loading screen caused by stale sessions for deleted users.
  • Setup page 500 error — Fixed a crash on /setup when an admin account already existed.
December 20, 2025
Feature
Initial release

Openinary is live

The first beta release of Openinary: a media transformation API for images and videos, with a web dashboard, API key management, S3-compatible and local storage support, automatic video transcoding via FFmpeg, and Docker support for easy self-hosting.