peterhil / spellbook Goto Github PK
View Code? Open in Web Editor NEWSpellbook is a WebExtension to easily add new bookmarks to correct categories
License: Mozilla Public License 2.0
Spellbook is a WebExtension to easily add new bookmarks to correct categories
License: Mozilla Public License 2.0
Investigate using Rambda
Validate the popup for empty category on submit.
Currently the popup just closes now without saving the bookmark.
Thanks again for this extension. If it wasn't so useful I wouldn't be bothering you with two ideas to expand upon its functionality! This is much more specific as I don't know if the bookmark tags in Firefox are widely used, and Chrome doesn't have this feature at all. But I am assuming users of your extension will be very keen bookmark users and more likely to use it than most.
It'd be nice to be able to set bookmark tags. I am currently doing this by just clicking the blue star in the address bar which is perfectly adequate, but I think this would be an appropriate addition and streamline workflow for those of us who do use tags.
Use store for all bookmarks
Questions:
Notes:
Tasks:
I want to add support for Firefox using test driven development.
That will also help me writing good quality browser (integration/functional) and unit tests for Chrome, which do not still exist.
– Sinon-chrome could be used for mocking and spying the browser APIs
– Puppeteer is a good candidate for implementing live browser testing.
The Browser APIs should be abstracted by functional strategy pattern and code from other parts of the extension than platform/
should not call different browser APIs directly.
Use Dragula for drag and drop.
Enable browsing existing bookmarks from the popup without adding a new bookmark
For updating the child categories, see on:categorySelection={updateChildren}
on ChildCategories.
Version 0.4.0 will have options page, and some useful cleanup and privacy features in there.
Cancel promises with something like AbortController for fetch.
Bluebird offers cancellable promises and there are other options.
For custom implementation the structure of Promise cancellation could be something like delayedExecution even though this handles callback execution.
There are a lot of bugs on Firefox related to this:
After investigating this, I think the problem is that the dropdown should be hidden with JS after a selection is made, and remove the styles that keep the dropdown open on hover.
show more
and show less
buttons. It uses Flex styling and some CSS utility classes like desktop and inTab.Optimise asynchronous requests to browser APIs to improve responsiveness
Use different styles sheets for directory and popup, but also import common styles into them.
Following components have styles in them – check them:
Try out WebExtensions polyfill by Mozilla or Web-Extension Polyfill for TypeScript
if using Typescript already.
It's also possible to use Promises effectively using two-way messaging. Communication between a background page and a tab content script, for example, looks something like this from the background page side:
browser.tabs.sendMessage(tabId, "get-ids").then(results => {
processResults(results);
});
Currently there are translations for English and Finnish. High quality and maintained translation contributions are welcome for other languages.
This commit on v0.3.2 shows what is needed to make a new translation.
– Write a new file _locales/en_GB/messages.json
under subdirectory with en_GB
replaced by the correct locale code
– Add copying of the new file to rollup.config.js
In the future, using wet-layer and web-ext-translator might be an option.
Currently the current tab information is unneccessarily followed on the background page. Change this to only query the active tabs when the popup is opened.
This will also enable bookmarking multiple tabs at once, when the slider UI element for multiple bookmarks is implemented.
Show when a bookmark is already saved for the current URL.
Tasks:
Websites that change the window title on notifications cause the popup to show information for the page that was last changed – even if it is not the active one.
The bug is caused by currentTab stream not properly filtering these changes out. Or in other words, it should only emit events on user generated changes.
The solution is to make sure that only user generated changes to title or url pass the filtering on currentTab stream.
(Sorry for Bad english) When clicking on the Button right to the CategoryField it should open the DropDownMenu longer, where we can see all the Folders, because now i can not see all my Folders.
There are Solutions to this how to do it:
-On clicking to the Button a new windows opens instead the Dropdown menu.
-Make the Dropdown menu longer that we can see the subfolders too
Maybe I can help you when i have instelled the Development Tools.
Chrome bookmarks uses Javascript to make resizing the left pane easy.
Implement similar functionality.
Enable modifying and organising existing bookmarks from the popup.
Keyboard shortcuts for select all, cut, copy paste and so on.
Thanks for your work on this so far.
It'd be really useful for me to be able to trigger your extension to add a bookmark using a right-click on a given link without having to visit the page, as is possible with the regular bookmark function in Firefox. This seems like a scenario not unique to me and I hope it's ok that I suggest this as a feature to add.
Dropdown visibility logic is currently very cumbersome. It would greatly benefit from using Svelte store for state management.
You might have many categories which have the same name, for eaxmple "Tutorials" for different programming languages.
To make things easier to find, sort the results first by the category name and then by the parent category name.
Edit:
Now the sorting actually works in tree order (the order the bookmarks are in) – and this could be made alphabetic.
The above sorting could be an option in the UI or preferences.
This allows flexible UI for:
Tasks:
Try out Vite and/or Snowpack (unmaintained)
Tried out:
Ended up coming back to Rollup, because it allows precise control on how the packaging and code splitting works.
Vite seemed promising, but it is too much intended for web sites. On the plus side it handles Typescript out of the box.
I gave up on ESbuild, because the plugin scene seemed unmaintained.
Installed 0.3.7, first time trying spellbook. Folder search is awesome :)
Often (but I can not reproduce 100% of the time) the wrong URL is present on screen in the add bookmark widget (e.g. about:blank instead of the address in the address bar), sometimes the wrong title is present too (and wrong URL).
The wrong title is less frequent.
To "fix" it I end up closing tab, reopening and copy.pasting URL which works on about the 3rd try.
I do have a lot of tabs in case that helps
The default keyboard shortcut does not work in Firefox 88 on Linux. Change it to something that works on:
These shortcuts might work:
Or just use Ctrl-B everywhere?
Other options:
Notes:
Chrome on Mac:
Firefox on Mac:
Firefox on Linux:
This is a long standing bug, where adding a subcategory would not add the bookmark, but just the subcategory.
Implement search, filtering and sorting options for categories and bookmarks on left and right pane respectively.
Left side:
Right side:
Use derived store to get category search results quickly
Enable editing existing bookmarks instead of saving new ones.
Tasks:
The add bookmark popups for Chrome and Firefox provide a way to create new categories.
Implement Pinterest-like or similar functionality for this.
This enables saving multiple bookmarks or editing multiple existing bookmarks from the popup.
Get the selected tabs with query: {currentWindow: true, highlighted: true}
.
Ideas:
Chrome shows recent categories on the popup, and even preselects the last modified category.
Add a feature on options page to remove empty bookmark categories
Tasks:
Consider:
Candidates to move to background:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.