* add bundle model and query logic
* cleanup tests
* add basic form
* add success message
* Add form tests
* Add bundle list view
* fix edit view
* Add remove button
* Add basic preview logic
* Make pagination use absolute URLs
* Hide bookmark edits when rendering preview
* Render bookmark list in preview
* Reorder bundles
* Show bundles in bookmark view
* Make bookmark search respect selected bundle
* UI tweaks
* Fix bookmark scope
* Improve bundle preview
* Skip preview if form is submitted
* Show correct preview after invalid form submission
* Add option to hide bundles
* Merge new migrations
* Add tests for bundle menu
* Improve check for preview being removed
* Add url create/edit query paramter to clear cache
* Add refresh bookmark metadata button in create/edit bookmark page
* Fix refresh bookmark metadata when editing existing bookmark
* Add bulk refresh metadata functionality
* Fix test cases for bulk view dropdown selection list
* Allow bulk metadata refresh when background tasks are disabled
* Move load preview image call on refresh metadata
* Update bookmark modified time on metadata refresh
* Rename function to align with convention
* Add tests for refresh task
* Add tests for bookmarks service refresh metadata
* Add tests for bookmarks api disable cache on check
* Remove bulk refresh metadata when background tasks disabled
* Refactor refresh metadata task
* Remove unnecessary call
* Fix testing mock name
* Abstract clearing metadata cache
* Add test to check if load page is called twice when cache disabled
* Remove refresh button for new bookmarks
* Remove strict disable cache is true check
* Refactor refresh metadata form logic into its own function
* move button and highlight changes
* polish and update tests
---------
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
* Extract asset logic
* Allow disabling HTML snapshot when creating bookmark
* Add endpoint for uploading singlefile snapshots
* Add URL parameter to disable HTML snapshots
* Allow using asset list in base Docker image
* Expose app version through profile
* add migration for merging fields
* remove usage of website title and description
* keep empty website title and description in API for compatibility
* restore scraping in API and add option for disabling it
* document API scraping behavior
* remove deprecated fields from API docs
* improve form layout
* cleanup migration
* cleanup website loader
* update tests
* Add indicator for modified filters
* Rename shared filter values
* Add update search preferences handler
* Separate search and preferences forms
* Properly initialize bookmark search from get or post
* Add tests for applying search preferences
* Implement saving search preferences
* Remove bookmark search query alias
* Use search preferences as default
* Only show save button for authenticated users
* Only show modified indicator if preferences are modified
* Fix overriding search preferences
* Add missing migration
* Add shared filter to bookmark search model
* Add shared filter UI
* Implement shared filter
* Add API test
* Use radio buttons
* Rename shared parameter
* Improve radio button CSS
* Rename BookmarkFilters to BookmarkSearch
* Refactor queries to accept BookmarkSearch
* Sort query by data added and title
* Ensure pagination respects search parameters
* Ensure tag cloud respects search parameters
* Ensure user select respects search parameters
* Ensure return url respects search options
* Fix passing search options to user select
* Fix BookmarkSearch initialization
* Extract common search form logic
* Ensure partial update respects search options
* Add sort UI
* Use custom ICU collation when sorting with SQLite
* Support sort in API
* Make shared view public, add user profile fallback
* Allow unauthenticated access to shared bookmarks API
* Link shared bookmarks in unauthenticated layout
* Add public sharing setting
* Only show shared bookmarks link if there are publicly shared bookmarks
* Disable public sharing if sharing is disabled
* Show specific helper text when public sharing is enabled
* Fix tests
* Add more tests
* Improve setting description
* Add basic bookmark notes
* Add bookmark list JS to shared bookmarks page
* Allow testing through ngrok
* Improve CSS
* Set notes through API
* Improve notes editing
* Improve notes icon
* Remove transitions for now
* Update keyboard shortcut
* Add bookmark list tests
* Add setting for showing notes permanently
* Add test for toggling notes
* Update API docs
* Allow searching for notes content
* Skip test
* Allow marking bookmarks as shared
* Add basic share view
* Ensure tag names in tag cloud are unique
* Filter shared bookmarks by user
* Add link for filtering by user
* Prevent n+1 queries when rendering bookmark list
* Prevent empty query params in return URL
* Fix user select template tag name
* Create shared bookmarks through API
* List shared bookmarks through API
* Show bookmark suggestions for shared view
* Show unique tags in search suggestions
* Sort user options
* Add bookmark sharing feature flag
* Add test for share setting default
* Simplify settings view
* Add POST archived API endpoint
* Update API docs
* Expose is_archived in existing POST endpoint
* Add test to verify bookmark not archived by default
* Fix JSON payload in API docs
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>