github akitaonrails/FrankMD v1.2.1

3 hours ago

v1.2.1

Released: 2026-09-25

Changes since v1.2.0 (46a1af1..HEAD).

Fixes

  • Nested-note URL no longer hangs on the loading screen (#180, fix by @rafaself in #181): opening a nested note directly (e.g. /notes/studies/design-systems-stack.md) could crash startup with TypeError: can't access property "add", this.expandedFolders is undefined when the CodeMirror outlet connected before the app controller finished initializing. Startup now guards initial load until the controller is ready.
  • File-lifecycle consistency under concurrent operations (#182, fix by @rafaself in #183): explorer refreshes and concurrent create/rename/move/delete operations could race. Filesystem mutations and tree reads are now serialized with a shared advisory lock in NOTES_PATH, note creation is atomic and existence-checked (no silent overwrite), and rename/create-folder collisions raise a proper "already exists" error. On integration, hardened the lock so an unopenable lock file (read-only mount, symlinked path, ENOSPC) degrades to a local fallback lock instead of crashing reads or writes.

Notes

  • Declined #184 (named Requesty AI provider), consistent with the project's vendor-neutral AI stance (#162); a generic OpenAI-compatible endpoint remains the preferred direction.

Test Coverage

  • 879 Ruby tests, 1,735 JavaScript tests (2,614 total).

Don't miss a new FrankMD release

NewReleases is sending notifications on new releases.