Releases: mcfetz/snipsel
v0.20.0
This update introduces Diced Moments, a powerful new way to rediscover your historical notes, alongside significant mobile UI refinements and tagging improvements.
🎲 New Feature: Diced Moments
Rediscover your past snipsels with "Diced Moments" – serendipitous highlights from your history that appear directly in your daily lists.
- Random Discoveries: Diced Moments surfaces random tagged snipsels, helping you revisit forgotten ideas and memories.
- Full Control:
- Dice Counter: See how many times a particular snipsel has been "diced."
- Ban Mechanism: Don't want a specific snipsel to reappear? Use the new Ban switch to exclude it from future diced moments.
- Smart Integration:
- Attachments at a Glance: A paperclip icon now appears in the diced moment view if the snipsel contains attachments.
- Navigation & Highlighting: Easily jump to the original context of any diced snipsel with integrated navigation and visual highlighting.
📱 Mobile & UI Improvements
✨ Refined Controls
- Always Accessible: Diced moment action buttons are now always visible on mobile, eliminating the need for complex hover states on touch devices.
- Fluid Animations: Added subtle, interactive hover animations to all diced moment action buttons for a more premium feel.
- Responsive Settings: Background color input fields in the settings menu have been redesigned to be narrower and more responsive, ensuring a perfect fit on mobile screens.
🛠️ Technical Fixes & Under-the-Hood
- Database Migration: Added a dedicated migration for
diced_moments_tagsto support the new feature's sophisticated weighting system. - Refined Link Detection: Improved the accuracy of internal collection link detection within diced moments.
- Information Dialog: Restored and improved snipsel info navigation, ensuring dice features are accessible from both the info dialog and the main detail view.
- API Stability: Fixed missing imports in the collections logic for better backend reliability.
v0.19.0
📊 Mermaid Diagram Support
We've added native support for Mermaid.js diagrams! You can now create flowcharts, sequence diagrams, and more directly within your snipsels using Markdown.
- New Editor Button: A dedicated Mermaid button in the formatting toolbar inserts a ready-to-use template.
- Improved Rendering: Enhanced parsing logic handles HTML entity decoding and ensures diagrams render smoothly.
🎵 Spotify Integration
Sharing your music is now even easier. We've introduced the SpotifyCard component, allowing you to embed Spotify tracks and albums just like the existing Deezer integration. Simply paste a Spotify link, and it will be rendered as a beautiful interactive card.
✍️ Editor Productivity Boost
The snipsel editor received several powerful new features to speed up your workflow:
- Fullscreen Mode: Get a distraction-free writing environment.
- Indent & Outdent: Quickly adjust the hierarchy of your lists and text.
- Save & New: A new keyboard-friendly action to save your current snipsel and immediately start the next one.
- Toolbar Refinement: Reorganized terminal formatting buttons for better accessibility and visual clarity.
Technical Improvements
- PWA Performance: Increased the PWA precache limit and optimized resource delivery by splitting Mermaid-related code into its own chunk, leading to faster initial load times.
v0.18.0
This major update focuses on a premium UI/UX modernization, introducing a high-end editing focus mode, beautiful internal link cards, and integrated task management for mentions.
✨ Premium UI & UX Overhaul
💎 Modernized Interface
We've completely redesigned several key areas of the app with a sleek, modern aesthetic:
- Glassmorphic Recycle Bin: The recycle bin now features a premium glassmorphic design with refined discrete pill switches.
- Enhanced Settings: The main settings page and snipsel detail views have been upgraded with premium button styles and interactive feedback.
- Polished Controls: Toggles for "Carry Over" and "Push" have been converted into premium switches, and color pickers are now conveniently aligned side-by-side.
- Dynamic Contrast: We've finalized a dynamic contrast color system for all primary buttons and icons, ensuring perfect legibility across all themes.
🎯 Pro Focus Mode
Stay in the zone while editing your snipsels:
- Contextual Blur: When editing a snipsel, the rest of the page (including the bottom add button and mentions section) now features a beautiful blur effect to keep your focus on the current text.
- Visual Feedback: All primary actions now provide clear visual feedback upon completion (e.g., successful saves).
🔗 Internal Collection Links
Internal linking is now more visual and intuitive:
- Collection Link Cards: Links to other collections (
[[link]]) are now rendered as beautiful cards instead of plain text. - Reliable Rendering: Optimized the API to handle collection references more robustly for consistent link display.
✅ Mentions & Task Integration
Mentions from other users are now treatable as tasks:
- Task Checkboxes: You can now find task checkboxes directly in the "Mentions by Others" section.
✍️ Editing & Tooling
- New Formatting Tool: Added a dedicated button for inserting horizontal lines (
---) to the formatting toolbar. - Smarter Placeholders: The "Empty snipsel" placeholder now intelligently hides itself if the snipsel contains attachments.
- Search & Autocomplete: Fixed a visibility issue with the autocomplete popup, ensuring it's always accessible regardless of container constraints.
🛠️ Technical Fixes
- AI Prompt History: Fixed horizontal scrolling issues in the AI history by implementing proper text wrapping.
- General Stability: Resolved several Svelte syntax errors and missing imports to ensure a smoother experience.
- Recycle Bin Cleanup: Standardized delete buttons for API keys and passkeys for a more consistent maintenance workflow.
v0.17.0
New Features
🔍 Interactive Tags & Mentions
You can now click on tags and mentions directly within a snipsel to trigger a global search. This makes navigating related content much faster and more intuitive.
✅ Task Visibility & Filtering
- Todo List Control: Added a new toggle to exclude tasks from specific collections in your global todo list.
- Reminder Smart Filter: When sorting tasks by reminder, the view now automatically filters to show only those with active reminders, reducing clutter.
- Archived Collections:
- Tasks from archived collections are now hidden in the main Tasks view.
- Archived collections now appear in the overview if they match an active search/filter.
UX & UI Improvements
✨ Visual Polish
- Task Dimming: Done and Cancelled tasks are now automatically dimmed using theme-aware colors, making active tasks stand out more clearly.
- Edge Precision: The clickable area to enter edit mode has been narrowed to the middle 50% of a snipsel. This prevents accidental triggers when you are trying to click edge icons like checkbox or drag handles.
📱 Behavioral Tweaks
- Swipe Protection: Swipe gestures in the
CollectionOutlinerare now disabled while editing a snipsel to prevent accidental navigation or deletion while typing.
Bug Fixes
- Search Display: Fixed an issue where the search query wouldn't display in the UI after clicking a tag or mention.
- Reference Errors: Resolved a
ReferenceErrorin theCollectionOutlinercaused by missing search store imports.
v0.16.0
Here are the release notes summarizing the changes since commit f6ab89c.
Highlights
⚡️ Enhanced Snipsel Editor
Implemented a new floating formatting toolbar for the snipsel editor. This glassmorphic toolbar provides quick access to common Markdown actions, significantly improving the editing experience on both desktop and mobile.
- New Actions: Support for Headings, Ordered Lists, Tables, and Code Blocks.
✅ Three-State Task System
Tasks now support three distinct states instead of a simple binary toggle, allowing for better workflow tracking:
- States: Open, Done, and Cancelled.
- Visuals: Updated icons and status labels (e.g., showing "Cancelled" in the timestamp) to reflect the new state.
- Backend: Migration and API updates to support the extended logic.
Full Changelog
🛠 UI & UX Improvements
- Collection Outliner: Refined the layout by aligning task checkboxes with text and reducing horizontal margins for a cleaner, more focused view.
- Accent Color Integration: The Unsplash search button and modal UI now benefit from the dynamic accent color system.
- Timestamp Labels: Improved clarity in
SnipselDetailby explicitly showing when a task was 'Cancelled'.
v0.15.0
Release Notes
This update introduces the new Collection Throwback feature, integrates Unsplash for beautiful collection headers, improves mention notifications, and refines the snipsel rendering engine for better whitespace handling.
🚀 New Features
🕒 Collection Throwback
We've added a powerful "Throwback" feature for Daily Collections!
- Historical Navigation: Easily jump to lists from the same day in previous or future years via a dedicated UI bar.
- Dynamic Styling: The throwback chips adapt to your collection's accent color.
- Chronological Sorting: Navigate through your history in a clear, ascending timeline.
🖼️ Unsplash Integration
Finding the perfect header for your collections is now easier than ever.
- Direct Search: Search the entire Unsplash library directly from the collection settings.
- Seamless Setup: Instant application of beautiful imagery to your collection headers.
🔔 Smart Notifications
Mention notifications are now much more helpful.
- Direct Linking: Clicking a mention notification now takes you directly to the recipient's daily list.
- Deep Anchoring: The app automatically scrolls to and highlights the specific snipsel where you were mentioned.
⌨️ Enhanced Toolbar
- Smart Insert: The "Insert Snipsel" button now supports both quick clicks and long-press logic for more flexible editing workflows.
💅 UI & UX Improvements
- Better Title Management: Collection titles in the main list are now elegantly truncated after 50 characters to maintain a clean layout.
v0.14.2
🚀 Performance & UI: Task View Optimization
- Optimized Task Searching: Refactored backend search logic to improve performance when filtering large datasets (especially "done" tasks). Replaced inefficient permission pre-fetching with direct query joins and implemented a 100-item result limit for snappier responses.
- Enhanced Filtering & Sorting: Added a real-time search bar to the Tasks view and new sorting capabilities by Modified Date, Name, and Reminder.
- Aesthetic Alignment: Updated the Tasks view UI to match the "Collections" view pattern, providing a more consistent and premium user experience.
v0.14.1
Release Notes
[Performance] Autocomplete & Search Optimization
- Backend Caching: Introduced
FileSystemCacheto share search results across multiple worker processes, ensuring snappy autocompletion even under load. - SQL Query Tuning: Refactored tag and mention aggregation to use efficient SQL joins instead of heavy materialization. This drastically reduces the initial load time for large datasets (e.g., 10,000+ items).
- Reduced Latency: Optimized the autocomplete flow for tags (
#) and mentions (@), moving from multi-second delays to near-instant results.
[Documentation] Updates
- README Enhancement: Updated project documentation to highlight modern features including:
- Real-time synchronization.
- Local-first offline architecture.
- Dynamic UI color system.
- Dependencies: Added
Flask-Cachingto backend requirements.
[Internal] Maintenance
- Added diagnostic logging to monitor SQL execution and cache hits in real-time.
- Standardized backend caching configuration for production environments.
0.14.0
Release Notes (Since cb90b40)
Summary
This release focuses on significant performance optimizations for larger datasets, a complete UI overhaul with dynamic accent colors, and improved reliability across synchronization and import processes. Key additions include cross-device AI prompt history, a "Full Offline Sync" mode, and enhanced sharing capabilities.
🚀 Performance & Scalability
- Database Optimizations: Added numerous composite indices (including geo, relationship, and snipsel-collection mapping) to reduce query latency.
- Efficient Aggregation: Refactored the tags and mentions view to use SQL subqueries and
EXISTSpatterns, replacing expensive Python-side filtering. - Smart Result Limiting: Implemented soft limits for collections (100), tags (100), and geo results (200) to ensure the UI remains responsive even with thousands of items.
- Query Refactoring: Optimized
INclauses by utilizing SQL subqueries instead of large Python lists, drastically improving backend performance.
✨ New Features & Enhancements
- AI Prompt Syncing: Your AI prompt history and custom snippets are now synced to the backend, ensuring your custom workflows are available across all your devices.
- Dynamic Accent Colors: The entire UI now supports dynamic accent colors. Hardcoded styles have been replaced with a flexible system that adapts across Settings, User Management, and global components.
- Full Offline Sync: Added a manual bulk-sync option in Settings that caches your entire library to IndexedDB for seamless offline access.
- Improved Sharing: A new "Share" button in the Collection Outliner allows you to quickly copy the content of multiple selected snipsels to your clipboard.
- Search Refinement: Optimized search constraints to require a minimum of 3 characters for full-text queries, providing immediate feedback for better results.
🛠️ Reliability & Fixes
- Concurrency Fixes: Resolved intermittent "database is locked" errors in SQLite by refining transaction handling in the backend.
- Import Robustness: Fixed a critical date-parsing bug in the Twos importer affecting Tuesday entries and improved error reporting for duplicate item references.
- UI Stability:
- Prevented layout breaks caused by extremely long continuous text strings.
- Restored standard cursor navigation with arrow keys within the snipsel editor.
- Fixed a bug where uploading an attachment wouldn't immediately trigger the visual "image card" update.
- Language Consistency: Reverted localized German UI elements back to English for a unified global experience.
v0.13.3
fix: optimistically update IDB with uploaded attachments to prevent UI lag
Since we decoupled 'loadItems()' from pulling the live background server state while 'syncQueue' mutations are ongoing, local file uploads failed to update the visual UI immediately. The 'api.attachments.upload' function was making an external XHR request to post the file but failing to write the resulting attachment payload back into the local IndexedDB. Consequently, the local UI would switch to 'image card' mode but find 0 attachments in IDB, rendering an empty card until a full page reload fetched the network state. Resolving the XHR call after explicitly injecting the new attachment into IndexedDB guarantees the UI properly renders the gallery card immediately upon completion.