Added a message in the editor when a filter matches nothing
Typing in big documents no longer gets slower as the window gets taller
Scrolling big documents is faster, and spell checking stays out of the way
Fixed a performance issue with Japanese and other IME input
Fixed unused attachment files, they now move to the Trash on close
Fixed a long filter query overflowing the toolbar
Fixed selection not covering a badge wrapped onto its own line
Fixed a badge alone on a wrapped line sitting too low and growing the row
Core
Built in attribute support for done, due, priority, estimate, flagged, and progress. Decided I needed to really build a bunch to help drive API design.
Changed calendar extension in quite a few ways. Default behavior is now to filter. Drag to filter multiple days. Double click or Return for old behavior of creating a day for selected row(s).
Extensions
Lots of changes in attributes, badges, summary, menu, and picker APIs. They all interact and as I implemented the built in attributes I kept finding changes to make. Likely still some loose ends, but I’m using these API to implement all the built in attributes, and generally they seem to be working well. Biggest changes from previous API is menu is now much simpler. No embedded calendar or other elements, just plain menu items. Instead there is a new picker API that allows picking specific values, such as dates or durations.
I’ve continued to iterate on badges and related features.
Trying to get API’s right has been tricky. In the end I decided to build in quite a few attributes (see Bike context menu for easiest access, forgot to add that to release notes). Then tried to extract the useful parts, hopefully the API/implementation is pointed in right direction now.
Another change that I forgot to mention in release notes… now there is code for default badging. When Bike comes across an attribute that doesn’t already have a badge it will generate a default badge with default behavior. So now all custom attributes are visible, not just special ones that badges have been created for.
New Attributes Palette
First Command-Shift-A to show OR Command-Right when at end of line. That second one is what I use most often. Then hopefully much of the UI is self explanatory (questions and suggestions welcome). Some tricks are:
Right arrow to enter attribute value editor
Return to commit new value
Command-Return in attribute value editor to set value, but don’t close attributes window
To delete an attribute select it and Command-Delete
Still some bugs where focus gets messed up/lost sometimes.
Default attributes
I’ve tried to make default attributes work together. So for example if you add an estimate to a task row. Then when you mark that task as done, the computed estimate total (shown in ancestor) stops taking that tasks estimate into consideration. Rendering of tags is also adjusted for done tasks.
Quite a bit of moving things around, splitting big files into smaller ones. As far as API changes the big one is the new bike.attribute function and related types. Use the function to declare an attributes type. Once you do that then Bike can handle parsing, displaying, picking, etc in a standard way.
If you are interested in custom badges and attributes, the best place to see how the new attribute and related API’s work is by looking in the bike.bkext and look in the features folder. In the end the actual code isn’t too long, but there are quite a few different concepts needed depending on what you are trying to do.
The attachments feature is great. Ran into an interesting interaction earlier while I was splitting a big outline into multiple files. I copy-pasted a section containing attachments into a new outline., and the attachments showed up detached, with the file icon becoming a “?” with a dotted outline.
I wonder if in this case it might make sense to prompt the user and eg. ask if they want to include the pasted attachments in the new note. I’m sure there are good reasons behind the current behavior but it would be nice if it were a bit harder to accidentally lose track of attachments when they’re removed from the original outline and pasted into a new one, even if they stay preserved inside the original bundle.