* 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
* Extract bookmark view contexts
* Implement basic partial updates for bookmark list and tag cloud
* Refactor confirm button JS into web component
* Refactor bulk edit JS into web component
* Refactor tag autocomplete JS into web component
* Refactor bookmark page JS into web component
* Refactor global shortcuts JS into web component
* Update tests
* Add E2E test for partial updates
* Add partial updates for archived bookmarks
* Add partial updates for shared bookmarks
* Cleanup helpers
* Improve naming in bulk edit
* Refactor shared components into behaviors
* Refactor bulk edit components into behaviors
* Refactor bookmark list components into behaviors
* Update tests
* Combine all scripts into bundle
* Fix E2E CI
* Update default favicon provider
* Add domain placeholder for favicon providers
* Fix favicon loader to handle streaming response
* Handle different mime types for favicons
* Use 32px size by default
* Update documentation
* Skip mime-type test for now
* Manually configure image/x-icon mime type
* 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
* Added ability to set title and description #118
* Updated bookmarklet to pass site title #118
* Revert "Updated bookmarklet to pass site title #118"
This reverts commit 873d90130b.
* Added Apple web-app meta tag #358
* Added manifest file for web app
* Changed manifest to use template #358
* Small tweaks, add tests
---------
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
* 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
* base.scss: Prevent zoom-in on focusing inputs on small viewports
Adding a media query which sets the font-size for `.form-input` inputs
to 1rem. This aims to prevent the zoom-in on small viewports on iOS
devics which automatically zoom-in a website if the font-size in a
focused input is smaller than 16px.
* Update bookmarks/styles/base.scss
---------
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
* Disable autocapitalization for tag input form
* Disable autocapitalize in tag auto complete
* Fix test
---------
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
* add simple health endpoint
* add curl and healthcheck to dockerfile
* convert to view
* add simple test
* Add unhealthy test
* Cleanup
* check for LD_SERVER_PORT env var in healthcheck def
* Revert changes to middlewares.py
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
Limits the size of scraped HTML documents to prevent out of memory errors. The scraper will stop reading from the response when it encounters the closing head tag, or if the read content's size exceeds a max limit.
Fixes#345
The Wayback Machine Save API only allows a limited number of requests within a timespan. This introduces several changes to avoid rate limit errors:
- There will be max. 1 attempt to create a new snapshot
- If a new snapshot could not be created, then attempt to use the latest existing snapshot
- Bulk snapshot updates (bookmark import, load missing snapshots after login) will only attempt to load the latest snapshot instead of creating new ones
* Add links to remove tags from current query
* Display selected tags in tag cloud
* Add tag cloud tests
* Fix tag cloud in archive
* Add tests for bookmark views
* Expose parse query string
* Improve tag cloud tests
* Cleanup
* Fix rebase issues
* Ignore casing when removing tags from query
Co-authored-by: Jon Hauris <jonp@hauris.org>
* 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 apple-touch-icon reference in header
Recommend adding this reference to support an icon when adding a web app to an iOS homescreen.
* Add dedicated apple touch icon
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
* 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>
* Avoid stall on web scraping
This patch fixes stall on web scraping.
I encountered a stall (scraping never ends) when adding
a bookmark of some site.
To avoid this case, adding a timeout parameter at requests.get()
function is a solution.
Signed-off-by: Taku Izumi <admin@orz-style.com>
* Avoid character corruption of scraping some Japanese sites
This patch fixes character corruption of scraping some Japanese
sites. To avoid character corruption, I use r.content instead
of r.text in load_page function.
The reason of character corruption is encoding problem, I think.
r.text handles data as unicode encoded text, so if scraping
web site's charset is not unicode encoded, character corruption
occurs. r.content handles data as str[], we can avoid encoding
problem.
Signed-off-by: Taku Izumi <admin@orz-style.com>
* use charset_normalizer to determine response encoding
Co-authored-by: Taku Izumi <admin@orz-style.com>
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
* About section in settings
* Added about section in settings tab
* fix code style
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>
* changed query on tag search for speedup related to issues #112 and #141
* fix tests and only conditionally append tag filter
* add bookmark tags query tests
* reuse bookmark queries for tag queries
* fix tag query test setup
Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@googlemail.com>