[x] Add a concept of selected state (ephermal, non persisted)
[x] Add selectCards, unselectCards, unselectAllCards and selectAllCardsInCollection action creators
[x] Add addCollectionToSelectedCards
[x] Make the selectSelectedCards use this
[x] Add a selected filter. Override selectFilters to include filters as well as the selected map. Add a inverse_filter_names as well for not-selected
[x] Checking the checkbox should update the card selected state
[x] Checkboxes should be hidden unless at least one card is selected
[x] Add a hidden checkbox on card thumbnails in the left rail that show up on hover and can be clicked.
[x] If any card is selected, the checkboxes show up on all thumbnails
[x] If any card is selected, show a 'Clear selection' in the top of the drawer
[x] 'Add all cards to selection' only shows up if some cards in current collection are not selected
[x] If any card is selected in the current collection and the collection doesn't have a selected filter, show a 'Show only selected' that if clicked adds a selected filter to the filter chain
[ ] If any card is selected that is not currently showing in the selection, show a Show all selected to the top of the drawer that will navigate to everything/selected
[x] If any card is selected, show a 'Add all to selection' button
[ ] Add the ability to shift-select adjacent cards in the drawer
[ ] Hitting space when viewing a card toggles its selected state
Import
[x] Do TODOs in bulkCreateWorkingNotes
[x] Get the extraction working
[x] Add tests for extraction
[x] Add a flag for imports to keep track of later (e.g. importType, importVersion)
[x] Remove aria-level?
[ ] Consider replacing quotes with more common characters? The character U+2019 "’" could be confused with the ASCII character U+0060 "", which is more common in source code`
[x] Get italics and bolds to be kept
[ ] Get bold to be kept in pasted data
[ ] Get bold+italic simultaneously to be kept
[ ] If there's a selection already (which will be blown away when the import happens, check before performing the import that overriding selection is OK)
[x] Add a message in the dialog to explain how it works (and hwat to check for)
[x] Why is that ',' showing up after the first li?
[x] When creating a card, only expect the first one to then wait for it. (Since they're all batched at the beginning, when the first card comes in, all of them do, and then the waiting machinery will work)
[x] Actually wire in hitting create to creating notes
[x] Gray out screen while creating cards (instead of immediately closing dialog while it's happening)
[x] Have an import feature where you can paste final bits-and-bobs rich text and it will create cards by splitting at each top-level li and then removing other formatting (not links).
[x] Have a 'select created cards' checkbox, and if selected then it will replace the card selection state with those cards and also navigate to them afterwards.
[ ] Allow bulk deleting of selected cards
[ ] Allow better overflow of very many card imports (have the text areas be in a scroller in the dialog)
Export
[x] Add a mode in BulkImport that is import or export.
[x] If mode is export then title and content of the dialog should be different
[x] Add a export button to launch the dialog in export mode.
[ ] if semanticSortCallable fails, show a message for why and stop expecting the result.
[ ] Handle long export content better (currently the dialog doesn't scroll)
[x] Show a loading scrim while fetching card order
[ ] There are suspiciously few swaps made in the server
[x] Disable semantic sort button / action creator if ai not enabled
[x] Correctly handle cards with only a single paragraph of content (it currently indents them at each level)
[ ] Do TODOs in the card sorter on the server side
[ ] Strip out paragraphs in the list items
[x] Actually export content in export mode to make it easy to copy/paste
[x] Add a button in export mode to resort by similarity, which hits a function endpoint
[ ] Play around with different embedding based sorts in the ranker. The current sort just rarely does anything at all, to a highly suspicious degree. Even though pairwise conditionals won't find global ordering problems, they should notice a local one that can then cascade through the list on multiple iterations, knocking other ones to diffeerent positions, which isn't happening.
[ ] One option: do a PCA and then sort along the main vector. The downside is it will be totally different order than the current order.
[ ] Another option. Repeatedly: pick a single key card randomly. Then compute the semantic distance to each card (normalized so they're all 0 to 1 if they aren't already) and divide that by the number of indexes different it is. (Maybe have some kind of nonlinear softmax kind of thing). Have positive for moves down and negative for moves up. And then sum up to see the overall index diff. Repat until a max iterations is met or the net movement has been below some threshold f for some number of iterations m.
[ ] Is there some kind of markov chain thing?
[ ] Semantic sort should place things that are in a clique of references closer together naturally
[ ] Have a thing in card drawer to take the currently visible cards and export them into a proto bits-and-bobs format, to copy and paste. This means each card starts a new li, and each sentence and paragraph break is a new sub-li.
Embedding sort
[ ] A sort of sort/semantics that sorts all of the cards based on minimizing the difference in their embedding difference. This is NP-hard (I think). Probably just do principal component analysis
Bulk-edit
Selection
(Also tracked in #174 )
selected
filter. Override selectFilters to include filters as well as the selected map. Add a inverse_filter_names as well fornot-selected
selected
filter to the filter chainShow all selected
to the top of the drawer that will navigate toeverything/selected
Import
The character U+2019 "’" could be confused with the ASCII character U+0060 "
", which is more common in source code`Export
import
orexport
.export
then title and content of the dialog should be differentEmbedding sort
sort/semantics
that sorts all of the cards based on minimizing the difference in their embedding difference. This is NP-hard (I think). Probably just do principal component analysis