Skip to content

Releases: BobWs/flatnotes-enhanced

v1.7.1: Bug Fixes – Backup list clarity & More reliable version check

31 May 10:56

Choose a tag to compare

🐛 Bug Fixes

Fix 1: Backup & Restore – Clearer date timestamps

The backup list now provides better context for dates and times.

What changed:

Before After
2026-05-30 14:32:00 · 28.0 KB Database Last Saved: 2026-05-30 14:32:00 · 24 KB
Unclear what the timestamp meant Explicit label and file size included
No tooltip context Hover tooltips explain both filename timestamp (UTC) and last saved date (localized)

Benefits:

  • Clearer distinction between backup creation time and database save time
  • File size shown directly in the list (no extra click needed)
  • Tooltips explain timezone handling (UTC in filename, localized in display)

Fix 2: More reliable version check (Docker Hub API)

The live version check now uses Docker Hub API as the primary source, with GitHub Releases as fallback.

What changed:

Before After
GitHub API only (60 requests/hour limit) Docker Hub first (generous limits), GitHub fallback
Rate limit could cause "Offline" false positives Docker Hub rarely hits limits
Unclear which source was used UI now shows via Docker Hub or via GitHub
Failed check would blank out previous result Last known version preserved on transient errors

Benefits:

  • More reliable update detection (no more false "Offline" due to rate limits)
  • 6-hour cache shared between both sources
  • Debug info visible in UI (Checked X ago via Docker Hub)

Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.7.1

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.7.1

🔗 Links


🙏 Thank You

Thanks to everyone using and testing Flatnotes-Enhanced – clearer backups and reliable version checks make maintenance easier for everyone.

Update for a smoother experience! 🔧

v1.7.0 — Redesigned Archive Page, Maintenance & Settings Refactor

30 May 11:41

Choose a tag to compare

Redesigned Archive Page

New features Archived Page (matching Attachments Page design):

  • Search field — filters by note title and folder path with a clear (✕) button
  • Sort dropdown — four options: Last modified (default), Title A–Z, Title Z–A, Oldest first
  • Smart live subtitle — shows X of Y archived notes when a filter is active, otherwise just the total count
  • No-results state — dedicated empty state when search yields nothing, with a "Clear search" link
  • LoadingIndicator wraps the whole page

Preserved without changes:

  • Restore individual note (with confirm modal)
  • Permanently delete individual note (with confirm modal)
  • Empty Archive button (with confirm modal)
  • Refresh button with spin animation
  • Folder breadcrumb display
  • Click-to-open note navigation
  • All three ConfirmModal instances

Settings Architecture Refactor

The monolithic Settings.vue (~1800 lines) was split into dedicated sub-components for better maintainability and faster loading. Each settings tab is now its own self-contained Vue component:

  • SettingsCallouts.vue
  • SettingsAppearance.vue
  • SettingsAdvanced.vue
  • SettingsTags.vue
  • SettingsTaskIcons.vue
  • SettingsPrefs.vue
  • SettingsMaintenance.vue (new)

Settings.vue is now a thin shell responsible only for tab routing. Zero functional regression — all existing settings work identically.


New: Maintenance Tab

A dedicated Maintenance tab has been added to Settings with a clean two-column card layout.

Trash Manager

  • Displays current auto-delete configuration (via FLATNOTES_TRASH_DAYS environment variable)
  • Shows number of notes currently in trash
  • Shows timestamp of last cleanup ("Last cleaned: X days ago" or "Never")
  • "Empty trash now" button with inline confirmation
  • Configurable: delete all trash or only notes older than X days
  • Spinner feedback during operation, success/error messaging

Content Summary

  • Live count of notes, archived notes, trash items and attachments
  • Refresh button to update counts on demand

About & System Info

  • App version display
  • Database file path and size
  • Project attribution

New: Backend Maintenance API

Three new API endpoints power the Maintenance tab:

Endpoint Description
GET /api/maintenance/status Returns app version, DB info, note counts, trash config
POST /api/maintenance/trash/empty Empties trash (all or older than X days)

Last cleanup timestamp is persisted in UserSettings.extra so it survives container restarts.


Preferences Backup & Update Checks

New: Preferences Backup & Restore System

Important: Backups contain user preferences and settings only (colors, callouts, tag settings, appearance etc.) — not notes. Notes are stored as plain markdown files on the filesystem and are unaffected by backup and restore operations.

Automatic backups

  • A backup is automatically created on every app startup (once per calendar day)
  • Backups are stored at /data/.flatnotes/backups/
  • Filename format: flatnotes_backup_{label}_{YYYYMMDD_HHMMSS}.db
  • Configurable retention: keep last N backups (default 7), oldest are auto-pruned

Manual backups

  • "Backup now" button in the Maintenance tab creates an instant labeled backup
  • Backup list shows filename, size, creation date for all available backups

Restore

  • Select any backup from the list to restore
  • Safety mechanism: a pre_restore backup of the current state is automatically created before any restore operation
  • Requires typing RESTORE to confirm — prevents accidental restores
  • After successful restore, a prominent banner prompts the user to reload the page to apply restored preferences

Backup deletion

  • Individual backups can be deleted from the list with inline confirmation

New API endpoints:

Endpoint Description
GET /api/maintenance/backups List all available backups, newest first
POST /api/maintenance/backups Create a manual backup
POST /api/maintenance/backups/restore Restore from a selected backup
DELETE /api/maintenance/backups/{filename} Delete a single backup

New: Live Version & Update Check

The About section in the Maintenance tab now displays live version information with automatic update detection.

How it works

  • Installed version is read from package.json (ground truth)
  • Latest release is fetched from the GitHub Releases API: https://github.com/BobWs/flatnotes-enhanced/releases
  • Result is cached server-side for 24 hours — GitHub is never hammered on every page load
  • Falls back gracefully when offline or GitHub is unreachable

Three display states

State Display
Up to date Green "Up to date" badge + "Checked X ago"
Update available Amber "Update available" badge + link to release notes on GitHub
Offline / unreachable Grey "Offline" badge, no broken UI

Design decisions

  • Check runs server-side (not in the browser) — works even when users are behind a firewall
  • 5-second timeout on GitHub API call — never blocks the status response
  • Standard User-Agent header sent to GitHub (flatnotes-enhanced/{version})
  • No auto-update, no telemetry beyond the version number in the User-Agent header
  • Degrades gracefully in all failure scenarios

Technical Notes for Self-Hosters

New environment variable behavior
FLATNOTES_TRASH_DAYS was already supported in earlier versions but was not surfaced in the UI. The Maintenance tab now displays the configured value so users can see at a glance whether auto-cleanup is active.
Add e.g. FLATNOTES_TRASH_DAYS=60 to docker environment.

Backup storage
Backup files are stored inside the same Docker volume as your database (/data/.flatnotes/backups/). No additional volume mount is required. Backups persist across container restarts and updates.


Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.7.0

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.7.0

🔗 Links


🙏 Thank You

Thanks to everyone using and testing Flatnotes-Enhanced.

v1.6.3: Bug Fixes – Sidebar expand/collapse + Header colors/font

25 May 08:38

Choose a tag to compare

🐛 Bug Fixes

Fix 1: Expand/Collapse sidebar folders and tags

What was broken:

Issue Description
Expand All Only expanded first-level items – nested folders/tags remained collapsed
Collapse All Worked, but individual items could not be expanded again
Individual expand/collapse Stopped working after using Expand All or Collapse All
Refresh buttons Did not restore normal behavior – only a full page refresh helped

What changed:

Fix Description
Deep recursive expansion Expand All now expands all nested levels (Parent/Child/Grandchild/etc.)
Pulse-based force expand Sidebar no longer holds forceExpand permanently – items regain control after expand/collapse completes
v-show instead of v-if Children remain mounted so force signals reach all levels simultaneously
Button icon/tooltip state Now tracks last expand direction to show correct icon ( / )

What works now:

Action Expected behavior
Click Expand All All folders/tags at every level expand
Click Collapse All All folders/tags at every level collapse
Click individual chevron Toggles that single item (works before AND after using Expand/Collapse All)

Fix 2: Header colors and font (H1–H6) now respect user preferences

What was broken:

Issue Description
Colors not reverting Disabling header colors still showed custom colors
Font not reverting Headings kept the custom Quicksand font even when colors were disabled
Toggle had no effect Enabling/disabling headers in Settings did nothing visible

What changed:

Fix Description
getHeaderColor() returns null when disabled No inline color style is applied to headings
Quicksand font is now opt-in Font only applies when data-custom-headers attribute is present
Live toggle without page reload Watch on headerColors re-renders the note view instantly
hasAnyHeaderEnabled() helper Determines if any H1–H6 level is enabled

What works now:

Action Expected behavior
Disable all headers Headings revert to default theme color and default Poppins font
Disable individual heading level That specific level reverts; others keep custom colors
Re-enable headers Custom colors and Quicksand font return instantly

Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.6.3

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.6.3

🔗 Links


🙏 Thank You

Sidebar navigation is now fully reliable, and header styling finally respects your preferences.

Update for a smoother experience! 📂 🎨

v1.6.2: Consistent Default Sorting – All Notes respects your preference

24 May 10:26

Choose a tag to compare

Improved: Default Sort Consistency

All "All Notes" entry points now respect your saved sort preference from Settings → Preferences → Default note sort.

What changed:

Entry point Before After
Hamburger menu → All Notes Hardcoded to Title ✅ Respects user preference
Home page → ... (Show more) Used Docker env variable ✅ Respects user preference (with fallback)
Search page (direct) Hardcoded to Title ✅ Respects user preference (with fallback)

Fallback chain (when no user preference is set):

  1. Docker environment variable (FLATNOTES_QUICK_ACCESS_SORT) – if you have one configured
  2. App default – Title (alphabetical order)

What stays the same:

  • The Quick Access list (5 notes on Home page) still uses Docker env only – unchanged
  • Clicking the sort dropdown on the Search page still overrides everything (URL parameter takes priority)

Bug Fixes

Fixed: "App Default" option in Settings now saves correctly. Previously, selecting "App Default" would not persist after page refresh.

Fixed: The sort preference now syncs instantly when changed in Settings – no page reload needed.


Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.6.2

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.6.2

🔗 Links


🙏 Thank You

Thanks to @TechGuyAlabama who reported the inconsistent sorting behaviour – your notes now sort the way you expect, everywhere.

Update for consistent sorting! 📊

v1.6.1: Bug Fix – Title truncation in editor header

21 May 08:39

Choose a tag to compare

🐛 Bug Fix

Fixed: Long note titles were being cut off without an ellipsis (), and the folder breadcrumb competed for space with the action buttons (Pin, Archive, Trash, Edit/Save).

What changed:

The header in both view and edit mode has been restructured from one crowded row into two clean rows:

Before After
Folder breadcrumb + Title + Buttons (all in one row) Row 1: Folder breadcrumb + Buttons
Title competed for space, truncation broke Row 2: Full-width title with proper truncation ()
  • The title now has the entire width of the second row – nothing else competes for space
  • The truncate class now correctly appends when titles are too long
  • Buttons (Prev/Next, Pin, Archive, Trash, Edit/Save) always stay intact on the right side of row 1
  • Folder breadcrumb gives way when space is tight, buttons never wrap
  • A hidden placeholder keeps consistent row height even when no folder is present

Only Note.vue was changed – no other files affected.


Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.6.1

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.6.1

🔗 Links


🙏 Thank You

Thanks to @TechGuyAlabama who reported this issue – the note header is now cleaner and more reliable.

Update for a better editing experience! ✏️

v1.6.0: Note Views – Choose your preferred reading width

18 May 08:53

Choose a tag to compare

New Feature: Note Views

You can now choose how wide your notes appear on screen. Three options are available in Settings → Preferences → Default note view:

View Width Best for
Normal 999px Default – comfortable reading length
Wide 1400px Large monitors, more horizontal space
Full Screen 100% Ultrawide displays, maximum space

How it works:

  • Go to Settings → Preferences
  • Find "Default note view" dropdown
  • Select your preferred width and save
  • Changes take effect immediately – no page reload needed
  • Works for both editing and viewing notes

What stays the same:

  • All other pages (Settings, Attachments, Trash, Archive, Bookmarks, etc.) remain centered at 999px – only note pages are affected
  • Your preference is saved to the database and persists across sessions

Technical Notes

  • No backend changes – reuses existing notes_default_view field
  • Navbar and content area stay perfectly aligned in all three modes
  • Fully responsive – works on all screen sizes

Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.6.0

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.6.0

🔗 Links


🙏 Thank You

Thanks to everyone using and testing Flatnotes-Enhanced.

Choose your perfect reading width! 📖

v1.5.1: Bug Fixes – Case-insensitive attachments & Archive folder scanning

14 May 09:09

Choose a tag to compare

🐛 Bug Fixes

Fix 1: Case-insensitive attachment linking

Attachments are now matched case-insensitively. Previously, ![image](attachments/Photo.png) would fail to render if the actual file was named photo.png.

What changed:

  • Attachment lookup in the backend now tries exact match first (fast path), then falls back to a case-insensitive search
  • Delete operations use the same two-phase lookup – no more "file not found" errors when case differs
  • The Attachments page now correctly tracks usage regardless of case in markdown links
  • Frontend rendering treats attachments/ and Attachments/ the same

This affects all attachment types – images, PDFs, documents, archives, audio, video, and code files.


Fix 2: Archive folder now scanned for attachment usage

The Attachments page previously ignored notes in the _archive folder when determining if an attachment was "in use". This could lead to attachments being incorrectly marked as unused and potentially deleted.

What changed:

  • Notes in _archive are now scanned for attachment references
  • Notes in _trash remain excluded (trashed notes should not protect attachments)
  • The "In use" filter now correctly shows attachments referenced by archived notes

Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.5.1

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.5.1

🔗 Links


🙏 Thank You

Thanks to everyone using and testing Flatnotes-Enhanced – attachment handling is now more robust and reliable.

Update for better attachment management! 📎

v1.5.0: Wikilink Popup Modal – Link notes without typing

10 May 06:59

Choose a tag to compare

New Feature: Wikilink Popup Modal

You can now insert wikilinks using a searchable popup modal.
No more memorizing note titles or typing [[Note]] manually.

How it works:

  1. Click the new [[]] button in the editor toolbar
  2. A modal opens with a searchable list of all your notes
  3. Start typing – the list filters in real-time
  4. Click a note to insert [[Note Title]] at your cursor and hit the "insert link" button

Folder paths work too[[Work/Weekly]] resolves correctly.


Wikilink Rendering

Wikilinks now actually work in the viewer. Previously [[Note]] appeared as plain text – now it renders as a clickable link that takes you directly to the note.

Both formats are supported:

  • [[Note Title]] – links to the note
  • [[Folder/Subfolder/Note]] – links to notes in folders

How to use it

Step Action
1 Open any note in the editor
2 Click the [[]] button in the toolbar
3 Search for the note you want to link
4 Click the note and hit "insert link" button
5 [[Selected Note]] appears at your cursor

Technical Notes

  • No backend changes – uses existing note titles and routing
  • Works in both Markdown and WYSIWYG modes
  • Keyboard friendly – ↑ ↓ to navigate, Enter to insert, Escape to close
  • Caches note list – loads once per session for performance

Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.5.0

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.5.0

🔗 Links


🙏 Thank You

Thanks to everyone using and testing Flatnotes-Enhanced – linking notes is now faster and more intuitive than ever.

Start linking with a click! 🔗

v1.4.2: Bug Fix – Note switching while editing

09 May 05:44

Choose a tag to compare

🐛 Bug Fix

Fixed: Switching to a different note while the editor was open caused title mismatches, duplicate note errors, and a broken editor state.

What happened:

When you clicked a note in the sidebar while editing another note, the app tried to load the new note while keeping the editor open. This led to:

  • Stale titles causing duplicate note errors
  • The editor showing content from the wrong note
  • Unsaved changes flags persisting incorrectly

What changed:

Switching notes now closes the editor cleanly before loading the new note. The new note opens in view mode – click Edit when you're ready to make changes.

This is the expected behaviour – similar to Bear, Notion, and Obsidian – and makes the app more stable when navigating between notes.


Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.4.2

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.4.2

🔗 Links


🙏 Thank You

Thanks to @daniel5u in #23 who reported this issue – switching between notes is now reliable and predictable.

Update for a smoother note‑switching experience! 🔄

v1.4.1: Attachment System Overhaul – More formats, better management

08 May 09:15

Choose a tag to compare

Improved: Attachment Support

The attachment system now supports 40+ file types organized into logical categories, with proper icons and colours for each type.

What's new:

Category Examples Icon Colour
Documents DOCX, DOC, ODT, TXT, RTF Document Word blue
Spreadsheets XLSX, XLS, ODS, CSV Document Excel green
Presentations PPTX, PPT, ODP Document PowerPoint orange-red
Archives ZIP, RAR, TAR, 7Z, GZ Archive icon Purple
Audio MP3, WAV, FLAC, AAC, OGG Music note Pink
Video MP4, AVI, MKV, MOV, WEBM Play button Orange
Code JS, PY, HTML, CSS, JSON, YAML, XML Document Language colours
Images JPG, PNG, GIF, WEBP, SVG (rendered as image) N/A

Unknown file types (.bin, .dmg, custom formats) now display a proper download card instead of a broken image icon.


New: Attachments Page – Search, Sort & Filter

The Attachments page has been completely redesigned to help you find and manage files faster.

New features:

Feature What it does
Search Type to filter attachments by filename in real time
Usage filter Show All, In use, or Unused attachments
Sort options Name, Category, Size, Usage (fewest references first)
↕ Direction toggle Flip between ascending/descending order
Category badges Colour-coded pills showing file type at a glance
Smart subtitle Shows "3 of 12 files · 4.2 MB total" when filters are active
No-results state Clear message with "Clear filters" link when nothing matches

No backend changes – all filtering and sorting happens client-side for instant response.


How to use it

  1. Go to Attachments from the navigation menu
  2. Use the search box to find specific files
  3. Click "In use" or "Unused" to filter by reference status
  4. Click Sort by to organize the list
  5. Use the ↕ button to reverse the order

Installation

docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.4.1

Docker Compose

image: dockerbobw/flatnotes-enhanced:latest
# or pin to this version:
# image: dockerbobw/flatnotes-enhanced:v1.4.1

🔗 Links


🙏 Thank You

Thanks to the community for requesting better attachment support – managing files is now faster and more intuitive than ever.

Find your files faster! 📎