Releases: BobWs/flatnotes-enhanced
v1.7.1: Bug Fixes – Backup list clarity & More reliable version check
🐛 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.1Docker 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
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 noteswhen a filter is active, otherwise just the total count - No-results state — dedicated empty state when search yields nothing, with a "Clear search" link
LoadingIndicatorwraps 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
ConfirmModalinstances
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.vueSettingsAppearance.vueSettingsAdvanced.vueSettingsTags.vueSettingsTaskIcons.vueSettingsPrefs.vueSettingsMaintenance.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_DAYSenvironment 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_restorebackup of the current state is automatically created before any restore operation - Requires typing
RESTOREto 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-Agentheader 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.0Docker 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
🐛 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.3Docker 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
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):
- Docker environment variable (
FLATNOTES_QUICK_ACCESS_SORT) – if you have one configured - 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.2Docker 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
🐛 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
truncateclass 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.1Docker 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
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_viewfield - 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.0Docker 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
🐛 Bug Fixes
Fix 1: Case-insensitive attachment linking
Attachments are now matched case-insensitively. Previously,  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/andAttachments/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
_archiveare now scanned for attachment references - Notes in
_trashremain 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.1Docker 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
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:
- Click the new
[[]]button in the editor toolbar - A modal opens with a searchable list of all your notes
- Start typing – the list filters in real-time
- 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.0Docker 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
🐛 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.2Docker 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
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
- Go to Attachments from the navigation menu
- Use the search box to find specific files
- Click "In use" or "Unused" to filter by reference status
- Click Sort by to organize the list
- Use the ↕ button to reverse the order
Installation
docker pull dockerbobw/flatnotes-enhanced:latest
docker pull dockerbobw/flatnotes-enhanced:v1.4.1Docker 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! 📎