Bushel's Roadmap

Bushel is getting there, but it's not complete yet. There's still a few things I want to get working.

Image Uploading

I need a way to embed images. Some sort of way to upload them and then embed a link into the md file. GitHub's API should handle them but I need to make sure I have the supporting infrastructure on the server side.

Interestingly enough, GitHub's API appears to potentially save and cache images on their side, so I might be able to get away with deleting images after saving a leaf.

See Also Section

An optional See Also section like the Backlinks section. Have a switch that lets you turn it on and off when editing pages. This would likely display underneath the Backlinks section.

Editing

In general bushel needs a "Create Leaf" button. When you're logged in and viewing a branch it will probably appear up in the corner along with an "Edit" button.

There is a few iffy bits with the actual editing of pages too, the UI is available to change things like names and URIs but the backend doesn't support that yet. Don't worry, that's coming.

I also need a way to delete pages (as well as branches and roots). Also some better error messages when encountering duplicate names which aren't allowed.

Duplicate pages aren't allowed even in different roots. I may change this later but for now it's part of the database and I don't want to change that structure yet.

Reordering leaves inside their branch would also be amazing. I'm thinking in the panel where the "Save Page" button is would be a dropdown to change what branch the leaf is in. Maybe also a button that pulls up a dialog to interactively move the leaf to an entirely new root if one wishes.

Drawing

This is more of a stretch goal but I want the ability to do basic drawings using an iPad. Nothing fancy, just basic colors and maybe like a toggle-able grid background or something. This 100% makes my life harder as I need to essentially reinvent the wheel in terms of editing text input (though maybe I can fix the stupid mobile input bugs hmm).

The grid background should be aligned to the text. Or rather, I should say the text should be aligned to the grid background.

Adding extra spacing is going to be interesting. I'm probably going to need a custom MD parser that I can add modules to so that I can add a dynamically sized spacer div between paragraphs.

Leaf Links

I want to add a way to use double square brackets [[<leaf-uri>]] to link to other leaves in the Bushel instance. This would also massively simplify the backlinks generation as well.

MD Parser Modules

I need a way to insert custom modules into a leaf for things like a webring or drawing spacers or a dynamic Table of Contents. It would also be nice if these are modularized in a way that it makes it easy for people to create their own. Separate python files with generic in-points or something like that.

Some of the modules I would like to have are:

As you might be able to infer the general format for calling modules is [:<module>:<action>.<argument>].

Styling

Extra Sections

The Backlinks section should probably be static on the page as the user scrolls. As should the See Also section if it's available. I am not 100% sure on this but it would ensure that the Edit Leaf section would track with the user's scrolling as well which would be nice.

Lists

Lists need styling as they're currently the standard html list. I don't want anything fancy, just making the item markers a little less prominent or something. And adjusting the spacing.

Tables

Tables also have no styling. Not sure exactly what I want to do with these but whatever it is it'll probably be making it much more subtle. Maybe taking inspiration from the Microsoft Docs site's tables.

Syntax highlighting

Code blocks are neat and super useful, but tedious to style. I've got a fairly generic base set that was tested with C#, but I don't know how it behaves on with other complex languages.

Title

Add a calculatetable title to the base template to distinguish open bushel tabs.