github akitaonrails/FrankMD v1.0.0
v1.0.0 — first stable release

2 hours ago

v1.0.0

Released: 2026-09-07

The first stable release of FrankMD — a filesystem-only, database-free Markdown notebook. After a long 0.x run hardening the editor, the upload paths, i18n, theming, vim mode, and the security surface, the app is stable enough to call 1.0.

This release also ships the image-picker features from the community QA round (@francis-sousa), plus a hover bug fix.

Features

  • Custom S3-compatible endpoints (#158): point image/video uploads at a self-hosted S3 service (MinIO, SeaweedFS, …) instead of AWS. Two new config keys — aws_s3_endpoint and aws_s3_force_path_style (both with ENV fallbacks, documented in the generated .fed and the README). S3 client construction is now centralized so all four upload paths (image, video, external, AI) share one endpoint-aware client and URL builder.
  • Pagination in the Local and Folder tabs (#159): the image picker is no longer capped at the 10 most recent images. Each tab gets a per-page selector (10/25/50) and prev/next arrows — the Local tab pages on the server (GET /images now returns { images, total, limit, offset }), the Folder tab pages client-side.
  • Delete local images (#160): a hover-revealed trash button on each Local-tab thumbnail, with a confirm step, removes unwanted images. DELETE /images/file/*path is auth-gated, CSRF-protected, and confined to the images directory via PathSafety — only existing, allow-listed image files can be deleted (traversal and non-image paths delete nothing). Local files only; S3 objects are out of scope.

Fixes

  • Image grid hover no longer spawns scrollbars (#161): the thumbnail hover used transform: scale() inside a scrollable grid, which overflowed the container on edge items and caused a flickering reflow. Replaced with an inset-ring affordance that doesn't change the box size.

Internationalization

  • New image-picker strings (pagination + delete) added across all seven locales (en, es, he, ja, ko, pt-BR, pt-PT).

Test Coverage

  • 864 Ruby tests, 1,616 JavaScript tests (2,480 total).

Don't miss a new FrankMD release

NewReleases is sending notifications on new releases.