Neopolitan: Roadmap And Ideas

March 2023

This is a collection of ideas for things to do with neopolitan. Some of them are bugs, some are ideas I definitely want to do and some and just things that popped into my head. The items are for the neopolitan format, the neopolign static site generator, and the tree-sitter parser.

Bugs

TODO

    ☐

    Fix not being able to add a language or attributes under a -- code/ token

Things To Do

TODO

    ☐

    Get RSS Working

    ☐

    Add alt text via multiple "alt" lines that get collected into one

    ☐

    Delete files from site when they are moved or removed from the gimoire

    ☐

    Set up for easy renames and deletions

    ☐

    Handle trailing (or leading) whitespace in nvim-treesitter-neopolitan

    ☑

    Create a template to turns line numbers on/off in the -- code, -- html, and -- pre sections and containers

    ☐

    Add search to the site

    ☐

    Switch from .org to .neo

    ☐

    Add attribute output for kbd and other tags

    ☐

    Reenable copying all files from the content dir into the site dir automatically

    ☐

    Add scriptsrc functionalty for loading external scripts

    ☐

    Add cssscr functionality for loading external stylesheets

    ☐

    Set up so neopoigin updates the home page links when new pages are added

    ☐

    Add ability to source a lua code block directly into nvim

    ☐

    Log pages that have errors and aren't built

    ☐

    Let more than on -- script work on a page

    ☐

    Make it so any unknwon inline tags turn into span instead of breaking the parsing. Capture styles if they are there. This is mainly to deal with misspellings of tag names

    ☐

    Create a section for scripts to be automatically executed when a file is open (and optionally be updated later with a hotkey or whatever)

    ☐

    Make a "coding mode" that switches the filetype to whatever code block your in and comments out everything that's not in the codeblock so that LSP style tools work

    ☐

    Put JS files in the grimoire and have them output to a "/scripts" dir on the site. The idea being that they'll have the JS extension and you can use an LSP while working on them when doing more complicated stuff where the goal isn't to demonstrate the code but to add functionalty to pages on the site

    ☐

    Setup so builder doesn't crash when pages are removed

    ☐

    Generate redirect file when file names change

    ☐

    Flush the content and _site dirs before each build to remove files that were deleted

    ☐

    Adjust tree-sitter so spacing between sections doesn't matter

    ☐

    Add a way to source lua code directly from a lua code block in a file (might not matter if just exporting the code block to a file that's already sourced picks up the updates)

    ☐

    Add shorthand links with greater than signs

    ☐

    Auto-format files for paragraph length like prettier

    ☐

    Make a flag in the metadata to turn auto-formatting off

    ☐

    Update binder to remove files that are changed or renamed from the grimoire in the search index

    ☐

    Set up bookmark pages

    ☐

    Add the carot footnote functionalty

    ☐

    Add inline styles for em and strong

    ☐

    Make executable code blocks

    ☐

    Create category lists and links

    ☐

    Create group lists and links

    ☐

    Add global IDs for references and links that can be used repeatedly (gid:)

    ☐

    Setup link tags to allow for IDs to be used somewhere else on the page for the URL (probably with id:the_id)

    ☐

    Figure out how to next sections under list items

    ☐

    Automatically add "index.neo" to paths if there's not a filename so they go to the right place automatically

    ☐

    Figure out a way to handle web components (maybe the widget section) or maybe it should just be HTML

    ☐

    Add an inline html feature (like link, span, setc..) for dropping HTML directly inside of content (maybe use three | characters for the start and end. (three instead of two because two pipes is an OR in code

    ☐

    Figure out how to render html code blocks in a place other than where they are defined (the idea being to make it easier to show HTML then have some explination and then show the renderd output (or vice verse)

    ☐

    Add default "Notes" and "Warning" titles to those sectios if no title is provided

    ☐

    Add -- template: attributes to every section

    ☐

    Implement calls to external processes

    ☐

    Setup images to render with srcset

    ☐

    Add open graph images and metadata

    ☐

    Use cloudinary for images

    ☐

    Provide a way to link to pages with only their page id

    ☐

    Add the ability to style lists by adding something like PIPE_HEREclass: whateverPIPE_HERE before the lines

    ☐

    Figure out a syntax for tables

    ☐

    Add multiple checkboxes for todos and checklists so you can make different things for each item (e.g. [] [] [] whatever)

    ☐

    Add the cite stuff to blockquote

    ☐

    Automated link checker

    ☐

    Maybe do include files

    ☐

    Make an -- input section to correspond with the results so you can show a full process from start to finish

    ☐

    See if tree-sitter can be setup so that if parsing fails at some point it doesn't try to do the rest of the file. The idea being that it would make it eaiser to find issues Though, it might blink a log which would be annoying. Maybe there's a toggle? or a way to highlight errors?

    ☐

    Update -- code/ so you can add attributes

    ☐

    Add default notes title to notes sections and todo and warnings

    ☐

    Add prelude section

    ☐

    Add an afterword section

    ☐

    Get footnote basic id calls working with references

    ☐

    Make an RSS feed

    ☐

    Get checklists working

    ☐

    Add dates to posts

    ☐

    Migrate the "ideas" site into the main site

    ☐

    Set up so that multiple code exports can be defiend in a single file

    ☐

    Toggle visibility of code show/hide blocks and toggle if the lines break or scroll

    ☐

    Add copy button for code blocks

    ☐

    Do a full refresh of the dev site if stylesheets or scripts change

    ☐

    Create browser extensions to make bookmark text you can paste in

    ☐

    Get redirects working

    ☐

    Make binder commit to repo on every save

    ☐

    Add sorting of lists and todos via neovim

    ☐

    Allow olist sections to use numbers as well as dashes

    ☐

    Create nvim extension to updates numbers in olists if you move things around

    ☐

    Setup an attribute for script tags that drops the code in DOMContentLoaded wrappers so you don't have to mess with that? and it would look nicer

    ☐

    Prevent private notes from showing up in history file for grimoire search

    ☐

    Move surftech.tv onto main site

    ☐

    Setup content after close tldr to be a paragraphs section

    ☐

    Sort posts chronoligically

    ☐

    Filter the home page links to remove things like quotes and bookmarks to keep them from overwhelming the list

    ☐

    Get monocrark working again

    ☐

    Set up a way to collapse paragraphs in draft mode so you don't re-read them all the time when drafting

    ☐

    Create a toggle to switch between dev and prod

    ☐

    Add show/toggle to scripts html and css so you can view the source if you want. Maybe toggleon and toggleoff to set the initial state?

    ☐

    Add feature in neovim to move checklist items up and down in checklist

    ☐

    Add feature in neovim to move marked off check list items to the end of the checklist

    ☐

    Get the binary clock running

    ☐

    Move all the subdomains over to the main site

    ☐

    Setup YouTube embed so you can set a start and end time

    ☐

    Build an interface to SQLlite in a browser that then populates pages for things like tables

    ☐

    Move mardkdowntable.com to site

    ☐

    Setup individual built processes for individual pages for example it would have an input section, a code section, and a results section. The page would process the input with the script and pipe it to the output. Then the page would render with only that content (in some sort of wrapper, probably).

    ☐

    Add caching to file builds so only files that change get updated (not at all necessary right now and probably won't be, but it would be cool to see the site build even faster)

    ☐

    Add stats to todo lists (e.g. last updated # - 54 items total - 32 complete)

    ☐

    Make a way to have code on a page that generates output for the page directly each time the site is generated

    ☐

    Pre-flight processes that run before the site is generated to make includes or whatever

    ☐

    Provide alt titles for links to pages

    ☐

    Make a tool to auto convert text strings into big text

    ☐

    Remove bookmarks and quotes from main list of links

    ☐

    Set up export so ~/ works for the home directory

    ☐

    Set up a way to add more text to exports like messages saying not to edit the files in a way that prevents it from showing up in the HTML output or having to be in the main code block

    ☐

    Provide for sub categories with something like ("Neovim -> Neovim Configs") can be used to expand out maybe

    ☐

    Undo back into git history if you reach the end of the neovim undo buffer

    ☐

    Autocomplection in code blocks

    ☐

    Finish all the nvim-treesitter-neopolitan sections and inline tags

    ☐

    Ability to post to mastodon? Not sure that would work great with the way drafts go out and are udpated and tweaked. Could wait until it sees a published flag and then check to make sure it's not sent again (make sure not to send the entire site the first time thru)

    ☑

    Output whatever the latest file to change was to "/last-edit/" so you can just keep that open and see whatever you last updated

    ☐

    Prevent the last-edit file from showing up twice in the main index

    ☐

    Add code block execution feature for nvim language that highlights as lua but then sources the contents when run so you can update neovim stuff with it from your notes

    ☑

    Move to using just an ID

There are TODO lists in these places that need to be pulled into here so there's just the one list.

  • Neopolitan Sections
  • Inline Tags (phase 1 is done)
  • Shorthand Tags
  • Attributes
end of line