- enh(Git): Mention profile label in commit message
- fix(ios/sharing-extension): Add compat for newer ios versions
- fix(GoogleDrive): includes is not a function
- fix(Update): Fix visual glitch
- [iOS] Attempt to fix inbound sharing
- [native] fix(Linkwarden): Remove dispatch of REQUEST_NETWORK_PERMISSIONS
- [native] fix(Linkwarden): Options were not showing
- fix: Don't break if browser doesn't implement permissions API
- fix(GoogleDrive): Try to delete superfluous files
- fix(NextcloudBookmarks): Run javascript feature detection earlier to avoid losing javascript bookmarks upon browser start
- fix(Html): Only escape unsafe characters in HTML
(aka v5.3.0.2)
- Add support for Linkwarden
- fix(GoogleDrive): Sort files by modified date
(aka v5.3.0.1)
- Add support for Linkwarden
- fix: Filter out "file:" URLs when syncing tabs on firefox
- fix: Log error from google API when retrieving access token
- [native] fix: Tree comparison on RELOAD_TREE_FROM_DISK was broken
- [native] fix: make builds reproducible again
- fix(Html): Encode unsafe characters as HTML entities
- chore: update capacitor/core
- fix(Update): Show floccus logo on update page
- fix: Refactor sync algorithm introducing location types (fixed 6 correctness bugs along the way)
- [native] feat: warn user if URL is already bookmarked
- [native] fix: small visual fixes
- [native] fix: Automatically reload from disk when resuming app
- [native] fix: replace cordova-inappbrowser with capacitor/browser
- [native] chore: Upgrade capacitor to v6
- feat(AccountCard): Link to github issues on error
- perf(GoogleDrive, WebDav): Don't loop through all lines when finding highest ID
- feat(Telemetry): Add report problem button to Telemetry page
- feat(AccountCard): Link to github issues on error
- fix(Cancel): Improve cancel UX
- fix(NextcloudBookmarks): Increase timeout
- fix(Git): Clean up used indexedDB instances
- fix(Controller logic): Catch all 'Receiving end does not exist' errors
- fix(Account): Don't compile logs for each error
- fix(Xbel): Don't attempt to parse numbers
- fix(GoogleDrive,WebDAV): Allow passing salt in file contents
- fix(GoogleDrive): Don't free lock if it wasn't locked
- fix(Cancel): Improve cancel UX
- fix(NextcloudBookmarks): Increase timeout
- chore(package.json): Add necessary NODE_OPTIONS to scripts
- chore(ios): Update ios assets
- fix(Account): Use exponential backoff instead of disabling profile after 10 errors
- [native] fix(font-size): set default font-size using cm
- fix(imports): Don't allow importing actions definitions from store/index
- [native] fix(Options): Avoid importing browser-only module
- fix(Folder#traverse)
- fix typo in README.md in git repos
- fix(Default#executeAction): fix ordering when doing bulkImport in Unidirectional strategy
- fix(NextcloudBookmarks): Make sure folder exists before appending children
- fix(AccountCard): mention if profile was disabled after error
- fix(OptionsGit): Branch option didn't propagate new value
- iOS: Fix sharing from apps other than Safari
- fix: make history permission optional and request on demand only
- feat: Allow custom labels for profiles
- feat: Allow counting clicks with Nextcloud Bookmarks
- feat: Add some UI interventions asking for donations
- feat: Opt-in automated error reporting using Sentry
- fix: Don't sync scheduled profiles if they're disabled
- fix: Don't show update notification if the user doesn't use floccus
- fix: Do not run two scanners at the same time
- fix: Improve build script to avoid faulty builds
- fix: Give browser more time to breathe to avoid freezing browser
- fix: Disable profile after 10 errors in a row
- [native] Don't reload tree in TREE_LOAD
- [native] fix tree loading mechanism that would cause issues with syncing
- [native] fix(Drawer): Add icon for git profiles
- fix: Improve locking logic
- fix(BrowserController): Don't spam setIcon warnings
- fix(Account): call onSyncFail if onSyncStart fails
- [native] fix: set largeHeap to true on android + fix git settings
- fix: Improve locking logic
- fix(NextcloudBookmarks#getExistingBookmarks): Don't use search-by-url for javascript links
- fix: Make Diff#inspect() output more readable
- fix: Limit concurrency for reorderings
- fix: Improve bulkImport performance by chunking
- fix: Unhandled error "Receiving end does not exist"
- fix(GoogleDrive): Catch 500 errors
- [native] fix: Reload tree on app resume
- fix(NextcloudBookmarks): Remove feature detection of 5yo features
- [native] fix(intent): Register intent activity properly
- feat(NextcloudBookmarks): Accept javascript: links
- fix(webpack): Don't set DEBUG to true in production
- fix(BrowserController#setStatusBadge): Don't throw when setting icon
- fix(Account#progressCallback): Don't error if syncProcess is not defined yet
- fix: Don't error in old Chrome versions if browser.permissions.contains fails
- fix: Wrap local tree fetch error
- fix(webpack): Split initial chunks to avoid AMO review complaining
- fix(SyncProcess): Do not serialize all trees each progress tick
- fix(SyncProcess): Call progressCb 2x less
- fix(Account): Extract and unify progressCallback
- fix(SyncProcess): Limit action execution concurrency to 12
- fix(Account): Properly declare DEBUG the typescript way
- fix(syncProcess): Properly count planned actions
- fix(Git): On init don't use force push
- fix(Git): Only bulldoze the repository if HEAD or branch cannot be found
- Add optional automatic error reporting to discover dormant bugs
- fix(Unidirectional): Scanner should use mappings if possible
- fix({html,xbel} parsers): Don't replace '0' by ''
- fix: Don't set lock after freeing it
- Fix(BrowserTree): Don't load full Tree on startup
- enh(ui): Add git adapter: You can now sync via git
- fix(GoogleDrive): Don't pollute console
- fix(BrowserController#getStatus): Show error icon if an account hasn't been synced in two days
- fix: Ignore errors from browser.permissions.contains
- fix: Ignore errors in REQUEST_NET_PERMS
- fix: Replace node.js' url with whatwg URL
- fix(browserslist): support and_chr >=60
- fix: Don't sync tabs if floccus' browser profile is not active
- fix(performance): Turn parallel processing back on Marcel Klehr 03.05.24, 19:30
- fix(Account#sync): Don't store continuation if the adapter is caching changes internally
- fix(tests/gdrive): Don't derive file name from seed
- chore: Allow fuzzed testing with interrupts on nextcloud-bookmarks
- enh(ci/tests); Use github sha as seed
- fix: Store continuation while sync is running to be able to resume after interrupts
- chore: Update donation methods Marcel Klehr 21.04.24, 20:57
- fix: Distinguish between InterruptedSyncError and CancelledSyncError
- [android] Include dependenciesInfo in gradle file
- [native] fix(Account): Don't try to load LocalTabs resource
- fix: Android app stuck on splash screen
- fix(Account#sync): Break lock after 2h
- bookmarks folder selection: Select sub folder in Vivaldi
- [chrome] fix(background sync): Apply hack to keep service worker alive
- fix(nextcloud login flow): Use standalone browser on iOS
- fix(manifest.firefox.json): Make sure host permission matches the one in the code
- [native] Fix hanging splash screen
- fix(Controller): Remember strategy when scheduling sync after lock error
- Complete translations for Japanese, Spanish and German
- fix(background sync): Move back to manifest v2 for firefox
- fix(Account#setData): re-init if localRoot is changed
- fix(Options): Fix v-switch input
- fix(Controller#scheduleSync): Allow syncing if account is disabled and scheduled
- Fix: Move waiting for lock out of adapters into controller
- fix(NextcloudBookmarks): Use CapacitorHttp to avoid cors errors in capacitor 5
- fix(native/START_LOGIN_FLOW): migrate to new capacitor http API
- [native] upgrade capacitor-oauth2
- [native] fix(GoogleDrive): CapacitorHttp no longer encodes x-form-urlencoded
- fix(Import): Request network permissions before import
- fix(GoogleDrive): Request network permissions before login
- [native] Remove capacitor community http Marcel Klehr 36 minutes ago
- [native] fix(DialogImportBookmarks): accept="text/html"
- [android] fix(webdav): Use new builtin CapacitorHttp
- fix(Unlock with credentials): Missing await 🙈
- fix(Profile import)
- fix(options): Auto-sync option was not saved
- fix(GoogleDrive): Fix permissions.contains syntax
- fix: Always cast to string before comparing item ids
- fix(HtmlSerializer): Try to fix ordering test
- fix(HtmlSerializer): Use Cheerio.text() for getting title
- Fix another XBEL parser bug
- Fix HTML parser
- Fixes XBEL parser
- Avoid syncing private tabs
- Add a 'Sync all' button
- Overhaul profile overview UI
- [browser] Migrate to Manifest v3
- [browser] remove unlock passphrase feature
- [native] Remove background mode because it was buggy
- Sync 3s after startup
- Upgrade to capacitor 5
- Upgrade to gradle 8
- "Accounts" are now called "Profiles"
- [native] Reset profile syncing state on app start
- [native] Allow turning auto-sync back on
- [native] fix(AddBookmarkIntent): Close intent after saving bookmark
- [ios] fix(sharing) Fix share target
- Allow setting sync interval to 5min
- Local folder option: Make more clear what each option does and the implications of that
- Store passphrase for google-drive encryption correctly
- NextcloudBookmarks: Do not write lock after onSyncCompleted
- Fix bookmarks change detection
- Fix BrowserController#onchange: Don't error out on deleted items
- fix(FileUnreadableError): Make error message more clear
- fix(downloadLogs): Add redacted/full to file name
- fix(messages): Make it more clear that people need to install Nextcloud Bookmarks to use it
- fix(BrowserController): Set unlocked to true by default
- fix(LocalTabs): Don't activate all tabs upon creating them
- fix(ImportExport): Trigger alert when import is done
- fix(OptionsWebdav): properly import OptionsPassphrase component
- fix(OptionsSyncFolder): show spinner while running getTree
- fix(HtmlSerializer): Make html output compatible with common browsers while maintaining backward compatibility
- Fix Scanner ignore logic for root folders
- Implement share extension for iOS
- [native] Allow sharing bookmarks to other apps
- [native] Implement bookmarks export
- [native] Allow exporting accounts
- [native] Download logs like in browser instead of sharing them as text
- OptionSyncInterval: Allow setting 5min
- Avoid generating diff for local absolute root folders
- fix(Default#executeAction): Prepapre subOrder Diff correctly
- Allow syncing bookmarks with file: protocol via WebDAV and GDrive
- Update dependencies
- Update cordova-plugin-background-mode to fix frequent crashes
- OptionSyncInterval: Allow setting 5minutes interval
- DialogEditBookmark: Don't allow submitting empty URL
- Unidirectional: ignore errors when mapping reorders
- [native] Display breadcrumbs when not in root folder
- [native] Implement bookmarks import
- NextcloudBookmarks: Improve error message when bookmark creation fails
- [native] Log in production
- [native] NewAccount: Show IMPORTEXPORT button
- [native] Remove pull-to-refresh for now as it's buggy
- [native] Home#checkForIntent: Fix share routine
- Don't cast item IDs to boolean inside if statements
- NextcloudBookmarks: Report all statuses > 400 as HttpError
- [native] Options & NewAccount: Allow setting sync interval on android
- AccountCard: Display last sync time on error
- TEST_WEBDAV_SERVER: Improve error message
- Fix selecting HTML at setup (#1247)
- Fix Google Drive on native (#1246)
- WebDav: Allow syncing via HTML file
- Tab Sync: Name folders by window number
- NewAccount: Add back buttons
- Options{GoogleDrive, WebDAV}: Allow removing passphrase
- Fixed Google Drive integration on iOS
- Fix Sync with caching-enabled WebDAV servers
- [native] Use themed background for body
- Fix Nextcloud login flow for 2FA
- [android] Fix share intent for unreachable URLs
- Performance improvements
- Improve speed for Nextcloud Bookmarks
- SyncProcesses: Remove superfluous awaits that would stall the whole app
- a11y: improve syncing icon in browser
- ios: Hide status bar
- Fix InAppBrowser usage to comply with Apple policies
- getFavicon: Load /favicon.ico as a fallback
- UX: Remove min-width on #app
- Replace merge icon to avoid confusion with sync icon (#1198)
- OptionSyncStrategy: Improve wording
- Options: Do not show strategy if isBrowser
- [native] Fix Alphabetical sorting
- [Native] AddBookmarkIntent: Autodetect page title
- NewAccount: Allow setting enabled account config
- NewAccount: Allow setting XBEL passphrase for GoogleDrive and WebDAV
- Fix order corruption of localRoot folder
- Tabs: Fix syncing multiple windows
- NewAccount: Warn user when using server without https
- Improve UI so there's space for translations
- NewAccount: Remove stepper headings so the whole stepper fits
- Failsafe: added Math.ceil to only allow integers
- New translations for Polish, French and Chinese
- New stepwise account setup flow
- NewAccount: Trigger sync after completion
- Improve progress bar behavior
- Allow more than one separator per Folder on Nc Bookmarks
- [Native] Allow sorting bookmarks
- [Native] Background sync while on wifi
- [Native] Fix splash screen aspect ratio
- [Native] Make app-bar absolute instead of hide on scroll
- Improve wording around sync strategies
- BrowserController: Don't get stuck in sync loop
- GoogleDrive: Add cancel method
- Fix transifex integration
- UI: Do not show passwords in new options session
- Inactivity timeout := 7s
- [Native] Add allowNetwork to default settings
- Fix Tab sync order on firefox
- [Native] Implement about page
- UI: Re-add accidentally removed actions
- [native] Implement pull-to-refresh
- [native] Implement ImportExport (without export for now)
- Detect machine suspend during sync and cancel
- Performance: Do not query root bookmarks folder excessively
- [Android] Fix app label
- [Android] Fix Nextcloud Login flow
- Locking: Adjust LOCK_INTERVAL
- Locking: Fix wrong usage of {set,clear}Timeout
- Fix lock-file being locked in GoogleDrive and WebDAV
- Fix "failed to map parentId" in Unidirectional strategy
- Unidirectional: Fix typo
- Unidirectional: Fix progress bar
- Adjust lock override strategy
- [Native] Schedule sync automatically after local edits
- [native] Implement Update screen
- Implement support for separators
- More beautiful status indicators
- Sync chrome:// URLs (but not on Firefox and not with Nextcloud bookmarks)
- Implement timed locks for GoogleDrive and WebDAV to reduce waiting time
- Reduce inactivity timeout to 20s
- [Native] Fix broken favicons
- [Native] speed-up tree navigation
- [native] Performance improvements
- [native] UX: Allow pressing BACK when adding/editing items
- UX: Improve progress bar feedback during syncing
- UX: Improve wording around sync strategies
- Performance: Avoid loading all of lodash
- Google Drive: Force upload when new account or new encryption
- Do not delete duplicate bookmarks anymore
- Tab sync: Do not remove duplicated tabs on sync and sync tab order
- Fix Unidirectional sync
- Unidirectional: Fix ordering
- LocalTabs: Implement set order
- Improve order reconciliation
- Keep local sort order of ignored items
- GoogleDrive: Fix locking
- WebDAV: Don't lock if using slave strategy
- [Android] Implement allowNetwork option
- Tab sync: Sync tabs with names
- Overview: Sort disabled accounts last
- WebDAV: Reduce lock timeout to 15min
- GoogleDrive: Reduce lock timeout to 15min
- Fix UX: Have two "download logs" buttons instead of "anonymous" checkbox
- Fix tab sync
- Logger: Fix log redaction
- OptionsGoogleDrive: Don't show passphrase by default
- Do not reset cache after interrupted sync
- Do not reset cache after network error
- Test and fix complex move-remove interactions
- Update deps and install dark mode fix for android
- [Native] DialogEdit{Folder,Bookmark}: Use current folder
- [Android] Fix WebDAV and FaviconImage
- Allow producing anonymized logs
- [Android] Allow moving items and choosing parent upon creation
- [Android] Allow Logs download
- [Android] SendIntent: Allow receiving title + fix cold start intent
- Get rid of capacitor-community/http (Fixes many unforeseen sync problems both on Android and Desktop)
- [Android] Clean up boilerplate clutter and update deps
- Styles: Add more spacing between option entries
- Fix load languages with hyphens (Thanks to @binsee)
- [Android] Implement Google Auth
- [Browser] Fix i18n for displaying error messages
- OptionResetCache: Fix description l10n id
- NextcloudBookmarks: Fix getLabel to avoid 'n@d@d' labels
- UI: Validate URLs to be http(s)
- [Android] UI: Polish active syncing state
- [Android] Implement Nextcloud Login flow
- [Android] Don't display irrelevant options
- GoogleDrive: Harden OAuth using CSRF and PKCE Marcel Klehr Yesterday 13:13
- Allow making passwords visible
- build.gradle: Fix version
- NewAccount: Link to importexport view for better discovery (only in browser)
- [Android] Allow self-signed certificates added to the Android user cert store
- [Native] Add FundDevelopment link target
- [Native] Fix exit on back button
- Account: Fix cancelSync
- AccountCard: Remove indeterminate loading bar animation
- Implement sync cancellation properly
- [Android app] Enable webdav
- Browser: Display badge when all accounts are disabled
- Don't poll sync status
- Fix $store.secured: Take into account empty strings passphrases
- SetKey: Don't allow setting empty passphrase
- Allow unlocking by pressing enter after passphrase
- Build: Update browser targets
- NextcloudBookmarks: Don't wait for lock forever in case of unexpected status codes
- WebDAV: Catch redirect errors by default and add allowRedirects option
- Fix Error class inheritance
- WebDAV: Properly throw FileUnreadableError
- [Android app] Update gradle
- Update dependencies and fix security issues
- Upgrade webpack
- Update typescript compiler
- Fix Account#init: Don't override sync tabs setting
- NextcloudBookmarks: Fix acquireLock: Error on 404
- Fix i18n
- AccountCard: Fix spinner direction
- Mesages: Note which bookmark types are supported
- Update clientcert option description
- NextcloudBookmarks: Catch auth errors on locking mechanism
- Messages: Clarify wording of nested accounts setting
- Messages: Add note about root folder problems
- Sync: Recover from root folder CREATE actions
- Try to handle Mobile bookmarks folder
- [Android] i18n
- [Android] Fix tree loading
- [Android] Fix account deletion UX
- [Android] Override back button
- GoogleDrive: Save & display google username after login
- Unidirectional: Do not apply failsafe when overriding server
- Don't remove items added during a sync run
- NextcloudBookmarks: Implement locking
- NextcloudBookmarks: Only query all bookmarks if necessary
- NextcloudBookmarks: fix BulkImport
- LocalTabs#create: Don't load all tabs at once, set new ones as discarded
- Fix isInitialized for tab sync accounts
- Sync root folder by default
- NextcloudFolders: Add option to allow redirects
- New settings UI
- New error: Trying to read encrypted file without passphrase
- UX: Make AccountCard expandable and hide all non-essential stuff
- UI: Add donate page with link to it in overview
- UI: Support system dark theme
- UI: Reduce scrollbar size
- UX: Polish folder picker
- Various syncing correctness fixes
- Rename NextcloudFolders to NextcloudBookmarks
- Fix cancel sync: Cancel sync by reloading background page
- OptionSyncInterval: Don't allow choosing 0
- OptionDeleteAccount: Ask for confirmation fist
- Fix tab sync: tab and window IDs are integers
- Controller: Reset cache after interrupted sync
- Only remove duplicates for Nextcloud
- Sync: Invalidate cache after sync error
- Performance: Always createIndex when cloning in Scanner
- Fix UnidirectionalMerge: Allow reorders
- Controller: Fix sync interval on first run
- Fix debug logs in Firefox
- Speedup loading new folders in NextcloudFolders
- ImportExport: Select all accounts by default
A few fixes to improve syncing accuracy:
- Unidirectional: Don't map UPDATEs to old IDs, but to newly reinserted IDs
- Scanner: Don't generate UPDATEs for items that have been MOVEd
- DefaultSyncStrategy: Fix UPDATE vs REMOVE condition
Broken release.
- One-time strategy change: Don't get stuck on the wrong sync strategy
- UX: Highlight default strategy in AccountCards
UX: NextcloudFolders: Detect HTTP redirects Improve import/export UX messages: Fix sync{Down,Up} wording Reimplement Unidirectional strategy WebDAV: Accept non-encrypted file in encryption mode GoogleDrive: Accept non-encrypted file in encryption mode
- Sync via Google Drive
- Optionally encrypt your sync file
- Allow sending client certificates
- Fix Crypto module
- Implement failsafe to prevent data loss
- WebDAV: Clear cache on 404
- UI: Improve options UX by opening folder settings by default as well
- Sync: Fix "Cannot find folder to move into"
- Diff#findChain: Prevent infinite recursions
- Fix Logger
- executeReorderings: Don't fail sync process if REORDER fails
- executeReorderings: Make sure items are unique
- Sync: Fix concurrentSourceTargetRemoval case
- Sync: Filter out undefined order items
- Logger#persist: Only save last sync run
- Update chrome screenshots
- Controller: Fix link to update page
- l10n: Translate extension description
- Fix SyncFolder Option
- NextcloudFolders: Don't throw when failing to delete a folder or bookmark
- Sync: A lot of fixes for deletions mixed with moves
- LocalTree: Don't throw when trying to remove a non-existent item
- Fix log rotation
- Fix Scanner#addReorders in case a MOVE's old parent was removed
- Sync: Don't execute REORDERs when length <= 1
- Non-merge Sync: Only compare with cache hash, not directly in order to merge concurrent on par changes
- UI: NewAccount: Remove nextcloud legacy option
- NextcloudFolders: Fix sparse trees
- NextcloudFolders#updateBookmark: preserve intention when moving bookmarks
- Scanner: Clone with Hash
- Sync: Move canMergeWith detection to Scanner mergeable
- Sync: Fix race conditions
- Sync: Simplify scanner
- Sync: Avoid artificial Cycles in Toposort
- Sync: Avoid duplicate REORDERs
- Sync: Filter out REORDERs that are invlidated from hierarchy reversal remediation
- Sync: Avoid duplicates in concurrent hierarchy reversal detection
- Sync: Extend detection for concurrent hierarchy reversals
- Fix reconcileReorders
- Fix Scanner: Account for reorders at the end
- NextcloudFolders: Remove webdav locking
- Fix: Ignore changes to browser root folder
- Fix mapping in SlaveMerge strategy
- Fix: Ignore changes to browser root folder
- Fix lock timeout to 0.5h
- Detect moves of bookmarks even when ID changed
- Fix unidirectional sync strategies when no cache is available
- NextcloudFolders: Fix _getChildren for old APIs
- Fix Merge strategy
- NextcloudFolders: Performance improvements
- Add 403 to auth fail message
- Update some unclear wording in i18n strings
- Fix "sync up" and "sync down" buttons
- Reset cache on update to fix issues from v4.4.0
- Fix sync cache
- Fix: Don't touch root folders
- Fix NexcloudFolders: Use lock for getBookmarkslist
- New Sync algorithm
- Implement option to sync tabs
- Fixed problems with old sync algorithm
- Display loading indicator for accounts overview
- Don't fail loading account if folder doesn't exist anymore
- Fix server URL validation
- Drop support for legacy nextcloud bookmarks sync method. (Please see README for ways to migrate)
- New Sync algorithm
- Fixed problems with old sync algorithm
- Display loading indicator for accounts overview
- Don't fail loading account if folder doesn't exist anymore
- Implement import/export of accounts
- UI: Account card button alignment fix
- Fix OrderTracker bug (#598)
- Add option for nested accounts
- Revert "Allow syncing the same folder with multiple accounts"
- Try to fix unmapped children error
- Sync algorithm: XOR createdUpstream with existingChildren
- Update dependencies
- NextcloudFolders: Improve error message on non-200 response
- Update screenshots
- SyncProcess: Fix concurrency for merging
- NestedSync: Fix WebDAV and NextcloudLegacy
- WebDAV: Give up faster when lock doesn't unlock
- Permissions: We may need unlimited storage
WebDAV adapter: Fix bookmarks_file option
Refactor options event handling to fix options UX
87ec04ed3f92706749599502ef8fd0439cb710fe Options: Fix folder picker a9beccedffc8d585201691a16298192fc5e98884 Fix Nextcloudlogin d84e0e1ee5288769db9c7f220b1db72bd16b5d6a Do not auto-enable accounts on udpate
4fa192b5b06f547ea07653a3cae28d8bc2aec396 Improve styling of ADD ACCOUNT button a759c439483c9eab8781fede148478abc14f11eb Controller: Only display update screen for non-patch updates
6c1b6f5200ba4c6a25585313ab847755d24d368e Sync: Fix undefined id in folder ordering 53daaebbcd37a372a79bf9795db899899e8aec4c Fixes #557: Save options on account creation
7b737d29951ec0707af1d249398cb39fe27dc8af OrderTracker: Throw error when invariants are violated
- Fix "Cannot add new accounts"
- Fix disabling accounts
28573b69f81b704df2b83e25bf37f2863546ffe7 Implement nextcloud flow login 316b69cd36e78471c148e5e973090e5a5abafbd8 Add an update screen Lots of new translations
4bf16e25d4e0b6f5386adb56614eb245599ec5e0 Fix for separator lines with webdav 5655e81753c13d9b94b8f6c08bdc1c74949eb569 NextcloudFolders fix non-getChildren algorithm
a658fd02f67335b3c73b3b69e6a3bd7ac456f365 New UI using Vue.js 85c9caeb9714dc1dfdc5f8164949b9c3346c5b55 Allow syncing the same folder with multiple accounts 92bc583877359b65153a19c2c55f56ff41f99802 Don't sync immediately on startup b7eee8e14534838f875350897576abe01a839b02 Offline Performance: Only poll status every 10s -- real updates will be on demand 454b8066ffe096c4cb264683adaf09d5c2ad7d17 NextcloudFolders: getSparseBookmarksTree: Don't load too many layers initially 2758f17fe74d8bb6603a6e674dc31d8e37ec271a Messages: Clarify DescriptionLocalfolder 956a2b6d22a5023110d5fce4063064c4a54597b9 Improve progress bar update during loadChildren
- FIX AccountStorage: Use JSON
- FIX Sync: Fix null pointer
- FIX Sync: Handle creations inside deletions gracefully
- NEW: NextcloudFolders: Speedup
- FIX: account migration code
- FIX: Add support for permanent private mode in firefox
- FIX: Remove a possible performance restriction
- FIX root folder synchronization
- FIX storage access error
- FIX: Stop sync if user is making changes
- FIX: NetxcloudFolders: Refactor sparse tree loading
- FIX: Performance optimizations
- NEW: Deprecate NextcloudLegacy adapter
- NEW: Build process: Switch to webpack
- NEW: Migrate account data from extension storage to indexedDB for faster access
- NEW: Refactor sync algorithm
- FIX: Stop sync if user is making changes
- FIX: Speed up sparse tree loading
- FIX: Refactor sparse tree loading
- FIX: Performance optimization: Only retry sparse trees if server allows hashing
- FIX: Simplify getBookmarksList
- FIX: NextcloudFolders: Increase timeout to 3min
- FIX: webdav lock acquisition mechanism
- FIX: Strategies: Refactor syncTree + always abort on cancel
- FIX: Controller: Disable account on cancelSync to avoid auto-restart
- FIX: UI: Input fields were broken
- NEW: UX: Improve "new account" flow
- NEW: UX: Make it more clear which adapter is being used in options
- NEW: Improve funding UX
- FIX: Logger: Add timestamps
- Roll back v3.4.1 due to UI issues
- NEW: Overhaul build process
- NEW: UX: Improve "new account" flow
- NEW: UX: Make it more clear which adapter is being used in options
- FIX: Logger: Add timestamps
- FIX: Translate sync duration
- NEW: Automated testing in firefox (#353)
- NEW: Add emojis to various options
- NEW: Implement cancel sync button
- NEW: Sync strategies (default/merging, slave / override browser, master / override server)
- NEW: Bulk upload for faster syncing
- FIX Account: Set rootPath on init
- FIX: Unlock enter press
- FIX: Use whatwg URL normalization
- FIX: Don't load all parts of the sparse tree in parallel
- FIX: Don't load all parts of the sparse tree in parallel
- FIX: Update conservative-normalize-url
- FIX: UI: Split path correctly to display full folder name
- FIX: NextcloudFolders: Fix Updating a bookmark that has no parent folders
- NEW: Translations
- NEW: Sparse tree syncing using hash trees
- NEW: Add option to set sync interval
- NEW: Caching adapter: Add acceptor method
- NEW: UI: Polish footer + add logo + Improve mobile support
- FIX: Don't schedule sync jobs while syncing
- FIX: URL normalizer would break some URLs with fragments
- FIX: Unlock input field
- FIX: Unlock input field
- FIX: Sync: Clear status update interval on error
- FIX: Fix form inputs
- NEW: Progress bar
- NEW: Add LoFloccus companion app (thanks to @TCB13)
- FIX: UI: Add a link to open options in new tab
- FIX: Added default font color as black to avoid issues with dark browser themes
- FIX: Tree: URL normalization: Add more strange protocols to the blacklist
- FIX: Various crucial fixes for edge cases of the sync algorithm
- FIX: Improve normalization algorithm
- FIX: Clean up duplicates caused by switching to a different normalization algorithm
- Fix: XBEL parser didn't retain ordering
- FIX: Request bookmarks in smaller chunks to avoid causing a timeout
- FIX: Fix orderPreservation algorithm
- FIX: SyncProcess: Increase performance of initial filtering
- FIX: Options UI: Rename "reset cache" option
- FIX: Fix order preservation on WebDAV
- FIX: Sync on startup if necessary
- FIX: Fix "Failed to construct 'URL'" Error
- FIX: Solve some UX issues regarding disabled accounts
- FIX: Clean up duplicates caused by switching normalization algorithm
- FIX: Use a different URL normalization library
- FIX: Correctly pass through sync effects to folder traversal logic
- FIX: Don't normalize the URLs of separators and js bookmarks to avoid deduplicating them
- FIX: Make mappings thread safe to avoid race conditions in parallel mode
- FIX: Ensure all folders are traversed when cache is empty
- FIX: Log error message to debug log on sync fail
- NEW: Add description for sync methods in UI
- FIX: Issues with syncing to nextcloud on Postgres
- FIX: Normalize webdav server URL
- FIX: Folder ordering would cause issues in some situations
- NEW: Overhaul UI
- NEW: Allow sync speedup by syncing in parallel
- FIX: Update dependencies to mitigate some minor security issues
- FIX: Speed up folder order fetching if the server supports it
- FIX a bug involving the deletion of local bookmarks
- FIX: Automatically local-only deduplicate bookmarks within local folders
- FIX: Unicode characters in passwords would cause errors
- FIX: nextcloud-folders tree construction was still broken
- FIX: Index creation was broken
- FIX: Removing folders on the server would fail
- FIX: Initial tree construction would mess up IDs of server bookmarks in nextcloud-folders adapter
- FIX: Deduplication wouldn't work reliably
- FIX NextcloudFolders adapter: Duplicates in different folders on the server would cause trouble
- FIX: Deduplication wouldn't work in all cases as URLs weren't normalized
- Roll back parallelization to mitigate issues that came up
- Various performance improvements
- FIX: Leave alone unaccepted bookmarks (e.g. bookmarklets and RSS bookmarks)
- Fix syncing moved folders
- Various UX improvements
- FIX: Fix WebDAV adapter
- FIX: Various XML parse and serialization issues have been fixed
- FIX: Properly decode titles in .xbel file
- FIX: Don't write account password to debug log
- FIX: Properly decode titles in .xbel file
- FIX: Root folder normalization in chrome wasn't working
- FIX: Securing accounts was broken
- NC bookmarks adapter: Discern folders and bookmarks when building initial tree
- WebDAV adapter: Don't continue with empty tree after error in onSyncStart
- nothing changed
- NEW: Rewritten sync algorithm allowing faster syncing and better extensibility with adapters
- NEW: Bookmarks app adapter can now handle duplicate URLs in different folders
- NEW: WebDAV adpater
- NEW: Refactored UI code and cleaner interface design
- NEW: 1-click Debug logs 🎉
- NEW: Bookmarks app adapter doesn't automatically tag untagged upstream bookmarks anymore
- NEW: Streamlined "sync everything" use case
- NEW: More explanations in the UI for people who don't read the manual
- FIX: Various UX improvements
- FIX: Adjust usage of fetch API to specification update
- FIX: recover account after error
- FIX: Pick up sync again after error
- FIX: Prevent parallel sync race condition
- FIX: Account cache was broken
- FIX: options wouldn't store values
- FIX: Debounce sync task to avoid peculiar failures
- FIX: Overtake canonical URLs from server
- FIX: Add default value for server path setting
- NEW: Map local sync folder to a specific server-side folder
- FIX: Performance improvements for Firefox
- FIX: Race condition removed that would cause issues because same account would be synced twice in parallel
- NEW: Allow using an extension key to secure entered credentials
- FIX: Various fixes for Firefox
- FIX: Correctly escape paths in tags
- FIX: Wait a certain time before starting sync when detecting changes
- FIX: first run routine was called on every startup
- FIX: Display sync folder path
- FIX: getAllAccounts didn't have a fallback for the initial loading of the extension
- FIX: Display error messages of multiple errors
- FIX: Add resource locking to fix race conditions and allow more concurrency (should fix remaining issues related to creation of duplicates)
- FIX: Refactor to only read from tree once
- FIX: Add write lock for account storage
- FIX: Refactor sync process to avoid creating duplicates
- FIX: mkdirpPath: Fix break condition
- FIX: Speed up initial tag population
- FIX: Use more stable parallel execution helper tool
- FIX: Don't remove folders beyond the sync folder when the last bookmark is remove
- FIX: Declare incompatibility with Fx < v57
- FIX: Improve error reporting
- NEW: Sync folder hierarchy
- NEW: Allow custom folders to be chosen for syncing
- NEW: Allow nesting synced folders
- NEW: Remember last sync time per account
- NEW: Overhauled user interface
- NEW: Identify local duplicates and throw an error
- FIX: Address performance problems
- FIX: Allow deleting account when syncing
- FIX: Ignore bookmarks with unsupported protocols
- FIX: Sync more often (every 15min instead of 25min)
- FIX: Call removeFromMappings on LOCALDELETE
- FIX: Improve logging and error messages
- FIX: Stop tracking bookmarks when they're moved outside the account scope
- Fix normalizeURL: The relevant commit somehow didn't make it into the release builds
- Fix normalizeUrl: Automatically add trailing slash
- Remove automated options validation (much better to just try force sync and see the error)
- Fix options rendering
- Fix bookmarks not showing up on the server in some situations
- Options panel: Fix automated connectivity check
- Major Refactoring by modularizing code base
- UI polishing
- Add 'force sync' feature
- Add account status indicator
- Fix nc url normalization
- Trigger sync on local changes
- Fix floccus fodler naming
- Switched to the new nc-bookmarks v2 API
- Increased sync interval, to reduce cpu load
- Recover if root bookmarks folder is gone