I don’t expect I’ll add this to TaskPaper, but I’ve been thinking of a calendar system to test Bike 2’s extension system. I wonder if these ideas could fit in?
Calendar
I think Bike is a great place for a notes calendar.
I expect to represent the calendar in Bike using a Year > Month > Day hierarchy. Similar to what is done by this today script.
One important point is that the calendar structure is created dynamically as needed. We don’t create a row for every possible day, but when a day is asked for we insert a row in the proper location. Then you can add notes for the day under that row.
First command for this calendar system is a “Today” command that creates a row for today (if needed) and then moves the selection to that row.
Bike 2 extensions can also present HTML views as a sheet over the outline view.I think this adds an interesting new dimension to Bike. For example the extension could add a sidebar “Calendar” item. When clicked it will show a traditional looking calendar in an HTML sheet overlay. Select a day in that calendar and the sheet will dismiss and you’ll be taken to that day’s row in your outline.
I think this would be a pretty nice daily notes calendar. But it doesn’t support events/reminders/recurrences.
Events/Reminders/Recurrences
I think for most use cases these really need to be stored in the standard macOS calendar database. Then they show up on all your calendars and beep when overdue on your phone, etc.
An extension (with some added API in my part) could integrate Bike’s notes calendar with the macOS calendar database in various ways. For example when you move text selection into a day on your Bike notes calendar the extension could query the calendar database for events on that day and then display them in inspector bar. To make this work I will need to add extension API for querying calendar database, but wouldn’t be too hard to do I think.
Would this work for your use case?
Templates
Another thing that could be done, and that works a little more like the TaskPaper template you’ve linked too…
Come up with a convention for template items. Store those items in your outline somewhere and then when the notes calendar creates a new day part of that “new day” code could be to search your outline for templates that land on that day and insert them too. So for example in your outline somewhere you have:
- Template: Mondays / Take out the garbage
And then when you navigate to “Today” and it hasn’t been created yet, and it’s a Monday, then “Take out the garbage” is inserted into the new day row.
Thoughts/ideas welcome.